Thread (1 message) 1 message, 1 author, 2010-06-27

Re: [PATCH] pcf857x: support working w/o platform data

flat view

From: Dmitry Eremin-Solenikov <hidden>
Date: 2010-06-27 06:38:46
Also in: lkml

Hello,

On 6/25/10, David Brownell [off-list ref] wrote:
quoted hunk
--- On Thu, 6/17/10, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> wrote:
quoted
Provide sane defaults for pcf857x, so
the driver can be used w/o
providing platform data (and thus can be simply bound via OF tree).

Maybe we can get an ack from some OF folk
who are using it in that way?
Please see arch/powerpc/boot//dts/mpc8349emitx.dts (the platform I'm using it).
quoted
Signed-off-by: Dmitry Eremin-Solenikov <redacted>
---
 drivers/gpio/pcf857x.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/gpio/pcf857x.c
b/drivers/gpio/pcf857x.c
index 29f19ce..879b473 100644
--- a/drivers/gpio/pcf857x.c
+++ b/drivers/gpio/pcf857x.c
@@ -190,7 +190,6 @@ static int pcf857x_probe(struct
i2c_client *client,
     pdata = client->dev.platform_data;
     if (!pdata) {

dev_dbg(&client->dev, "no platform data\n");
-        return -EINVAL;
     }

     /* Allocate, initialize, and register
this gpio_chip. */
@@ -200,7 +199,7 @@ static int pcf857x_probe(struct
i2c_client *client,

     mutex_init(&gpio->lock);

-    gpio->chip.base =
pdata->gpio_base;
+    gpio->chip.base = pdata ?
pdata->gpio_base : -1;
     gpio->chip.can_sleep = 1;
     gpio->chip.dev =
&client->dev;
     gpio->chip.owner = THIS_MODULE;
@@ -278,7 +277,7 @@ static int pcf857x_probe(struct
i2c_client *client,
      * to zero, our software copy
of the "latch" then matches the chip's
      * all-ones reset
state.  Otherwise it flags pins to be driven low.
      */
-    gpio->out = ~pdata->n_latch;
+    gpio->out = pdata ?
~pdata->n_latch : ~0;

     status =
gpiochip_add(&gpio->chip);
     if (status < 0)
@@ -299,7 +298,7 @@ static int pcf857x_probe(struct
i2c_client *client,
     /* Let platform code set up the GPIOs
and their users.
      * Now is the first time
anyone could use them.
      */
-    if (pdata->setup) {
+    if (pdata && pdata->setup)
{
         status =
pdata->setup(client,

    gpio->chip.base, gpio->chip.ngpio,

    pdata->context);
@@ -322,7 +321,7 @@ static int pcf857x_remove(struct
i2c_client *client)
     struct pcf857x
        *gpio =
i2c_get_clientdata(client);
     int

status = 0;

-    if (pdata->teardown) {
+    if (pdata &&
pdata->teardown) {
         status =
pdata->teardown(client,

    gpio->chip.base, gpio->chip.ngpio,

    pdata->context);
--
1.7.1

-- 
With best wishes
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help