
Add the latest linux available from https://github.com/armbian/build commit de58ac1faac92724c6449db12c22affaeb003875, tag: sunxi-5.3, alongside all the patches that it comes with. Signed-off-by: Vicentiu Galanopulo <vicentiu@balena.io>
86 lines
2.5 KiB
Diff
86 lines
2.5 KiB
Diff
From 84a6ce439660f26a06219cdf1613f87a6395fdbd Mon Sep 17 00:00:00 2001
|
|
From: Quentin Schulz <quentin.schulz@free-electrons.com>
|
|
Date: Wed, 23 Aug 2017 14:15:59 +0200
|
|
Subject: [PATCH 20/82] power: supply: axp20x_usb_power: add function to get
|
|
max current
|
|
|
|
To prepare for a new PMIC, factor out the code responsible of returning
|
|
the maximum current to axp20x_get_current_max.
|
|
|
|
Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
|
|
---
|
|
drivers/power/supply/axp20x_usb_power.c | 51 ++++++++++++++-----------
|
|
1 file changed, 29 insertions(+), 22 deletions(-)
|
|
|
|
diff --git a/drivers/power/supply/axp20x_usb_power.c b/drivers/power/supply/axp20x_usb_power.c
|
|
index 42001df4bd13..464d4abd3798 100644
|
|
--- a/drivers/power/supply/axp20x_usb_power.c
|
|
+++ b/drivers/power/supply/axp20x_usb_power.c
|
|
@@ -63,6 +63,34 @@ static irqreturn_t axp20x_usb_power_irq(int irq, void *devid)
|
|
return IRQ_HANDLED;
|
|
}
|
|
|
|
+static int axp20x_get_current_max(struct axp20x_usb_power *power, int *val)
|
|
+{
|
|
+ unsigned int v;
|
|
+ int ret = regmap_read(power->regmap, AXP20X_VBUS_IPSOUT_MGMT, &v);
|
|
+
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
+ switch (v & AXP20X_VBUS_CLIMIT_MASK) {
|
|
+ case AXP20X_VBUC_CLIMIT_100mA:
|
|
+ if (power->axp20x_id == AXP221_ID)
|
|
+ *val = -1; /* No 100mA limit */
|
|
+ else
|
|
+ *val = 100000;
|
|
+ break;
|
|
+ case AXP20X_VBUC_CLIMIT_500mA:
|
|
+ *val = 500000;
|
|
+ break;
|
|
+ case AXP20X_VBUC_CLIMIT_900mA:
|
|
+ *val = 900000;
|
|
+ break;
|
|
+ case AXP20X_VBUC_CLIMIT_NONE:
|
|
+ *val = -1;
|
|
+ break;
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static int axp20x_usb_power_get_property(struct power_supply *psy,
|
|
enum power_supply_property psp, union power_supply_propval *val)
|
|
{
|
|
@@ -101,28 +129,7 @@ static int axp20x_usb_power_get_property(struct power_supply *psy,
|
|
val->intval = ret * 1700; /* 1 step = 1.7 mV */
|
|
return 0;
|
|
case POWER_SUPPLY_PROP_CURRENT_MAX:
|
|
- ret = regmap_read(power->regmap, AXP20X_VBUS_IPSOUT_MGMT, &v);
|
|
- if (ret)
|
|
- return ret;
|
|
-
|
|
- switch (v & AXP20X_VBUS_CLIMIT_MASK) {
|
|
- case AXP20X_VBUC_CLIMIT_100mA:
|
|
- 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;
|
|
- break;
|
|
- case AXP20X_VBUC_CLIMIT_900mA:
|
|
- val->intval = 900000;
|
|
- break;
|
|
- case AXP20X_VBUC_CLIMIT_NONE:
|
|
- val->intval = -1;
|
|
- break;
|
|
- }
|
|
- return 0;
|
|
+ return axp20x_get_current_max(power, &val->intval);
|
|
case POWER_SUPPLY_PROP_CURRENT_NOW:
|
|
if (IS_ENABLED(CONFIG_AXP20X_ADC)) {
|
|
ret = iio_read_channel_processed(power->vbus_i,
|
|
--
|
|
2.20.1
|
|
|