diff options
| -rw-r--r-- | drivers/power/pda_power.c | 11 | ||||
| -rw-r--r-- | include/linux/pda_power.h | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c index c8aa55b81fd8..82810b7bff9c 100644 --- a/drivers/power/pda_power.c +++ b/drivers/power/pda_power.c | |||
| @@ -209,6 +209,12 @@ static int pda_power_probe(struct platform_device *pdev) | |||
| 209 | 209 | ||
| 210 | pdata = pdev->dev.platform_data; | 210 | pdata = pdev->dev.platform_data; |
| 211 | 211 | ||
| 212 | if (pdata->init) { | ||
| 213 | ret = pdata->init(dev); | ||
| 214 | if (ret < 0) | ||
| 215 | goto init_failed; | ||
| 216 | } | ||
| 217 | |||
| 212 | update_status(); | 218 | update_status(); |
| 213 | update_charger(); | 219 | update_charger(); |
| 214 | 220 | ||
| @@ -298,6 +304,9 @@ ac_irq_failed: | |||
| 298 | if (pdata->is_ac_online) | 304 | if (pdata->is_ac_online) |
| 299 | power_supply_unregister(&pda_psy_ac); | 305 | power_supply_unregister(&pda_psy_ac); |
| 300 | ac_supply_failed: | 306 | ac_supply_failed: |
| 307 | if (pdata->exit) | ||
| 308 | pdata->exit(dev); | ||
| 309 | init_failed: | ||
| 301 | wrongid: | 310 | wrongid: |
| 302 | return ret; | 311 | return ret; |
| 303 | } | 312 | } |
| @@ -318,6 +327,8 @@ static int pda_power_remove(struct platform_device *pdev) | |||
| 318 | power_supply_unregister(&pda_psy_usb); | 327 | power_supply_unregister(&pda_psy_usb); |
| 319 | if (pdata->is_ac_online) | 328 | if (pdata->is_ac_online) |
| 320 | power_supply_unregister(&pda_psy_ac); | 329 | power_supply_unregister(&pda_psy_ac); |
| 330 | if (pdata->exit) | ||
| 331 | pdata->exit(dev); | ||
| 321 | 332 | ||
| 322 | return 0; | 333 | return 0; |
| 323 | } | 334 | } |
diff --git a/include/linux/pda_power.h b/include/linux/pda_power.h index 225beb136807..cb7d10f30763 100644 --- a/include/linux/pda_power.h +++ b/include/linux/pda_power.h | |||
| @@ -16,10 +16,14 @@ | |||
| 16 | #define PDA_POWER_CHARGE_AC (1 << 0) | 16 | #define PDA_POWER_CHARGE_AC (1 << 0) |
| 17 | #define PDA_POWER_CHARGE_USB (1 << 1) | 17 | #define PDA_POWER_CHARGE_USB (1 << 1) |
| 18 | 18 | ||
| 19 | struct device; | ||
| 20 | |||
| 19 | struct pda_power_pdata { | 21 | struct pda_power_pdata { |
| 22 | int (*init)(struct device *dev); | ||
| 20 | int (*is_ac_online)(void); | 23 | int (*is_ac_online)(void); |
| 21 | int (*is_usb_online)(void); | 24 | int (*is_usb_online)(void); |
| 22 | void (*set_charge)(int flags); | 25 | void (*set_charge)(int flags); |
| 26 | void (*exit)(struct device *dev); | ||
| 23 | 27 | ||
| 24 | char **supplied_to; | 28 | char **supplied_to; |
| 25 | size_t num_supplicants; | 29 | size_t num_supplicants; |
