[PATCH] Adds support for Open Firmware in MAX730x GPIO Driver

From: Christophe Leroy
Date: Fri Feb 22 2013 - 04:35:21 EST


This patch allows the use of the MAX730x Driver on systems using
the Open Firmware platform format

Signed-off-by: Patrick Vasseur <patrick.vasseur@xxxxxx>
Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx>

diff -ur linux-3.7.9/drivers/gpio/gpio-max7301.c linux/drivers/gpio/gpio-max7301.c
--- linux-3.7.9/drivers/gpio/gpio-max7301.c 2013-02-17 19:53:32.000000000 +0100
+++ linux/drivers/gpio/gpio-max7301.c 2013-02-17 12:57:40.000000000 +0100
@@ -56,7 +56,8 @@
int ret;

/* bits_per_word cannot be configured in platform data */
- spi->bits_per_word = 16;
+ if (spi->dev.platform_data)
+ spi->bits_per_word = 16;
ret = spi_setup(spi);
if (ret < 0)
return ret;
diff -ur linux-3.7.9/drivers/gpio/gpio-max730x.c linux/drivers/gpio/gpio-max730x.c
--- linux-3.7.9/drivers/gpio/gpio-max730x.c 2013-02-17 19:53:32.000000000 +0100
+++ linux/drivers/gpio/gpio-max730x.c 2013-02-22 10:15:46.000000000 +0100
@@ -163,12 +163,13 @@
int __devinit __max730x_probe(struct max7301 *ts)
{
struct device *dev = ts->dev;
+ struct device_node *np = dev->of_node;
struct max7301_platform_data *pdata;
int i, ret;

pdata = dev->platform_data;
- if (!pdata || !pdata->base) {
- dev_err(dev, "incorrect or missing platform data\n");
+ if ((!pdata || !pdata->base) && !np) {
+ dev_err(dev, "No platform data nor Device Tree found\n");
return -EINVAL;
}

@@ -178,7 +179,6 @@
/* Power up the chip and disable IRQ output */
ts->write(dev, 0x04, 0x01);

- ts->input_pullup_active = pdata->input_pullup_active;
ts->chip.label = dev->driver->name;

ts->chip.direction_input = max7301_direction_input;
@@ -186,7 +186,12 @@
ts->chip.direction_output = max7301_direction_output;
ts->chip.set = max7301_set;

- ts->chip.base = pdata->base;
+ if (pdata) {
+ ts->input_pullup_active = pdata->input_pullup_active;
+ ts->chip.base = pdata->base;
+ } else {
+ ts->chip.base = -1;
+ }
ts->chip.ngpio = PIN_NUMBER;
ts->chip.can_sleep = 1;
ts->chip.dev = 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/