mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
Revert "power: supply: sbs-battery: add PEC support"
This depends on the simplification of sbs_read_string_data, which
breaks booting exynos5 based chromebooks. More investigation is
required, so this patch and the simplification patch are reverted
for this merge window.
Note, that this is only a partial revert, since sbs_update_presence()
has not been removed. It is also required for the charger broadcast
disabling.
This reverts commit 79bcd5a4a6
.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
parent
805f64e8b5
commit
cf1eb321d1
1 changed files with 0 additions and 51 deletions
|
@ -51,14 +51,6 @@ enum {
|
||||||
REG_CHARGE_VOLTAGE,
|
REG_CHARGE_VOLTAGE,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define REG_ADDR_SPEC_INFO 0x1A
|
|
||||||
#define SPEC_INFO_VERSION_MASK GENMASK(7, 4)
|
|
||||||
#define SPEC_INFO_VERSION_SHIFT 4
|
|
||||||
|
|
||||||
#define SBS_VERSION_1_0 1
|
|
||||||
#define SBS_VERSION_1_1 2
|
|
||||||
#define SBS_VERSION_1_1_WITH_PEC 3
|
|
||||||
|
|
||||||
#define REG_ADDR_MANUFACTURE_DATE 0x1B
|
#define REG_ADDR_MANUFACTURE_DATE 0x1B
|
||||||
|
|
||||||
/* Battery Mode defines */
|
/* Battery Mode defines */
|
||||||
|
@ -232,57 +224,14 @@ static void sbs_disable_charger_broadcasts(struct sbs_info *chip)
|
||||||
|
|
||||||
static int sbs_update_presence(struct sbs_info *chip, bool is_present)
|
static int sbs_update_presence(struct sbs_info *chip, bool is_present)
|
||||||
{
|
{
|
||||||
struct i2c_client *client = chip->client;
|
|
||||||
int retries = chip->i2c_retry_count;
|
|
||||||
s32 ret = 0;
|
|
||||||
u8 version;
|
|
||||||
|
|
||||||
if (chip->is_present == is_present)
|
if (chip->is_present == is_present)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!is_present) {
|
if (!is_present) {
|
||||||
chip->is_present = false;
|
chip->is_present = false;
|
||||||
/* Disable PEC when no device is present */
|
|
||||||
client->flags &= ~I2C_CLIENT_PEC;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if device supports packet error checking and use it */
|
|
||||||
while (retries > 0) {
|
|
||||||
ret = i2c_smbus_read_word_data(client, REG_ADDR_SPEC_INFO);
|
|
||||||
if (ret >= 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Some batteries trigger the detection pin before the
|
|
||||||
* I2C bus is properly connected. This works around the
|
|
||||||
* issue.
|
|
||||||
*/
|
|
||||||
msleep(100);
|
|
||||||
|
|
||||||
retries--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0) {
|
|
||||||
dev_dbg(&client->dev, "failed to read spec info: %d\n", ret);
|
|
||||||
|
|
||||||
/* fallback to old behaviour */
|
|
||||||
client->flags &= ~I2C_CLIENT_PEC;
|
|
||||||
chip->is_present = true;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
version = (ret & SPEC_INFO_VERSION_MASK) >> SPEC_INFO_VERSION_SHIFT;
|
|
||||||
|
|
||||||
if (version == SBS_VERSION_1_1_WITH_PEC)
|
|
||||||
client->flags |= I2C_CLIENT_PEC;
|
|
||||||
else
|
|
||||||
client->flags &= ~I2C_CLIENT_PEC;
|
|
||||||
|
|
||||||
dev_dbg(&client->dev, "PEC: %s\n", (client->flags & I2C_CLIENT_PEC) ?
|
|
||||||
"enabled" : "disabled");
|
|
||||||
|
|
||||||
if (!chip->is_present && is_present && !chip->charger_broadcasts)
|
if (!chip->is_present && is_present && !chip->charger_broadcasts)
|
||||||
sbs_disable_charger_broadcasts(chip);
|
sbs_disable_charger_broadcasts(chip);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue