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

Signed-off-by: Patrick Vasseur <patrick.vass...@c-s.fr>
Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr>

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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to