Commit 191e6bcf authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Sebastian Reichel

power: supply: generic-adc-battery: Prepare for const properties

This prepares the driver to work with the properties entry
in power_supply_desc marked as const.
Reviewed-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 4cb38258
...@@ -241,6 +241,7 @@ static int gab_probe(struct platform_device *pdev) ...@@ -241,6 +241,7 @@ static int gab_probe(struct platform_device *pdev)
struct power_supply_desc *psy_desc; struct power_supply_desc *psy_desc;
struct power_supply_config psy_cfg = {}; struct power_supply_config psy_cfg = {};
struct gab_platform_data *pdata = pdev->dev.platform_data; struct gab_platform_data *pdata = pdev->dev.platform_data;
enum power_supply_property *properties;
int ret = 0; int ret = 0;
int chan; int chan;
int index = ARRAY_SIZE(gab_props); int index = ARRAY_SIZE(gab_props);
...@@ -268,16 +269,16 @@ static int gab_probe(struct platform_device *pdev) ...@@ -268,16 +269,16 @@ static int gab_probe(struct platform_device *pdev)
* copying the static properties and allocating extra memory for holding * copying the static properties and allocating extra memory for holding
* the extra configurable properties received from platform data. * the extra configurable properties received from platform data.
*/ */
psy_desc->properties = kcalloc(ARRAY_SIZE(gab_props) + properties = kcalloc(ARRAY_SIZE(gab_props) +
ARRAY_SIZE(gab_chan_name), ARRAY_SIZE(gab_chan_name),
sizeof(*psy_desc->properties), sizeof(*properties),
GFP_KERNEL); GFP_KERNEL);
if (!psy_desc->properties) { if (!properties) {
ret = -ENOMEM; ret = -ENOMEM;
goto first_mem_fail; goto first_mem_fail;
} }
memcpy(psy_desc->properties, gab_props, sizeof(gab_props)); memcpy(properties, gab_props, sizeof(gab_props));
/* /*
* getting channel from iio and copying the battery properties * getting channel from iio and copying the battery properties
...@@ -294,13 +295,11 @@ static int gab_probe(struct platform_device *pdev) ...@@ -294,13 +295,11 @@ static int gab_probe(struct platform_device *pdev)
int index2; int index2;
for (index2 = 0; index2 < index; index2++) { for (index2 = 0; index2 < index; index2++) {
if (psy_desc->properties[index2] == if (properties[index2] == gab_dyn_props[chan])
gab_dyn_props[chan])
break; /* already known */ break; /* already known */
} }
if (index2 == index) /* really new */ if (index2 == index) /* really new */
psy_desc->properties[index++] = properties[index++] = gab_dyn_props[chan];
gab_dyn_props[chan];
any = true; any = true;
} }
} }
...@@ -317,6 +316,7 @@ static int gab_probe(struct platform_device *pdev) ...@@ -317,6 +316,7 @@ static int gab_probe(struct platform_device *pdev)
* as come channels may be not be supported by the device.So * as come channels may be not be supported by the device.So
* we need to take care of that. * we need to take care of that.
*/ */
psy_desc->properties = properties;
psy_desc->num_properties = index; psy_desc->num_properties = index;
adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg); adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg);
...@@ -358,7 +358,7 @@ static int gab_probe(struct platform_device *pdev) ...@@ -358,7 +358,7 @@ static int gab_probe(struct platform_device *pdev)
iio_channel_release(adc_bat->channel[chan]); iio_channel_release(adc_bat->channel[chan]);
} }
second_mem_fail: second_mem_fail:
kfree(psy_desc->properties); kfree(properties);
first_mem_fail: first_mem_fail:
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment