diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-01-09 02:38:23 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-01-09 02:38:23 -0500 |
| commit | da733563be5a9da26fe81d9f007262d00b846e22 (patch) | |
| tree | db28291df94a2043af2123911984c5c173da4e6f /drivers/tty/serial/crisv10.c | |
| parent | 6ccbcf2cb41131f8d56ef0723bf3f7c1f8486076 (diff) | |
| parent | dab78d7924598ea4031663dd10db814e2e324928 (diff) | |
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/tty/serial/crisv10.c')
| -rw-r--r-- | drivers/tty/serial/crisv10.c | 44 |
1 files changed, 19 insertions, 25 deletions
diff --git a/drivers/tty/serial/crisv10.c b/drivers/tty/serial/crisv10.c index 225123b37f19..1dfba7b779c8 100644 --- a/drivers/tty/serial/crisv10.c +++ b/drivers/tty/serial/crisv10.c | |||
| @@ -258,7 +258,7 @@ static struct e100_serial rs_table[] = { | |||
| 258 | .dma_out_enabled = 1, | 258 | .dma_out_enabled = 1, |
| 259 | .dma_out_nbr = SER0_TX_DMA_NBR, | 259 | .dma_out_nbr = SER0_TX_DMA_NBR, |
| 260 | .dma_out_irq_nbr = SER0_DMA_TX_IRQ_NBR, | 260 | .dma_out_irq_nbr = SER0_DMA_TX_IRQ_NBR, |
| 261 | .dma_out_irq_flags = IRQF_DISABLED, | 261 | .dma_out_irq_flags = 0, |
| 262 | .dma_out_irq_description = "serial 0 dma tr", | 262 | .dma_out_irq_description = "serial 0 dma tr", |
| 263 | #else | 263 | #else |
| 264 | .dma_out_enabled = 0, | 264 | .dma_out_enabled = 0, |
| @@ -271,7 +271,7 @@ static struct e100_serial rs_table[] = { | |||
| 271 | .dma_in_enabled = 1, | 271 | .dma_in_enabled = 1, |
| 272 | .dma_in_nbr = SER0_RX_DMA_NBR, | 272 | .dma_in_nbr = SER0_RX_DMA_NBR, |
| 273 | .dma_in_irq_nbr = SER0_DMA_RX_IRQ_NBR, | 273 | .dma_in_irq_nbr = SER0_DMA_RX_IRQ_NBR, |
| 274 | .dma_in_irq_flags = IRQF_DISABLED, | 274 | .dma_in_irq_flags = 0, |
| 275 | .dma_in_irq_description = "serial 0 dma rec", | 275 | .dma_in_irq_description = "serial 0 dma rec", |
| 276 | #else | 276 | #else |
| 277 | .dma_in_enabled = 0, | 277 | .dma_in_enabled = 0, |
| @@ -313,7 +313,7 @@ static struct e100_serial rs_table[] = { | |||
| 313 | .dma_out_enabled = 1, | 313 | .dma_out_enabled = 1, |
| 314 | .dma_out_nbr = SER1_TX_DMA_NBR, | 314 | .dma_out_nbr = SER1_TX_DMA_NBR, |
| 315 | .dma_out_irq_nbr = SER1_DMA_TX_IRQ_NBR, | 315 | .dma_out_irq_nbr = SER1_DMA_TX_IRQ_NBR, |
| 316 | .dma_out_irq_flags = IRQF_DISABLED, | 316 | .dma_out_irq_flags = 0, |
| 317 | .dma_out_irq_description = "serial 1 dma tr", | 317 | .dma_out_irq_description = "serial 1 dma tr", |
| 318 | #else | 318 | #else |
| 319 | .dma_out_enabled = 0, | 319 | .dma_out_enabled = 0, |
| @@ -326,7 +326,7 @@ static struct e100_serial rs_table[] = { | |||
| 326 | .dma_in_enabled = 1, | 326 | .dma_in_enabled = 1, |
| 327 | .dma_in_nbr = SER1_RX_DMA_NBR, | 327 | .dma_in_nbr = SER1_RX_DMA_NBR, |
| 328 | .dma_in_irq_nbr = SER1_DMA_RX_IRQ_NBR, | 328 | .dma_in_irq_nbr = SER1_DMA_RX_IRQ_NBR, |
| 329 | .dma_in_irq_flags = IRQF_DISABLED, | 329 | .dma_in_irq_flags = 0, |
| 330 | .dma_in_irq_description = "serial 1 dma rec", | 330 | .dma_in_irq_description = "serial 1 dma rec", |
| 331 | #else | 331 | #else |
| 332 | .dma_in_enabled = 0, | 332 | .dma_in_enabled = 0, |
| @@ -369,7 +369,7 @@ static struct e100_serial rs_table[] = { | |||
| 369 | .dma_out_enabled = 1, | 369 | .dma_out_enabled = 1, |
| 370 | .dma_out_nbr = SER2_TX_DMA_NBR, | 370 | .dma_out_nbr = SER2_TX_DMA_NBR, |
| 371 | .dma_out_irq_nbr = SER2_DMA_TX_IRQ_NBR, | 371 | .dma_out_irq_nbr = SER2_DMA_TX_IRQ_NBR, |
| 372 | .dma_out_irq_flags = IRQF_DISABLED, | 372 | .dma_out_irq_flags = 0, |
| 373 | .dma_out_irq_description = "serial 2 dma tr", | 373 | .dma_out_irq_description = "serial 2 dma tr", |
| 374 | #else | 374 | #else |
| 375 | .dma_out_enabled = 0, | 375 | .dma_out_enabled = 0, |
| @@ -382,7 +382,7 @@ static struct e100_serial rs_table[] = { | |||
| 382 | .dma_in_enabled = 1, | 382 | .dma_in_enabled = 1, |
| 383 | .dma_in_nbr = SER2_RX_DMA_NBR, | 383 | .dma_in_nbr = SER2_RX_DMA_NBR, |
| 384 | .dma_in_irq_nbr = SER2_DMA_RX_IRQ_NBR, | 384 | .dma_in_irq_nbr = SER2_DMA_RX_IRQ_NBR, |
| 385 | .dma_in_irq_flags = IRQF_DISABLED, | 385 | .dma_in_irq_flags = 0, |
| 386 | .dma_in_irq_description = "serial 2 dma rec", | 386 | .dma_in_irq_description = "serial 2 dma rec", |
| 387 | #else | 387 | #else |
| 388 | .dma_in_enabled = 0, | 388 | .dma_in_enabled = 0, |
| @@ -423,7 +423,7 @@ static struct e100_serial rs_table[] = { | |||
| 423 | .dma_out_enabled = 1, | 423 | .dma_out_enabled = 1, |
| 424 | .dma_out_nbr = SER3_TX_DMA_NBR, | 424 | .dma_out_nbr = SER3_TX_DMA_NBR, |
| 425 | .dma_out_irq_nbr = SER3_DMA_TX_IRQ_NBR, | 425 | .dma_out_irq_nbr = SER3_DMA_TX_IRQ_NBR, |
| 426 | .dma_out_irq_flags = IRQF_DISABLED, | 426 | .dma_out_irq_flags = 0, |
| 427 | .dma_out_irq_description = "serial 3 dma tr", | 427 | .dma_out_irq_description = "serial 3 dma tr", |
| 428 | #else | 428 | #else |
| 429 | .dma_out_enabled = 0, | 429 | .dma_out_enabled = 0, |
| @@ -436,7 +436,7 @@ static struct e100_serial rs_table[] = { | |||
| 436 | .dma_in_enabled = 1, | 436 | .dma_in_enabled = 1, |
| 437 | .dma_in_nbr = SER3_RX_DMA_NBR, | 437 | .dma_in_nbr = SER3_RX_DMA_NBR, |
| 438 | .dma_in_irq_nbr = SER3_DMA_RX_IRQ_NBR, | 438 | .dma_in_irq_nbr = SER3_DMA_RX_IRQ_NBR, |
| 439 | .dma_in_irq_flags = IRQF_DISABLED, | 439 | .dma_in_irq_flags = 0, |
| 440 | .dma_in_irq_description = "serial 3 dma rec", | 440 | .dma_in_irq_description = "serial 3 dma rec", |
| 441 | #else | 441 | #else |
| 442 | .dma_in_enabled = 0, | 442 | .dma_in_enabled = 0, |
| @@ -1788,7 +1788,7 @@ static unsigned int handle_descr_data(struct e100_serial *info, | |||
| 1788 | struct etrax_recv_buffer *buffer = phys_to_virt(descr->buf) - sizeof *buffer; | 1788 | struct etrax_recv_buffer *buffer = phys_to_virt(descr->buf) - sizeof *buffer; |
| 1789 | 1789 | ||
| 1790 | if (info->recv_cnt + recvl > 65536) { | 1790 | if (info->recv_cnt + recvl > 65536) { |
| 1791 | printk(KERN_CRIT | 1791 | printk(KERN_WARNING |
| 1792 | "%s: Too much pending incoming serial data! Dropping %u bytes.\n", __func__, recvl); | 1792 | "%s: Too much pending incoming serial data! Dropping %u bytes.\n", __func__, recvl); |
| 1793 | return 0; | 1793 | return 0; |
| 1794 | } | 1794 | } |
| @@ -3234,9 +3234,8 @@ rs_write(struct tty_struct *tty, | |||
| 3234 | e100_disable_rx(info); | 3234 | e100_disable_rx(info); |
| 3235 | e100_enable_rx_irq(info); | 3235 | e100_enable_rx_irq(info); |
| 3236 | #endif | 3236 | #endif |
| 3237 | if ((info->rs485.flags & SER_RS485_RTS_BEFORE_SEND) && | 3237 | if (info->rs485.delay_rts_before_send > 0) |
| 3238 | (info->rs485.delay_rts_before_send > 0)) | 3238 | msleep(info->rs485.delay_rts_before_send); |
| 3239 | msleep(info->rs485.delay_rts_before_send); | ||
| 3240 | } | 3239 | } |
| 3241 | #endif /* CONFIG_ETRAX_RS485 */ | 3240 | #endif /* CONFIG_ETRAX_RS485 */ |
| 3242 | 3241 | ||
| @@ -3693,10 +3692,6 @@ rs_ioctl(struct tty_struct *tty, | |||
| 3693 | 3692 | ||
| 3694 | rs485data.delay_rts_before_send = rs485ctrl.delay_rts_before_send; | 3693 | rs485data.delay_rts_before_send = rs485ctrl.delay_rts_before_send; |
| 3695 | rs485data.flags = 0; | 3694 | rs485data.flags = 0; |
| 3696 | if (rs485data.delay_rts_before_send != 0) | ||
| 3697 | rs485data.flags |= SER_RS485_RTS_BEFORE_SEND; | ||
| 3698 | else | ||
| 3699 | rs485data.flags &= ~(SER_RS485_RTS_BEFORE_SEND); | ||
| 3700 | 3695 | ||
| 3701 | if (rs485ctrl.enabled) | 3696 | if (rs485ctrl.enabled) |
| 3702 | rs485data.flags |= SER_RS485_ENABLED; | 3697 | rs485data.flags |= SER_RS485_ENABLED; |
| @@ -3813,13 +3808,13 @@ rs_close(struct tty_struct *tty, struct file * filp) | |||
| 3813 | * one, we've got real problems, since it means the | 3808 | * one, we've got real problems, since it means the |
| 3814 | * serial port won't be shutdown. | 3809 | * serial port won't be shutdown. |
| 3815 | */ | 3810 | */ |
| 3816 | printk(KERN_CRIT | 3811 | printk(KERN_ERR |
| 3817 | "rs_close: bad serial port count; tty->count is 1, " | 3812 | "rs_close: bad serial port count; tty->count is 1, " |
| 3818 | "info->count is %d\n", info->count); | 3813 | "info->count is %d\n", info->count); |
| 3819 | info->count = 1; | 3814 | info->count = 1; |
| 3820 | } | 3815 | } |
| 3821 | if (--info->count < 0) { | 3816 | if (--info->count < 0) { |
| 3822 | printk(KERN_CRIT "rs_close: bad serial port count for ttyS%d: %d\n", | 3817 | printk(KERN_ERR "rs_close: bad serial port count for ttyS%d: %d\n", |
| 3823 | info->line, info->count); | 3818 | info->line, info->count); |
| 3824 | info->count = 0; | 3819 | info->count = 0; |
| 3825 | } | 3820 | } |
| @@ -4450,18 +4445,18 @@ static int __init rs_init(void) | |||
| 4450 | 4445 | ||
| 4451 | #if defined(CONFIG_ETRAX_RS485) | 4446 | #if defined(CONFIG_ETRAX_RS485) |
| 4452 | #if defined(CONFIG_ETRAX_RS485_ON_PA) | 4447 | #if defined(CONFIG_ETRAX_RS485_ON_PA) |
| 4453 | if (cris_io_interface_allocate_pins(if_ser0, 'a', rs485_pa_bit, | 4448 | if (cris_io_interface_allocate_pins(if_serial_0, 'a', rs485_pa_bit, |
| 4454 | rs485_pa_bit)) { | 4449 | rs485_pa_bit)) { |
| 4455 | printk(KERN_CRIT "ETRAX100LX serial: Could not allocate " | 4450 | printk(KERN_ERR "ETRAX100LX serial: Could not allocate " |
| 4456 | "RS485 pin\n"); | 4451 | "RS485 pin\n"); |
| 4457 | put_tty_driver(driver); | 4452 | put_tty_driver(driver); |
| 4458 | return -EBUSY; | 4453 | return -EBUSY; |
| 4459 | } | 4454 | } |
| 4460 | #endif | 4455 | #endif |
| 4461 | #if defined(CONFIG_ETRAX_RS485_ON_PORT_G) | 4456 | #if defined(CONFIG_ETRAX_RS485_ON_PORT_G) |
| 4462 | if (cris_io_interface_allocate_pins(if_ser0, 'g', rs485_pa_bit, | 4457 | if (cris_io_interface_allocate_pins(if_serial_0, 'g', rs485_pa_bit, |
| 4463 | rs485_port_g_bit)) { | 4458 | rs485_port_g_bit)) { |
| 4464 | printk(KERN_CRIT "ETRAX100LX serial: Could not allocate " | 4459 | printk(KERN_ERR "ETRAX100LX serial: Could not allocate " |
| 4465 | "RS485 pin\n"); | 4460 | "RS485 pin\n"); |
| 4466 | put_tty_driver(driver); | 4461 | put_tty_driver(driver); |
| 4467 | return -EBUSY; | 4462 | return -EBUSY; |
| @@ -4494,7 +4489,7 @@ static int __init rs_init(void) | |||
| 4494 | if (info->enabled) { | 4489 | if (info->enabled) { |
| 4495 | if (cris_request_io_interface(info->io_if, | 4490 | if (cris_request_io_interface(info->io_if, |
| 4496 | info->io_if_description)) { | 4491 | info->io_if_description)) { |
| 4497 | printk(KERN_CRIT "ETRAX100LX async serial: " | 4492 | printk(KERN_ERR "ETRAX100LX async serial: " |
| 4498 | "Could not allocate IO pins for " | 4493 | "Could not allocate IO pins for " |
| 4499 | "%s, port %d\n", | 4494 | "%s, port %d\n", |
| 4500 | info->io_if_description, i); | 4495 | info->io_if_description, i); |
| @@ -4531,7 +4526,6 @@ static int __init rs_init(void) | |||
| 4531 | /* Set sane defaults */ | 4526 | /* Set sane defaults */ |
| 4532 | info->rs485.flags &= ~(SER_RS485_RTS_ON_SEND); | 4527 | info->rs485.flags &= ~(SER_RS485_RTS_ON_SEND); |
| 4533 | info->rs485.flags |= SER_RS485_RTS_AFTER_SEND; | 4528 | info->rs485.flags |= SER_RS485_RTS_AFTER_SEND; |
| 4534 | info->rs485.flags &= ~(SER_RS485_RTS_BEFORE_SEND); | ||
| 4535 | info->rs485.delay_rts_before_send = 0; | 4529 | info->rs485.delay_rts_before_send = 0; |
| 4536 | info->rs485.flags &= ~(SER_RS485_ENABLED); | 4530 | info->rs485.flags &= ~(SER_RS485_ENABLED); |
| 4537 | #endif | 4531 | #endif |
| @@ -4558,7 +4552,7 @@ static int __init rs_init(void) | |||
| 4558 | /* hook the irq's for DMA channel 6 and 7, serial output and input, and some more... */ | 4552 | /* hook the irq's for DMA channel 6 and 7, serial output and input, and some more... */ |
| 4559 | 4553 | ||
| 4560 | if (request_irq(SERIAL_IRQ_NBR, ser_interrupt, | 4554 | if (request_irq(SERIAL_IRQ_NBR, ser_interrupt, |
| 4561 | IRQF_SHARED | IRQF_DISABLED, "serial ", driver)) | 4555 | IRQF_SHARED, "serial ", driver)) |
| 4562 | panic("%s: Failed to request irq8", __func__); | 4556 | panic("%s: Failed to request irq8", __func__); |
| 4563 | 4557 | ||
| 4564 | #endif | 4558 | #endif |
