[PATCH] max730x: Added setup/teardown hooks

From: stigge
Date: Fri Feb 11 2011 - 07:00:45 EST


max730x: Added setup/teardown hooks

This patch adds setup and teardown hooks for configuration of GPIO lines via
platform_data, similar to the pca953x driver.

Signed-off-by: Roland Stigge <stigge@xxxxxxxxx>

diff --git a/drivers/gpio/max730x.c b/drivers/gpio/max730x.c
index 94ce773..ccd624d 100644
--- a/drivers/gpio/max730x.c
+++ b/drivers/gpio/max730x.c
@@ -219,6 +219,12 @@ int __devinit __max730x_probe(struct max7301 *ts)
if (ret)
goto exit_destroy;

+ if (pdata->setup) {
+ ret = pdata->setup(ts->chip.base,
+ ts->chip.ngpio, pdata->context);
+ if (ret < 0)
+ dev_warn(dev, "setup failed, %d\n", ret);
+ }
return ret;

exit_destroy:
@@ -230,12 +236,24 @@ EXPORT_SYMBOL_GPL(__max730x_probe);

int __devexit __max730x_remove(struct device *dev)
{
+ struct max7301_platform_data *pdata;
struct max7301 *ts = dev_get_drvdata(dev);
int ret;

if (ts == NULL)
return -ENODEV;

+ pdata = dev->platform_data;
+
+ if (pdata && pdata->teardown) {
+ ret = pdata->teardown(ts->chip.base,
+ ts->chip.ngpio, pdata->context);
+ if (ret < 0) {
+ dev_err(dev, "teardown failed, %d\n", ret);
+ return ret;
+ }
+ }
+
dev_set_drvdata(dev, NULL);

/* Power down the chip and disable IRQ output */
diff --git a/include/linux/spi/max7301.h b/include/linux/spi/max7301.h
index bcaa2f7..02d685a 100644
--- a/include/linux/spi/max7301.h
+++ b/include/linux/spi/max7301.h
@@ -28,6 +28,13 @@ struct max7301_platform_data {
* ports of the controller are not used, too.
*/
u32 input_pullup_active;
+
+ void *context; /* param to setup/teardown */
+
+ int (*setup)(unsigned gpio, unsigned ngpio,
+ void *context);
+ int (*teardown)(unsigned gpio, unsigned ngpio,
+ void *context);
};

extern int __max730x_remove(struct device *dev);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/