|
@@ -341,9 +341,10 @@ static irqreturn_t xilinx_spi_irq(int irq, void *dev_id)
|
|
|
|
|
|
if (ipif_isr & XSPI_INTR_TX_EMPTY) { /* Transmission completed */
|
|
|
complete(&xspi->done);
|
|
|
+ return IRQ_HANDLED;
|
|
|
}
|
|
|
|
|
|
- return IRQ_HANDLED;
|
|
|
+ return IRQ_NONE;
|
|
|
}
|
|
|
|
|
|
static int xilinx_spi_find_buffer_size(struct xilinx_spi *xspi)
|
|
@@ -455,7 +456,10 @@ static int xilinx_spi_probe(struct platform_device *pdev)
|
|
|
xspi->buffer_size = xilinx_spi_find_buffer_size(xspi);
|
|
|
|
|
|
xspi->irq = platform_get_irq(pdev, 0);
|
|
|
- if (xspi->irq >= 0) {
|
|
|
+ if (xspi->irq < 0 && xspi->irq != -ENXIO) {
|
|
|
+ ret = xspi->irq;
|
|
|
+ goto put_master;
|
|
|
+ } else if (xspi->irq >= 0) {
|
|
|
/* Register for SPI Interrupt */
|
|
|
ret = devm_request_irq(&pdev->dev, xspi->irq, xilinx_spi_irq, 0,
|
|
|
dev_name(&pdev->dev), xspi);
|