Merge tag 'for-5.12/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / spi / spi-bcm2835.c
index 197485f..8965fe6 100644 (file)
@@ -386,7 +386,7 @@ static irqreturn_t bcm2835_spi_interrupt(int irq, void *dev_id)
                /* Transfer complete - reset SPI HW */
                bcm2835_spi_reset_hw(bs);
                /* wake up the framework */
-               complete(&bs->ctlr->xfer_completion);
+               spi_finalize_current_transfer(bs->ctlr);
        }
 
        return IRQ_HANDLED;
@@ -608,7 +608,7 @@ static void bcm2835_spi_dma_rx_done(void *data)
        bcm2835_spi_reset_hw(bs);
 
        /* and mark as completed */;
-       complete(&ctlr->xfer_completion);
+       spi_finalize_current_transfer(ctlr);
 }
 
 /**
@@ -640,7 +640,7 @@ static void bcm2835_spi_dma_tx_done(void *data)
 
        bcm2835_spi_undo_prologue(bs);
        bcm2835_spi_reset_hw(bs);
-       complete(&ctlr->xfer_completion);
+       spi_finalize_current_transfer(ctlr);
 }
 
 /**
@@ -1307,6 +1307,8 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
                return dev_err_probe(&pdev->dev, PTR_ERR(bs->clk),
                                     "could not get clk\n");
 
+       ctlr->max_speed_hz = clk_get_rate(bs->clk) / 2;
+
        bs->irq = platform_get_irq(pdev, 0);
        if (bs->irq <= 0)
                return bs->irq ? bs->irq : -ENODEV;