Merge branch 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszer...
[linux-2.6-microblaze.git] / drivers / gpio / gpio-pcf857x.c
index 1d4d9bc..709cd3f 100644 (file)
@@ -137,7 +137,7 @@ static int i2c_read_le16(struct i2c_client *client)
 
 static int pcf857x_input(struct gpio_chip *chip, unsigned offset)
 {
-       struct pcf857x  *gpio = container_of(chip, struct pcf857x, chip);
+       struct pcf857x  *gpio = gpiochip_get_data(chip);
        int             status;
 
        mutex_lock(&gpio->lock);
@@ -150,16 +150,16 @@ static int pcf857x_input(struct gpio_chip *chip, unsigned offset)
 
 static int pcf857x_get(struct gpio_chip *chip, unsigned offset)
 {
-       struct pcf857x  *gpio = container_of(chip, struct pcf857x, chip);
+       struct pcf857x  *gpio = gpiochip_get_data(chip);
        int             value;
 
        value = gpio->read(gpio->client);
-       return (value < 0) ? 0 : (value & (1 << offset));
+       return (value < 0) ? value : !!(value & (1 << offset));
 }
 
 static int pcf857x_output(struct gpio_chip *chip, unsigned offset, int value)
 {
-       struct pcf857x  *gpio = container_of(chip, struct pcf857x, chip);
+       struct pcf857x  *gpio = gpiochip_get_data(chip);
        unsigned        bit = 1 << offset;
        int             status;
 
@@ -293,7 +293,7 @@ static int pcf857x_probe(struct i2c_client *client,
 
        gpio->chip.base                 = pdata ? pdata->gpio_base : -1;
        gpio->chip.can_sleep            = true;
-       gpio->chip.dev                  = &client->dev;
+       gpio->chip.parent               = &client->dev;
        gpio->chip.owner                = THIS_MODULE;
        gpio->chip.get                  = pcf857x_get;
        gpio->chip.set                  = pcf857x_set;
@@ -372,7 +372,7 @@ static int pcf857x_probe(struct i2c_client *client,
        gpio->out = ~n_latch;
        gpio->status = gpio->out;
 
-       status = gpiochip_add(&gpio->chip);
+       status = gpiochip_add_data(&gpio->chip, gpio);
        if (status < 0)
                goto fail;
 
@@ -447,7 +447,6 @@ static int pcf857x_remove(struct i2c_client *client)
 static struct i2c_driver pcf857x_driver = {
        .driver = {
                .name   = "pcf857x",
-               .owner  = THIS_MODULE,
                .of_match_table = of_match_ptr(pcf857x_of_table),
        },
        .probe  = pcf857x_probe,