|
@@ -49,6 +49,8 @@
|
|
|
#define AXP22X_CHRG_CTRL1_TGT_4_22V (1 << 5)
|
|
|
#define AXP22X_CHRG_CTRL1_TGT_4_24V (3 << 5)
|
|
|
|
|
|
+#define AXP813_CHRG_CTRL1_TGT_4_35V (3 << 5)
|
|
|
+
|
|
|
#define AXP20X_CHRG_CTRL1_TGT_CURR GENMASK(3, 0)
|
|
|
|
|
|
#define AXP20X_V_OFF_MASK GENMASK(2, 0)
|
|
@@ -133,6 +135,35 @@ static int axp22x_battery_get_max_voltage(struct axp20x_batt_ps *axp20x_batt,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int axp813_battery_get_max_voltage(struct axp20x_batt_ps *axp20x_batt,
|
|
|
+ int *val)
|
|
|
+{
|
|
|
+ int ret, reg;
|
|
|
+
|
|
|
+ ret = regmap_read(axp20x_batt->regmap, AXP20X_CHRG_CTRL1, ®);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ switch (reg & AXP20X_CHRG_CTRL1_TGT_VOLT) {
|
|
|
+ case AXP20X_CHRG_CTRL1_TGT_4_1V:
|
|
|
+ *val = 4100000;
|
|
|
+ break;
|
|
|
+ case AXP20X_CHRG_CTRL1_TGT_4_15V:
|
|
|
+ *val = 4150000;
|
|
|
+ break;
|
|
|
+ case AXP20X_CHRG_CTRL1_TGT_4_2V:
|
|
|
+ *val = 4200000;
|
|
|
+ break;
|
|
|
+ case AXP813_CHRG_CTRL1_TGT_4_35V:
|
|
|
+ *val = 4350000;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int axp20x_get_constant_charge_current(struct axp20x_batt_ps *axp,
|
|
|
int *val)
|
|
|
{
|
|
@@ -491,6 +522,14 @@ static const struct axp_data axp221_data = {
|
|
|
.set_max_voltage = axp22x_battery_set_max_voltage,
|
|
|
};
|
|
|
|
|
|
+static const struct axp_data axp813_data = {
|
|
|
+ .ccc_scale = 200000,
|
|
|
+ .ccc_offset = 200000,
|
|
|
+ .has_fg_valid = true,
|
|
|
+ .get_max_voltage = axp813_battery_get_max_voltage,
|
|
|
+ .set_max_voltage = axp20x_battery_set_max_voltage,
|
|
|
+};
|
|
|
+
|
|
|
static const struct of_device_id axp20x_battery_ps_id[] = {
|
|
|
{
|
|
|
.compatible = "x-powers,axp209-battery-power-supply",
|
|
@@ -498,6 +537,9 @@ static const struct of_device_id axp20x_battery_ps_id[] = {
|
|
|
}, {
|
|
|
.compatible = "x-powers,axp221-battery-power-supply",
|
|
|
.data = (void *)&axp221_data,
|
|
|
+ }, {
|
|
|
+ .compatible = "x-powers,axp813-battery-power-supply",
|
|
|
+ .data = (void *)&axp813_data,
|
|
|
}, { /* sentinel */ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, axp20x_battery_ps_id);
|