On Fri, Dec 10, 2021 at 05:02:47PM +0800, Li-hao Kuo wrote:
+static irqreturn_t sp7021_spi_sla_irq(int irq, void *dev)
+{
+ struct sp7021_spi_ctlr *pspim = dev;
+ unsigned int data_status;
+
+ data_status = readl(pspim->sla_base + SP7021_DATA_RDY_REG);
+ writel(data_status | SP7021_SLA_CLR_INT, pspim->sla_base + SP7021_DATA_RDY_REG);
+ complete(&pspim->sla_isr);
+ return IRQ_NONE;
+}
This will always return IRQ_NONE even if the interrupt actually fired -
that should eventually cause genirq to complain that there's a problem
with the interrupt never being handled I think (though perhaps if the
interrupt stops asserting it'll pick up on that). It should return
IRQ_HANDLED if there was something asserted in SP7021_DATA_RDY_REG.
Apart from that one thing this all looks good as far as I can see.