diff options
| -rw-r--r-- | drivers/serial/8250.c | 60 |
1 files changed, 40 insertions, 20 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index 4d8e14b7aa9..0b4ce47d987 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
| @@ -461,7 +461,8 @@ static void dwapb_serial_out(struct uart_port *p, int offset, int value) | |||
| 461 | /* Save the LCR value so it can be re-written when a | 461 | /* Save the LCR value so it can be re-written when a |
| 462 | * Busy Detect interrupt occurs. */ | 462 | * Busy Detect interrupt occurs. */ |
| 463 | if (save_offset == UART_LCR) { | 463 | if (save_offset == UART_LCR) { |
| 464 | struct uart_8250_port *up = (struct uart_8250_port *)p; | 464 | struct uart_8250_port *up = |
| 465 | container_of(p, struct uart_8250_port, port); | ||
| 465 | up->lcr = value; | 466 | up->lcr = value; |
| 466 | } | 467 | } |
| 467 | writeb(value, p->membase + offset); | 468 | writeb(value, p->membase + offset); |
| @@ -485,7 +486,8 @@ static void io_serial_out(struct uart_port *p, int offset, int value) | |||
| 485 | 486 | ||
| 486 | static void set_io_from_upio(struct uart_port *p) | 487 | static void set_io_from_upio(struct uart_port *p) |
| 487 | { | 488 | { |
| 488 | struct uart_8250_port *up = (struct uart_8250_port *)p; | 489 | struct uart_8250_port *up = |
| 490 | container_of(p, struct uart_8250_port, port); | ||
| 489 | switch (p->iotype) { | 491 | switch (p->iotype) { |
| 490 | case UPIO_HUB6: | 492 | case UPIO_HUB6: |
| 491 | p->serial_in = hub6_serial_in; | 493 | p->serial_in = hub6_serial_in; |
| @@ -1319,7 +1321,8 @@ static inline void __stop_tx(struct uart_8250_port *p) | |||
| 1319 | 1321 | ||
| 1320 | static void serial8250_stop_tx(struct uart_port *port) | 1322 | static void serial8250_stop_tx(struct uart_port *port) |
| 1321 | { | 1323 | { |
| 1322 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1324 | struct uart_8250_port *up = |
| 1325 | container_of(port, struct uart_8250_port, port); | ||
| 1323 | 1326 | ||
| 1324 | __stop_tx(up); | 1327 | __stop_tx(up); |
| 1325 | 1328 | ||
| @@ -1336,7 +1339,8 @@ static void transmit_chars(struct uart_8250_port *up); | |||
| 1336 | 1339 | ||
| 1337 | static void serial8250_start_tx(struct uart_port *port) | 1340 | static void serial8250_start_tx(struct uart_port *port) |
| 1338 | { | 1341 | { |
| 1339 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1342 | struct uart_8250_port *up = |
| 1343 | container_of(port, struct uart_8250_port, port); | ||
| 1340 | 1344 | ||
| 1341 | if (!(up->ier & UART_IER_THRI)) { | 1345 | if (!(up->ier & UART_IER_THRI)) { |
| 1342 | up->ier |= UART_IER_THRI; | 1346 | up->ier |= UART_IER_THRI; |
| @@ -1364,7 +1368,8 @@ static void serial8250_start_tx(struct uart_port *port) | |||
| 1364 | 1368 | ||
| 1365 | static void serial8250_stop_rx(struct uart_port *port) | 1369 | static void serial8250_stop_rx(struct uart_port *port) |
| 1366 | { | 1370 | { |
| 1367 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1371 | struct uart_8250_port *up = |
| 1372 | container_of(port, struct uart_8250_port, port); | ||
| 1368 | 1373 | ||
| 1369 | up->ier &= ~UART_IER_RLSI; | 1374 | up->ier &= ~UART_IER_RLSI; |
| 1370 | up->port.read_status_mask &= ~UART_LSR_DR; | 1375 | up->port.read_status_mask &= ~UART_LSR_DR; |
| @@ -1373,7 +1378,8 @@ static void serial8250_stop_rx(struct uart_port *port) | |||
| 1373 | 1378 | ||
| 1374 | static void serial8250_enable_ms(struct uart_port *port) | 1379 | static void serial8250_enable_ms(struct uart_port *port) |
| 1375 | { | 1380 | { |
| 1376 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1381 | struct uart_8250_port *up = |
| 1382 | container_of(port, struct uart_8250_port, port); | ||
| 1377 | 1383 | ||
| 1378 | /* no MSR capabilities */ | 1384 | /* no MSR capabilities */ |
| 1379 | if (up->bugs & UART_BUG_NOMSR) | 1385 | if (up->bugs & UART_BUG_NOMSR) |
| @@ -1781,7 +1787,8 @@ static void serial8250_backup_timeout(unsigned long data) | |||
| 1781 | 1787 | ||
| 1782 | static unsigned int serial8250_tx_empty(struct uart_port *port) | 1788 | static unsigned int serial8250_tx_empty(struct uart_port *port) |
| 1783 | { | 1789 | { |
| 1784 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1790 | struct uart_8250_port *up = |
| 1791 | container_of(port, struct uart_8250_port, port); | ||
| 1785 | unsigned long flags; | 1792 | unsigned long flags; |
| 1786 | unsigned int lsr; | 1793 | unsigned int lsr; |
| 1787 | 1794 | ||
| @@ -1795,7 +1802,8 @@ static unsigned int serial8250_tx_empty(struct uart_port *port) | |||
| 1795 | 1802 | ||
| 1796 | static unsigned int serial8250_get_mctrl(struct uart_port *port) | 1803 | static unsigned int serial8250_get_mctrl(struct uart_port *port) |
| 1797 | { | 1804 | { |
| 1798 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1805 | struct uart_8250_port *up = |
| 1806 | container_of(port, struct uart_8250_port, port); | ||
| 1799 | unsigned int status; | 1807 | unsigned int status; |
| 1800 | unsigned int ret; | 1808 | unsigned int ret; |
| 1801 | 1809 | ||
| @@ -1815,7 +1823,8 @@ static unsigned int serial8250_get_mctrl(struct uart_port *port) | |||
| 1815 | 1823 | ||
| 1816 | static void serial8250_set_mctrl(struct uart_port *port, unsigned int mctrl) | 1824 | static void serial8250_set_mctrl(struct uart_port *port, unsigned int mctrl) |
| 1817 | { | 1825 | { |
| 1818 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1826 | struct uart_8250_port *up = |
| 1827 | container_of(port, struct uart_8250_port, port); | ||
| 1819 | unsigned char mcr = 0; | 1828 | unsigned char mcr = 0; |
| 1820 | 1829 | ||
| 1821 | if (mctrl & TIOCM_RTS) | 1830 | if (mctrl & TIOCM_RTS) |
| @@ -1836,7 +1845,8 @@ static void serial8250_set_mctrl(struct uart_port *port, unsigned int mctrl) | |||
| 1836 | 1845 | ||
| 1837 | static void serial8250_break_ctl(struct uart_port *port, int break_state) | 1846 | static void serial8250_break_ctl(struct uart_port *port, int break_state) |
| 1838 | { | 1847 | { |
| 1839 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1848 | struct uart_8250_port *up = |
| 1849 | container_of(port, struct uart_8250_port, port); | ||
| 1840 | unsigned long flags; | 1850 | unsigned long flags; |
| 1841 | 1851 | ||
| 1842 | spin_lock_irqsave(&up->port.lock, flags); | 1852 | spin_lock_irqsave(&up->port.lock, flags); |
| @@ -1890,7 +1900,8 @@ static void wait_for_xmitr(struct uart_8250_port *up, int bits) | |||
| 1890 | 1900 | ||
| 1891 | static int serial8250_get_poll_char(struct uart_port *port) | 1901 | static int serial8250_get_poll_char(struct uart_port *port) |
| 1892 | { | 1902 | { |
| 1893 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1903 | struct uart_8250_port *up = |
| 1904 | container_of(port, struct uart_8250_port, port); | ||
| 1894 | unsigned char lsr = serial_inp(up, UART_LSR); | 1905 | unsigned char lsr = serial_inp(up, UART_LSR); |
| 1895 | 1906 | ||
| 1896 | if (!(lsr & UART_LSR_DR)) | 1907 | if (!(lsr & UART_LSR_DR)) |
| @@ -1904,7 +1915,8 @@ static void serial8250_put_poll_char(struct uart_port *port, | |||
| 1904 | unsigned char c) | 1915 | unsigned char c) |
| 1905 | { | 1916 | { |
| 1906 | unsigned int ier; | 1917 | unsigned int ier; |
| 1907 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1918 | struct uart_8250_port *up = |
| 1919 | container_of(port, struct uart_8250_port, port); | ||
| 1908 | 1920 | ||
| 1909 | /* | 1921 | /* |
| 1910 | * First save the IER then disable the interrupts | 1922 | * First save the IER then disable the interrupts |
| @@ -1938,7 +1950,8 @@ static void serial8250_put_poll_char(struct uart_port *port, | |||
| 1938 | 1950 | ||
| 1939 | static int serial8250_startup(struct uart_port *port) | 1951 | static int serial8250_startup(struct uart_port *port) |
| 1940 | { | 1952 | { |
| 1941 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 1953 | struct uart_8250_port *up = |
| 1954 | container_of(port, struct uart_8250_port, port); | ||
| 1942 | unsigned long flags; | 1955 | unsigned long flags; |
| 1943 | unsigned char lsr, iir; | 1956 | unsigned char lsr, iir; |
| 1944 | int retval; | 1957 | int retval; |
| @@ -2166,7 +2179,8 @@ dont_test_tx_en: | |||
| 2166 | 2179 | ||
| 2167 | static void serial8250_shutdown(struct uart_port *port) | 2180 | static void serial8250_shutdown(struct uart_port *port) |
| 2168 | { | 2181 | { |
| 2169 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 2182 | struct uart_8250_port *up = |
| 2183 | container_of(port, struct uart_8250_port, port); | ||
| 2170 | unsigned long flags; | 2184 | unsigned long flags; |
| 2171 | 2185 | ||
| 2172 | /* | 2186 | /* |
| @@ -2235,7 +2249,8 @@ void | |||
| 2235 | serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, | 2249 | serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, |
| 2236 | struct ktermios *old) | 2250 | struct ktermios *old) |
| 2237 | { | 2251 | { |
| 2238 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 2252 | struct uart_8250_port *up = |
| 2253 | container_of(port, struct uart_8250_port, port); | ||
| 2239 | unsigned char cval, fcr = 0; | 2254 | unsigned char cval, fcr = 0; |
| 2240 | unsigned long flags; | 2255 | unsigned long flags; |
| 2241 | unsigned int baud, quot; | 2256 | unsigned int baud, quot; |
| @@ -2435,7 +2450,8 @@ serial8250_set_ldisc(struct uart_port *port, int new) | |||
| 2435 | void serial8250_do_pm(struct uart_port *port, unsigned int state, | 2450 | void serial8250_do_pm(struct uart_port *port, unsigned int state, |
| 2436 | unsigned int oldstate) | 2451 | unsigned int oldstate) |
| 2437 | { | 2452 | { |
| 2438 | struct uart_8250_port *p = (struct uart_8250_port *)port; | 2453 | struct uart_8250_port *p = |
| 2454 | container_of(port, struct uart_8250_port, port); | ||
| 2439 | 2455 | ||
| 2440 | serial8250_set_sleep(p, state != 0); | 2456 | serial8250_set_sleep(p, state != 0); |
| 2441 | } | 2457 | } |
| @@ -2566,7 +2582,8 @@ static void serial8250_release_rsa_resource(struct uart_8250_port *up) | |||
| 2566 | 2582 | ||
| 2567 | static void serial8250_release_port(struct uart_port *port) | 2583 | static void serial8250_release_port(struct uart_port *port) |
| 2568 | { | 2584 | { |
| 2569 | struct uart_8250_port *up = (struct uart_8250_port *)port; | 2585 | struct uart_8250_port *up = |
| 2586 | container_of(port, struct uart_8250_port, port); | ||
| 2570 | 2587 | ||
| 2571 | serial8250_release_std_resource(up); | 2588 | serial8250_release_std_resource(up); |
| 2572 | if (up->port.type == PORT_RSA) | 2589 | if (up->port.type == PORT_RSA) |
| @@ -2575,7 +2592,8 @@ static void serial8250_release_port(struct uart_port *port) | |||
| 2575 | 2592 | ||
| 2576 | static int serial8250_request_port(struct uart_port *port) | 2593 | static int serial8250_request_port(struct uart_port *port) |
| 2577 | { | 2594 | { |
