mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 05:50:52 +07:00
power: supply: sbs-battery: Cleanup removal of chip->pdata
There where still a few lingering references to pdata after commit power: supply: sbs-battery: simplify DT parsing. Remove pdata from struct·sbs_info and conditional checks to ser if this was set from the i2c read / write functions. Instead of call max in each function for incrementing poll_retry_count do it once in the probe function. Fixup null pointer dereference in to pdata in sbs_external_power_changed. Change retry counts to u32 to avoid need for max. Signed-off-by: Phil Reid <preid@electromag.com.au> Signed-off-by: Sebastian Reichel <sre@kernel.org>
This commit is contained in:
parent
bb1e41ba32
commit
389958bb6b
@ -163,14 +163,13 @@ static enum power_supply_property sbs_properties[] = {
|
||||
struct sbs_info {
|
||||
struct i2c_client *client;
|
||||
struct power_supply *power_supply;
|
||||
struct sbs_platform_data *pdata;
|
||||
bool is_present;
|
||||
struct gpio_desc *gpio_detect;
|
||||
bool enable_detection;
|
||||
int last_state;
|
||||
int poll_time;
|
||||
int i2c_retry_count;
|
||||
int poll_retry_count;
|
||||
u32 i2c_retry_count;
|
||||
u32 poll_retry_count;
|
||||
struct delayed_work work;
|
||||
int ignore_changes;
|
||||
};
|
||||
@ -185,8 +184,7 @@ static int sbs_read_word_data(struct i2c_client *client, u8 address)
|
||||
s32 ret = 0;
|
||||
int retries = 1;
|
||||
|
||||
if (chip->pdata)
|
||||
retries = max(chip->i2c_retry_count + 1, 1);
|
||||
retries = chip->i2c_retry_count;
|
||||
|
||||
while (retries > 0) {
|
||||
ret = i2c_smbus_read_word_data(client, address);
|
||||
@ -213,10 +211,8 @@ static int sbs_read_string_data(struct i2c_client *client, u8 address,
|
||||
int retries_length = 1, retries_block = 1;
|
||||
u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1];
|
||||
|
||||
if (chip->pdata) {
|
||||
retries_length = max(chip->i2c_retry_count + 1, 1);
|
||||
retries_block = max(chip->i2c_retry_count + 1, 1);
|
||||
}
|
||||
retries_length = chip->i2c_retry_count;
|
||||
retries_block = chip->i2c_retry_count;
|
||||
|
||||
/* Adapter needs to support these two functions */
|
||||
if (!i2c_check_functionality(client->adapter,
|
||||
@ -280,8 +276,7 @@ static int sbs_write_word_data(struct i2c_client *client, u8 address,
|
||||
s32 ret = 0;
|
||||
int retries = 1;
|
||||
|
||||
if (chip->pdata)
|
||||
retries = max(chip->i2c_retry_count + 1, 1);
|
||||
retries = chip->i2c_retry_count;
|
||||
|
||||
while (retries > 0) {
|
||||
ret = i2c_smbus_write_word_data(client, address,
|
||||
@ -708,7 +703,7 @@ static void sbs_external_power_changed(struct power_supply *psy)
|
||||
cancel_delayed_work_sync(&chip->work);
|
||||
|
||||
schedule_delayed_work(&chip->work, HZ);
|
||||
chip->poll_time = chip->pdata->poll_retry_count;
|
||||
chip->poll_time = chip->poll_retry_count;
|
||||
}
|
||||
|
||||
static void sbs_delayed_work(struct work_struct *work)
|
||||
@ -792,7 +787,7 @@ static int sbs_probe(struct i2c_client *client,
|
||||
rc = of_property_read_u32(client->dev.of_node, "sbs,i2c-retry-count",
|
||||
&chip->i2c_retry_count);
|
||||
if (rc)
|
||||
chip->i2c_retry_count = 1;
|
||||
chip->i2c_retry_count = 0;
|
||||
|
||||
rc = of_property_read_u32(client->dev.of_node, "sbs,poll-retry-count",
|
||||
&chip->poll_retry_count);
|
||||
@ -803,6 +798,7 @@ static int sbs_probe(struct i2c_client *client,
|
||||
chip->poll_retry_count = pdata->poll_retry_count;
|
||||
chip->i2c_retry_count = pdata->i2c_retry_count;
|
||||
}
|
||||
chip->i2c_retry_count = chip->i2c_retry_count + 1;
|
||||
|
||||
chip->gpio_detect = devm_gpiod_get_optional(&client->dev,
|
||||
"sbs,battery-detect", GPIOD_IN);
|
||||
|
@ -31,8 +31,8 @@
|
||||
* external change notification
|
||||
*/
|
||||
struct sbs_platform_data {
|
||||
int i2c_retry_count;
|
||||
int poll_retry_count;
|
||||
u32 i2c_retry_count;
|
||||
u32 poll_retry_count;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user