Loading arch/arm/mach-pxa/magician.c +41 −0 Original line number Diff line number Diff line Loading @@ -511,6 +511,37 @@ static struct platform_device pasic3 = { * External power */ static int power_supply_init(struct device *dev) { int ret; ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC"); if (ret) goto err_cs_ac; ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_USB, "CABLE_STATE_USB"); if (ret) goto err_cs_usb; ret = gpio_request(EGPIO_MAGICIAN_CHARGE_EN, "CHARGE_EN"); if (ret) goto err_chg_en; ret = gpio_request(GPIO30_MAGICIAN_nCHARGE_EN, "nCHARGE_EN"); if (!ret) ret = gpio_direction_output(GPIO30_MAGICIAN_nCHARGE_EN, 0); if (ret) goto err_nchg_en; return 0; err_nchg_en: gpio_free(EGPIO_MAGICIAN_CHARGE_EN); err_chg_en: gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB); err_cs_usb: gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); err_cs_ac: return ret; } static int magician_is_ac_online(void) { return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC); Loading @@ -527,14 +558,24 @@ static void magician_set_charge(int flags) gpio_set_value(EGPIO_MAGICIAN_CHARGE_EN, flags); } static void power_supply_exit(struct device *dev) { gpio_free(GPIO30_MAGICIAN_nCHARGE_EN); gpio_free(EGPIO_MAGICIAN_CHARGE_EN); gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB); gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); } static char *magician_supplicants[] = { "ds2760-battery.0", "backup-battery" }; static struct pda_power_pdata power_supply_info = { .init = power_supply_init, .is_ac_online = magician_is_ac_online, .is_usb_online = magician_is_usb_online, .set_charge = magician_set_charge, .exit = power_supply_exit, .supplied_to = magician_supplicants, .num_supplicants = ARRAY_SIZE(magician_supplicants), }; Loading Loading
arch/arm/mach-pxa/magician.c +41 −0 Original line number Diff line number Diff line Loading @@ -511,6 +511,37 @@ static struct platform_device pasic3 = { * External power */ static int power_supply_init(struct device *dev) { int ret; ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_AC, "CABLE_STATE_AC"); if (ret) goto err_cs_ac; ret = gpio_request(EGPIO_MAGICIAN_CABLE_STATE_USB, "CABLE_STATE_USB"); if (ret) goto err_cs_usb; ret = gpio_request(EGPIO_MAGICIAN_CHARGE_EN, "CHARGE_EN"); if (ret) goto err_chg_en; ret = gpio_request(GPIO30_MAGICIAN_nCHARGE_EN, "nCHARGE_EN"); if (!ret) ret = gpio_direction_output(GPIO30_MAGICIAN_nCHARGE_EN, 0); if (ret) goto err_nchg_en; return 0; err_nchg_en: gpio_free(EGPIO_MAGICIAN_CHARGE_EN); err_chg_en: gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB); err_cs_usb: gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); err_cs_ac: return ret; } static int magician_is_ac_online(void) { return gpio_get_value(EGPIO_MAGICIAN_CABLE_STATE_AC); Loading @@ -527,14 +558,24 @@ static void magician_set_charge(int flags) gpio_set_value(EGPIO_MAGICIAN_CHARGE_EN, flags); } static void power_supply_exit(struct device *dev) { gpio_free(GPIO30_MAGICIAN_nCHARGE_EN); gpio_free(EGPIO_MAGICIAN_CHARGE_EN); gpio_free(EGPIO_MAGICIAN_CABLE_STATE_USB); gpio_free(EGPIO_MAGICIAN_CABLE_STATE_AC); } static char *magician_supplicants[] = { "ds2760-battery.0", "backup-battery" }; static struct pda_power_pdata power_supply_info = { .init = power_supply_init, .is_ac_online = magician_is_ac_online, .is_usb_online = magician_is_usb_online, .set_charge = magician_set_charge, .exit = power_supply_exit, .supplied_to = magician_supplicants, .num_supplicants = ARRAY_SIZE(magician_supplicants), }; Loading