lkml.org 
[lkml]   [2013]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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@c-s.fr>
Signed-off-by: Christophe Leroy <christophe.leroy@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;

\
 
 \ /
  Last update: 2013-03-05 19:01    [W:0.048 / U:0.016 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site