mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
power: supply: qcom_battmgr: update compats for SM8550 and X1E80100
The SM8550 and X1E80100 platforms now include charge control functionality in battery management firmware, allowing charging to stop when the battery reaches a set level and resume when it drops below another level. To support this in the qcom_battmgr driver, CHARGE_CONTROL_START/END_THRESHOLD power supply properties can be added to manage these levels. This results in the battery power supply properties for SM8550 and X1E80100 differing from those for SM8350 and SC8280XP. Therefore, separate compatible entries for SM8550 and X1E80100 are introduced, each with their own variant definitions as match data. Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
b8e5030e09
commit
b3c0f651b3
|
|
@ -19,8 +19,10 @@
|
|||
#define BATTMGR_STRING_LEN 128
|
||||
|
||||
enum qcom_battmgr_variant {
|
||||
QCOM_BATTMGR_SM8350,
|
||||
QCOM_BATTMGR_SC8280XP,
|
||||
QCOM_BATTMGR_SM8350,
|
||||
QCOM_BATTMGR_SM8550,
|
||||
QCOM_BATTMGR_X1E80100,
|
||||
};
|
||||
|
||||
#define BATTMGR_BAT_STATUS 0x1
|
||||
|
|
@ -494,7 +496,8 @@ static int qcom_battmgr_bat_get_property(struct power_supply *psy,
|
|||
if (!battmgr->service_up)
|
||||
return -EAGAIN;
|
||||
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP ||
|
||||
battmgr->variant == QCOM_BATTMGR_X1E80100)
|
||||
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
|
||||
else
|
||||
ret = qcom_battmgr_bat_sm8350_update(battmgr, psp);
|
||||
|
|
@ -767,7 +770,8 @@ static int qcom_battmgr_usb_get_property(struct power_supply *psy,
|
|||
if (!battmgr->service_up)
|
||||
return -EAGAIN;
|
||||
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP ||
|
||||
battmgr->variant == QCOM_BATTMGR_X1E80100)
|
||||
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
|
||||
else
|
||||
ret = qcom_battmgr_usb_sm8350_update(battmgr, psp);
|
||||
|
|
@ -889,7 +893,8 @@ static int qcom_battmgr_wls_get_property(struct power_supply *psy,
|
|||
if (!battmgr->service_up)
|
||||
return -EAGAIN;
|
||||
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP ||
|
||||
battmgr->variant == QCOM_BATTMGR_X1E80100)
|
||||
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
|
||||
else
|
||||
ret = qcom_battmgr_wls_sm8350_update(battmgr, psp);
|
||||
|
|
@ -1323,7 +1328,8 @@ static void qcom_battmgr_callback(const void *data, size_t len, void *priv)
|
|||
|
||||
if (opcode == BATTMGR_NOTIFICATION)
|
||||
qcom_battmgr_notification(battmgr, data, len);
|
||||
else if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
|
||||
else if (battmgr->variant == QCOM_BATTMGR_SC8280XP ||
|
||||
battmgr->variant == QCOM_BATTMGR_X1E80100)
|
||||
qcom_battmgr_sc8280xp_callback(battmgr, data, len);
|
||||
else
|
||||
qcom_battmgr_sm8350_callback(battmgr, data, len);
|
||||
|
|
@ -1359,7 +1365,8 @@ static void qcom_battmgr_pdr_notify(void *priv, int state)
|
|||
static const struct of_device_id qcom_battmgr_of_variants[] = {
|
||||
{ .compatible = "qcom,sc8180x-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
|
||||
{ .compatible = "qcom,sc8280xp-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
|
||||
{ .compatible = "qcom,x1e80100-pmic-glink", .data = (void *)QCOM_BATTMGR_SC8280XP },
|
||||
{ .compatible = "qcom,sm8550-pmic-glink", .data = (void *)QCOM_BATTMGR_SM8550 },
|
||||
{ .compatible = "qcom,x1e80100-pmic-glink", .data = (void *)QCOM_BATTMGR_X1E80100 },
|
||||
/* Unmatched devices falls back to QCOM_BATTMGR_SM8350 */
|
||||
{}
|
||||
};
|
||||
|
|
@ -1399,7 +1406,8 @@ static int qcom_battmgr_probe(struct auxiliary_device *adev,
|
|||
else
|
||||
battmgr->variant = QCOM_BATTMGR_SM8350;
|
||||
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP) {
|
||||
if (battmgr->variant == QCOM_BATTMGR_SC8280XP ||
|
||||
battmgr->variant == QCOM_BATTMGR_X1E80100) {
|
||||
battmgr->bat_psy = devm_power_supply_register(dev, &sc8280xp_bat_psy_desc, &psy_cfg);
|
||||
if (IS_ERR(battmgr->bat_psy))
|
||||
return dev_err_probe(dev, PTR_ERR(battmgr->bat_psy),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user