aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2018-04-18 08:07:56 -0400
committerSebastian Reichel <sebastian.reichel@collabora.co.uk>2018-04-25 18:44:27 -0400
commit5b76ad50d20feb8867ebe9112c2287ef57f976db (patch)
tree1413759b3ab95ab9c5acc6751d5cf27f4ec09175
parent2490640b2764ee570eef83528a8fd888f3b6103c (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.c14
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;