aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpio/gpio-sx150x.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/drivers/gpio/gpio-sx150x.c b/drivers/gpio/gpio-sx150x.c
index e6cff1cabd0c..d387eb524bf3 100644
--- a/drivers/gpio/gpio-sx150x.c
+++ b/drivers/gpio/gpio-sx150x.c
@@ -687,7 +687,7 @@ static int sx150x_probe(struct i2c_client *client,
687 if (rc < 0) 687 if (rc < 0)
688 return rc; 688 return rc;
689 689
690 rc = gpiochip_add_data(&chip->gpio_chip, chip); 690 rc = devm_gpiochip_add_data(&client->dev, &chip->gpio_chip, chip);
691 if (rc) 691 if (rc)
692 return rc; 692 return rc;
693 693
@@ -696,25 +696,12 @@ static int sx150x_probe(struct i2c_client *client,
696 pdata->irq_summary, 696 pdata->irq_summary,
697 pdata->irq_base); 697 pdata->irq_base);
698 if (rc < 0) 698 if (rc < 0)
699 goto probe_fail_post_gpiochip_add; 699 return rc;
700 } 700 }
701 701
702 i2c_set_clientdata(client, chip); 702 i2c_set_clientdata(client, chip);
703 703
704 return 0; 704 return 0;
705probe_fail_post_gpiochip_add:
706 gpiochip_remove(&chip->gpio_chip);
707 return rc;
708}
709
710static int sx150x_remove(struct i2c_client *client)
711{
712 struct sx150x_chip *chip;
713
714 chip = i2c_get_clientdata(client);
715 gpiochip_remove(&chip->gpio_chip);
716
717 return 0;
718} 705}
719 706
720static struct i2c_driver sx150x_driver = { 707static struct i2c_driver sx150x_driver = {
@@ -723,7 +710,6 @@ static struct i2c_driver sx150x_driver = {
723 .of_match_table = of_match_ptr(sx150x_of_match), 710 .of_match_table = of_match_ptr(sx150x_of_match),
724 }, 711 },
725 .probe = sx150x_probe, 712 .probe = sx150x_probe,
726 .remove = sx150x_remove,
727 .id_table = sx150x_id, 713 .id_table = sx150x_id,
728}; 714};
729 715