diff options
author | Hans de Goede <hdegoede@redhat.com> | 2018-04-18 08:07:56 -0400 |
---|---|---|
committer | Sebastian Reichel <sebastian.reichel@collabora.co.uk> | 2018-04-25 18:44:27 -0400 |
commit | 5b76ad50d20feb8867ebe9112c2287ef57f976db (patch) | |
tree | 1413759b3ab95ab9c5acc6751d5cf27f4ec09175 | |
parent | 2490640b2764ee570eef83528a8fd888f3b6103c (diff) |
power: supply: axp288_charger: Support 3500 and 4000 mA input current limit
The AXP288 supports an input-current-limit of up to 4000 mA, this
commit adds support for the 3500 and 4000 mA settings which were
missing until now.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
-rw-r--r-- | drivers/power/supply/axp288_charger.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/power/supply/axp288_charger.c b/drivers/power/supply/axp288_charger.c index 9bfbde15b07d..6982927b05c0 100644 --- a/drivers/power/supply/axp288_charger.c +++ b/drivers/power/supply/axp288_charger.c | |||
@@ -88,6 +88,8 @@ | |||
88 | #define CHRG_VBUS_ILIM_2000MA 0x4 /* 2000mA */ | 88 | #define CHRG_VBUS_ILIM_2000MA 0x4 /* 2000mA */ |
89 | #define CHRG_VBUS_ILIM_2500MA 0x5 /* 2500mA */ | 89 | #define CHRG_VBUS_ILIM_2500MA 0x5 /* 2500mA */ |
90 | #define CHRG_VBUS_ILIM_3000MA 0x6 /* 3000mA */ | 90 | #define CHRG_VBUS_ILIM_3000MA 0x6 /* 3000mA */ |
91 | #define CHRG_VBUS_ILIM_3500MA 0x7 /* 3500mA */ | ||
92 | #define CHRG_VBUS_ILIM_4000MA 0x8 /* 4000mA */ | ||
91 | 93 | ||
92 | #define CHRG_VLTFC_0C 0xA5 /* 0 DegC */ | 94 | #define CHRG_VLTFC_0C 0xA5 /* 0 DegC */ |
93 | #define CHRG_VHTFC_45C 0x1F /* 45 DegC */ | 95 | #define CHRG_VHTFC_45C 0x1F /* 45 DegC */ |
@@ -223,9 +225,11 @@ static int axp288_charger_get_vbus_inlmt(struct axp288_chrg_info *info) | |||
223 | return 2500000; | 225 | return 2500000; |
224 | case CHRG_VBUS_ILIM_3000MA: | 226 | case CHRG_VBUS_ILIM_3000MA: |
225 | return 3000000; | 227 | return 3000000; |
228 | case CHRG_VBUS_ILIM_3500MA: | ||
229 | return 3500000; | ||
226 | default: | 230 | default: |
227 | dev_warn(&info->pdev->dev, "Unknown ilim reg val: %d\n", val); | 231 | /* All b1xxx values map to 4000 mA */ |
228 | return 0; | 232 | return 4000000; |
229 | } | 233 | } |
230 | } | 234 | } |
231 | 235 | ||
@@ -235,7 +239,11 @@ static inline int axp288_charger_set_vbus_inlmt(struct axp288_chrg_info *info, | |||
235 | int ret; | 239 | int ret; |
236 | u8 reg_val; | 240 | u8 reg_val; |
237 | 241 | ||
238 | if (inlmt >= 3000000) | 242 | if (inlmt >= 4000000) |
243 | reg_val = CHRG_VBUS_ILIM_4000MA << CHRG_VBUS_ILIM_BIT_POS; | ||
244 | else if (inlmt >= 3500000) | ||
245 | reg_val = CHRG_VBUS_ILIM_3500MA << CHRG_VBUS_ILIM_BIT_POS; | ||
246 | else if (inlmt >= 3000000) | ||
239 | reg_val = CHRG_VBUS_ILIM_3000MA << CHRG_VBUS_ILIM_BIT_POS; | 247 | reg_val = CHRG_VBUS_ILIM_3000MA << CHRG_VBUS_ILIM_BIT_POS; |
240 | else if (inlmt >= 2500000) | 248 | else if (inlmt >= 2500000) |
241 | reg_val = CHRG_VBUS_ILIM_2500MA << CHRG_VBUS_ILIM_BIT_POS; | 249 | reg_val = CHRG_VBUS_ILIM_2500MA << CHRG_VBUS_ILIM_BIT_POS; |