gpio: max732x: use i2c_new_dummy_device()
We now have a resource managed version of i2c_new_dummy_device() that also returns an actual error code instead of a NULL-pointer. Use it in the max732x GPIO driver and simplify code in the process. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
parent
8764c4ca50
commit
375b942467
|
@ -652,12 +652,12 @@ static int max732x_probe(struct i2c_client *client,
|
|||
case 0x60:
|
||||
chip->client_group_a = client;
|
||||
if (nr_port > 8) {
|
||||
c = i2c_new_dummy(client->adapter, addr_b);
|
||||
if (!c) {
|
||||
c = devm_i2c_new_dummy_device(&client->dev,
|
||||
client->adapter, addr_b);
|
||||
if (IS_ERR(c)) {
|
||||
dev_err(&client->dev,
|
||||
"Failed to allocate I2C device\n");
|
||||
ret = -ENODEV;
|
||||
goto out_failed;
|
||||
return PTR_ERR(c);
|
||||
}
|
||||
chip->client_group_b = chip->client_dummy = c;
|
||||
}
|
||||
|
@ -665,12 +665,12 @@ static int max732x_probe(struct i2c_client *client,
|
|||
case 0x50:
|
||||
chip->client_group_b = client;
|
||||
if (nr_port > 8) {
|
||||
c = i2c_new_dummy(client->adapter, addr_a);
|
||||
if (!c) {
|
||||
c = devm_i2c_new_dummy_device(&client->dev,
|
||||
client->adapter, addr_a);
|
||||
if (IS_ERR(c)) {
|
||||
dev_err(&client->dev,
|
||||
"Failed to allocate I2C device\n");
|
||||
ret = -ENODEV;
|
||||
goto out_failed;
|
||||
return PTR_ERR(c);
|
||||
}
|
||||
chip->client_group_a = chip->client_dummy = c;
|
||||
}
|
||||
|
@ -678,36 +678,34 @@ static int max732x_probe(struct i2c_client *client,
|
|||
default:
|
||||
dev_err(&client->dev, "invalid I2C address specified %02x\n",
|
||||
client->addr);
|
||||
ret = -EINVAL;
|
||||
goto out_failed;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (nr_port > 8 && !chip->client_dummy) {
|
||||
dev_err(&client->dev,
|
||||
"Failed to allocate second group I2C device\n");
|
||||
ret = -ENODEV;
|
||||
goto out_failed;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
mutex_init(&chip->lock);
|
||||
|
||||
ret = max732x_readb(chip, is_group_a(chip, 0), &chip->reg_out[0]);
|
||||
if (ret)
|
||||
goto out_failed;
|
||||
return ret;
|
||||
if (nr_port > 8) {
|
||||
ret = max732x_readb(chip, is_group_a(chip, 8), &chip->reg_out[1]);
|
||||
if (ret)
|
||||
goto out_failed;
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = gpiochip_add_data(&chip->gpio_chip, chip);
|
||||
if (ret)
|
||||
goto out_failed;
|
||||
return ret;
|
||||
|
||||
ret = max732x_irq_setup(chip, id);
|
||||
if (ret) {
|
||||
gpiochip_remove(&chip->gpio_chip);
|
||||
goto out_failed;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (pdata && pdata->setup) {
|
||||
|
@ -719,10 +717,6 @@ static int max732x_probe(struct i2c_client *client,
|
|||
|
||||
i2c_set_clientdata(client, chip);
|
||||
return 0;
|
||||
|
||||
out_failed:
|
||||
i2c_unregister_device(chip->client_dummy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int max732x_remove(struct i2c_client *client)
|
||||
|
@ -744,9 +738,6 @@ static int max732x_remove(struct i2c_client *client)
|
|||
|
||||
gpiochip_remove(&chip->gpio_chip);
|
||||
|
||||
/* unregister any dummy i2c_client */
|
||||
i2c_unregister_device(chip->client_dummy);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue