linux-ezx: remove old kernel, update 2.6.21 and add script to generate SRC_URI from...
[openembedded.git] / packages / linux / linux-ezx-2.6.21 / patches / mux-fix-tty-driver.patch
1 Index: linux-2.6.20.7/drivers/char/ts0710_mux.c
2 ===================================================================
3 --- linux-2.6.20.7.orig/drivers/char/ts0710_mux.c       2007-04-22 10:51:31.000000000 +0200
4 +++ linux-2.6.20.7/drivers/char/ts0710_mux.c    2007-04-22 10:53:05.000000000 +0200
5 @@ -241,7 +241,8 @@
6  static volatile __u8 mux_recv_info_flags[NR_MUXS];
7  static mux_recv_struct *mux_recv_queue = NULL;
8  
9 -static struct tty_driver mux_driver;
10 +// Local for 2.6?
11 +static struct tty_driver *mux_driver;
12  
13  #ifdef USB_FOR_MUX
14  #define COMM_FOR_MUX_DRIVER usb_for_mux_driver
15 @@ -3007,6 +3008,7 @@
16  #else
17         mux_tty[line]++;
18         dlci = tty2dlci[line];
19 +       mux_table[line] = tty;
20  
21  /*  if( dlci == 1 ) { */
22         /* Open server channel 0 first */
23 @@ -3087,6 +3089,7 @@
24                 }
25         }
26  
27 +
28         retval = 0;
29  #endif
30        out:
31 @@ -3894,43 +3897,50 @@
32         INIT_WORK(&receive_tqueue, receive_worker, NULL);
33         INIT_WORK(&post_recv_tqueue, post_recv_worker, NULL);
34  
35 -       memset(&mux_driver, 0, sizeof(struct tty_driver));
36 -       memset(&mux_tty, 0, sizeof(mux_tty));
37 -       mux_driver.magic = TTY_DRIVER_MAGIC;
38 -       mux_driver.driver_name = "ts0710mux";
39 -       mux_driver.name = "ts0710mux";
40 -       mux_driver.major = TS0710MUX_MAJOR;
41 -       mux_driver.minor_start = TS0710MUX_MINOR_START;
42 -       mux_driver.num = NR_MUXS;
43 -       mux_driver.type = TTY_DRIVER_TYPE_SERIAL;
44 -       mux_driver.subtype = SERIAL_TYPE_NORMAL;
45 -       mux_driver.init_termios = tty_std_termios;
46 -       mux_driver.init_termios.c_iflag = 0;
47 -       mux_driver.init_termios.c_oflag = 0;
48 -       mux_driver.init_termios.c_cflag = B38400 | CS8 | CREAD;
49 -       mux_driver.init_termios.c_lflag = 0;
50 -       mux_driver.flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
51 -
52 -       mux_driver.ttys = mux_table;
53 -       mux_driver.termios = mux_termios;
54 -       mux_driver.termios_locked = mux_termios_locked;
55 +       mux_driver = alloc_tty_driver(NR_MUXS);
56 +       if (!mux_driver)
57 +               return -ENOMEM;
58 +
59 +       mux_driver->owner = THIS_MODULE;
60 +       mux_driver->driver_name = "ts0710mux";
61 +       mux_driver->name = "mux";
62 +       mux_driver->devfs_name = "mux";
63 +       mux_driver->major = TS0710MUX_MAJOR;
64 +       mux_driver->minor_start = TS0710MUX_MINOR_START;
65 +       mux_driver->type = TTY_DRIVER_TYPE_SERIAL;
66 +       mux_driver->subtype = SERIAL_TYPE_NORMAL;
67 +       mux_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW;
68 +
69 +       mux_driver->init_termios = tty_std_termios;
70 +       mux_driver->init_termios.c_iflag = 0;
71 +       mux_driver->init_termios.c_oflag = 0;
72 +       mux_driver->init_termios.c_cflag = B38400 | CS8 | CREAD;
73 +       mux_driver->init_termios.c_lflag = 0;
74 +
75 +//     mux_driver.ttys = mux_table;
76 +       mux_driver->termios = mux_termios;
77 +       mux_driver->termios_locked = mux_termios_locked;
78  //  mux_driver.driver_state = mux_state;
79 -       mux_driver.other = NULL;
80 +       mux_driver->other = NULL;
81  
82 -       mux_driver.open = mux_open;
83 -       mux_driver.close = mux_close;
84 -       mux_driver.write = mux_write;
85 -       mux_driver.write_room = mux_write_room;
86 -       mux_driver.flush_buffer = mux_flush_buffer;
87 -       mux_driver.chars_in_buffer = mux_chars_in_buffer;
88 -       mux_driver.throttle = mux_throttle;
89 -       mux_driver.unthrottle = mux_unthrottle;
90 -       mux_driver.ioctl = mux_ioctl;
91 -       mux_driver.owner = THIS_MODULE;
92 +       mux_driver->open = mux_open;
93 +       mux_driver->close = mux_close;
94 +       mux_driver->write = mux_write;
95 +       mux_driver->write_room = mux_write_room;
96 +       mux_driver->flush_buffer = mux_flush_buffer;
97 +       mux_driver->chars_in_buffer = mux_chars_in_buffer;
98 +       mux_driver->throttle = mux_throttle;
99 +       mux_driver->unthrottle = mux_unthrottle;
100 +       mux_driver->ioctl = mux_ioctl;
101  
102 -       if (tty_register_driver(&mux_driver))
103 +       // FIXME: No panic() here
104 +       if (tty_register_driver(mux_driver))
105                 panic("Couldn't register mux driver");
106  
107 +       for (j=0; j<NR_MUXS; j++)
108 +               tty_register_device(mux_driver, j, NULL);
109 +
110 +
111         COMM_MUX_DISPATCHER = mux_dispatcher;
112         COMM_MUX_SENDER = mux_sender;
113  
114 @@ -3964,7 +3974,10 @@
115                 mux_recv_info[j] = 0;
116         }
117  
118 -       if (tty_unregister_driver(&mux_driver))
119 +       for (j=0; j<NR_MUXS; j++)
120 +               tty_unregister_device(mux_driver, j);
121 +
122 +       if (tty_unregister_driver(mux_driver))
123                 panic("Couldn't unregister mux driver");
124  }
125