Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01ec8c54 authored by Michel JAOUEN's avatar Michel JAOUEN Committed by Lee Jones
Browse files

pm2301: Provide u9540 support for the pm2301 charger



AC charger driver for the DB9540 based platforms.

Signed-off-by: default avatarRajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
Signed-off-by: default avatarLoic Pallardy <loic.pallardy@stericsson.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Reviewed-by: default avatarMichel JAOUEN <michel.jaouen@stericsson.com>
Tested-by: default avatarMichel JAOUEN <michel.jaouen@stericsson.com>
parent 8fd526fd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -346,6 +346,13 @@ config AB8500_BM
	help
	  Say Y to include support for AB8500 battery management.

config CHARGER_PM2301
	bool "PM2301 Battery Charger Driver"
	depends on AB8500_BM
	help
	  Say Y to include support for PM2301 charger driver.
	  Depends on AB8500 battery management core.

source "drivers/power/reset/Kconfig"

endif # POWER_SUPPLY
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ obj-$(CONFIG_CHARGER_LP8727) += lp8727_charger.o
obj-$(CONFIG_CHARGER_LP8788)	+= lp8788-charger.o
obj-$(CONFIG_CHARGER_GPIO)	+= gpio-charger.o
obj-$(CONFIG_CHARGER_MANAGER)	+= charger-manager.o
obj-$(CONFIG_CHARGER_PM2301)	+= pm2301_charger.o
obj-$(CONFIG_CHARGER_MAX8997)	+= max8997_charger.o
obj-$(CONFIG_CHARGER_MAX8998)	+= max8998_charger.o
obj-$(CONFIG_CHARGER_BQ2415X)	+= bq2415x_charger.o
+23 −13
Original line number Diff line number Diff line
@@ -2830,8 +2830,11 @@ static int ab8500_charger_remove(struct platform_device *pdev)
	destroy_workqueue(di->charger_wq);

	flush_scheduled_work();
	if(di->usb_chg.enabled)
		power_supply_unregister(&di->usb_chg.psy);
	if(di->ac_chg.enabled)
		power_supply_unregister(&di->ac_chg.psy);

	platform_set_drvdata(pdev, NULL);

	return 0;
@@ -2899,6 +2902,7 @@ static int ab8500_charger_probe(struct platform_device *pdev)
		ARRAY_SIZE(ab8500_charger_voltage_map) - 1];
	di->ac_chg.max_out_curr = ab8500_charger_current_map[
		ARRAY_SIZE(ab8500_charger_current_map) - 1];
	di->ac_chg.enabled = di->pdata->ac_enabled;

	/* USB supply */
	/* power_supply base class */
@@ -2917,7 +2921,7 @@ static int ab8500_charger_probe(struct platform_device *pdev)
		ARRAY_SIZE(ab8500_charger_voltage_map) - 1];
	di->usb_chg.max_out_curr = ab8500_charger_current_map[
		ARRAY_SIZE(ab8500_charger_current_map) - 1];

	di->usb_chg.enabled = di->pdata->usb_enabled;

	/* Create a work queue for the charger */
	di->charger_wq =
@@ -2995,18 +2999,22 @@ static int ab8500_charger_probe(struct platform_device *pdev)
	}

	/* Register AC charger class */
	if(di->ac_chg.enabled) {
		ret = power_supply_register(di->dev, &di->ac_chg.psy);
		if (ret) {
			dev_err(di->dev, "failed to register AC charger\n");
			goto free_charger_wq;
		}
	}

	/* Register USB charger class */
	if(di->usb_chg.enabled) {
		ret = power_supply_register(di->dev, &di->usb_chg.psy);
		if (ret) {
			dev_err(di->dev, "failed to register USB charger\n");
			goto free_ac;
		}
	}

	di->usb_phy = usb_get_phy(USB_PHY_TYPE_USB2);
	if (IS_ERR_OR_NULL(di->usb_phy)) {
@@ -3085,8 +3093,10 @@ static int ab8500_charger_probe(struct platform_device *pdev)
put_usb_phy:
	usb_put_phy(di->usb_phy);
free_usb:
	if(di->usb_chg.enabled)
		power_supply_unregister(&di->usb_chg.psy);
free_ac:
	if(di->ac_chg.enabled)
		power_supply_unregister(&di->ac_chg.psy);
free_charger_wq:
	destroy_workqueue(di->charger_wq);
+1455 −0

File added.

Preview size limit exceeded, changes collapsed.

+2 −0
Original line number Diff line number Diff line
@@ -406,6 +406,8 @@ struct ab8500_charger_platform_data {
	char **supplied_to;
	size_t num_supplicants;
	bool autopower_cfg;
	bool ac_enabled;
	bool usb_enabled;
};

struct ab8500_btemp_platform_data {
Loading