aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@pengutronix.de>2008-04-28 05:14:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-28 11:58:34 -0400
commitd72cbed0c486e3db8b56380635f8e845073ce63a (patch)
tree8739c1078f970a2acdb24fd3f2b94c68c89dd3b5 /drivers
parent438d8908b379b6322fc3b28d45c9ebdddf58bc20 (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')
-rw-r--r--drivers/gpio/mcp23s08.c1
-rw-r--r--drivers/gpio/pca953x.c1
-rw-r--r--drivers/gpio/pcf857x.c1
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
194static int __devinit pca953x_probe(struct i2c_client *client) 195static 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