Skip to content

Commit

Permalink
Blackfin Serial Driver: Enable IR function when user application (ira…
Browse files Browse the repository at this point in the history
…ttach /dev/ttyBFx -s) call TIOCSETD ioctl with line discipline N_IRDA

Signed-off-by: Graf Yang <graf.yang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
  • Loading branch information
Graf Yang authored and Bryan Wu committed Feb 29, 2008
1 parent 0c11700 commit 7d01b47
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions drivers/serial/bfin_5xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,31 @@ bfin_serial_verify_port(struct uart_port *port, struct serial_struct *ser)
return 0;
}

/*
* Enable the IrDA function if tty->ldisc.num is N_IRDA.
* In other cases, disable IrDA function.
*/
static void bfin_set_ldisc(struct tty_struct *tty)
{
int line = tty->index;
unsigned short val;

if (line >= tty->driver->num)
return;

switch (tty->ldisc.num) {
case N_IRDA:
val = UART_GET_GCTL(&bfin_serial_ports[line]);
val |= (IREN | RPOLC);
UART_PUT_GCTL(&bfin_serial_ports[line], val);
break;
default:
val = UART_GET_GCTL(&bfin_serial_ports[line]);
val &= ~(IREN | RPOLC);
UART_PUT_GCTL(&bfin_serial_ports[line], val);
}
}

static struct uart_ops bfin_serial_pops = {
.tx_empty = bfin_serial_tx_empty,
.set_mctrl = bfin_serial_set_mctrl,
Expand Down Expand Up @@ -1261,6 +1286,7 @@ static int __init bfin_serial_init(void)

ret = uart_register_driver(&bfin_serial_reg);
if (ret == 0) {
bfin_serial_reg.tty_driver->set_ldisc = bfin_set_ldisc;
ret = platform_driver_register(&bfin_serial_driver);
if (ret) {
pr_debug("uart register failed\n");
Expand Down

0 comments on commit 7d01b47

Please sign in to comment.