69 lines
1.9 KiB
Diff
69 lines
1.9 KiB
Diff
From 1e41dc0ee2f3807328db95e4f87ff1333245190f Mon Sep 17 00:00:00 2001
|
|
From: Florian Fainelli <florian@openwrt.org>
|
|
Date: Fri, 20 Apr 2012 15:37:34 +0200
|
|
Subject: [PATCH] spi/bcm63xx: don't use the stopping state
|
|
|
|
We do not need to use a flag to indicate if the master driver is stopping
|
|
it is sufficient to perform spi master unregistering in the platform
|
|
driver's remove function.
|
|
|
|
Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
|
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
|
|
---
|
|
drivers/spi/spi-bcm63xx.c | 13 ++-----------
|
|
1 file changed, 2 insertions(+), 11 deletions(-)
|
|
|
|
--- a/drivers/spi/spi-bcm63xx.c
|
|
+++ b/drivers/spi/spi-bcm63xx.c
|
|
@@ -39,8 +39,6 @@
|
|
#define DRV_VER "0.1.2"
|
|
|
|
struct bcm63xx_spi {
|
|
- spinlock_t lock;
|
|
- int stopping;
|
|
struct completion done;
|
|
|
|
void __iomem *regs;
|
|
@@ -161,9 +159,6 @@ static int bcm63xx_spi_setup(struct spi_
|
|
|
|
bs = spi_master_get_devdata(spi->master);
|
|
|
|
- if (bs->stopping)
|
|
- return -ESHUTDOWN;
|
|
-
|
|
if (!spi->bits_per_word)
|
|
spi->bits_per_word = 8;
|
|
|
|
@@ -410,10 +405,8 @@ static int __devinit bcm63xx_spi_probe(s
|
|
master->unprepare_transfer_hardware = bcm63xx_spi_unprepare_transfer;
|
|
master->transfer_one_message = bcm63xx_spi_transfer_one;
|
|
bs->speed_hz = pdata->speed_hz;
|
|
- bs->stopping = 0;
|
|
bs->tx_io = (u8 *)(bs->regs + bcm63xx_spireg(SPI_MSG_DATA));
|
|
bs->rx_io = (const u8 *)(bs->regs + bcm63xx_spireg(SPI_RX_DATA));
|
|
- spin_lock_init(&bs->lock);
|
|
|
|
/* Initialize hardware */
|
|
clk_enable(bs->clk);
|
|
@@ -447,18 +440,16 @@ static int __devexit bcm63xx_spi_remove(
|
|
struct spi_master *master = platform_get_drvdata(pdev);
|
|
struct bcm63xx_spi *bs = spi_master_get_devdata(master);
|
|
|
|
+ spi_unregister_master(master);
|
|
+
|
|
/* reset spi block */
|
|
bcm_spi_writeb(bs, 0, SPI_INT_MASK);
|
|
- spin_lock(&bs->lock);
|
|
- bs->stopping = 1;
|
|
|
|
/* HW shutdown */
|
|
clk_disable(bs->clk);
|
|
clk_put(bs->clk);
|
|
|
|
- spin_unlock(&bs->lock);
|
|
platform_set_drvdata(pdev, 0);
|
|
- spi_unregister_master(master);
|
|
|
|
return 0;
|
|
}
|