diff options
| -rw-r--r-- | drivers/serial/bfin_5xx.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index 46bb47f37b9a..4e0b8cd4d4e0 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c | |||
| @@ -900,6 +900,31 @@ bfin_serial_verify_port(struct uart_port *port, struct serial_struct *ser) | |||
| 900 | return 0; | 900 | return 0; |
| 901 | } | 901 | } |
| 902 | 902 | ||
| 903 | /* | ||
| 904 | * Enable the IrDA function if tty->ldisc.num is N_IRDA. | ||
| 905 | * In other cases, disable IrDA function. | ||
| 906 | */ | ||
| 907 | static void bfin_set_ldisc(struct tty_struct *tty) | ||
| 908 | { | ||
| 909 | int line = tty->index; | ||
| 910 | unsigned short val; | ||
| 911 | |||
| 912 | if (line >= tty->driver->num) | ||
| 913 | return; | ||
| 914 | |||
| 915 | switch (tty->ldisc.num) { | ||
| 916 | case N_IRDA: | ||
| 917 | val = UART_GET_GCTL(&bfin_serial_ports[line]); | ||
| 918 | val |= (IREN | RPOLC); | ||
| 919 | UART_PUT_GCTL(&bfin_serial_ports[line], val); | ||
| 920 | break; | ||
| 921 | default: | ||
| 922 | val = UART_GET_GCTL(&bfin_serial_ports[line]); | ||
| 923 | val &= ~(IREN | RPOLC); | ||
| 924 | UART_PUT_GCTL(&bfin_serial_ports[line], val); | ||
| 925 | } | ||
| 926 | } | ||
| 927 | |||
| 903 | static struct uart_ops bfin_serial_pops = { | 928 | static struct uart_ops bfin_serial_pops = { |
| 904 | .tx_empty = bfin_serial_tx_empty, | 929 | .tx_empty = bfin_serial_tx_empty, |
| 905 | .set_mctrl = bfin_serial_set_mctrl, | 930 | .set_mctrl = bfin_serial_set_mctrl, |
| @@ -1261,6 +1286,7 @@ static int __init bfin_serial_init(void) | |||
| 1261 | 1286 | ||
| 1262 | ret = uart_register_driver(&bfin_serial_reg); | 1287 | ret = uart_register_driver(&bfin_serial_reg); |
| 1263 | if (ret == 0) { | 1288 | if (ret == 0) { |
| 1289 | bfin_serial_reg.tty_driver->set_ldisc = bfin_set_ldisc; | ||
| 1264 | ret = platform_driver_register(&bfin_serial_driver); | 1290 | ret = platform_driver_register(&bfin_serial_driver); |
| 1265 | if (ret) { | 1291 | if (ret) { |
| 1266 | pr_debug("uart register failed\n"); | 1292 | pr_debug("uart register failed\n"); |
