summaryrefslogtreecommitdiff
path: root/drivers/power/tps80031-charger.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/power/tps80031-charger.c')
-rw-r--r--drivers/power/tps80031-charger.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/power/tps80031-charger.c b/drivers/power/tps80031-charger.c
index 3da8eef2e01e..93b283e0b04f 100644
--- a/drivers/power/tps80031-charger.c
+++ b/drivers/power/tps80031-charger.c
@@ -65,6 +65,11 @@ struct tps80031_charger {
};
static struct tps80031_charger *charger_data;
+static uint8_t charging_current_val_code[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x27,
+ 0x37, 0x28, 0x38, 0x29, 0x39, 0x2A, 0x3A, 0x2B, 0x3B, 0x2C,
+ 0x3C, 0x2D, 0x3D, 0x2E,
+};
static int set_charge_current_limit(struct regulator_dev *rdev,
int min_uA, int max_uA)
@@ -101,8 +106,8 @@ static int set_charge_current_limit(struct regulator_dev *rdev,
if (max_vbus_current)
max_vbus_current--;
ret = tps80031_update(charger->dev->parent, SLAVE_ID2,
- CHARGERUSB_CINLIMIT,
- (uint8_t)max_vbus_current, 0x3F);
+ CHARGERUSB_CINLIMIT,
+ charging_current_val_code[max_vbus_current], 0x3F);
if (ret < 0) {
dev_err(charger->dev, "%s(): Failed in writing register 0x%02x\n",
__func__, CHARGERUSB_CINLIMIT);