diff options
| author | Sergiy Kibrik <sakib@darkstar.site> | 2018-03-21 16:10:49 -0400 |
|---|---|---|
| committer | Sebastian Reichel <sebastian.reichel@collabora.co.uk> | 2018-04-25 18:12:11 -0400 |
| commit | 2490640b2764ee570eef83528a8fd888f3b6103c (patch) | |
| tree | cc6b4306df79cfe13049e96641810003405ebaf9 | |
| parent | 111242d6e1aa0cbdf1dd91fff6f210ae0d4d01bc (diff) | |
power: supply: s3c-adc-battery: fix driver data initialization
For power_supply_get_drvdata() routine to work correctly the driver data
has to be provided when registering power supply, otherwise driver gives up
immediately with these errors:
power_supply main-battery: no battery infos ?!
power_supply main-battery: driver failed to report `status' property: -22
Signed-off-by: Sergiy Kibrik <sakib@darkstar.site>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
| -rw-r--r-- | drivers/power/supply/s3c_adc_battery.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/power/supply/s3c_adc_battery.c b/drivers/power/supply/s3c_adc_battery.c index 0ffe5cd3abf6..3d00b35cafc9 100644 --- a/drivers/power/supply/s3c_adc_battery.c +++ b/drivers/power/supply/s3c_adc_battery.c | |||
| @@ -293,6 +293,7 @@ static int s3c_adc_bat_probe(struct platform_device *pdev) | |||
| 293 | { | 293 | { |
| 294 | struct s3c_adc_client *client; | 294 | struct s3c_adc_client *client; |
| 295 | struct s3c_adc_bat_pdata *pdata = pdev->dev.platform_data; | 295 | struct s3c_adc_bat_pdata *pdata = pdev->dev.platform_data; |
| 296 | struct power_supply_config psy_cfg = {}; | ||
| 296 | int ret; | 297 | int ret; |
| 297 | 298 | ||
| 298 | client = s3c_adc_register(pdev, NULL, NULL, 0); | 299 | client = s3c_adc_register(pdev, NULL, NULL, 0); |
| @@ -309,14 +310,15 @@ static int s3c_adc_bat_probe(struct platform_device *pdev) | |||
| 309 | main_bat.cur_value = -1; | 310 | main_bat.cur_value = -1; |
| 310 | main_bat.cable_plugged = 0; | 311 | main_bat.cable_plugged = 0; |
| 311 | main_bat.status = POWER_SUPPLY_STATUS_DISCHARGING; | 312 | main_bat.status = POWER_SUPPLY_STATUS_DISCHARGING; |
| 313 | psy_cfg.drv_data = &main_bat; | ||
| 312 | 314 | ||
| 313 | main_bat.psy = power_supply_register(&pdev->dev, &main_bat_desc, NULL); | 315 | main_bat.psy = power_supply_register(&pdev->dev, &main_bat_desc, &psy_cfg); |
| 314 | if (IS_ERR(main_bat.psy)) { | 316 | if (IS_ERR(main_bat.psy)) { |
| 315 | ret = PTR_ERR(main_bat.psy); | 317 | ret = PTR_ERR(main_bat.psy); |
| 316 | goto err_reg_main; | 318 | goto err_reg_main; |
| 317 | } | 319 | } |
| 318 | if (pdata->backup_volt_mult) { | 320 | if (pdata->backup_volt_mult) { |
| 319 | const struct power_supply_config psy_cfg | 321 | const struct power_supply_config backup_psy_cfg |
| 320 | = { .drv_data = &backup_bat, }; | 322 | = { .drv_data = &backup_bat, }; |
| 321 | 323 | ||
| 322 | backup_bat.client = client; | 324 | backup_bat.client = client; |
| @@ -324,7 +326,7 @@ static int s3c_adc_bat_probe(struct platform_device *pdev) | |||
| 324 | backup_bat.volt_value = -1; | 326 | backup_bat.volt_value = -1; |
| 325 | backup_bat.psy = power_supply_register(&pdev->dev, | 327 | backup_bat.psy = power_supply_register(&pdev->dev, |
| 326 | &backup_bat_desc, | 328 | &backup_bat_desc, |
| 327 | &psy_cfg); | 329 | &backup_psy_cfg); |
| 328 | if (IS_ERR(backup_bat.psy)) { | 330 | if (IS_ERR(backup_bat.psy)) { |
| 329 | ret = PTR_ERR(backup_bat.psy); | 331 | ret = PTR_ERR(backup_bat.psy); |
| 330 | goto err_reg_backup; | 332 | goto err_reg_backup; |
