aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/serial/sh-sci.c23
-rw-r--r--drivers/serial/sh-sci.h1
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
798static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) 798static 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) || \