mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-03 11:13:56 +08:00
power: supply: sbs-battery: Add TI BQ20Z65 support
Add support for BQ20Z65 manufacturer data to the sbs-battery driver. Implementation has been verified using the public TRM available from [0] and tested using a GE Flex 3S2P battery. [0] http://www.ti.com/lit/pdf/sluu386 Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
601c2a543f
commit
0ff969158a
@ -6,6 +6,7 @@ Required properties :
|
|||||||
part number compatible string might be used in order to take care of
|
part number compatible string might be used in order to take care of
|
||||||
vendor specific registers.
|
vendor specific registers.
|
||||||
Known <vendor>,<part-number>:
|
Known <vendor>,<part-number>:
|
||||||
|
ti,bq20z65
|
||||||
ti,bq20z75
|
ti,bq20z75
|
||||||
|
|
||||||
Optional properties :
|
Optional properties :
|
||||||
|
@ -149,8 +149,8 @@ static enum power_supply_property sbs_properties[] = {
|
|||||||
POWER_SUPPLY_PROP_MODEL_NAME
|
POWER_SUPPLY_PROP_MODEL_NAME
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Supports special manufacturer commands from TI BQ20Z75 IC. */
|
/* Supports special manufacturer commands from TI BQ20Z65 and BQ20Z75 IC. */
|
||||||
#define SBS_FLAGS_TI_BQ20Z75 BIT(0)
|
#define SBS_FLAGS_TI_BQ20ZX5 BIT(0)
|
||||||
|
|
||||||
struct sbs_info {
|
struct sbs_info {
|
||||||
struct i2c_client *client;
|
struct i2c_client *client;
|
||||||
@ -626,7 +626,7 @@ static int sbs_get_property(struct power_supply *psy,
|
|||||||
switch (psp) {
|
switch (psp) {
|
||||||
case POWER_SUPPLY_PROP_PRESENT:
|
case POWER_SUPPLY_PROP_PRESENT:
|
||||||
case POWER_SUPPLY_PROP_HEALTH:
|
case POWER_SUPPLY_PROP_HEALTH:
|
||||||
if (chip->flags & SBS_FLAGS_TI_BQ20Z75)
|
if (chip->flags & SBS_FLAGS_TI_BQ20ZX5)
|
||||||
ret = sbs_get_ti_battery_presence_and_health(client,
|
ret = sbs_get_ti_battery_presence_and_health(client,
|
||||||
psp, val);
|
psp, val);
|
||||||
else
|
else
|
||||||
@ -950,7 +950,7 @@ static int sbs_suspend(struct device *dev)
|
|||||||
if (chip->poll_time > 0)
|
if (chip->poll_time > 0)
|
||||||
cancel_delayed_work_sync(&chip->work);
|
cancel_delayed_work_sync(&chip->work);
|
||||||
|
|
||||||
if (chip->flags & SBS_FLAGS_TI_BQ20Z75) {
|
if (chip->flags & SBS_FLAGS_TI_BQ20ZX5) {
|
||||||
/* Write to manufacturer access with sleep command. */
|
/* Write to manufacturer access with sleep command. */
|
||||||
ret = sbs_write_word_data(client,
|
ret = sbs_write_word_data(client,
|
||||||
sbs_data[REG_MANUFACTURER_DATA].addr,
|
sbs_data[REG_MANUFACTURER_DATA].addr,
|
||||||
@ -970,6 +970,7 @@ static SIMPLE_DEV_PM_OPS(sbs_pm_ops, sbs_suspend, NULL);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const struct i2c_device_id sbs_id[] = {
|
static const struct i2c_device_id sbs_id[] = {
|
||||||
|
{ "bq20z65", 0 },
|
||||||
{ "bq20z75", 0 },
|
{ "bq20z75", 0 },
|
||||||
{ "sbs-battery", 1 },
|
{ "sbs-battery", 1 },
|
||||||
{}
|
{}
|
||||||
@ -978,9 +979,13 @@ MODULE_DEVICE_TABLE(i2c, sbs_id);
|
|||||||
|
|
||||||
static const struct of_device_id sbs_dt_ids[] = {
|
static const struct of_device_id sbs_dt_ids[] = {
|
||||||
{ .compatible = "sbs,sbs-battery" },
|
{ .compatible = "sbs,sbs-battery" },
|
||||||
|
{
|
||||||
|
.compatible = "ti,bq20z65",
|
||||||
|
.data = (void *)SBS_FLAGS_TI_BQ20ZX5,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.compatible = "ti,bq20z75",
|
.compatible = "ti,bq20z75",
|
||||||
.data = (void *)SBS_FLAGS_TI_BQ20Z75,
|
.data = (void *)SBS_FLAGS_TI_BQ20ZX5,
|
||||||
},
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user