On Wed, 9 Aug 2023 17:41:40 +0530 Vijaya Krishna Nivarthi <quic_vnivarth@xxxxxxxxxxx> wrote: > TX is handled by primary sequencer. After cancelling primary command, poll > primary sequencer's irq status instead of that of secondary. Hi, it is not clear to me if this is a bug fix or an improvement? > While at it, also remove a couple of redundant lines that read from IRQ_EN > register and write back same. This should go into a separate patch. Hugo Villeneuve. > Fixes: 2aaa43c70778 ("tty: serial: qcom-geni-serial: add support for serial engine DMA") > Signed-off-by: Vijaya Krishna Nivarthi <quic_vnivarth@xxxxxxxxxxx> > --- > drivers/tty/serial/qcom_geni_serial.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index 3ca5db2..b8aa4c1 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -591,7 +591,6 @@ static void qcom_geni_serial_stop_tx_dma(struct uart_port *uport) > { > struct qcom_geni_serial_port *port = to_dev_port(uport); > bool done; > - u32 m_irq_en; > > if (!qcom_geni_serial_main_active(uport)) > return; > @@ -603,12 +602,10 @@ static void qcom_geni_serial_stop_tx_dma(struct uart_port *uport) > port->tx_remaining = 0; > } > > - m_irq_en = readl(uport->membase + SE_GENI_M_IRQ_EN); > - writel(m_irq_en, uport->membase + SE_GENI_M_IRQ_EN); > geni_se_cancel_m_cmd(&port->se); > > - done = qcom_geni_serial_poll_bit(uport, SE_GENI_S_IRQ_STATUS, > - S_CMD_CANCEL_EN, true); > + done = qcom_geni_serial_poll_bit(uport, SE_GENI_M_IRQ_STATUS, > + M_CMD_CANCEL_EN, true); > if (!done) { > geni_se_abort_m_cmd(&port->se); > done = qcom_geni_serial_poll_bit(uport, SE_GENI_M_IRQ_STATUS, > -- > 2.7.4 >