[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <201303051526.r25FQoCv002950@localhost.localdomain>
Date: Tue, 5 Mar 2013 16:26:50 +0100
From: Christophe Leroy <christophe.leroy@....fr>
To: Grant Likely <grant.likely@...retlab.ca>,
Linus Walleij <linus.walleij@...aro.org>
CC: linux-kernel@...r.kernel.org,
Patrick Vasseur <patrick.vasseur@....fr>
Subject: [PATCH v2] Adds support for Open Firmware in MAX730x GPIO Driver
This patch allows the use of the MAX730x Driver on systems using
the Open Firmware platform format.
The bit_per_word can be set in the OF Device tree, so no need to force it as with
the platform_data.
Signed-off-by: Patrick Vasseur <patrick.vasseur@....fr>
Signed-off-by: Christophe Leroy <christophe.leroy@....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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists