hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/power/supply/bq24190_charger.c
....@@ -448,11 +448,9 @@
448448 if (!info)
449449 return -EINVAL;
450450
451
- ret = pm_runtime_get_sync(bdi->dev);
452
- if (ret < 0) {
453
- pm_runtime_put_noidle(bdi->dev);
451
+ ret = pm_runtime_resume_and_get(bdi->dev);
452
+ if (ret < 0)
454453 return ret;
455
- }
456454
457455 ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v);
458456 if (ret)
....@@ -483,11 +481,9 @@
483481 if (ret < 0)
484482 return ret;
485483
486
- ret = pm_runtime_get_sync(bdi->dev);
487
- if (ret < 0) {
488
- pm_runtime_put_noidle(bdi->dev);
484
+ ret = pm_runtime_resume_and_get(bdi->dev);
485
+ if (ret < 0)
489486 return ret;
490
- }
491487
492488 ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v);
493489 if (ret)
....@@ -506,10 +502,9 @@
506502 struct bq24190_dev_info *bdi = rdev_get_drvdata(dev);
507503 int ret;
508504
509
- ret = pm_runtime_get_sync(bdi->dev);
505
+ ret = pm_runtime_resume_and_get(bdi->dev);
510506 if (ret < 0) {
511507 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
512
- pm_runtime_put_noidle(bdi->dev);
513508 return ret;
514509 }
515510
....@@ -539,10 +534,9 @@
539534 int ret;
540535 u8 val;
541536
542
- ret = pm_runtime_get_sync(bdi->dev);
537
+ ret = pm_runtime_resume_and_get(bdi->dev);
543538 if (ret < 0) {
544539 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret);
545
- pm_runtime_put_noidle(bdi->dev);
546540 return ret;
547541 }
548542
....@@ -1083,11 +1077,9 @@
10831077
10841078 dev_dbg(bdi->dev, "prop: %d\n", psp);
10851079
1086
- ret = pm_runtime_get_sync(bdi->dev);
1087
- if (ret < 0) {
1088
- pm_runtime_put_noidle(bdi->dev);
1080
+ ret = pm_runtime_resume_and_get(bdi->dev);
1081
+ if (ret < 0)
10891082 return ret;
1090
- }
10911083
10921084 switch (psp) {
10931085 case POWER_SUPPLY_PROP_CHARGE_TYPE:
....@@ -1157,11 +1149,9 @@
11571149
11581150 dev_dbg(bdi->dev, "prop: %d\n", psp);
11591151
1160
- ret = pm_runtime_get_sync(bdi->dev);
1161
- if (ret < 0) {
1162
- pm_runtime_put_noidle(bdi->dev);
1152
+ ret = pm_runtime_resume_and_get(bdi->dev);
1153
+ if (ret < 0)
11631154 return ret;
1164
- }
11651155
11661156 switch (psp) {
11671157 case POWER_SUPPLY_PROP_ONLINE:
....@@ -1213,8 +1203,19 @@
12131203 struct bq24190_dev_info *bdi =
12141204 container_of(work, struct bq24190_dev_info,
12151205 input_current_limit_work.work);
1206
+ union power_supply_propval val;
1207
+ int ret;
12161208
1217
- power_supply_set_input_current_limit_from_supplier(bdi->charger);
1209
+ ret = power_supply_get_property_from_supplier(bdi->charger,
1210
+ POWER_SUPPLY_PROP_CURRENT_MAX,
1211
+ &val);
1212
+ if (ret)
1213
+ return;
1214
+
1215
+ bq24190_charger_set_property(bdi->charger,
1216
+ POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT,
1217
+ &val);
1218
+ power_supply_changed(bdi->charger);
12181219 }
12191220
12201221 /* Sync the input-current-limit with our parent supply (if we have one) */
....@@ -1420,11 +1421,9 @@
14201421 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
14211422 dev_dbg(bdi->dev, "prop: %d\n", psp);
14221423
1423
- ret = pm_runtime_get_sync(bdi->dev);
1424
- if (ret < 0) {
1425
- pm_runtime_put_noidle(bdi->dev);
1424
+ ret = pm_runtime_resume_and_get(bdi->dev);
1425
+ if (ret < 0)
14261426 return ret;
1427
- }
14281427
14291428 switch (psp) {
14301429 case POWER_SUPPLY_PROP_STATUS:
....@@ -1468,11 +1467,9 @@
14681467 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n");
14691468 dev_dbg(bdi->dev, "prop: %d\n", psp);
14701469
1471
- ret = pm_runtime_get_sync(bdi->dev);
1472
- if (ret < 0) {
1473
- pm_runtime_put_noidle(bdi->dev);
1470
+ ret = pm_runtime_resume_and_get(bdi->dev);
1471
+ if (ret < 0)
14741472 return ret;
1475
- }
14761473
14771474 switch (psp) {
14781475 case POWER_SUPPLY_PROP_ONLINE:
....@@ -1626,10 +1623,9 @@
16261623 int error;
16271624
16281625 bdi->irq_event = true;
1629
- error = pm_runtime_get_sync(bdi->dev);
1626
+ error = pm_runtime_resume_and_get(bdi->dev);
16301627 if (error < 0) {
16311628 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1632
- pm_runtime_put_noidle(bdi->dev);
16331629 return IRQ_NONE;
16341630 }
16351631 bq24190_check_status(bdi);
....@@ -1849,11 +1845,10 @@
18491845 struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
18501846 int error;
18511847
1852
- error = pm_runtime_get_sync(bdi->dev);
1853
- if (error < 0) {
1848
+ cancel_delayed_work_sync(&bdi->input_current_limit_work);
1849
+ error = pm_runtime_resume_and_get(bdi->dev);
1850
+ if (error < 0)
18541851 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1855
- pm_runtime_put_noidle(bdi->dev);
1856
- }
18571852
18581853 bq24190_register_reset(bdi);
18591854 if (bdi->battery)
....@@ -1902,11 +1897,9 @@
19021897 struct bq24190_dev_info *bdi = i2c_get_clientdata(client);
19031898 int error;
19041899
1905
- error = pm_runtime_get_sync(bdi->dev);
1906
- if (error < 0) {
1900
+ error = pm_runtime_resume_and_get(bdi->dev);
1901
+ if (error < 0)
19071902 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1908
- pm_runtime_put_noidle(bdi->dev);
1909
- }
19101903
19111904 bq24190_register_reset(bdi);
19121905
....@@ -1927,11 +1920,9 @@
19271920 bdi->f_reg = 0;
19281921 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */
19291922
1930
- error = pm_runtime_get_sync(bdi->dev);
1931
- if (error < 0) {
1923
+ error = pm_runtime_resume_and_get(bdi->dev);
1924
+ if (error < 0)
19321925 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error);
1933
- pm_runtime_put_noidle(bdi->dev);
1934
- }
19351926
19361927 bq24190_register_reset(bdi);
19371928 bq24190_set_config(bdi);