diff options
Diffstat (limited to 'drivers/power')
43 files changed, 276 insertions, 147 deletions
diff --git a/drivers/power/88pm860x_battery.c b/drivers/power/88pm860x_battery.c index beed5ecf..8bc80b0 100644 --- a/drivers/power/88pm860x_battery.c +++ b/drivers/power/88pm860x_battery.c @@ -901,7 +901,7 @@ static enum power_supply_property pm860x_batt_props[] = { POWER_SUPPLY_PROP_TEMP, }; -static __devinit int pm860x_battery_probe(struct platform_device *pdev) +static int pm860x_battery_probe(struct platform_device *pdev) { struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent); struct pm860x_battery_info *info; @@ -989,7 +989,7 @@ out: return ret; } -static int __devexit pm860x_battery_remove(struct platform_device *pdev) +static int pm860x_battery_remove(struct platform_device *pdev) { struct pm860x_battery_info *info = platform_get_drvdata(pdev); @@ -1033,7 +1033,7 @@ static struct platform_driver pm860x_battery_driver = { .pm = &pm860x_battery_pm_ops, }, .probe = pm860x_battery_probe, - .remove = __devexit_p(pm860x_battery_remove), + .remove = pm860x_battery_remove, }; module_platform_driver(pm860x_battery_driver); diff --git a/drivers/power/88pm860x_charger.c b/drivers/power/88pm860x_charger.c index 2dbeb14..4b37a5a 100644 --- a/drivers/power/88pm860x_charger.c +++ b/drivers/power/88pm860x_charger.c @@ -645,7 +645,7 @@ static struct pm860x_irq_desc { { "vchg", pm860x_vchg_handler }, }; -static __devinit int pm860x_charger_probe(struct platform_device *pdev) +static int pm860x_charger_probe(struct platform_device *pdev) { struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent); struct pm860x_charger_info *info; @@ -718,7 +718,7 @@ out: return ret; } -static int __devexit pm860x_charger_remove(struct platform_device *pdev) +static int pm860x_charger_remove(struct platform_device *pdev) { struct pm860x_charger_info *info = platform_get_drvdata(pdev); int i; @@ -738,7 +738,7 @@ static struct platform_driver pm860x_charger_driver = { .owner = THIS_MODULE, }, .probe = pm860x_charger_probe, - .remove = __devexit_p(pm860x_charger_remove), + .remove = pm860x_charger_remove, }; module_platform_driver(pm860x_charger_driver); diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 49a8939..b1d956d 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -335,6 +335,9 @@ config AB8500_BATTERY_THERM_ON_BATCTRL help Say Y to enable battery temperature measurements using thermistor connected on BATCTRL ADC. + +source "drivers/power/reset/Kconfig" + endif # POWER_SUPPLY source "drivers/power/avs/Kconfig" diff --git a/drivers/power/Makefile b/drivers/power/Makefile index b949cf8..f1d99f4 100644 --- a/drivers/power/Makefile +++ b/drivers/power/Makefile @@ -49,3 +49,4 @@ obj-$(CONFIG_CHARGER_MAX8997) += max8997_charger.o obj-$(CONFIG_CHARGER_MAX8998) += max8998_charger.o obj-$(CONFIG_POWER_AVS) += avs/ obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o +obj-$(CONFIG_POWER_RESET) += reset/ diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c index e3b6395..989b099 100644 --- a/drivers/power/ab8500_btemp.c +++ b/drivers/power/ab8500_btemp.c @@ -938,7 +938,7 @@ static int ab8500_btemp_suspend(struct platform_device *pdev, #define ab8500_btemp_resume NULL #endif -static int __devexit ab8500_btemp_remove(struct platform_device *pdev) +static int ab8500_btemp_remove(struct platform_device *pdev) { struct ab8500_btemp *di = platform_get_drvdata(pdev); int i, irq; @@ -960,7 +960,7 @@ static int __devexit ab8500_btemp_remove(struct platform_device *pdev) return 0; } -static int __devinit ab8500_btemp_probe(struct platform_device *pdev) +static int ab8500_btemp_probe(struct platform_device *pdev) { int irq, i, ret = 0; u8 val; @@ -1101,7 +1101,7 @@ free_device_info: static struct platform_driver ab8500_btemp_driver = { .probe = ab8500_btemp_probe, - .remove = __devexit_p(ab8500_btemp_remove), + .remove = ab8500_btemp_remove, .suspend = ab8500_btemp_suspend, .resume = ab8500_btemp_resume, .driver = { diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c index 26ff759..7ecb8ab 100644 --- a/drivers/power/ab8500_charger.c +++ b/drivers/power/ab8500_charger.c @@ -2490,7 +2490,7 @@ static int ab8500_charger_suspend(struct platform_device *pdev, #define ab8500_charger_resume NULL #endif -static int __devexit ab8500_charger_remove(struct platform_device *pdev) +static int ab8500_charger_remove(struct platform_device *pdev) { struct ab8500_charger *di = platform_get_drvdata(pdev); int i, irq, ret; @@ -2531,7 +2531,7 @@ static int __devexit ab8500_charger_remove(struct platform_device *pdev) return 0; } -static int __devinit ab8500_charger_probe(struct platform_device *pdev) +static int ab8500_charger_probe(struct platform_device *pdev) { int irq, i, charger_status, ret = 0; struct abx500_bm_plat_data *plat_data = pdev->dev.platform_data; @@ -2765,7 +2765,7 @@ free_device_info: static struct platform_driver ab8500_charger_driver = { .probe = ab8500_charger_probe, - .remove = __devexit_p(ab8500_charger_remove), + .remove = ab8500_charger_remove, .suspend = ab8500_charger_suspend, .resume = ab8500_charger_resume, .driver = { diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c index 2db8cc2..331dc43 100644 --- a/drivers/power/ab8500_fg.c +++ b/drivers/power/ab8500_fg.c @@ -2411,7 +2411,7 @@ static int ab8500_fg_suspend(struct platform_device *pdev, #define ab8500_fg_resume NULL #endif -static int __devexit ab8500_fg_remove(struct platform_device *pdev) +static int ab8500_fg_remove(struct platform_device *pdev) { int ret = 0; struct ab8500_fg *di = platform_get_drvdata(pdev); @@ -2442,7 +2442,7 @@ static struct ab8500_fg_interrupts ab8500_fg_irq[] = { {"CCEOC", ab8500_fg_cc_data_end_handler}, }; -static int __devinit ab8500_fg_probe(struct platform_device *pdev) +static int ab8500_fg_probe(struct platform_device *pdev) { int i, irq; int ret = 0; @@ -2614,7 +2614,7 @@ free_device_info: static struct platform_driver ab8500_fg_driver = { .probe = ab8500_fg_probe, - .remove = __devexit_p(ab8500_fg_remove), + .remove = ab8500_fg_remove, .suspend = ab8500_fg_suspend, .resume = ab8500_fg_resume, .driver = { diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/abx500_chargalg.c index 4d30280..19f2541 100644 --- a/drivers/power/abx500_chargalg.c +++ b/drivers/power/abx500_chargalg.c @@ -1782,7 +1782,7 @@ static int abx500_chargalg_suspend(struct platform_device *pdev, #define abx500_chargalg_resume NULL #endif -static int __devexit abx500_chargalg_remove(struct platform_device *pdev) +static int abx500_chargalg_remove(struct platform_device *pdev) { struct abx500_chargalg *di = platform_get_drvdata(pdev); @@ -1800,7 +1800,7 @@ static int __devexit abx500_chargalg_remove(struct platform_device *pdev) return 0; } -static int __devinit abx500_chargalg_probe(struct platform_device *pdev) +static int abx500_chargalg_probe(struct platform_device *pdev) { struct abx500_bm_plat_data *plat_data; int ret = 0; @@ -1893,7 +1893,7 @@ free_device_info: static struct platform_driver abx500_chargalg_driver = { .probe = abx500_chargalg_probe, - .remove = __devexit_p(abx500_chargalg_remove), + .remove = abx500_chargalg_remove, .suspend = abx500_chargalg_suspend, .resume = abx500_chargalg_resume, .driver = { diff --git a/drivers/power/avs/smartreflex.c b/drivers/power/avs/smartreflex.c index 24768a2..a17d084 100644 --- a/drivers/power/avs/smartreflex.c +++ b/drivers/power/avs/smartreflex.c @@ -130,24 +130,21 @@ static irqreturn_t sr_interrupt(int irq, void *data) static void sr_set_clk_length(struct omap_sr *sr) { - struct clk *sys_ck; - u32 sys_clk_speed; + struct clk *fck; + u32 fclk_speed; - if (cpu_is_omap34xx()) - sys_ck = clk_get(NULL, "sys_ck"); - else - sys_ck = clk_get(NULL, "sys_clkin_ck"); + fck = clk_get(&sr->pdev->dev, "fck"); - if (IS_ERR(sys_ck)) { - dev_err(&sr->pdev->dev, "%s: unable to get sys clk\n", - __func__); + if (IS_ERR(fck)) { + dev_err(&sr->pdev->dev, "%s: unable to get fck for device %s\n", + __func__, dev_name(&sr->pdev->dev)); return; } - sys_clk_speed = clk_get_rate(sys_ck); - clk_put(sys_ck); + fclk_speed = clk_get_rate(fck); + clk_put(fck); - switch (sys_clk_speed) { + switch (fclk_speed) { case 12000000: sr->clk_length = SRCLKLENGTH_12MHZ_SYSCLK; break; @@ -164,34 +161,12 @@ static void sr_set_clk_length(struct omap_sr *sr) sr->clk_length = SRCLKLENGTH_38MHZ_SYSCLK; break; default: - dev_err(&sr->pdev->dev, "%s: Invalid sysclk value: %d\n", - __func__, sys_clk_speed); + dev_err(&sr->pdev->dev, "%s: Invalid fclk rate: %d\n", + __func__, fclk_speed); break; } } -static void sr_set_regfields(struct omap_sr *sr) -{ - /* - * For time being these values are defined in smartreflex.h - * and populated during init. May be they can be moved to board - * file or pmic specific data structure. In that case these structure - * fields will have to be populated using the pdata or pmic structure. - */ - if (cpu_is_omap34xx() || cpu_is_omap44xx()) { - sr->err_weight = OMAP3430_SR_ERRWEIGHT; - sr->err_maxlimit = OMAP3430_SR_ERRMAXLIMIT; - sr->accum_data = OMAP3430_SR_ACCUMDATA; - if (!(strcmp(sr->name, "smartreflex_mpu_iva"))) { - sr->senn_avgweight = OMAP3430_SR1_SENNAVGWEIGHT; - sr->senp_avgweight = OMAP3430_SR1_SENPAVGWEIGHT; - } else { - sr->senn_avgweight = OMAP3430_SR2_SENNAVGWEIGHT; - sr->senp_avgweight = OMAP3430_SR2_SENPAVGWEIGHT; - } - } -} - static void sr_start_vddautocomp(struct omap_sr *sr) { if (!sr_class || !(sr_class->enable) || !(sr_class->configure)) { @@ -924,8 +899,14 @@ static int __init omap_sr_probe(struct platform_device *pdev) sr_info->nvalue_count = pdata->nvalue_count; sr_info->senn_mod = pdata->senn_mod; sr_info->senp_mod = pdata->senp_mod; + sr_info->err_weight = pdata->err_weight; + sr_info->err_maxlimit = pdata->err_maxlimit; + sr_info->accum_data = pdata->accum_data; + sr_info->senn_avgweight = pdata->senn_avgweight; + sr_info->senp_avgweight = pdata->senp_avgweight; sr_info->autocomp_active = false; sr_info->ip_type = pdata->ip_type; + sr_info->base = ioremap(mem->start, resource_size(mem)); if (!sr_info->base) { dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); @@ -937,7 +918,6 @@ static int __init omap_sr_probe(struct platform_device *pdev) sr_info->irq = irq->start; sr_set_clk_length(sr_info); - sr_set_regfields(sr_info); list_add(&sr_info->node, &sr_list); @@ -1026,7 +1006,7 @@ err_free_devinfo: return ret; } -static int __devexit omap_sr_remove(struct platform_device *pdev) +static int omap_sr_remove(struct platform_device *pdev) { struct omap_sr_data *pdata = pdev->dev.platform_data; struct omap_sr *sr_info; @@ -1059,7 +1039,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev) return 0; } -static void __devexit omap_sr_shutdown(struct platform_device *pdev) +static void omap_sr_shutdown(struct platform_device *pdev) { struct omap_sr_data *pdata = pdev->dev.platform_data; struct omap_sr *sr_info; @@ -1083,8 +1063,8 @@ static void __devexit omap_sr_shutdown(struct platform_device *pdev) } static struct platform_driver smartreflex_driver = { - .remove = __devexit_p(omap_sr_remove), - .shutdown = __devexit_p(omap_sr_shutdown), + .remove = omap_sr_remove, + .shutdown = omap_sr_shutdown, .driver = { .name = "smartreflex", }, diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c index 5860d4d..e0edaf7 100644 --- a/drivers/power/bq27x00_battery.c +++ b/drivers/power/bq27x00_battery.c @@ -926,7 +926,7 @@ static int bq27000_read_platform(struct bq27x00_device_info *di, u8 reg, return pdata->read(dev, reg); } -static int __devinit bq27000_battery_probe(struct platform_device *pdev) +static int bq27000_battery_probe(struct platform_device *pdev) { struct bq27x00_device_info *di; struct bq27000_platform_data *pdata = pdev->dev.platform_data; @@ -969,7 +969,7 @@ err_free: return ret; } -static int __devexit bq27000_battery_remove(struct platform_device *pdev) +static int bq27000_battery_remove(struct platform_device *pdev) { struct bq27x00_device_info *di = platform_get_drvdata(pdev); @@ -983,7 +983,7 @@ static int __devexit bq27000_battery_remove(struct platform_device *pdev) static struct platform_driver bq27000_battery_driver = { .probe = bq27000_battery_probe, - .remove = __devexit_p(bq27000_battery_remove), + .remove = bq27000_battery_remove, .driver = { .name = "bq27000-battery", .owner = THIS_MODULE, diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c index 8a0aca6..adb3a4b 100644 --- a/drivers/power/charger-manager.c +++ b/drivers/power/charger-manager.c @@ -1655,7 +1655,7 @@ err_alloc: return ret; } -static int __devexit charger_manager_remove(struct platform_device *pdev) +static int charger_manager_remove(struct platform_device *pdev) { struct charger_manager *cm = platform_get_drvdata(pdev); struct charger_desc *desc = cm->desc; @@ -1812,7 +1812,7 @@ static struct platform_driver charger_manager_driver = { .pm = &charger_manager_pm, }, .probe = charger_manager_probe, - .remove = __devexit_p(charger_manager_remove), + .remove = charger_manager_remove, .id_table = charger_manager_id, }; diff --git a/drivers/power/collie_battery.c b/drivers/power/collie_battery.c index b19bfe4..c58d0e3 100644 --- a/drivers/power/collie_battery.c +++ b/drivers/power/collie_battery.c @@ -305,7 +305,7 @@ static int collie_bat_resume(struct ucb1x00_dev *dev) #define collie_bat_resume NULL #endif -static int __devinit collie_bat_probe(struct ucb1x00_dev *dev) +static int collie_bat_probe(struct ucb1x00_dev *dev) { int ret; @@ -349,7 +349,7 @@ err_psy_reg_main: return ret; } -static void __devexit collie_bat_remove(struct ucb1x00_dev *dev) +static void collie_bat_remove(struct ucb1x00_dev *dev) { free_irq(gpio_to_irq(COLLIE_GPIO_CO), &collie_bat_main); @@ -367,7 +367,7 @@ static void __devexit collie_bat_remove(struct ucb1x00_dev *dev) static struct ucb1x00_driver collie_bat_driver = { .add = collie_bat_probe, - .remove = __devexit_p(collie_bat_remove), + .remove = collie_bat_remove, .suspend = collie_bat_suspend, .resume = collie_bat_resume, }; diff --git a/drivers/power/da9052-battery.c b/drivers/power/da9052-battery.c index d9d034d..bb0df89 100644 --- a/drivers/power/da9052-battery.c +++ b/drivers/power/da9052-battery.c @@ -576,7 +576,7 @@ static const char *const da9052_bat_irqs[] = { "CHG END", }; -static s32 __devinit da9052_bat_probe(struct platform_device *pdev) +static s32 da9052_bat_probe(struct platform_device *pdev) { struct da9052_pdata *pdata; struct da9052_battery *bat; @@ -630,7 +630,7 @@ err: kfree(bat); return ret; } -static int __devexit da9052_bat_remove(struct platform_device *pdev) +static int da9052_bat_remove(struct platform_device *pdev) { int i; int irq; @@ -648,7 +648,7 @@ static int __devexit da9052_bat_remove(struct platform_device *pdev) static struct platform_driver da9052_bat_driver = { .probe = da9052_bat_probe, - .remove = __devexit_p(da9052_bat_remove), + .remove = da9052_bat_remove, .driver = { .name = "da9052-bat", .owner = THIS_MODULE, diff --git a/drivers/power/ds2780_battery.c b/drivers/power/ds2780_battery.c index 74fad94..8b6c453 100644 --- a/drivers/power/ds2780_battery.c +++ b/drivers/power/ds2780_battery.c @@ -755,7 +755,7 @@ static const struct attribute_group ds2780_attr_group = { .attrs = ds2780_attributes, }; -static int __devinit ds2780_battery_probe(struct platform_device *pdev) +static int ds2780_battery_probe(struct platform_device *pdev) { int ret = 0; struct ds2780_device_info *dev_info; @@ -819,7 +819,7 @@ fail: return ret; } -static int __devexit ds2780_battery_remove(struct platform_device *pdev) +static int ds2780_battery_remove(struct platform_device *pdev) { struct ds2780_device_info *dev_info = platform_get_drvdata(pdev); @@ -837,7 +837,7 @@ static struct platform_driver ds2780_battery_driver = { .name = "ds2780-battery", }, .probe = ds2780_battery_probe, - .remove = __devexit_p(ds2780_battery_remove), + .remove = ds2780_battery_remove, }; module_platform_driver(ds2780_battery_driver); diff --git a/drivers/power/ds2781_battery.c b/drivers/power/ds2781_battery.c index 22b3c8c..0a5acc6 100644 --- a/drivers/power/ds2781_battery.c +++ b/drivers/power/ds2781_battery.c @@ -750,7 +750,7 @@ static const struct attribute_group ds2781_attr_group = { .attrs = ds2781_attributes, }; -static int __devinit ds2781_battery_probe(struct platform_device *pdev) +static int ds2781_battery_probe(struct platform_device *pdev) { int ret = 0; struct ds2781_device_info *dev_info; @@ -810,7 +810,7 @@ fail: return ret; } -static int __devexit ds2781_battery_remove(struct platform_device *pdev) +static int ds2781_battery_remove(struct platform_device *pdev) { struct ds2781_device_info *dev_info = platform_get_drvdata(pdev); @@ -827,7 +827,7 @@ static struct platform_driver ds2781_battery_driver = { .name = "ds2781-battery", }, .probe = ds2781_battery_probe, - .remove = __devexit_p(ds2781_battery_remove), + .remove = ds2781_battery_remove, }; module_platform_driver(ds2781_battery_driver); diff --git a/drivers/power/generic-adc-battery.c b/drivers/power/generic-adc-battery.c index 9bdf444..e902b08 100644 --- a/drivers/power/generic-adc-battery.c +++ b/drivers/power/generic-adc-battery.c @@ -236,7 +236,7 @@ static irqreturn_t gab_charged(int irq, void *dev_id) return IRQ_HANDLED; } -static int __devinit gab_probe(struct platform_device *pdev) +static int gab_probe(struct platform_device *pdev) { struct gab *adc_bat; struct power_supply *psy; @@ -351,7 +351,7 @@ first_mem_fail: return ret; } -static int __devexit gab_remove(struct platform_device *pdev) +static int gab_remove(struct platform_device *pdev) { int chan; struct gab *adc_bat = platform_get_drvdata(pdev); @@ -413,7 +413,7 @@ static struct platform_driver gab_driver = { .pm = GAB_PM_OPS }, .probe = gab_probe, - .remove = __devexit_p(gab_remove), + .remove = gab_remove, }; module_platform_driver(gab_driver); diff --git a/drivers/power/gpio-charger.c b/drivers/power/gpio-charger.c index cb2aa31..e3e40a9 100644 --- a/drivers/power/gpio-charger.c +++ b/drivers/power/gpio-charger.c @@ -68,7 +68,7 @@ static enum power_supply_property gpio_charger_properties[] = { POWER_SUPPLY_PROP_ONLINE, }; -static int __devinit gpio_charger_probe(struct platform_device *pdev) +static int gpio_charger_probe(struct platform_device *pdev) { const struct gpio_charger_platform_data *pdata = pdev->dev.platform_data; struct gpio_charger *gpio_charger; @@ -144,7 +144,7 @@ err_free: return ret; } -static int __devexit gpio_charger_remove(struct platform_device *pdev) +static int gpio_charger_remove(struct platform_device *pdev) { struct gpio_charger *gpio_charger = platform_get_drvdata(pdev); @@ -177,7 +177,7 @@ static SIMPLE_DEV_PM_OPS(gpio_charger_pm_ops, NULL, gpio_charger_resume); static struct platform_driver gpio_charger_driver = { .probe = gpio_charger_probe, - .remove = __devexit_p(gpio_charger_remove), + .remove = gpio_charger_remove, .driver = { .name = "gpio-charger", .owner = THIS_MODULE, diff --git a/drivers/power/intel_mid_battery.c b/drivers/power/intel_mid_battery.c index d096497..18d136b 100644 --- a/drivers/power/intel_mid_battery.c +++ b/drivers/power/intel_mid_battery.c @@ -649,7 +649,7 @@ static void pmic_battery_handle_intrpt(struct work_struct *work) * PMIC battery initializes its internal data structue and other * infrastructure components for it to work as expected. */ -static __devinit int probe(int irq, struct device *dev) +static int probe(int irq, struct device *dev) { int retval = 0; struct pmic_power_module_info *pbi; @@ -739,7 +739,7 @@ wqueue_failed: return retval; } -static int __devinit platform_pmic_battery_probe(struct platform_device *pdev) +static int platform_pmic_battery_probe(struct platform_device *pdev) { return probe(pdev->id, &pdev->dev); } @@ -754,7 +754,7 @@ static int __devinit platform_pmic_battery_probe(struct platform_device *pdev) * pmic_battery_probe. */ -static int __devexit platform_pmic_battery_remove(struct platform_device *pdev) +static int platform_pmic_battery_remove(struct platform_device *pdev) { struct pmic_power_module_info *pbi = dev_get_drvdata(&pdev->dev); @@ -776,7 +776,7 @@ static struct platform_driver platform_pmic_battery_driver = { .owner = THIS_MODULE, }, .probe = platform_pmic_battery_probe, - .remove = __devexit_p(platform_pmic_battery_remove), + .remove = platform_pmic_battery_remove, }; module_platform_driver(platform_pmic_battery_driver); diff --git a/drivers/power/isp1704_charger.c b/drivers/power/isp1704_charger.c index 1229119..176ad59 100644 --- a/drivers/power/isp1704_charger.c +++ b/drivers/power/isp1704_charger.c @@ -406,7 +406,7 @@ static inline int isp1704_test_ulpi(struct isp1704_charger *isp) return -ENODEV; } -static int __devinit isp1704_charger_probe(struct platform_device *pdev) +static int isp1704_charger_probe(struct platform_device *pdev) { struct isp1704_charger *isp; int ret = -ENODEV; @@ -484,7 +484,7 @@ fail0: return ret; } -static int __devexit isp1704_charger_remove(struct platform_device *pdev) +static int isp1704_charger_remove(struct platform_device *pdev) { struct isp1704_charger *isp = platform_get_drvdata(pdev); @@ -502,7 +502,7 @@ static struct platform_driver isp1704_charger_driver = { .name = "isp1704_charger", }, .probe = isp1704_charger_probe, - .remove = __devexit_p(isp1704_charger_remove), + .remove = isp1704_charger_remove, }; module_platform_driver(isp1704_charger_driver); diff --git a/drivers/power/jz4740-battery.c b/drivers/power/jz4740-battery.c index ffbed5e..74ac69e 100644 --- a/drivers/power/jz4740-battery.c +++ b/drivers/power/jz4740-battery.c @@ -238,7 +238,7 @@ static void jz_battery_work(struct work_struct *work) schedule_delayed_work(&jz_battery->work, interval); } -static int __devinit jz_battery_probe(struct platform_device *pdev) +static int jz_battery_probe(struct platform_device *pdev) { int ret = 0; struct jz_battery_platform_data *pdata = pdev->dev.parent->platform_data; @@ -376,7 +376,7 @@ err_free: return ret; } -static int __devexit jz_battery_remove(struct platform_device *pdev) +static int jz_battery_remove(struct platform_device *pdev) { struct jz_battery *jz_battery = platform_get_drvdata(pdev); @@ -431,7 +431,7 @@ static const struct dev_pm_ops jz_battery_pm_ops = { static struct platform_driver jz_battery_driver = { .probe = jz_battery_probe, - .remove = __devexit_p(jz_battery_remove), + .remove = jz_battery_remove, .driver = { .name = "jz4740-battery", .owner = THIS_MODULE, diff --git a/drivers/power/lp8727_charger.c b/drivers/power/lp8727_charger.c index c628224..4ee71a9 100644 --- a/drivers/power/lp8727_charger.c +++ b/drivers/power/lp8727_charger.c @@ -522,7 +522,7 @@ static int lp8727_probe(struct i2c_client *cl, const struct i2c_device_id *id) return 0; } -static int __devexit lp8727_remove(struct i2c_client *cl) +static int lp8727_remove(struct i2c_client *cl) { struct lp8727_chg *pchg = i2c_get_clientdata(cl); @@ -542,7 +542,7 @@ static struct i2c_driver lp8727_driver = { .name = "lp8727", }, .probe = lp8727_probe, - .remove = __devexit_p(lp8727_remove), + .remove = lp8727_remove, .id_table = lp8727_ids, }; module_i2c_driver(lp8727_driver); diff --git a/drivers/power/lp8788-charger.c b/drivers/power/lp8788-charger.c index e852d12..a1c51ac 100644 --- a/drivers/power/lp8788-charger.c +++ b/drivers/power/lp8788-charger.c @@ -729,7 +729,7 @@ static const struct attribute_group lp8788_attr_group = { .attrs = lp8788_charger_attr, }; -static __devinit int lp8788_charger_probe(struct platform_device *pdev) +static int lp8788_charger_probe(struct platform_device *pdev) { struct lp8788 *lp = dev_get_drvdata(pdev->dev.parent); struct lp8788_charger *pchg; @@ -766,7 +766,7 @@ static __devinit int lp8788_charger_probe(struct platform_device *pdev) return 0; } -static int __devexit lp8788_charger_remove(struct platform_device *pdev) +static int lp8788_charger_remove(struct platform_device *pdev) { struct lp8788_charger *pchg = platform_get_drvdata(pdev); @@ -781,7 +781,7 @@ static int __devexit lp8788_charger_remove(struct platform_device *pdev) static struct platform_driver lp8788_charger_driver = { .probe = lp8788_charger_probe, - .remove = __devexit_p(lp8788_charger_remove), + .remove = lp8788_charger_remove, .driver = { .name = LP8788_DEV_CHARGER, .owner = THIS_MODULE, diff --git a/drivers/power/max17040_battery.c b/drivers/power/max17040_battery.c index 58e6783..22cfe9c 100644 --- a/drivers/power/max17040_battery.c +++ b/drivers/power/max17040_battery.c @@ -197,7 +197,7 @@ static enum power_supply_property max17040_battery_props[] = { POWER_SUPPLY_PROP_CAPACITY, }; -static int __devinit max17040_probe(struct i2c_client *client, +static int max17040_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); @@ -238,7 +238,7 @@ static int __devinit max17040_probe(struct i2c_client *client, return 0; } -static int __devexit max17040_remove(struct i2c_client *client) +static int max17040_remove(struct i2c_client *client) { struct max17040_chip *chip = i2c_get_clientdata(client); @@ -285,7 +285,7 @@ static struct i2c_driver max17040_i2c_driver = { .name = "max17040", }, .probe = max17040_probe, - .remove = __devexit_p(max17040_remove), + .remove = max17040_remove, .suspend = max17040_suspend, .resume = max17040_resume, .id_table = max17040_id, diff --git a/drivers/power/max17042_battery.c b/drivers/power/max17042_battery.c index 74abc6c..5ffe469 100644 --- a/drivers/power/max17042_battery.c +++ b/drivers/power/max17042_battery.c @@ -681,7 +681,7 @@ max17042_get_pdata(struct device *dev) } #endif -static int __devinit max17042_probe(struct i2c_client *client, +static int max17042_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); @@ -775,7 +775,7 @@ static int __devinit max17042_probe(struct i2c_client *client, return 0; } -static int __devexit max17042_remove(struct i2c_client *client) +static int max17042_remove(struct i2c_client *client) { struct max17042_chip *chip = i2c_get_clientdata(client); @@ -851,7 +851,7 @@ static struct i2c_driver max17042_i2c_driver = { .pm = MAX17042_PM_OPS, }, .probe = max17042_probe, - .remove = __devexit_p(max17042_remove), + .remove = max17042_remove, .id_table = max17042_id, }; module_i2c_driver(max17042_i2c_driver); diff --git a/drivers/power/max8903_charger.c b/drivers/power/max8903_charger.c index 3e23f43..14e2b96 100644 --- a/drivers/power/max8903_charger.c +++ b/drivers/power/max8903_charger.c @@ -179,7 +179,7 @@ static irqreturn_t max8903_fault(int irq, void *_data) return IRQ_HANDLED; } -static __devinit int max8903_probe(struct platform_device *pdev) +static int max8903_probe(struct platform_device *pdev) { struct max8903_data *data; struct device *dev = &pdev->dev; @@ -345,7 +345,7 @@ err: return ret; } -static __devexit int max8903_remove(struct platform_device *pdev) +static int max8903_remove(struct platform_device *pdev) { struct max8903_data *data = platform_get_drvdata(pdev); @@ -367,7 +367,7 @@ static __devexit int max8903_remove(struct platform_device *pdev) static struct platform_driver max8903_driver = { .probe = max8903_probe, - .remove = __devexit_p(max8903_remove), + .remove = max8903_remove, .driver = { .name = "max8903-charger", .owner = THIS_MODULE, diff --git a/drivers/power/max8925_power.c b/drivers/power/max8925_power.c index daa333b..1a075f1 100644 --- a/drivers/power/max8925_power.c +++ b/drivers/power/max8925_power.c @@ -356,7 +356,7 @@ do { \ _irq, ret); \ } while (0) -static __devinit int max8925_init_charger(struct max8925_chip *chip, +static int max8925_init_charger(struct max8925_chip *chip, struct max8925_power_info *info) { int ret; @@ -414,7 +414,7 @@ static __devinit int max8925_init_charger(struct max8925_chip *chip, return 0; } -static __devexit int max8925_deinit_charger(struct max8925_power_info *info) +static int max8925_deinit_charger(struct max8925_power_info *info) { struct max8925_chip *chip = info->chip; int irq; @@ -426,7 +426,7 @@ static __devexit int max8925_deinit_charger(struct max8925_power_info *info) return 0; } -static __devinit int max8925_power_probe(struct platform_device *pdev) +static int max8925_power_probe(struct platform_device *pdev) { struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent); struct max8925_power_pdata *pdata = NULL; @@ -501,7 +501,7 @@ out: return ret; } -static __devexit int max8925_power_remove(struct platform_device *pdev) +static int max8925_power_remove(struct platform_device *pdev) { struct max8925_power_info *info = platform_get_drvdata(pdev); @@ -517,7 +517,7 @@ static __devexit int max8925_power_remove(struct platform_device *pdev) static struct platform_driver max8925_power_driver = { .probe = max8925_power_probe, - .remove = __devexit_p(max8925_power_remove), + .remove = max8925_power_remove, .driver = { .name = "max8925-power", }, diff --git a/drivers/power/max8997_charger.c b/drivers/power/max8997_charger.c index 6e88c5d..e757885 100644 --- a/drivers/power/max8997_charger.c +++ b/drivers/power/max8997_charger.c @@ -86,7 +86,7 @@ static int max8997_battery_get_property(struct power_supply *psy, return 0; } -static __devinit int max8997_battery_probe(struct platform_device *pdev) +static int max8997_battery_probe(struct platform_device *pdev) { int ret = 0; struct charger_data *charger; @@ -167,7 +167,7 @@ err: return ret; } -static int __devexit max8997_battery_remove(struct platform_device *pdev) +static int max8997_battery_remove(struct platform_device *pdev) { struct charger_data *charger = platform_get_drvdata(pdev); @@ -187,7 +187,7 @@ static struct platform_driver max8997_battery_driver = { .owner = THIS_MODULE, }, .probe = max8997_battery_probe, - .remove = __devexit_p(max8997_battery_remove), + .remove = max8997_battery_remove, .id_table = max8997_battery_id, }; diff --git a/drivers/power/max8998_charger.c b/drivers/power/max8998_charger.c index 6dc01c2..bf677e3 100644 --- a/drivers/power/max8998_charger.c +++ b/drivers/power/max8998_charger.c @@ -75,7 +75,7 @@ static int max8998_battery_get_property(struct power_supply *psy, return 0; } -static __devinit int max8998_battery_probe(struct platform_device *pdev) +static int max8998_battery_probe(struct platform_device *pdev) { struct max8998_dev *iodev = dev_get_drvdata(pdev->dev.parent); struct max8998_platform_data *pdata = dev_get_platdata(iodev->dev); @@ -178,7 +178,7 @@ err: return ret; } -static int __devexit max8998_battery_remove(struct platform_device *pdev) +static int max8998_battery_remove(struct platform_device *pdev) { struct max8998_battery_data *max8998 = platform_get_drvdata(pdev); @@ -199,7 +199,7 @@ static struct platform_driver max8998_battery_driver = { .owner = THIS_MODULE, }, .probe = max8998_battery_probe, - .remove = __devexit_p(max8998_battery_remove), + .remove = max8998_battery_remove, .id_table = max8998_battery_id, }; diff --git a/drivers/power/olpc_battery.c b/drivers/power/olpc_battery.c index a89a41a..298c47d 100644 --- a/drivers/power/olpc_battery.c +++ b/drivers/power/olpc_battery.c @@ -598,7 +598,7 @@ static int olpc_battery_suspend(struct platform_device *pdev, return 0; } -static int __devinit olpc_battery_probe(struct platform_device *pdev) +static int olpc_battery_probe(struct platform_device *pdev) { int ret; uint8_t status; @@ -659,7 +659,7 @@ battery_failed: return ret; } -static int __devexit olpc_battery_remove(struct platform_device *pdev) +static int olpc_battery_remove(struct platform_device *pdev) { device_remove_file(olpc_bat.dev, &olpc_bat_error); device_remove_bin_file(olpc_bat.dev, &olpc_bat_eeprom); @@ -681,7 +681,7 @@ static struct platform_driver olpc_battery_driver = { .of_match_table = olpc_battery_ids, }, .probe = olpc_battery_probe, - .remove = __devexit_p(olpc_battery_remove), + .remove = olpc_battery_remove, .suspend = olpc_battery_suspend, }; diff --git a/drivers/power/pcf50633-charger.c b/drivers/power/pcf50633-charger.c index 3d1e9ef..c2122a7 100644 --- a/drivers/power/pcf50633-charger.c +++ b/drivers/power/pcf50633-charger.c @@ -366,7 +366,7 @@ static const u8 mbc_irq_handlers[] = { PCF50633_IRQ_LOWBAT, }; -static int __devinit pcf50633_mbc_probe(struct platform_device *pdev) +static int pcf50633_mbc_probe(struct platform_device *pdev) { struct pcf50633_mbc *mbc; int ret; @@ -447,7 +447,7 @@ static int __devinit pcf50633_mbc_probe(struct platform_device *pdev) return 0; } -static int __devexit pcf50633_mbc_remove(struct platform_device *pdev) +static int pcf50633_mbc_remove(struct platform_device *pdev) { struct pcf50633_mbc *mbc = platform_get_drvdata(pdev); int i; @@ -471,7 +471,7 @@ static struct platform_driver pcf50633_mbc_driver = { .name = "pcf50633-mbc", }, .probe = pcf50633_mbc_probe, - .remove = __devexit_p(pcf50633_mbc_remove), + .remove = pcf50633_mbc_remove, }; module_platform_driver(pcf50633_mbc_driver); diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 2436f13..f77a412 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c @@ -201,7 +201,7 @@ static int psy_register_thermal(struct power_supply *psy) for (i = 0; i < psy->num_properties; i++) { if (psy->properties[i] == POWER_SUPPLY_PROP_TEMP) { psy->tzd = thermal_zone_device_register(psy->name, 0, 0, - psy, &psy_tzd_ops, 0, 0); + psy, &psy_tzd_ops, NULL, 0, 0); if (IS_ERR(psy->tzd)) return PTR_ERR(psy->tzd); break; diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig new file mode 100644 index 0000000..6461b48 --- /dev/null +++ b/drivers/power/reset/Kconfig @@ -0,0 +1,15 @@ +menuconfig POWER_RESET + bool "Board level reset or power off" + help + Provides a number of drivers which either reset a complete board + or shut it down, by manipulating the main power supply on the board. + + Say Y here to enable board reset and power off + +config POWER_RESET_GPIO + bool "GPIO power-off driver" + depends on OF_GPIO && POWER_RESET + help + This driver supports turning off your board via a GPIO line. + If your board needs a GPIO high/low to power down, say Y and + create a binding in your devicetree. diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile new file mode 100644 index 0000000..751488a --- /dev/null +++ b/drivers/power/reset/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c new file mode 100644 index 0000000..0491e53 --- /dev/null +++ b/drivers/power/reset/gpio-poweroff.c @@ -0,0 +1,129 @@ +/* + * Toggles a GPIO pin to power down a device + * + * Jamie Lentin <jm@lentin.co.uk> + * Andrew Lunn <andrew@lunn.ch> + * + * Copyright (C) 2012 Jamie Lentin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/delay.h> +#include <linux/platform_device.h> +#include <linux/gpio.h> +#include <linux/of_platform.h> +#include <linux/of_gpio.h> +#include <linux/module.h> + +/* + * Hold configuration here, cannot be more than one instance of the driver + * since pm_power_off itself is global. + */ +static int gpio_num = -1; +static int gpio_active_low; + +static void gpio_poweroff_do_poweroff(void) +{ + BUG_ON(gpio_num == -1); + + /* drive it active */ + gpio_direction_output(gpio_num, !gpio_active_low); + mdelay(100); + /* rising edge or drive inactive */ + gpio_set_value(gpio_num, gpio_active_low); + mdelay(100); + /* falling edge */ + gpio_set_value(gpio_num, !gpio_active_low); + + /* give it some time */ + mdelay(3000); + + WARN_ON(1); +} + +static int __devinit gpio_poweroff_probe(struct platform_device *pdev) +{ + enum of_gpio_flags flags; + bool input = false; + int ret; + + /* If a pm_power_off function has already been added, leave it alone */ + if (pm_power_off != NULL) { + pr_err("%s: pm_power_off function already registered", + __func__); + return -EBUSY; + } + + gpio_num = of_get_gpio_flags(pdev->dev.of_node, 0, &flags); + if (gpio_num < 0) { + pr_err("%s: Could not get GPIO configuration: %d", + __func__, gpio_num); + return -ENODEV; + } + gpio_active_low = flags & OF_GPIO_ACTIVE_LOW; + + if (of_get_property(pdev->dev.of_node, "input", NULL)) + input = true; + + ret = gpio_request(gpio_num, "poweroff-gpio"); + if (ret) { + pr_err("%s: Could not get GPIO %d", __func__, gpio_num); + return ret; + } + if (input) { + if (gpio_direction_input(gpio_num)) { + pr_err("Could not set direction of GPIO %d to input", + gpio_num); + goto err; + } + } else { + if (gpio_direction_output(gpio_num, gpio_active_low)) { + pr_err("Could not set direction of GPIO %d", gpio_num); + goto err; + } + } + + pm_power_off = &gpio_poweroff_do_poweroff; + return 0; + +err: + gpio_free(gpio_num); + return -ENODEV; +} + +static int __devexit gpio_poweroff_remove(struct platform_device *pdev) +{ + if (gpio_num != -1) + gpio_free(gpio_num); + if (pm_power_off == &gpio_poweroff_do_poweroff) + pm_power_off = NULL; + + return 0; +} + +static const struct of_device_id of_gpio_poweroff_match[] = { + { .compatible = "gpio-poweroff", }, + {}, +}; + +static struct platform_driver gpio_poweroff_driver = { + .probe = gpio_poweroff_probe, + .remove = __devexit_p(gpio_poweroff_remove), + .driver = { + .name = "poweroff-gpio", + .owner = THIS_MODULE, + .of_match_table = of_gpio_poweroff_match, + }, +}; + +module_platform_driver(gpio_poweroff_driver); + +MODULE_AUTHOR("Jamie Lentin <jm@lentin.co.uk>"); +MODULE_DESCRIPTION("GPIO poweroff driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:poweroff-gpio"); diff --git a/drivers/power/s3c_adc_battery.c b/drivers/power/s3c_adc_battery.c index 8b804a5..d2ca989 100644 --- a/drivers/power/s3c_adc_battery.c +++ b/drivers/power/s3c_adc_battery.c @@ -286,7 +286,7 @@ static irqreturn_t s3c_adc_bat_charged(int irq, void *dev_id) return IRQ_HANDLED; } -static int __devinit s3c_adc_bat_probe(struct platform_device *pdev) +static int s3c_adc_bat_probe(struct platform_device *pdev) { struct s3c_adc_client *client; struct s3c_adc_bat_pdata *pdata = pdev->dev.platform_data; diff --git a/drivers/power/sbs-battery.c b/drivers/power/sbs-battery.c index 4146596..3960f0b 100644 --- a/drivers/power/sbs-battery.c +++ b/drivers/power/sbs-battery.c @@ -675,7 +675,7 @@ static struct sbs_platform_data *sbs_of_populate_pdata( } #endif -static int __devinit sbs_probe(struct i2c_client *client, +static int sbs_probe(struct i2c_client *client, const struct i2c_device_id *id) { struct sbs_info *chip; @@ -800,7 +800,7 @@ exit_free_name: return rc; } -static int __devexit sbs_remove(struct i2c_client *client) +static int sbs_remove(struct i2c_client *client) { struct sbs_info *chip = i2c_get_clientdata(client); @@ -853,7 +853,7 @@ MODULE_DEVICE_TABLE(i2c, sbs_id); static struct i2c_driver sbs_battery_driver = { .probe = sbs_probe, - .remove = __devexit_p(sbs_remove), + .remove = sbs_remove, .suspend = sbs_suspend, .resume = sbs_resume, .id_table = sbs_id, diff --git a/drivers/power/smb347-charger.c b/drivers/power/smb347-charger.c index a9707c1..acf84e8 100644 --- a/drivers/power/smb347-charger.c +++ b/drivers/power/smb347-charger.c @@ -1313,7 +1313,7 @@ static struct i2c_driver smb347_driver = { .name = "smb347", }, .probe = smb347_probe, - .remove = __devexit_p(smb347_remove), + .remove = smb347_remove, .id_table = smb347_id, }; diff --git a/drivers/power/tosa_battery.c b/drivers/power/tosa_battery.c index 51199b5..0224de5 100644 --- a/drivers/power/tosa_battery.c +++ b/drivers/power/tosa_battery.c @@ -342,7 +342,7 @@ static int tosa_bat_resume(struct platform_device *dev) #define tosa_bat_resume NULL #endif -static int __devinit tosa_bat_probe(struct platform_device *dev) +static int tosa_bat_probe(struct platform_device *dev) { int ret; @@ -409,7 +409,7 @@ err_psy_reg_main: return ret; } -static int __devexit tosa_bat_remove(struct platform_device *dev) +static int tosa_bat_remove(struct platform_device *dev) { free_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT), &tosa_bat_jacket); free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket); @@ -433,7 +433,7 @@ static struct platform_driver tosa_bat_driver = { .driver.name = "wm97xx-battery", .driver.owner = THIS_MODULE, .probe = tosa_bat_probe, - .remove = __devexit_p(tosa_bat_remove), + .remove = tosa_bat_remove, .suspend = tosa_bat_suspend, .resume = tosa_bat_resume, }; diff --git a/drivers/power/wm831x_backup.c b/drivers/power/wm831x_backup.c index 6243e69..d9cc169 100644 --- a/drivers/power/wm831x_backup.c +++ b/drivers/power/wm831x_backup.c @@ -161,7 +161,7 @@ static enum power_supply_property wm831x_backup_props[] = { * Initialisation *********************************************************************/ -static __devinit int wm831x_backup_probe(struct platform_device *pdev) +static int wm831x_backup_probe(struct platform_device *pdev) { struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); struct wm831x_pdata *wm831x_pdata = wm831x->dev->platform_data; @@ -207,7 +207,7 @@ err_kmalloc: return ret; } -static __devexit int wm831x_backup_remove(struct platform_device *pdev) +static int wm831x_backup_remove(struct platform_device *pdev) { struct wm831x_backup *devdata = platform_get_drvdata(pdev); @@ -220,7 +220,7 @@ static __devexit int wm831x_backup_remove(struct platform_device *pdev) static struct platform_driver wm831x_backup_driver = { .probe = wm831x_backup_probe, - .remove = __devexit_p(wm831x_backup_remove), + .remove = wm831x_backup_remove, .driver = { .name = "wm831x-backup", }, diff --git a/drivers/power/wm831x_power.c b/drivers/power/wm831x_power.c index fc1ad95..3bed2f5 100644 --- a/drivers/power/wm831x_power.c +++ b/drivers/power/wm831x_power.c @@ -489,7 +489,7 @@ static irqreturn_t wm831x_pwr_src_irq(int irq, void *data) return IRQ_HANDLED; } -static __devinit int wm831x_power_probe(struct platform_device *pdev) +static int wm831x_power_probe(struct platform_device *pdev) { struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); struct wm831x_pdata *wm831x_pdata = wm831x->dev->platform_data; @@ -625,7 +625,7 @@ err_kmalloc: return ret; } -static __devexit int wm831x_power_remove(struct platform_device *pdev) +static int wm831x_power_remove(struct platform_device *pdev) { struct wm831x_power *wm831x_power = platform_get_drvdata(pdev); struct wm831x *wm831x = wm831x_power->wm831x; @@ -654,7 +654,7 @@ static __devexit int wm831x_power_remove(struct platform_device *pdev) static struct platform_driver wm831x_power_driver = { .probe = wm831x_power_probe, - .remove = __devexit_p(wm831x_power_remove), + .remove = wm831x_power_remove, .driver = { .name = "wm831x-power", }, diff --git a/drivers/power/wm8350_power.c b/drivers/power/wm8350_power.c index fae04d3..b3607e2 100644 --- a/drivers/power/wm8350_power.c +++ b/drivers/power/wm8350_power.c @@ -442,7 +442,7 @@ static void free_charger_irq(struct wm8350 *wm8350) wm8350_free_irq(wm8350, WM8350_IRQ_EXT_BAT_FB, wm8350); } -static __devinit int wm8350_power_probe(struct platform_device *pdev) +static int wm8350_power_probe(struct platform_device *pdev) { struct wm8350 *wm8350 = platform_get_drvdata(pdev); struct wm8350_power *power = &wm8350->power; @@ -501,7 +501,7 @@ battery_failed: return ret; } -static __devexit int wm8350_power_remove(struct platform_device *pdev) +static int wm8350_power_remove(struct platform_device *pdev) { struct wm8350 *wm8350 = platform_get_drvdata(pdev); struct wm8350_power *power = &wm8350->power; @@ -516,7 +516,7 @@ static __devexit int wm8350_power_remove(struct platform_device *pdev) static struct platform_driver wm8350_power_driver = { .probe = wm8350_power_probe, - .remove = __devexit_p(wm8350_power_remove), + .remove = wm8350_power_remove, .driver = { .name = "wm8350-power", }, diff --git a/drivers/power/wm97xx_battery.c b/drivers/power/wm97xx_battery.c index e128a81..58f7348 100644 --- a/drivers/power/wm97xx_battery.c +++ b/drivers/power/wm97xx_battery.c @@ -162,7 +162,7 @@ static const struct dev_pm_ops wm97xx_bat_pm_ops = { }; #endif -static int __devinit wm97xx_bat_probe(struct platform_device *dev) +static int wm97xx_bat_probe(struct platform_device *dev) { int ret = 0; int props = 1; /* POWER_SUPPLY_PROP_PRESENT */ @@ -263,7 +263,7 @@ err: return ret; } -static int __devexit wm97xx_bat_remove(struct platform_device *dev) +static int wm97xx_bat_remove(struct platform_device *dev) { struct wm97xx_pdata *wmdata = dev->dev.platform_data; struct wm97xx_batt_pdata *pdata = wmdata->batt_pdata; @@ -287,7 +287,7 @@ static struct platform_driver wm97xx_bat_driver = { #endif }, .probe = wm97xx_bat_probe, - .remove = __devexit_p(wm97xx_bat_remove), + .remove = wm97xx_bat_remove, }; module_platform_driver(wm97xx_bat_driver); diff --git a/drivers/power/z2_battery.c b/drivers/power/z2_battery.c index 5757d0d..814d2e3 100644 --- a/drivers/power/z2_battery.c +++ b/drivers/power/z2_battery.c @@ -180,7 +180,7 @@ static int z2_batt_ps_init(struct z2_charger *charger, int props) return 0; } -static int __devinit z2_batt_probe(struct i2c_client *client, +static int z2_batt_probe(struct i2c_client *client, const struct i2c_device_id *id) { int ret = 0; @@ -251,7 +251,7 @@ err: return ret; } -static int __devexit z2_batt_remove(struct i2c_client *client) +static int z2_batt_remove(struct i2c_client *client) { struct z2_charger *charger = i2c_get_clientdata(client); struct z2_battery_info *info = charger->info; @@ -313,7 +313,7 @@ static struct i2c_driver z2_batt_driver = { .pm = Z2_BATTERY_PM_OPS }, .probe = z2_batt_probe, - .remove = __devexit_p(z2_batt_remove), + .remove = z2_batt_remove, .id_table = z2_batt_id, }; module_i2c_driver(z2_batt_driver); |