diff options
| -rw-r--r-- | drivers/serial/sh-sci.c | 23 | ||||
| -rw-r--r-- | drivers/serial/sh-sci.h | 1 |
2 files changed, 13 insertions, 11 deletions
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 47816e68c903..5c0f32c7fbf6 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
| @@ -797,26 +797,27 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr) | |||
| 797 | 797 | ||
| 798 | static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) | 798 | static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) |
| 799 | { | 799 | { |
| 800 | unsigned short ssr_status, scr_status; | 800 | unsigned short ssr_status, scr_status; |
| 801 | struct uart_port *port = ptr; | 801 | struct uart_port *port = ptr; |
| 802 | irqreturn_t ret = IRQ_NONE; | ||
| 802 | 803 | ||
| 803 | ssr_status = sci_in(port,SCxSR); | 804 | ssr_status = sci_in(port,SCxSR); |
| 804 | scr_status = sci_in(port,SCSCR); | 805 | scr_status = sci_in(port,SCSCR); |
| 805 | 806 | ||
| 806 | /* Tx Interrupt */ | 807 | /* Tx Interrupt */ |
| 807 | if ((ssr_status & 0x0020) && (scr_status & 0x0080)) | 808 | if ((ssr_status & 0x0020) && (scr_status & SCI_CTRL_FLAGS_TIE)) |
| 808 | sci_tx_interrupt(irq, ptr); | 809 | ret = sci_tx_interrupt(irq, ptr); |
| 809 | /* Rx Interrupt */ | 810 | /* Rx Interrupt */ |
| 810 | if ((ssr_status & 0x0002) && (scr_status & 0x0040)) | 811 | if ((ssr_status & 0x0002) && (scr_status & SCI_CTRL_FLAGS_RIE)) |
| 811 | sci_rx_interrupt(irq, ptr); | 812 | ret = sci_rx_interrupt(irq, ptr); |
| 812 | /* Error Interrupt */ | 813 | /* Error Interrupt */ |
| 813 | if ((ssr_status & 0x0080) && (scr_status & 0x0400)) | 814 | if ((ssr_status & 0x0080) && (scr_status & SCI_CTRL_FLAGS_REIE)) |
| 814 | sci_er_interrupt(irq, ptr); | 815 | ret = sci_er_interrupt(irq, ptr); |
| 815 | /* Break Interrupt */ | 816 | /* Break Interrupt */ |
| 816 | if ((ssr_status & 0x0010) && (scr_status & 0x0200)) | 817 | if ((ssr_status & 0x0010) && (scr_status & SCI_CTRL_FLAGS_REIE)) |
| 817 | sci_br_interrupt(irq, ptr); | 818 | ret = sci_br_interrupt(irq, ptr); |
| 818 | 819 | ||
| 819 | return IRQ_HANDLED; | 820 | return ret; |
| 820 | } | 821 | } |
| 821 | 822 | ||
| 822 | #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_HAVE_CLK) | 823 | #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_HAVE_CLK) |
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h index c17e541a07c4..6163a45f968f 100644 --- a/drivers/serial/sh-sci.h +++ b/drivers/serial/sh-sci.h | |||
| @@ -166,6 +166,7 @@ | |||
| 166 | #if defined(CONFIG_CPU_SUBTYPE_SH7750) || \ | 166 | #if defined(CONFIG_CPU_SUBTYPE_SH7750) || \ |
| 167 | defined(CONFIG_CPU_SUBTYPE_SH7091) || \ | 167 | defined(CONFIG_CPU_SUBTYPE_SH7091) || \ |
| 168 | defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ | 168 | defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ |
| 169 | defined(CONFIG_CPU_SUBTYPE_SH7722) || \ | ||
| 169 | defined(CONFIG_CPU_SUBTYPE_SH7750S) || \ | 170 | defined(CONFIG_CPU_SUBTYPE_SH7750S) || \ |
| 170 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ | 171 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ |
| 171 | defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ | 172 | defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ |
