Lines Matching refs:bdi

181 static int bq24190_charger_set_charge_type(struct bq24190_dev_info *bdi,
250 static int bq24190_read(struct bq24190_dev_info *bdi, u8 reg, u8 *data) in bq24190_read() argument
254 ret = i2c_smbus_read_byte_data(bdi->client, reg); in bq24190_read()
262 static int bq24190_write(struct bq24190_dev_info *bdi, u8 reg, u8 data) in bq24190_write() argument
264 return i2c_smbus_write_byte_data(bdi->client, reg, data); in bq24190_write()
267 static int bq24190_read_mask(struct bq24190_dev_info *bdi, u8 reg, in bq24190_read_mask() argument
273 ret = bq24190_read(bdi, reg, &v); in bq24190_read_mask()
284 static int bq24190_write_mask(struct bq24190_dev_info *bdi, u8 reg, in bq24190_write_mask() argument
290 ret = bq24190_read(bdi, reg, &v); in bq24190_write_mask()
297 return bq24190_write(bdi, reg, v); in bq24190_write_mask()
300 static int bq24190_get_field_val(struct bq24190_dev_info *bdi, in bq24190_get_field_val() argument
308 ret = bq24190_read_mask(bdi, reg, mask, shift, &v); in bq24190_get_field_val()
318 static int bq24190_set_field_val(struct bq24190_dev_info *bdi, in bq24190_set_field_val() argument
327 return bq24190_write_mask(bdi, reg, mask, shift, idx); in bq24190_set_field_val()
448 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_sysfs_show() local
458 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_sysfs_show()
462 ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v); in bq24190_sysfs_show()
468 pm_runtime_mark_last_busy(bdi->dev); in bq24190_sysfs_show()
469 pm_runtime_put_autosuspend(bdi->dev); in bq24190_sysfs_show()
478 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_sysfs_store() local
491 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_sysfs_store()
495 ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v); in bq24190_sysfs_store()
499 pm_runtime_mark_last_busy(bdi->dev); in bq24190_sysfs_store()
500 pm_runtime_put_autosuspend(bdi->dev); in bq24190_sysfs_store()
506 static int bq24190_set_otg_vbus(struct bq24190_dev_info *bdi, bool enable) in bq24190_set_otg_vbus() argument
508 union power_supply_propval val = { .intval = bdi->charge_type }; in bq24190_set_otg_vbus()
511 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_set_otg_vbus()
513 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret); in bq24190_set_otg_vbus()
517 bdi->otg_vbus_enabled = enable; in bq24190_set_otg_vbus()
519 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_set_otg_vbus()
524 ret = bq24190_charger_set_charge_type(bdi, &val); in bq24190_set_otg_vbus()
526 pm_runtime_mark_last_busy(bdi->dev); in bq24190_set_otg_vbus()
527 pm_runtime_put_autosuspend(bdi->dev); in bq24190_set_otg_vbus()
545 struct bq24190_dev_info *bdi = rdev_get_drvdata(dev); in bq24190_vbus_is_enabled() local
549 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_vbus_is_enabled()
551 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret); in bq24190_vbus_is_enabled()
555 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_vbus_is_enabled()
559 pm_runtime_mark_last_busy(bdi->dev); in bq24190_vbus_is_enabled()
560 pm_runtime_put_autosuspend(bdi->dev); in bq24190_vbus_is_enabled()
565 bdi->otg_vbus_enabled = (val == BQ24190_REG_POC_CHG_CONFIG_OTG || in bq24190_vbus_is_enabled()
567 return bdi->otg_vbus_enabled; in bq24190_vbus_is_enabled()
592 static int bq24190_register_vbus_regulator(struct bq24190_dev_info *bdi) in bq24190_register_vbus_regulator() argument
594 struct bq24190_platform_data *pdata = bdi->dev->platform_data; in bq24190_register_vbus_regulator()
599 cfg.dev = bdi->dev; in bq24190_register_vbus_regulator()
604 cfg.driver_data = bdi; in bq24190_register_vbus_regulator()
605 reg = devm_regulator_register(bdi->dev, &bq24190_vbus_desc, &cfg); in bq24190_register_vbus_regulator()
608 dev_err(bdi->dev, "Can't register regulator: %d\n", ret); in bq24190_register_vbus_regulator()
614 static int bq24190_register_vbus_regulator(struct bq24190_dev_info *bdi) in bq24190_register_vbus_regulator() argument
620 static int bq24190_set_config(struct bq24190_dev_info *bdi) in bq24190_set_config() argument
625 ret = bq24190_read(bdi, BQ24190_REG_CTTC, &v); in bq24190_set_config()
629 bdi->watchdog = ((v & BQ24190_REG_CTTC_WATCHDOG_MASK) >> in bq24190_set_config()
642 ret = bq24190_write(bdi, BQ24190_REG_CTTC, v); in bq24190_set_config()
646 if (bdi->sys_min) { in bq24190_set_config()
647 v = bdi->sys_min / 100 - 30; // manual section 9.5.1.2, table 9 in bq24190_set_config()
648 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_set_config()
656 if (bdi->iprechg) { in bq24190_set_config()
657 v = bdi->iprechg / 128 - 1; // manual section 9.5.1.4, table 11 in bq24190_set_config()
658 ret = bq24190_write_mask(bdi, BQ24190_REG_PCTCC, in bq24190_set_config()
666 if (bdi->iterm) { in bq24190_set_config()
667 v = bdi->iterm / 128 - 1; // manual section 9.5.1.4, table 11 in bq24190_set_config()
668 ret = bq24190_write_mask(bdi, BQ24190_REG_PCTCC, in bq24190_set_config()
676 if (bdi->ichg) { in bq24190_set_config()
677 ret = bq24190_set_field_val(bdi, BQ24190_REG_CCC, in bq24190_set_config()
682 bdi->ichg); in bq24190_set_config()
687 if (bdi->vreg) { in bq24190_set_config()
688 ret = bq24190_set_field_val(bdi, BQ24190_REG_CVC, in bq24190_set_config()
693 bdi->vreg); in bq24190_set_config()
701 static int bq24190_register_reset(struct bq24190_dev_info *bdi) in bq24190_register_reset() argument
716 if (device_property_read_bool(bdi->dev, "disable-reset")) in bq24190_register_reset()
720 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_register_reset()
729 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_register_reset()
747 static int bq24190_charger_get_charge_type(struct bq24190_dev_info *bdi, in bq24190_charger_get_charge_type() argument
753 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_charger_get_charge_type()
764 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_get_charge_type()
780 static int bq24190_charger_set_charge_type(struct bq24190_dev_info *bdi, in bq24190_charger_set_charge_type() argument
814 bdi->charge_type = val->intval; in bq24190_charger_set_charge_type()
819 if (bdi->otg_vbus_enabled) in bq24190_charger_set_charge_type()
823 ret = bq24190_write_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_set_charge_type()
830 ret = bq24190_write_mask(bdi, BQ24190_REG_CTTC, in bq24190_charger_set_charge_type()
838 return bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_charger_set_charge_type()
843 static int bq24190_charger_get_health(struct bq24190_dev_info *bdi, in bq24190_charger_get_health() argument
849 mutex_lock(&bdi->f_reg_lock); in bq24190_charger_get_health()
850 v = bdi->f_reg; in bq24190_charger_get_health()
851 mutex_unlock(&bdi->f_reg_lock); in bq24190_charger_get_health()
908 static int bq24190_charger_get_online(struct bq24190_dev_info *bdi, in bq24190_charger_get_online() argument
914 ret = bq24190_read_mask(bdi, BQ24190_REG_SS, in bq24190_charger_get_online()
920 ret = bq24190_read_mask(bdi, BQ24190_REG_MOC, in bq24190_charger_get_online()
931 static int bq24190_battery_set_online(struct bq24190_dev_info *bdi,
933 static int bq24190_battery_get_status(struct bq24190_dev_info *bdi,
935 static int bq24190_battery_get_temp_alert_max(struct bq24190_dev_info *bdi,
937 static int bq24190_battery_set_temp_alert_max(struct bq24190_dev_info *bdi,
940 static int bq24190_charger_set_online(struct bq24190_dev_info *bdi, in bq24190_charger_set_online() argument
943 return bq24190_battery_set_online(bdi, val); in bq24190_charger_set_online()
946 static int bq24190_charger_get_status(struct bq24190_dev_info *bdi, in bq24190_charger_get_status() argument
949 return bq24190_battery_get_status(bdi, val); in bq24190_charger_get_status()
952 static int bq24190_charger_get_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_charger_get_temp_alert_max() argument
955 return bq24190_battery_get_temp_alert_max(bdi, val); in bq24190_charger_get_temp_alert_max()
958 static int bq24190_charger_set_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_charger_set_temp_alert_max() argument
961 return bq24190_battery_set_temp_alert_max(bdi, val); in bq24190_charger_set_temp_alert_max()
964 static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi, in bq24190_charger_get_precharge() argument
970 ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC, in bq24190_charger_get_precharge()
980 static int bq24190_charger_get_charge_term(struct bq24190_dev_info *bdi, in bq24190_charger_get_charge_term() argument
986 ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC, in bq24190_charger_get_charge_term()
996 static int bq24190_charger_get_current(struct bq24190_dev_info *bdi, in bq24190_charger_get_current() argument
1002 ret = bq24190_get_field_val(bdi, BQ24190_REG_CCC, in bq24190_charger_get_current()
1009 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_get_current()
1023 static int bq24190_charger_set_current(struct bq24190_dev_info *bdi, in bq24190_charger_set_current() argument
1029 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_set_current()
1039 if (curr > bdi->ichg_max) in bq24190_charger_set_current()
1042 ret = bq24190_set_field_val(bdi, BQ24190_REG_CCC, in bq24190_charger_set_current()
1049 bdi->ichg = curr; in bq24190_charger_set_current()
1054 static int bq24190_charger_get_voltage(struct bq24190_dev_info *bdi, in bq24190_charger_get_voltage() argument
1059 ret = bq24190_get_field_val(bdi, BQ24190_REG_CVC, in bq24190_charger_get_voltage()
1070 static int bq24190_charger_set_voltage(struct bq24190_dev_info *bdi, in bq24190_charger_set_voltage() argument
1075 if (val->intval > bdi->vreg_max) in bq24190_charger_set_voltage()
1078 ret = bq24190_set_field_val(bdi, BQ24190_REG_CVC, in bq24190_charger_set_voltage()
1085 bdi->vreg = val->intval; in bq24190_charger_set_voltage()
1090 static int bq24190_charger_get_iinlimit(struct bq24190_dev_info *bdi, in bq24190_charger_get_iinlimit() argument
1095 ret = bq24190_get_field_val(bdi, BQ24190_REG_ISC, in bq24190_charger_get_iinlimit()
1107 static int bq24190_charger_set_iinlimit(struct bq24190_dev_info *bdi, in bq24190_charger_set_iinlimit() argument
1110 return bq24190_set_field_val(bdi, BQ24190_REG_ISC, in bq24190_charger_set_iinlimit()
1120 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_get_property() local
1123 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_charger_get_property()
1125 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_charger_get_property()
1131 ret = bq24190_charger_get_charge_type(bdi, val); in bq24190_charger_get_property()
1134 ret = bq24190_charger_get_health(bdi, val); in bq24190_charger_get_property()
1137 ret = bq24190_charger_get_online(bdi, val); in bq24190_charger_get_property()
1140 ret = bq24190_charger_get_status(bdi, val); in bq24190_charger_get_property()
1143 ret = bq24190_charger_get_temp_alert_max(bdi, val); in bq24190_charger_get_property()
1146 ret = bq24190_charger_get_precharge(bdi, val); in bq24190_charger_get_property()
1149 ret = bq24190_charger_get_charge_term(bdi, val); in bq24190_charger_get_property()
1152 ret = bq24190_charger_get_current(bdi, val); in bq24190_charger_get_property()
1155 val->intval = bdi->ichg_max; in bq24190_charger_get_property()
1159 ret = bq24190_charger_get_voltage(bdi, val); in bq24190_charger_get_property()
1162 val->intval = bdi->vreg_max; in bq24190_charger_get_property()
1166 ret = bq24190_charger_get_iinlimit(bdi, val); in bq24190_charger_get_property()
1173 val->strval = bdi->model_name; in bq24190_charger_get_property()
1184 pm_runtime_mark_last_busy(bdi->dev); in bq24190_charger_get_property()
1185 pm_runtime_put_autosuspend(bdi->dev); in bq24190_charger_get_property()
1194 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_set_property() local
1197 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_charger_set_property()
1199 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_charger_set_property()
1205 ret = bq24190_charger_set_online(bdi, val); in bq24190_charger_set_property()
1208 ret = bq24190_charger_set_temp_alert_max(bdi, val); in bq24190_charger_set_property()
1211 ret = bq24190_charger_set_charge_type(bdi, val); in bq24190_charger_set_property()
1214 ret = bq24190_charger_set_current(bdi, val); in bq24190_charger_set_property()
1217 ret = bq24190_charger_set_voltage(bdi, val); in bq24190_charger_set_property()
1220 ret = bq24190_charger_set_iinlimit(bdi, val); in bq24190_charger_set_property()
1226 pm_runtime_mark_last_busy(bdi->dev); in bq24190_charger_set_property()
1227 pm_runtime_put_autosuspend(bdi->dev); in bq24190_charger_set_property()
1250 struct bq24190_dev_info *bdi = in bq24190_input_current_limit_work() local
1256 ret = power_supply_get_property_from_supplier(bdi->charger, in bq24190_input_current_limit_work()
1262 bq24190_charger_set_property(bdi->charger, in bq24190_input_current_limit_work()
1270 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_external_power_changed() local
1280 queue_delayed_work(system_wq, &bdi->input_current_limit_work, in bq24190_charger_external_power_changed()
1319 static int bq24190_battery_get_status(struct bq24190_dev_info *bdi, in bq24190_battery_get_status() argument
1325 mutex_lock(&bdi->f_reg_lock); in bq24190_battery_get_status()
1326 chrg_fault = bdi->f_reg; in bq24190_battery_get_status()
1327 mutex_unlock(&bdi->f_reg_lock); in bq24190_battery_get_status()
1332 ret = bq24190_read(bdi, BQ24190_REG_SS, &ss_reg); in bq24190_battery_get_status()
1371 static int bq24190_battery_get_health(struct bq24190_dev_info *bdi, in bq24190_battery_get_health() argument
1377 mutex_lock(&bdi->f_reg_lock); in bq24190_battery_get_health()
1378 v = bdi->f_reg; in bq24190_battery_get_health()
1379 mutex_unlock(&bdi->f_reg_lock); in bq24190_battery_get_health()
1410 static int bq24190_battery_get_online(struct bq24190_dev_info *bdi, in bq24190_battery_get_online() argument
1416 ret = bq24190_read_mask(bdi, BQ24190_REG_MOC, in bq24190_battery_get_online()
1426 static int bq24190_battery_set_online(struct bq24190_dev_info *bdi, in bq24190_battery_set_online() argument
1429 return bq24190_write_mask(bdi, BQ24190_REG_MOC, in bq24190_battery_set_online()
1434 static int bq24190_battery_get_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_battery_get_temp_alert_max() argument
1439 ret = bq24190_get_field_val(bdi, BQ24190_REG_ICTRC, in bq24190_battery_get_temp_alert_max()
1451 static int bq24190_battery_set_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_battery_set_temp_alert_max() argument
1454 return bq24190_set_field_val(bdi, BQ24190_REG_ICTRC, in bq24190_battery_set_temp_alert_max()
1464 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_battery_get_property() local
1467 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n"); in bq24190_battery_get_property()
1468 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_battery_get_property()
1470 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_battery_get_property()
1476 ret = bq24190_battery_get_status(bdi, val); in bq24190_battery_get_property()
1479 ret = bq24190_battery_get_health(bdi, val); in bq24190_battery_get_property()
1482 ret = bq24190_battery_get_online(bdi, val); in bq24190_battery_get_property()
1490 ret = bq24190_battery_get_temp_alert_max(bdi, val); in bq24190_battery_get_property()
1500 pm_runtime_mark_last_busy(bdi->dev); in bq24190_battery_get_property()
1501 pm_runtime_put_autosuspend(bdi->dev); in bq24190_battery_get_property()
1510 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_battery_set_property() local
1513 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n"); in bq24190_battery_set_property()
1514 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_battery_set_property()
1516 ret = pm_runtime_resume_and_get(bdi->dev); in bq24190_battery_set_property()
1522 ret = bq24190_battery_set_online(bdi, val); in bq24190_battery_set_property()
1525 ret = bq24190_battery_set_temp_alert_max(bdi, val); in bq24190_battery_set_property()
1531 pm_runtime_mark_last_busy(bdi->dev); in bq24190_battery_set_property()
1532 pm_runtime_put_autosuspend(bdi->dev); in bq24190_battery_set_property()
1573 static int bq24190_configure_usb_otg(struct bq24190_dev_info *bdi, u8 ss_reg) in bq24190_configure_usb_otg() argument
1579 ret = extcon_set_state_sync(bdi->edev, EXTCON_USB, otg_enabled); in bq24190_configure_usb_otg()
1581 dev_err(bdi->dev, "Can't set extcon state to %d: %d\n", in bq24190_configure_usb_otg()
1587 static void bq24190_check_status(struct bq24190_dev_info *bdi) in bq24190_check_status() argument
1596 ret = bq24190_read(bdi, BQ24190_REG_SS, &ss_reg); in bq24190_check_status()
1598 dev_err(bdi->dev, "Can't read SS reg: %d\n", ret); in bq24190_check_status()
1604 ret = bq24190_read(bdi, BQ24190_REG_F, &f_reg); in bq24190_check_status()
1606 dev_err(bdi->dev, "Can't read F reg: %d\n", ret); in bq24190_check_status()
1616 if (f_reg != bdi->f_reg) { in bq24190_check_status()
1617 dev_warn(bdi->dev, in bq24190_check_status()
1624 mutex_lock(&bdi->f_reg_lock); in bq24190_check_status()
1625 if ((bdi->f_reg & battery_mask_f) != (f_reg & battery_mask_f)) in bq24190_check_status()
1627 if ((bdi->f_reg & ~battery_mask_f) != (f_reg & ~battery_mask_f)) in bq24190_check_status()
1629 bdi->f_reg = f_reg; in bq24190_check_status()
1630 mutex_unlock(&bdi->f_reg_lock); in bq24190_check_status()
1633 if (ss_reg != bdi->ss_reg) { in bq24190_check_status()
1638 if ((bdi->ss_reg & BQ24190_REG_SS_PG_STAT_MASK) && in bq24190_check_status()
1640 ret = bq24190_write_mask(bdi, BQ24190_REG_ISC, in bq24190_check_status()
1645 dev_err(bdi->dev, "Can't access ISC reg: %d\n", in bq24190_check_status()
1649 if ((bdi->ss_reg & battery_mask_ss) != (ss_reg & battery_mask_ss)) in bq24190_check_status()
1651 if ((bdi->ss_reg & ~battery_mask_ss) != (ss_reg & ~battery_mask_ss)) in bq24190_check_status()
1653 bdi->ss_reg = ss_reg; in bq24190_check_status()
1657 power_supply_changed(bdi->charger); in bq24190_check_status()
1658 bq24190_configure_usb_otg(bdi, ss_reg); in bq24190_check_status()
1660 if (alert_battery && bdi->battery) in bq24190_check_status()
1661 power_supply_changed(bdi->battery); in bq24190_check_status()
1663 dev_dbg(bdi->dev, "ss_reg: 0x%02x, f_reg: 0x%02x\n", ss_reg, f_reg); in bq24190_check_status()
1668 struct bq24190_dev_info *bdi = data; in bq24190_irq_handler_thread() local
1671 bdi->irq_event = true; in bq24190_irq_handler_thread()
1672 error = pm_runtime_resume_and_get(bdi->dev); in bq24190_irq_handler_thread()
1674 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_irq_handler_thread()
1677 bq24190_check_status(bdi); in bq24190_irq_handler_thread()
1678 pm_runtime_mark_last_busy(bdi->dev); in bq24190_irq_handler_thread()
1679 pm_runtime_put_autosuspend(bdi->dev); in bq24190_irq_handler_thread()
1680 bdi->irq_event = false; in bq24190_irq_handler_thread()
1685 static int bq24190_hw_init(struct bq24190_dev_info *bdi) in bq24190_hw_init() argument
1691 ret = bq24190_read_mask(bdi, BQ24190_REG_VPRS, in bq24190_hw_init()
1704 dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v); in bq24190_hw_init()
1708 ret = bq24190_register_reset(bdi); in bq24190_hw_init()
1712 ret = bq24190_set_config(bdi); in bq24190_hw_init()
1716 return bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg); in bq24190_hw_init()
1719 static int bq24190_get_config(struct bq24190_dev_info *bdi) in bq24190_get_config() argument
1726 bdi->ichg_max = bq24190_ccc_ichg_values[idx]; in bq24190_get_config()
1729 bdi->vreg_max = bq24190_cvc_vreg_values[idx]; in bq24190_get_config()
1731 if (device_property_read_u32(bdi->dev, s, &v) == 0) { in bq24190_get_config()
1735 bdi->sys_min = v; in bq24190_get_config()
1737 dev_warn(bdi->dev, "invalid value for %s: %u\n", s, v); in bq24190_get_config()
1740 if (!power_supply_get_battery_info(bdi->charger, &info)) { in bq24190_get_config()
1744 bdi->iprechg = v; in bq24190_get_config()
1746 dev_warn(bdi->dev, "invalid value for battery:precharge-current-microamp: %d\n", in bq24190_get_config()
1752 bdi->iterm = v; in bq24190_get_config()
1754 dev_warn(bdi->dev, "invalid value for battery:charge-term-current-microamp: %d\n", in bq24190_get_config()
1759 if (v >= bq24190_ccc_ichg_values[0] && v <= bdi->ichg_max) in bq24190_get_config()
1760 bdi->ichg = bdi->ichg_max = v; in bq24190_get_config()
1763 if (v >= bq24190_cvc_vreg_values[0] && v <= bdi->vreg_max) in bq24190_get_config()
1764 bdi->vreg = bdi->vreg_max = v; in bq24190_get_config()
1776 struct bq24190_dev_info *bdi; in bq24190_probe() local
1784 bdi = devm_kzalloc(dev, sizeof(*bdi), GFP_KERNEL); in bq24190_probe()
1785 if (!bdi) { in bq24190_probe()
1790 bdi->client = client; in bq24190_probe()
1791 bdi->dev = dev; in bq24190_probe()
1792 strncpy(bdi->model_name, id->name, I2C_NAME_SIZE); in bq24190_probe()
1793 mutex_init(&bdi->f_reg_lock); in bq24190_probe()
1794 bdi->charge_type = POWER_SUPPLY_CHARGE_TYPE_FAST; in bq24190_probe()
1795 bdi->f_reg = 0; in bq24190_probe()
1796 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */ in bq24190_probe()
1797 INIT_DELAYED_WORK(&bdi->input_current_limit_work, in bq24190_probe()
1800 i2c_set_clientdata(client, bdi); in bq24190_probe()
1807 bdi->edev = devm_extcon_dev_allocate(dev, bq24190_usb_extcon_cable); in bq24190_probe()
1808 if (IS_ERR(bdi->edev)) in bq24190_probe()
1809 return PTR_ERR(bdi->edev); in bq24190_probe()
1811 ret = devm_extcon_dev_register(dev, bdi->edev); in bq24190_probe()
1829 charger_cfg.drv_data = bdi; in bq24190_probe()
1833 bdi->charger = power_supply_register(dev, &bq24190_charger_desc, in bq24190_probe()
1835 if (IS_ERR(bdi->charger)) { in bq24190_probe()
1837 ret = PTR_ERR(bdi->charger); in bq24190_probe()
1844 battery_cfg.drv_data = bdi; in bq24190_probe()
1845 bdi->battery = power_supply_register(dev, &bq24190_battery_desc, in bq24190_probe()
1847 if (IS_ERR(bdi->battery)) { in bq24190_probe()
1849 ret = PTR_ERR(bdi->battery); in bq24190_probe()
1854 ret = bq24190_get_config(bdi); in bq24190_probe()
1860 ret = bq24190_hw_init(bdi); in bq24190_probe()
1866 ret = bq24190_configure_usb_otg(bdi, bdi->ss_reg); in bq24190_probe()
1870 bdi->initialized = true; in bq24190_probe()
1875 "bq24190-charger", bdi); in bq24190_probe()
1881 ret = bq24190_register_vbus_regulator(bdi); in bq24190_probe()
1893 if (!IS_ERR_OR_NULL(bdi->battery)) in bq24190_probe()
1894 power_supply_unregister(bdi->battery); in bq24190_probe()
1895 power_supply_unregister(bdi->charger); in bq24190_probe()
1906 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_remove() local
1909 error = pm_runtime_resume_and_get(bdi->dev); in bq24190_remove()
1911 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_remove()
1913 bq24190_register_reset(bdi); in bq24190_remove()
1914 if (bdi->battery) in bq24190_remove()
1915 power_supply_unregister(bdi->battery); in bq24190_remove()
1916 power_supply_unregister(bdi->charger); in bq24190_remove()
1918 pm_runtime_put_sync(bdi->dev); in bq24190_remove()
1919 pm_runtime_dont_use_autosuspend(bdi->dev); in bq24190_remove()
1920 pm_runtime_disable(bdi->dev); in bq24190_remove()
1925 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_shutdown() local
1928 bq24190_set_otg_vbus(bdi, false); in bq24190_shutdown()
1934 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_runtime_suspend() local
1936 if (!bdi->initialized) in bq24190_runtime_suspend()
1939 dev_dbg(bdi->dev, "%s\n", __func__); in bq24190_runtime_suspend()
1947 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_runtime_resume() local
1949 if (!bdi->initialized) in bq24190_runtime_resume()
1952 if (!bdi->irq_event) { in bq24190_runtime_resume()
1953 dev_dbg(bdi->dev, "checking events on possible wakeirq\n"); in bq24190_runtime_resume()
1954 bq24190_check_status(bdi); in bq24190_runtime_resume()
1963 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_pm_suspend() local
1966 error = pm_runtime_resume_and_get(bdi->dev); in bq24190_pm_suspend()
1968 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_pm_suspend()
1970 bq24190_register_reset(bdi); in bq24190_pm_suspend()
1973 pm_runtime_mark_last_busy(bdi->dev); in bq24190_pm_suspend()
1974 pm_runtime_put_autosuspend(bdi->dev); in bq24190_pm_suspend()
1983 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_pm_resume() local
1986 bdi->f_reg = 0; in bq24190_pm_resume()
1987 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */ in bq24190_pm_resume()
1989 error = pm_runtime_resume_and_get(bdi->dev); in bq24190_pm_resume()
1991 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_pm_resume()
1993 bq24190_register_reset(bdi); in bq24190_pm_resume()
1994 bq24190_set_config(bdi); in bq24190_pm_resume()
1995 bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg); in bq24190_pm_resume()
1998 pm_runtime_mark_last_busy(bdi->dev); in bq24190_pm_resume()
1999 pm_runtime_put_autosuspend(bdi->dev); in bq24190_pm_resume()
2003 power_supply_changed(bdi->charger); in bq24190_pm_resume()
2004 if (bdi->battery) in bq24190_pm_resume()
2005 power_supply_changed(bdi->battery); in bq24190_pm_resume()