diff options
author | Guennadi Liakhovetski <g.liakhovetski@pengutronix.de> | 2008-04-28 05:14:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 11:58:34 -0400 |
commit | d72cbed0c486e3db8b56380635f8e845073ce63a (patch) | |
tree | 8739c1078f970a2acdb24fd3f2b94c68c89dd3b5 /drivers/gpio | |
parent | 438d8908b379b6322fc3b28d45c9ebdddf58bc20 (diff) |
gpiolib: i2c/spi drivers: handle rmmod better
Use the newly introduced owner field in struct gpio_chip to protect the
current (small) set of non-SOC GPIO drivers from being unloaded while any of
their GPIOs are in use.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
[ add mcp23s08 and pcf857x ]
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/mcp23s08.c | 1 | ||||
-rw-r--r-- | drivers/gpio/pca953x.c | 1 | ||||
-rw-r--r-- | drivers/gpio/pcf857x.c | 1 |
3 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpio/mcp23s08.c b/drivers/gpio/mcp23s08.c index bb60e8c1a1f0..7fb5b9d009d4 100644 --- a/drivers/gpio/mcp23s08.c +++ b/drivers/gpio/mcp23s08.c | |||
@@ -239,6 +239,7 @@ static int mcp23s08_probe(struct spi_device *spi) | |||
239 | mcp->chip.base = pdata->base; | 239 | mcp->chip.base = pdata->base; |
240 | mcp->chip.ngpio = 8; | 240 | mcp->chip.ngpio = 8; |
241 | mcp->chip.can_sleep = 1; | 241 | mcp->chip.can_sleep = 1; |
242 | mcp->chip.owner = THIS_MODULE; | ||
242 | 243 | ||
243 | spi_set_drvdata(spi, mcp); | 244 | spi_set_drvdata(spi, mcp); |
244 | 245 | ||
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index 6e72fd31184d..e0e0af536108 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c | |||
@@ -189,6 +189,7 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios) | |||
189 | gc->base = chip->gpio_start; | 189 | gc->base = chip->gpio_start; |
190 | gc->ngpio = gpios; | 190 | gc->ngpio = gpios; |
191 | gc->label = chip->client->name; | 191 | gc->label = chip->client->name; |
192 | gc->owner = THIS_MODULE; | ||
192 | } | 193 | } |
193 | 194 | ||
194 | static int __devinit pca953x_probe(struct i2c_client *client) | 195 | static int __devinit pca953x_probe(struct i2c_client *client) |
diff --git a/drivers/gpio/pcf857x.c b/drivers/gpio/pcf857x.c index c6b3b5378384..1106aa15ac79 100644 --- a/drivers/gpio/pcf857x.c +++ b/drivers/gpio/pcf857x.c | |||
@@ -159,6 +159,7 @@ static int pcf857x_probe(struct i2c_client *client) | |||
159 | 159 | ||
160 | gpio->chip.base = pdata->gpio_base; | 160 | gpio->chip.base = pdata->gpio_base; |
161 | gpio->chip.can_sleep = 1; | 161 | gpio->chip.can_sleep = 1; |
162 | gpio->chip.owner = THIS_MODULE; | ||
162 | 163 | ||
163 | /* NOTE: the OnSemi jlc1562b is also largely compatible with | 164 | /* NOTE: the OnSemi jlc1562b is also largely compatible with |
164 | * these parts, notably for output. It has a low-resolution | 165 | * these parts, notably for output. It has a low-resolution |