Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08f937f4 authored by Janusz Uzycki's avatar Janusz Uzycki Committed by Greg Kroah-Hartman
Browse files

serial: mxs-auart: fix gpio change detection on interrupt



mxs_auart_modem_status() did't detect gpio's state change
because s->mctrl_prev was modified before by mctrl_gpio_get().
The patch introduces mctrl_temp variable to fix the bug.

Signed-off-by: default avatarJanusz Uzycki <j.uzycki@elproma.com.pl>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f3006e44
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -799,6 +799,7 @@ static irqreturn_t mxs_auart_irq_handle(int irq, void *context)
{
{
	u32 istat;
	u32 istat;
	struct mxs_auart_port *s = context;
	struct mxs_auart_port *s = context;
	u32 mctrl_temp = s->mctrl_prev;
	u32 stat = readl(s->port.membase + AUART_STAT);
	u32 stat = readl(s->port.membase + AUART_STAT);


	istat = readl(s->port.membase + AUART_INTR);
	istat = readl(s->port.membase + AUART_INTR);
@@ -818,7 +819,7 @@ static irqreturn_t mxs_auart_irq_handle(int irq, void *context)
	    irq == s->gpio_irq[UART_GPIO_DSR] ||
	    irq == s->gpio_irq[UART_GPIO_DSR] ||
	    irq == s->gpio_irq[UART_GPIO_RI])
	    irq == s->gpio_irq[UART_GPIO_RI])
		mxs_auart_modem_status(s,
		mxs_auart_modem_status(s,
				mctrl_gpio_get(s->gpios, &s->mctrl_prev));
				mctrl_gpio_get(s->gpios, &mctrl_temp));


	if (istat & AUART_INTR_CTSMIS) {
	if (istat & AUART_INTR_CTSMIS) {
		if (CTS_AT_AUART() && s->ms_irq_enabled)
		if (CTS_AT_AUART() && s->ms_irq_enabled)