1 Index: linux-2.6.20.7/drivers/char/ts0710.h
2 ===================================================================
3 --- linux-2.6.20.7.orig/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
4 +++ linux-2.6.20.7/drivers/char/ts0710.h 2007-04-24 16:04:23.000000000 +0200
9 -#include <linux/config.h>
10 +//#include <linux/config.h>
11 #include <linux/module.h>
13 #include <linux/errno.h>
15 #include <linux/major.h>
17 #include <linux/init.h>
18 -#include <linux/devfs_fs_kernel.h>
19 +//#include <linux/devfs_fs_kernel.h>
21 #include <asm/uaccess.h>
22 #include <asm/system.h>
23 Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
24 ===================================================================
25 --- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c 2007-04-24 16:04:23.000000000 +0200
26 +++ linux-2.6.20.7/drivers/char/ts0710_mux.c 2007-04-24 16:26:58.000000000 +0200
28 * 11/18/2002 Second version
29 * 04/21/2004 Add GPRS PROC
31 -#include <linux/config.h>
32 +//#include <linux/config.h>
33 #include <linux/module.h>
34 #include <linux/types.h>
38 #include <linux/slab.h>
39 #include <linux/init.h>
40 -#include <linux/devfs_fs_kernel.h>
41 +//#include <linux/devfs_fs_kernel.h>
44 #include <asm/uaccess.h>
46 static struct work_struct post_recv_tqueue;
48 static struct tty_struct *mux_table[NR_MUXS];
49 -static struct termios *mux_termios[NR_MUXS];
50 -static struct termios *mux_termios_locked[NR_MUXS];
51 +static struct ktermios *mux_termios[NR_MUXS];
52 +static struct ktermios *mux_termios_locked[NR_MUXS];
53 static volatile short int mux_tty[NR_MUXS];
56 @@ -1894,11 +1894,14 @@
57 if (test_bit(TTY_THROTTLED, &tty->flags)) {
62 (TTY_DONT_FLIP, &tty->flags)) {
65 - } else if (recv_info->total) {
68 + if (recv_info->total) {
71 } else if (recv_room < uih_len) {
74 /*For BP UART problem End*/
76 -static void receive_worker(void *private_)
77 +static void receive_worker(struct work_struct *private_)
79 struct tty_struct *tty = COMM_FOR_MUX_TTY;
80 int i, count, tbuf_free, tbuf_read;
82 clear_bit(RECV_RUNNING, &mux_recv_flags);
85 -static void post_recv_worker(void *private_)
86 +static void post_recv_worker(struct work_struct *private_)
88 ts0710_con *ts0710 = &ts0710_connection;
90 @@ -3499,11 +3502,14 @@
91 if (test_bit(TTY_THROTTLED, &tty->flags)) {
92 add_post_recv_queue(&post_recv_q, recv_info);
94 - } else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
97 + else if (test_bit(TTY_DONT_FLIP, &tty->flags)) {
99 add_post_recv_queue(&post_recv_q, recv_info);
105 recv_packet2 = recv_info->mux_packet;
106 @@ -3635,7 +3641,7 @@
110 -static void send_worker(void *private_)
111 +static void send_worker(struct work_struct *private_)
113 ts0710_con *ts0710 = &ts0710_connection;
115 @@ -3893,9 +3899,9 @@
117 post_recv_count_flag = 0;
119 - INIT_WORK(&send_tqueue, send_worker, NULL);
120 - INIT_WORK(&receive_tqueue, receive_worker, NULL);
121 - INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
122 + INIT_WORK(&send_tqueue, send_worker);
123 + INIT_WORK(&receive_tqueue, receive_worker);
124 + INIT_WORK(&post_recv_tqueue, post_recv_worker);
126 mux_driver = alloc_tty_driver(NR_MUXS);
128 @@ -3904,12 +3910,12 @@
129 mux_driver->owner = THIS_MODULE;
130 mux_driver->driver_name = "ts0710mux";
131 mux_driver->name = "mux";
132 - mux_driver->devfs_name = "mux";
133 + //mux_driver->devfs_name = "mux";
134 mux_driver->major = TS0710MUX_MAJOR;
135 mux_driver->minor_start = TS0710MUX_MINOR_START;
136 mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
137 mux_driver->subtype = SERIAL_TYPE_NORMAL;
138 - mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
139 + mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV;
141 mux_driver->init_termios = tty_std_termios;
142 mux_driver->init_termios.c_iflag = 0;
143 @@ -3917,10 +3923,10 @@
144 mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
145 mux_driver->init_termios.c_lflag = 0;
147 -// mux_driver.ttys = mux_table;
148 + //mux_driver.ttys = mux_table;
149 mux_driver->termios = mux_termios;
150 mux_driver->termios_locked = mux_termios_locked;
151 -// mux_driver.driver_state = mux_state;
152 + //mux_driver.driver_state = mux_state;
153 mux_driver->other = NULL;
155 mux_driver->open = mux_open;
156 Index: linux-2.6.20.7/drivers/char/ts0710_mux_usb.c
157 ===================================================================
158 --- linux-2.6.20.7.orig/drivers/char/ts0710_mux_usb.c 2007-04-24 16:27:30.000000000 +0200
159 +++ linux-2.6.20.7/drivers/char/ts0710_mux_usb.c 2007-04-24 16:31:51.000000000 +0200
161 struct tty_struct *usb_for_mux_tty = NULL;
162 void (*usb_mux_dispatcher)(struct tty_struct *tty) = NULL;
163 void (*usb_mux_sender)(void) = NULL;
164 -void (*ipcusb_ap_to_bp)(unsigned char*, int) = NULL;
165 -void (*ipcusb_bp_to_ap)(unsigned char*, int) = NULL;
166 +void (*ipcusb_ap_to_bp)(const unsigned char*, int) = NULL;
167 +void (*ipcusb_bp_to_ap)(const unsigned char*, int) = NULL;
168 EXPORT_SYMBOL(usb_for_mux_driver);
169 EXPORT_SYMBOL(usb_for_mux_tty);
170 EXPORT_SYMBOL(usb_mux_dispatcher);
172 inbuf = list_entry(ptr, buf_list_t, list);
173 src_count = inbuf->size;
174 if (dst_count >= src_count) {
175 - memcpy(buf, inbuf->body, src_count);
176 + memcpy((char *)buf, inbuf->body, src_count);
181 spin_unlock(&bvd_ipc->in_buf_lock);
184 -static void usb_ipc_read_bulk(struct urb *urb, struct pt_regs *regs)
185 +static void usb_ipc_read_bulk(struct urb *urb)
188 int count = urb->actual_length;
190 bvd_dbg("usb_ipc_read_bulk: completed!!!");
193 -static void usb_ipc_write_bulk(struct urb *urb, struct pt_regs *regs)
194 +static void usb_ipc_write_bulk(struct urb *urb)
197 bvd_ipc->write_finished_flag = 1;
200 bvd_ipc->readurb_mux.actual_length = 0;
201 bvd_ipc->readurb_mux.dev = bvd_ipc->ipc_dev;
202 - if (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC))
203 + if ( (ret = usb_submit_urb(&bvd_ipc->readurb_mux, GFP_ATOMIC)) )
204 printk("ipcusb_xmit_data: usb_submit_urb(read mux bulk)"
205 "failed! status=%d\n", ret);
206 bvd_dbg("ipcusb_xmit_data: Send a IN token successfully!");
208 bvd_ipc->write_finished_flag = 0;
209 //printk("%s: clear write_finished_flag:%d\n", __FUNCTION__, bvd_ipc->write_finished_flag);
210 bvd_ipc->writeurb_mux.dev = bvd_ipc->ipc_dev;
211 - if (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC))
212 + if ( (result = usb_submit_urb(&bvd_ipc->writeurb_mux, GFP_ATOMIC)) )
213 warn("ipcusb_xmit_data: funky result! result=%d\n", result);
215 bvd_dbg("ipcusb_xmit_data: usb_submit_urb finished! result:%d", result);
217 struct usb_config_descriptor *ipccfg;
218 struct usb_interface_descriptor *interface;
219 struct usb_endpoint_descriptor *endpoint;
220 - int ep_cnt, readsize, writesize;
221 + int ep_cnt, readsize=0, writesize=0;
222 char have_bulk_in_mux, have_bulk_out_mux;
224 bvd_dbg("usb_ipc_probe: vendor id 0x%x, device id 0x%x",