Patch "power: supply: max17042_battery: fix model download bug." has been added to the 4.7-stable tree
This is a note to let you know that I've just added the patch titled
power: supply: max17042_battery: fix model download bug.
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
power-supply-max17042_battery-fix-model-download-bug.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5381cfb6f0422da24cfa9da35b0433c0415830e0Mon Sep 17 00:00:00 2001
From: Sven Van Asbroeck <[email protected]>
Date: Fri, 12 Aug 2016 09:10:27 -0400
Subject: power: supply: max17042_battery: fix model download bug.
From: Sven Van Asbroeck <[email protected]>
commit 5381cfb6f0422da24cfa9da35b0433c0415830e0 upstream.
The device's model download function returns the model data as an array of u32s, which is later compared to the reference model data. However, since the latter is an array of u16s, the comparison does not happen correctly, and model verification fails. This in turn breaks the POR initialization sequence.
--- drivers/power/max17042_battery.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
drivers/power/max17042_battery.c +9 -6
@@ -457,13 +457,16 @@ static inline void max17042_write_model_ }static inline void max17042_read_model_data (struct max17042_chip *chip, -u8 addr,u32 *data,int size) +u8 addr,u16 *data,int size) {struct regmap *map = chip->regmap;int i; +u32 tmp; -for (i =0 ; i < size; i++) -regmap_read (map, addr + i, &data[i]); +for (i =0 ; i < size; i++) { +regmap_read (map, addr + i, &tmp); + data[i] = (u16 )tmp; + } } static inline int max17042_model_data_compare(struct max17042_chip *chip,
@@ -486,7 +489,7 @@ static int max17042_init_model(struct ma {int ret;int table_size =ARRAY_SIZE (chip->pdata->config_data->cell_char_tbl); -u32 *temp_data; +u16 *temp_data; temp_data =kcalloc (table_size,sizeof (*temp_data),GFP_KERNEL );if (!temp_data)
@@ -501,7 +504,7 @@ static int max17042_init_model(struct ma ret =max17042_model_data_compare ( chip, chip->pdata->config_data->cell_char_tbl, - (u16 *)temp_data, + temp_data, table_size);max10742_lock_model (chip);
@@ -514,7 +517,7 @@ static int max17042_verify_model_lock(st {int i;int table_size =ARRAY_SIZE (chip->pdata->config_data->cell_char_tbl); -u32 *temp_data; +u16 *temp_data;int ret =0 ; temp_data =kcalloc (table_size,sizeof (*temp_data),GFP_KERNEL );
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/power-supply-max17042_battery-fix-model-download-bug.patch