aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/power/supply/sbs-battery.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
index 20f3be6f5b9a..f9012ed29f47 100644
--- a/drivers/power/supply/sbs-battery.c
+++ b/drivers/power/supply/sbs-battery.c
@@ -162,7 +162,6 @@ struct sbs_info {
162 bool is_present; 162 bool is_present;
163 bool gpio_detect; 163 bool gpio_detect;
164 bool enable_detection; 164 bool enable_detection;
165 int irq;
166 int last_state; 165 int last_state;
167 int poll_time; 166 int poll_time;
168 struct delayed_work work; 167 struct delayed_work work;
@@ -661,7 +660,8 @@ done:
661 660
662static irqreturn_t sbs_irq(int irq, void *devid) 661static irqreturn_t sbs_irq(int irq, void *devid)
663{ 662{
664 struct power_supply *battery = devid; 663 struct sbs_info *chip = devid;
664 struct power_supply *battery = chip->power_supply;
665 665
666 power_supply_changed(battery); 666 power_supply_changed(battery);
667 667
@@ -869,9 +869,9 @@ static int sbs_probe(struct i2c_client *client,
869 goto skip_gpio; 869 goto skip_gpio;
870 } 870 }
871 871
872 rc = request_irq(irq, sbs_irq, 872 rc = devm_request_threaded_irq(&client->dev, irq, NULL, sbs_irq,
873 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 873 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
874 dev_name(&client->dev), chip->power_supply); 874 dev_name(&client->dev), chip);
875 if (rc) { 875 if (rc) {
876 dev_warn(&client->dev, "Failed to request irq: %d\n", rc); 876 dev_warn(&client->dev, "Failed to request irq: %d\n", rc);
877 gpio_free(pdata->battery_detect); 877 gpio_free(pdata->battery_detect);
@@ -879,8 +879,6 @@ static int sbs_probe(struct i2c_client *client,
879 goto skip_gpio; 879 goto skip_gpio;
880 } 880 }
881 881
882 chip->irq = irq;
883
884skip_gpio: 882skip_gpio:
885 /* 883 /*
886 * Before we register, we might need to make sure we can actually talk 884 * Before we register, we might need to make sure we can actually talk
@@ -915,8 +913,6 @@ skip_gpio:
915 return 0; 913 return 0;
916 914
917exit_psupply: 915exit_psupply:
918 if (chip->irq)
919 free_irq(chip->irq, chip->power_supply);
920 if (chip->gpio_detect) 916 if (chip->gpio_detect)
921 gpio_free(pdata->battery_detect); 917 gpio_free(pdata->battery_detect);
922 918
@@ -927,8 +923,6 @@ static int sbs_remove(struct i2c_client *client)
927{ 923{
928 struct sbs_info *chip = i2c_get_clientdata(client); 924 struct sbs_info *chip = i2c_get_clientdata(client);
929 925
930 if (chip->irq)
931 free_irq(chip->irq, chip->power_supply);
932 if (chip->gpio_detect) 926 if (chip->gpio_detect)
933 gpio_free(chip->pdata->battery_detect); 927 gpio_free(chip->pdata->battery_detect);
934 928