Hello, On 6/25/10, David Brownell <davi...@pacbell.net> wrote: > > --- On Thu, 6/17/10, Dmitry Eremin-Solenikov <dbarysh...@gmail.com> wrote: > >> 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). >> Signed-off-by: Dmitry Eremin-Solenikov <dbarysh...@gmail.com> >> --- >> 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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev