Skip to content

Commit

Permalink
pcf857x: support working w/o platform data
Browse files Browse the repository at this point in the history
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).

Signed-off-by: Dmitry Eremin-Solenikov <[email protected]>
Cc: Jean Delvare <[email protected]>
Cc: David Brownell <[email protected]>
Cc: Grant Likely <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
lumag authored and torvalds committed Aug 11, 2010
1 parent 4a22b8a commit 49946f6
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions drivers/gpio/pcf857x.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand All @@ -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;
Expand Down Expand Up @@ -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)
Expand All @@ -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);
Expand All @@ -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);
Expand Down

0 comments on commit 49946f6

Please sign in to comment.