diff options
| -rw-r--r-- | drivers/spi/spi-bcm2835.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c index 9025edd7dc45..8a89dd1f2654 100644 --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c | |||
| @@ -347,8 +347,8 @@ static int bcm2835_spi_probe(struct platform_device *pdev) | |||
| 347 | 347 | ||
| 348 | clk_prepare_enable(bs->clk); | 348 | clk_prepare_enable(bs->clk); |
| 349 | 349 | ||
| 350 | err = request_irq(bs->irq, bcm2835_spi_interrupt, 0, | 350 | err = devm_request_irq(&pdev->dev, bs->irq, bcm2835_spi_interrupt, 0, |
| 351 | dev_name(&pdev->dev), master); | 351 | dev_name(&pdev->dev), master); |
| 352 | if (err) { | 352 | if (err) { |
| 353 | dev_err(&pdev->dev, "could not request IRQ: %d\n", err); | 353 | dev_err(&pdev->dev, "could not request IRQ: %d\n", err); |
| 354 | goto out_clk_disable; | 354 | goto out_clk_disable; |
| @@ -361,13 +361,11 @@ static int bcm2835_spi_probe(struct platform_device *pdev) | |||
| 361 | err = devm_spi_register_master(&pdev->dev, master); | 361 | err = devm_spi_register_master(&pdev->dev, master); |
| 362 | if (err) { | 362 | if (err) { |
| 363 | dev_err(&pdev->dev, "could not register SPI master: %d\n", err); | 363 | dev_err(&pdev->dev, "could not register SPI master: %d\n", err); |
| 364 | goto out_free_irq; | 364 | goto out_clk_disable; |
| 365 | } | 365 | } |
| 366 | 366 | ||
| 367 | return 0; | 367 | return 0; |
| 368 | 368 | ||
| 369 | out_free_irq: | ||
| 370 | free_irq(bs->irq, master); | ||
| 371 | out_clk_disable: | 369 | out_clk_disable: |
| 372 | clk_disable_unprepare(bs->clk); | 370 | clk_disable_unprepare(bs->clk); |
| 373 | out_master_put: | 371 | out_master_put: |
| @@ -380,8 +378,6 @@ static int bcm2835_spi_remove(struct platform_device *pdev) | |||
| 380 | struct spi_master *master = platform_get_drvdata(pdev); | 378 | struct spi_master *master = platform_get_drvdata(pdev); |
| 381 | struct bcm2835_spi *bs = spi_master_get_devdata(master); | 379 | struct bcm2835_spi *bs = spi_master_get_devdata(master); |
| 382 | 380 | ||
| 383 | free_irq(bs->irq, master); | ||
| 384 | |||
| 385 | /* Clear FIFOs, and disable the HW block */ | 381 | /* Clear FIFOs, and disable the HW block */ |
| 386 | bcm2835_wr(bs, BCM2835_SPI_CS, | 382 | bcm2835_wr(bs, BCM2835_SPI_CS, |
| 387 | BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX); | 383 | BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX); |
