diff options
| author | Ramakrishna Pallala <ramakrishna.pallala@intel.com> | 2012-04-19 00:30:18 -0400 |
|---|---|---|
| committer | Anton Vorontsov <anton.vorontsov@linaro.org> | 2012-05-05 08:29:00 -0400 |
| commit | e6fe3597fa17dcd7ee82a5198beadb19a457a478 (patch) | |
| tree | 8f62622cd7be07ab070cac1e37292e2bbeed60ea | |
| parent | 2aac3de19b72608f474c90034185c2be4908728f (diff) | |
smb347_charger: Cleanup power supply registration code in probe
This patch checks if the usb or mains charging is enabled by the
platform before registering with the power supply class.
Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
| -rw-r--r-- | drivers/power/smb347-charger.c | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/drivers/power/smb347-charger.c b/drivers/power/smb347-charger.c index ce1694d1a365..3e9df6ef8537 100644 --- a/drivers/power/smb347-charger.c +++ b/drivers/power/smb347-charger.c | |||
| @@ -816,8 +816,10 @@ static irqreturn_t smb347_interrupt(int irq, void *data) | |||
| 816 | if (irqstat_e & (IRQSTAT_E_USBIN_UV_IRQ | IRQSTAT_E_DCIN_UV_IRQ)) { | 816 | if (irqstat_e & (IRQSTAT_E_USBIN_UV_IRQ | IRQSTAT_E_DCIN_UV_IRQ)) { |
| 817 | if (smb347_update_status(smb) > 0) { | 817 | if (smb347_update_status(smb) > 0) { |
| 818 | smb347_update_online(smb); | 818 | smb347_update_online(smb); |
| 819 | power_supply_changed(&smb->mains); | 819 | if (smb->pdata->use_mains) |
| 820 | power_supply_changed(&smb->usb); | 820 | power_supply_changed(&smb->mains); |
| 821 | if (smb->pdata->use_usb) | ||
| 822 | power_supply_changed(&smb->usb); | ||
| 821 | } | 823 | } |
| 822 | ret = IRQ_HANDLED; | 824 | ret = IRQ_HANDLED; |
| 823 | } | 825 | } |
| @@ -1185,21 +1187,34 @@ static int smb347_probe(struct i2c_client *client, | |||
| 1185 | if (ret < 0) | 1187 | if (ret < 0) |
| 1186 | return ret; | 1188 | return ret; |
| 1187 | 1189 | ||
| 1188 | smb->mains.name = "smb347-mains"; | 1190 | if (smb->pdata->use_mains) { |
| 1189 | smb->mains.type = POWER_SUPPLY_TYPE_MAINS; | 1191 | smb->mains.name = "smb347-mains"; |
| 1190 | smb->mains.get_property = smb347_mains_get_property; | 1192 | smb->mains.type = POWER_SUPPLY_TYPE_MAINS; |
| 1191 | smb->mains.properties = smb347_mains_properties; | 1193 | smb->mains.get_property = smb347_mains_get_property; |
| 1192 | smb->mains.num_properties = ARRAY_SIZE(smb347_mains_properties); | 1194 | smb->mains.properties = smb347_mains_properties; |
| 1193 | smb->mains.supplied_to = battery; | 1195 | smb->mains.num_properties = ARRAY_SIZE(smb347_mains_properties); |
| 1194 | smb->mains.num_supplicants = ARRAY_SIZE(battery); | 1196 | smb->mains.supplied_to = battery; |
| 1195 | 1197 | smb->mains.num_supplicants = ARRAY_SIZE(battery); | |
| 1196 | smb->usb.name = "smb347-usb"; | 1198 | ret = power_supply_register(dev, &smb->mains); |
| 1197 | smb->usb.type = POWER_SUPPLY_TYPE_USB; | 1199 | if (ret < 0) |
| 1198 | smb->usb.get_property = smb347_usb_get_property; | 1200 | return ret; |
| 1199 | smb->usb.properties = smb347_usb_properties; | 1201 | } |
| 1200 | smb->usb.num_properties = ARRAY_SIZE(smb347_usb_properties); | 1202 | |
| 1201 | smb->usb.supplied_to = battery; | 1203 | if (smb->pdata->use_usb) { |
| 1202 | smb->usb.num_supplicants = ARRAY_SIZE(battery); | 1204 | smb->usb.name = "smb347-usb"; |
| 1205 | smb->usb.type = POWER_SUPPLY_TYPE_USB; | ||
| 1206 | smb->usb.get_property = smb347_usb_get_property; | ||
| 1207 | smb->usb.properties = smb347_usb_properties; | ||
| 1208 | smb->usb.num_properties = ARRAY_SIZE(smb347_usb_properties); | ||
| 1209 | smb->usb.supplied_to = battery; | ||
| 1210 | smb->usb.num_supplicants = ARRAY_SIZE(battery); | ||
| 1211 | ret = power_supply_register(dev, &smb->usb); | ||
| 1212 | if (ret < 0) { | ||
| 1213 | if (smb->pdata->use_mains) | ||
| 1214 | power_supply_unregister(&smb->mains); | ||
| 1215 | return ret; | ||
| 1216 | } | ||
| 1217 | } | ||
| 1203 | 1218 | ||
| 1204 | smb->battery.name = "smb347-battery"; | 1219 | smb->battery.name = "smb347-battery"; |
| 1205 | smb->battery.type = POWER_SUPPLY_TYPE_BATTERY; | 1220 | smb->battery.type = POWER_SUPPLY_TYPE_BATTERY; |
| @@ -1207,20 +1222,13 @@ static int smb347_probe(struct i2c_client *client, | |||
| 1207 | smb->battery.properties = smb347_battery_properties; | 1222 | smb->battery.properties = smb347_battery_properties; |
| 1208 | smb->battery.num_properties = ARRAY_SIZE(smb347_battery_properties); | 1223 | smb->battery.num_properties = ARRAY_SIZE(smb347_battery_properties); |
| 1209 | 1224 | ||
| 1210 | ret = power_supply_register(dev, &smb->mains); | ||
| 1211 | if (ret < 0) | ||
| 1212 | return ret; | ||
| 1213 | |||
| 1214 | ret = power_supply_register(dev, &smb->usb); | ||
| 1215 | if (ret < 0) { | ||
| 1216 | power_supply_unregister(&smb->mains); | ||
| 1217 | return ret; | ||
| 1218 | } | ||
| 1219 | 1225 | ||
| 1220 | ret = power_supply_register(dev, &smb->battery); | 1226 | ret = power_supply_register(dev, &smb->battery); |
| 1221 | if (ret < 0) { | 1227 | if (ret < 0) { |
| 1222 | power_supply_unregister(&smb->usb); | 1228 | if (smb->pdata->use_usb) |
| 1223 | power_supply_unregister(&smb->mains); | 1229 | power_supply_unregister(&smb->usb); |
| 1230 | if (smb->pdata->use_mains) | ||
| 1231 | power_supply_unregister(&smb->mains); | ||
| 1224 | return ret; | 1232 | return ret; |
| 1225 | } | 1233 | } |
| 1226 | 1234 | ||
| @@ -1255,8 +1263,10 @@ static int smb347_remove(struct i2c_client *client) | |||
| 1255 | } | 1263 | } |
| 1256 | 1264 | ||
| 1257 | power_supply_unregister(&smb->battery); | 1265 | power_supply_unregister(&smb->battery); |
| 1258 | power_supply_unregister(&smb->usb); | 1266 | if (smb->pdata->use_usb) |
| 1259 | power_supply_unregister(&smb->mains); | 1267 | power_supply_unregister(&smb->usb); |
| 1268 | if (smb->pdata->use_mains) | ||
| 1269 | power_supply_unregister(&smb->mains); | ||
| 1260 | return 0; | 1270 | return 0; |
| 1261 | } | 1271 | } |
| 1262 | 1272 | ||
