diff options
author | Hans de Goede | 2018-04-18 14:08:20 +0200 |
---|---|---|
committer | Sebastian Reichel | 2018-04-26 00:44:40 +0200 |
commit | efb440ecc15610539dc7a177ae8eed4bf536da06 (patch) | |
tree | b9314b3ce741d9096b9666dd21b383ea08d51efd /drivers/power | |
parent | 5b76ad50d20feb8867ebe9112c2287ef57f976db (diff) |
power: supply: axp288_charger: Do not bind when the charge function is not used
Some devices with an AXP288 PMIC do not have a battery at all, or use
external charger and fuelgauge ICs instead of the AXP288 builtin
functionality.
On such devices we should not bind to the charge function to avoid
exporting a non working power_supply class device.
Cc: Carlo Caione <carlo@endlessm.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/supply/axp288_charger.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c index 6982927b05c0..6e1bc14c3304 100644 --- a/drivers/power/supply/axp288_charger.c +++ b/drivers/power/supply/axp288_charger.c @@ -747,6 +747,18 @@ static int axp288_charger_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent); struct power_supply_config charger_cfg = {}; + unsigned int val; + + /* + * On some devices the fuelgauge and charger parts of the axp288 are + * not used, check that the fuelgauge is enabled (CC_CTRL != 0). + */ + ret = regmap_read(axp20x->regmap, AXP20X_CC_CTRL, &val); + if (ret < 0) + return ret; + if (val == 0) + return -ENODEV; + info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); if (!info) return -ENOMEM; |