power: supply: axp20x_usb_power: add 100mA max current limit for AXP223
authorQuentin Schulz <quentin.schulz@free-electrons.com>
Fri, 9 Dec 2016 11:04:13 +0000 (12:04 +0100)
committerSebastian Reichel <sre@kernel.org>
Wed, 4 Jan 2017 20:59:46 +0000 (21:59 +0100)
The X-Powers AXP223 shares most of its behaviour with the AXP221 PMIC
but allows the VBUS power supply max current to be set to 100mA (like
the AXP209 PMIC).

This basically adds a new compatible to the VBUS power supply driver and
adds a check on the compatible when setting current max limit.

Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
Acked-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
drivers/power/supply/axp20x_usb_power.c

index 9e3f4aeb09a103eb59b69dc73d55b6047fdc74c2..1bcb02551e028e911c2818d0b2873ebda95bd89c 100644 (file)
@@ -90,11 +90,10 @@ static int axp20x_usb_power_get_property(struct power_supply *psy,
 
                switch (v & AXP20X_VBUS_CLIMIT_MASK) {
                case AXP20X_VBUC_CLIMIT_100mA:
-                       if (power->axp20x_id == AXP202_ID) {
-                               val->intval = 100000;
-                       } else {
+                       if (power->axp20x_id == AXP221_ID)
                                val->intval = -1; /* No 100mA limit */
-                       }
+                       else
+                               val->intval = 100000;
                        break;
                case AXP20X_VBUC_CLIMIT_500mA:
                        val->intval = 500000;
@@ -317,7 +316,8 @@ static int axp20x_usb_power_probe(struct platform_device *pdev)
 
                usb_power_desc = &axp20x_usb_power_desc;
                irq_names = axp20x_irq_names;
-       } else if (power->axp20x_id == AXP221_ID) {
+       } else if (power->axp20x_id == AXP221_ID ||
+                  power->axp20x_id == AXP223_ID) {
                usb_power_desc = &axp22x_usb_power_desc;
                irq_names = axp22x_irq_names;
        } else {
@@ -360,6 +360,9 @@ static const struct of_device_id axp20x_usb_power_match[] = {
        }, {
                .compatible = "x-powers,axp221-usb-power-supply",
                .data = (void *)AXP221_ID,
+       }, {
+               .compatible = "x-powers,axp223-usb-power-supply",
+               .data = (void *)AXP223_ID,
        }, { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, axp20x_usb_power_match);