Lines Matching refs:bdi

243 static int bq24190_read(struct bq24190_dev_info *bdi, u8 reg, u8 *data)  in bq24190_read()  argument
247 ret = i2c_smbus_read_byte_data(bdi->client, reg); in bq24190_read()
255 static int bq24190_write(struct bq24190_dev_info *bdi, u8 reg, u8 data) in bq24190_write() argument
257 return i2c_smbus_write_byte_data(bdi->client, reg, data); in bq24190_write()
260 static int bq24190_read_mask(struct bq24190_dev_info *bdi, u8 reg, in bq24190_read_mask() argument
266 ret = bq24190_read(bdi, reg, &v); in bq24190_read_mask()
277 static int bq24190_write_mask(struct bq24190_dev_info *bdi, u8 reg, in bq24190_write_mask() argument
283 ret = bq24190_read(bdi, reg, &v); in bq24190_write_mask()
290 return bq24190_write(bdi, reg, v); in bq24190_write_mask()
293 static int bq24190_get_field_val(struct bq24190_dev_info *bdi, in bq24190_get_field_val() argument
301 ret = bq24190_read_mask(bdi, reg, mask, shift, &v); in bq24190_get_field_val()
311 static int bq24190_set_field_val(struct bq24190_dev_info *bdi, in bq24190_set_field_val() argument
320 return bq24190_write_mask(bdi, reg, mask, shift, idx); in bq24190_set_field_val()
441 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_sysfs_show() local
451 ret = pm_runtime_get_sync(bdi->dev); in bq24190_sysfs_show()
453 pm_runtime_put_noidle(bdi->dev); in bq24190_sysfs_show()
457 ret = bq24190_read_mask(bdi, info->reg, info->mask, info->shift, &v); in bq24190_sysfs_show()
463 pm_runtime_mark_last_busy(bdi->dev); in bq24190_sysfs_show()
464 pm_runtime_put_autosuspend(bdi->dev); in bq24190_sysfs_show()
473 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_sysfs_store() local
486 ret = pm_runtime_get_sync(bdi->dev); in bq24190_sysfs_store()
488 pm_runtime_put_noidle(bdi->dev); in bq24190_sysfs_store()
492 ret = bq24190_write_mask(bdi, info->reg, info->mask, info->shift, v); in bq24190_sysfs_store()
496 pm_runtime_mark_last_busy(bdi->dev); in bq24190_sysfs_store()
497 pm_runtime_put_autosuspend(bdi->dev); in bq24190_sysfs_store()
506 struct bq24190_dev_info *bdi = rdev_get_drvdata(dev); in bq24190_set_charge_mode() local
509 ret = pm_runtime_get_sync(bdi->dev); in bq24190_set_charge_mode()
511 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret); in bq24190_set_charge_mode()
512 pm_runtime_put_noidle(bdi->dev); in bq24190_set_charge_mode()
516 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_set_charge_mode()
520 pm_runtime_mark_last_busy(bdi->dev); in bq24190_set_charge_mode()
521 pm_runtime_put_autosuspend(bdi->dev); in bq24190_set_charge_mode()
538 struct bq24190_dev_info *bdi = rdev_get_drvdata(dev); in bq24190_vbus_is_enabled() local
542 ret = pm_runtime_get_sync(bdi->dev); in bq24190_vbus_is_enabled()
544 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", ret); in bq24190_vbus_is_enabled()
545 pm_runtime_put_noidle(bdi->dev); in bq24190_vbus_is_enabled()
549 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_vbus_is_enabled()
553 pm_runtime_mark_last_busy(bdi->dev); in bq24190_vbus_is_enabled()
554 pm_runtime_put_autosuspend(bdi->dev); in bq24190_vbus_is_enabled()
585 static int bq24190_register_vbus_regulator(struct bq24190_dev_info *bdi) in bq24190_register_vbus_regulator() argument
587 struct bq24190_platform_data *pdata = bdi->dev->platform_data; in bq24190_register_vbus_regulator()
592 cfg.dev = bdi->dev; in bq24190_register_vbus_regulator()
597 cfg.driver_data = bdi; in bq24190_register_vbus_regulator()
598 reg = devm_regulator_register(bdi->dev, &bq24190_vbus_desc, &cfg); in bq24190_register_vbus_regulator()
601 dev_err(bdi->dev, "Can't register regulator: %d\n", ret); in bq24190_register_vbus_regulator()
607 static int bq24190_register_vbus_regulator(struct bq24190_dev_info *bdi) in bq24190_register_vbus_regulator() argument
613 static int bq24190_set_config(struct bq24190_dev_info *bdi) in bq24190_set_config() argument
618 ret = bq24190_read(bdi, BQ24190_REG_CTTC, &v); in bq24190_set_config()
622 bdi->watchdog = ((v & BQ24190_REG_CTTC_WATCHDOG_MASK) >> in bq24190_set_config()
635 ret = bq24190_write(bdi, BQ24190_REG_CTTC, v); in bq24190_set_config()
639 if (bdi->sys_min) { in bq24190_set_config()
640 v = bdi->sys_min / 100 - 30; // manual section 9.5.1.2, table 9 in bq24190_set_config()
641 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_set_config()
649 if (bdi->iprechg) { in bq24190_set_config()
650 v = bdi->iprechg / 128 - 1; // manual section 9.5.1.4, table 11 in bq24190_set_config()
651 ret = bq24190_write_mask(bdi, BQ24190_REG_PCTCC, in bq24190_set_config()
659 if (bdi->iterm) { in bq24190_set_config()
660 v = bdi->iterm / 128 - 1; // manual section 9.5.1.4, table 11 in bq24190_set_config()
661 ret = bq24190_write_mask(bdi, BQ24190_REG_PCTCC, in bq24190_set_config()
672 static int bq24190_register_reset(struct bq24190_dev_info *bdi) in bq24190_register_reset() argument
687 if (device_property_read_bool(bdi->dev, "disable-reset")) in bq24190_register_reset()
691 ret = bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_register_reset()
700 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_register_reset()
718 static int bq24190_charger_get_charge_type(struct bq24190_dev_info *bdi, in bq24190_charger_get_charge_type() argument
724 ret = bq24190_read_mask(bdi, BQ24190_REG_POC, in bq24190_charger_get_charge_type()
735 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_get_charge_type()
751 static int bq24190_charger_set_charge_type(struct bq24190_dev_info *bdi, in bq24190_charger_set_charge_type() argument
786 ret = bq24190_write_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_set_charge_type()
793 ret = bq24190_write_mask(bdi, BQ24190_REG_CTTC, in bq24190_charger_set_charge_type()
801 return bq24190_write_mask(bdi, BQ24190_REG_POC, in bq24190_charger_set_charge_type()
806 static int bq24190_charger_get_health(struct bq24190_dev_info *bdi, in bq24190_charger_get_health() argument
812 mutex_lock(&bdi->f_reg_lock); in bq24190_charger_get_health()
813 v = bdi->f_reg; in bq24190_charger_get_health()
814 mutex_unlock(&bdi->f_reg_lock); in bq24190_charger_get_health()
871 static int bq24190_charger_get_online(struct bq24190_dev_info *bdi, in bq24190_charger_get_online() argument
877 ret = bq24190_read_mask(bdi, BQ24190_REG_SS, in bq24190_charger_get_online()
883 ret = bq24190_read_mask(bdi, BQ24190_REG_MOC, in bq24190_charger_get_online()
894 static int bq24190_battery_set_online(struct bq24190_dev_info *bdi,
896 static int bq24190_battery_get_status(struct bq24190_dev_info *bdi,
898 static int bq24190_battery_get_temp_alert_max(struct bq24190_dev_info *bdi,
900 static int bq24190_battery_set_temp_alert_max(struct bq24190_dev_info *bdi,
903 static int bq24190_charger_set_online(struct bq24190_dev_info *bdi, in bq24190_charger_set_online() argument
906 return bq24190_battery_set_online(bdi, val); in bq24190_charger_set_online()
909 static int bq24190_charger_get_status(struct bq24190_dev_info *bdi, in bq24190_charger_get_status() argument
912 return bq24190_battery_get_status(bdi, val); in bq24190_charger_get_status()
915 static int bq24190_charger_get_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_charger_get_temp_alert_max() argument
918 return bq24190_battery_get_temp_alert_max(bdi, val); in bq24190_charger_get_temp_alert_max()
921 static int bq24190_charger_set_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_charger_set_temp_alert_max() argument
924 return bq24190_battery_set_temp_alert_max(bdi, val); in bq24190_charger_set_temp_alert_max()
927 static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi, in bq24190_charger_get_precharge() argument
933 ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC, in bq24190_charger_get_precharge()
943 static int bq24190_charger_get_charge_term(struct bq24190_dev_info *bdi, in bq24190_charger_get_charge_term() argument
949 ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC, in bq24190_charger_get_charge_term()
959 static int bq24190_charger_get_current(struct bq24190_dev_info *bdi, in bq24190_charger_get_current() argument
965 ret = bq24190_get_field_val(bdi, BQ24190_REG_CCC, in bq24190_charger_get_current()
972 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_get_current()
986 static int bq24190_charger_get_current_max(struct bq24190_dev_info *bdi, in bq24190_charger_get_current_max() argument
995 static int bq24190_charger_set_current(struct bq24190_dev_info *bdi, in bq24190_charger_set_current() argument
1001 ret = bq24190_read_mask(bdi, BQ24190_REG_CCC, in bq24190_charger_set_current()
1011 return bq24190_set_field_val(bdi, BQ24190_REG_CCC, in bq24190_charger_set_current()
1017 static int bq24190_charger_get_voltage(struct bq24190_dev_info *bdi, in bq24190_charger_get_voltage() argument
1022 ret = bq24190_get_field_val(bdi, BQ24190_REG_CVC, in bq24190_charger_get_voltage()
1033 static int bq24190_charger_get_voltage_max(struct bq24190_dev_info *bdi, in bq24190_charger_get_voltage_max() argument
1042 static int bq24190_charger_set_voltage(struct bq24190_dev_info *bdi, in bq24190_charger_set_voltage() argument
1045 return bq24190_set_field_val(bdi, BQ24190_REG_CVC, in bq24190_charger_set_voltage()
1051 static int bq24190_charger_get_iinlimit(struct bq24190_dev_info *bdi, in bq24190_charger_get_iinlimit() argument
1056 ret = bq24190_get_field_val(bdi, BQ24190_REG_ISC, in bq24190_charger_get_iinlimit()
1068 static int bq24190_charger_set_iinlimit(struct bq24190_dev_info *bdi, in bq24190_charger_set_iinlimit() argument
1071 return bq24190_set_field_val(bdi, BQ24190_REG_ISC, in bq24190_charger_set_iinlimit()
1081 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_get_property() local
1084 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_charger_get_property()
1086 ret = pm_runtime_get_sync(bdi->dev); in bq24190_charger_get_property()
1088 pm_runtime_put_noidle(bdi->dev); in bq24190_charger_get_property()
1094 ret = bq24190_charger_get_charge_type(bdi, val); in bq24190_charger_get_property()
1097 ret = bq24190_charger_get_health(bdi, val); in bq24190_charger_get_property()
1100 ret = bq24190_charger_get_online(bdi, val); in bq24190_charger_get_property()
1103 ret = bq24190_charger_get_status(bdi, val); in bq24190_charger_get_property()
1106 ret = bq24190_charger_get_temp_alert_max(bdi, val); in bq24190_charger_get_property()
1109 ret = bq24190_charger_get_precharge(bdi, val); in bq24190_charger_get_property()
1112 ret = bq24190_charger_get_charge_term(bdi, val); in bq24190_charger_get_property()
1115 ret = bq24190_charger_get_current(bdi, val); in bq24190_charger_get_property()
1118 ret = bq24190_charger_get_current_max(bdi, val); in bq24190_charger_get_property()
1121 ret = bq24190_charger_get_voltage(bdi, val); in bq24190_charger_get_property()
1124 ret = bq24190_charger_get_voltage_max(bdi, val); in bq24190_charger_get_property()
1127 ret = bq24190_charger_get_iinlimit(bdi, val); in bq24190_charger_get_property()
1134 val->strval = bdi->model_name; in bq24190_charger_get_property()
1145 pm_runtime_mark_last_busy(bdi->dev); in bq24190_charger_get_property()
1146 pm_runtime_put_autosuspend(bdi->dev); in bq24190_charger_get_property()
1155 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_set_property() local
1158 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_charger_set_property()
1160 ret = pm_runtime_get_sync(bdi->dev); in bq24190_charger_set_property()
1162 pm_runtime_put_noidle(bdi->dev); in bq24190_charger_set_property()
1168 ret = bq24190_charger_set_online(bdi, val); in bq24190_charger_set_property()
1171 ret = bq24190_charger_set_temp_alert_max(bdi, val); in bq24190_charger_set_property()
1174 ret = bq24190_charger_set_charge_type(bdi, val); in bq24190_charger_set_property()
1177 ret = bq24190_charger_set_current(bdi, val); in bq24190_charger_set_property()
1180 ret = bq24190_charger_set_voltage(bdi, val); in bq24190_charger_set_property()
1183 ret = bq24190_charger_set_iinlimit(bdi, val); in bq24190_charger_set_property()
1189 pm_runtime_mark_last_busy(bdi->dev); in bq24190_charger_set_property()
1190 pm_runtime_put_autosuspend(bdi->dev); in bq24190_charger_set_property()
1213 struct bq24190_dev_info *bdi = in bq24190_input_current_limit_work() local
1217 power_supply_set_input_current_limit_from_supplier(bdi->charger); in bq24190_input_current_limit_work()
1223 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_charger_external_power_changed() local
1233 queue_delayed_work(system_wq, &bdi->input_current_limit_work, in bq24190_charger_external_power_changed()
1272 static int bq24190_battery_get_status(struct bq24190_dev_info *bdi, in bq24190_battery_get_status() argument
1278 mutex_lock(&bdi->f_reg_lock); in bq24190_battery_get_status()
1279 chrg_fault = bdi->f_reg; in bq24190_battery_get_status()
1280 mutex_unlock(&bdi->f_reg_lock); in bq24190_battery_get_status()
1285 ret = bq24190_read(bdi, BQ24190_REG_SS, &ss_reg); in bq24190_battery_get_status()
1324 static int bq24190_battery_get_health(struct bq24190_dev_info *bdi, in bq24190_battery_get_health() argument
1330 mutex_lock(&bdi->f_reg_lock); in bq24190_battery_get_health()
1331 v = bdi->f_reg; in bq24190_battery_get_health()
1332 mutex_unlock(&bdi->f_reg_lock); in bq24190_battery_get_health()
1363 static int bq24190_battery_get_online(struct bq24190_dev_info *bdi, in bq24190_battery_get_online() argument
1369 ret = bq24190_read_mask(bdi, BQ24190_REG_MOC, in bq24190_battery_get_online()
1379 static int bq24190_battery_set_online(struct bq24190_dev_info *bdi, in bq24190_battery_set_online() argument
1382 return bq24190_write_mask(bdi, BQ24190_REG_MOC, in bq24190_battery_set_online()
1387 static int bq24190_battery_get_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_battery_get_temp_alert_max() argument
1392 ret = bq24190_get_field_val(bdi, BQ24190_REG_ICTRC, in bq24190_battery_get_temp_alert_max()
1404 static int bq24190_battery_set_temp_alert_max(struct bq24190_dev_info *bdi, in bq24190_battery_set_temp_alert_max() argument
1407 return bq24190_set_field_val(bdi, BQ24190_REG_ICTRC, in bq24190_battery_set_temp_alert_max()
1417 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_battery_get_property() local
1420 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n"); in bq24190_battery_get_property()
1421 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_battery_get_property()
1423 ret = pm_runtime_get_sync(bdi->dev); in bq24190_battery_get_property()
1425 pm_runtime_put_noidle(bdi->dev); in bq24190_battery_get_property()
1431 ret = bq24190_battery_get_status(bdi, val); in bq24190_battery_get_property()
1434 ret = bq24190_battery_get_health(bdi, val); in bq24190_battery_get_property()
1437 ret = bq24190_battery_get_online(bdi, val); in bq24190_battery_get_property()
1445 ret = bq24190_battery_get_temp_alert_max(bdi, val); in bq24190_battery_get_property()
1455 pm_runtime_mark_last_busy(bdi->dev); in bq24190_battery_get_property()
1456 pm_runtime_put_autosuspend(bdi->dev); in bq24190_battery_get_property()
1465 struct bq24190_dev_info *bdi = power_supply_get_drvdata(psy); in bq24190_battery_set_property() local
1468 dev_warn(bdi->dev, "warning: /sys/class/power_supply/bq24190-battery is deprecated\n"); in bq24190_battery_set_property()
1469 dev_dbg(bdi->dev, "prop: %d\n", psp); in bq24190_battery_set_property()
1471 ret = pm_runtime_get_sync(bdi->dev); in bq24190_battery_set_property()
1473 pm_runtime_put_noidle(bdi->dev); in bq24190_battery_set_property()
1479 ret = bq24190_battery_set_online(bdi, val); in bq24190_battery_set_property()
1482 ret = bq24190_battery_set_temp_alert_max(bdi, val); in bq24190_battery_set_property()
1488 pm_runtime_mark_last_busy(bdi->dev); in bq24190_battery_set_property()
1489 pm_runtime_put_autosuspend(bdi->dev); in bq24190_battery_set_property()
1530 static int bq24190_configure_usb_otg(struct bq24190_dev_info *bdi, u8 ss_reg) in bq24190_configure_usb_otg() argument
1536 ret = extcon_set_state_sync(bdi->edev, EXTCON_USB, otg_enabled); in bq24190_configure_usb_otg()
1538 dev_err(bdi->dev, "Can't set extcon state to %d: %d\n", in bq24190_configure_usb_otg()
1544 static void bq24190_check_status(struct bq24190_dev_info *bdi) in bq24190_check_status() argument
1553 ret = bq24190_read(bdi, BQ24190_REG_SS, &ss_reg); in bq24190_check_status()
1555 dev_err(bdi->dev, "Can't read SS reg: %d\n", ret); in bq24190_check_status()
1561 ret = bq24190_read(bdi, BQ24190_REG_F, &f_reg); in bq24190_check_status()
1563 dev_err(bdi->dev, "Can't read F reg: %d\n", ret); in bq24190_check_status()
1573 if (f_reg != bdi->f_reg) { in bq24190_check_status()
1574 dev_warn(bdi->dev, in bq24190_check_status()
1581 mutex_lock(&bdi->f_reg_lock); in bq24190_check_status()
1582 if ((bdi->f_reg & battery_mask_f) != (f_reg & battery_mask_f)) in bq24190_check_status()
1584 if ((bdi->f_reg & ~battery_mask_f) != (f_reg & ~battery_mask_f)) in bq24190_check_status()
1586 bdi->f_reg = f_reg; in bq24190_check_status()
1587 mutex_unlock(&bdi->f_reg_lock); in bq24190_check_status()
1590 if (ss_reg != bdi->ss_reg) { in bq24190_check_status()
1595 if ((bdi->ss_reg & BQ24190_REG_SS_PG_STAT_MASK) && in bq24190_check_status()
1597 ret = bq24190_write_mask(bdi, BQ24190_REG_ISC, in bq24190_check_status()
1602 dev_err(bdi->dev, "Can't access ISC reg: %d\n", in bq24190_check_status()
1606 if ((bdi->ss_reg & battery_mask_ss) != (ss_reg & battery_mask_ss)) in bq24190_check_status()
1608 if ((bdi->ss_reg & ~battery_mask_ss) != (ss_reg & ~battery_mask_ss)) in bq24190_check_status()
1610 bdi->ss_reg = ss_reg; in bq24190_check_status()
1614 power_supply_changed(bdi->charger); in bq24190_check_status()
1615 bq24190_configure_usb_otg(bdi, ss_reg); in bq24190_check_status()
1617 if (alert_battery && bdi->battery) in bq24190_check_status()
1618 power_supply_changed(bdi->battery); in bq24190_check_status()
1620 dev_dbg(bdi->dev, "ss_reg: 0x%02x, f_reg: 0x%02x\n", ss_reg, f_reg); in bq24190_check_status()
1625 struct bq24190_dev_info *bdi = data; in bq24190_irq_handler_thread() local
1628 bdi->irq_event = true; in bq24190_irq_handler_thread()
1629 error = pm_runtime_get_sync(bdi->dev); in bq24190_irq_handler_thread()
1631 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_irq_handler_thread()
1632 pm_runtime_put_noidle(bdi->dev); in bq24190_irq_handler_thread()
1635 bq24190_check_status(bdi); in bq24190_irq_handler_thread()
1636 pm_runtime_mark_last_busy(bdi->dev); in bq24190_irq_handler_thread()
1637 pm_runtime_put_autosuspend(bdi->dev); in bq24190_irq_handler_thread()
1638 bdi->irq_event = false; in bq24190_irq_handler_thread()
1643 static int bq24190_hw_init(struct bq24190_dev_info *bdi) in bq24190_hw_init() argument
1649 ret = bq24190_read_mask(bdi, BQ24190_REG_VPRS, in bq24190_hw_init()
1662 dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v); in bq24190_hw_init()
1666 ret = bq24190_register_reset(bdi); in bq24190_hw_init()
1670 ret = bq24190_set_config(bdi); in bq24190_hw_init()
1674 return bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg); in bq24190_hw_init()
1677 static int bq24190_get_config(struct bq24190_dev_info *bdi) in bq24190_get_config() argument
1683 if (device_property_read_u32(bdi->dev, s, &v) == 0) { in bq24190_get_config()
1687 bdi->sys_min = v; in bq24190_get_config()
1689 dev_warn(bdi->dev, "invalid value for %s: %u\n", s, v); in bq24190_get_config()
1692 if (bdi->dev->of_node && in bq24190_get_config()
1693 !power_supply_get_battery_info(bdi->charger, &info)) { in bq24190_get_config()
1697 bdi->iprechg = v; in bq24190_get_config()
1699 dev_warn(bdi->dev, "invalid value for battery:precharge-current-microamp: %d\n", in bq24190_get_config()
1705 bdi->iterm = v; in bq24190_get_config()
1707 dev_warn(bdi->dev, "invalid value for battery:charge-term-current-microamp: %d\n", in bq24190_get_config()
1720 struct bq24190_dev_info *bdi; in bq24190_probe() local
1728 bdi = devm_kzalloc(dev, sizeof(*bdi), GFP_KERNEL); in bq24190_probe()
1729 if (!bdi) { in bq24190_probe()
1734 bdi->client = client; in bq24190_probe()
1735 bdi->dev = dev; in bq24190_probe()
1736 strncpy(bdi->model_name, id->name, I2C_NAME_SIZE); in bq24190_probe()
1737 mutex_init(&bdi->f_reg_lock); in bq24190_probe()
1738 bdi->f_reg = 0; in bq24190_probe()
1739 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */ in bq24190_probe()
1740 INIT_DELAYED_WORK(&bdi->input_current_limit_work, in bq24190_probe()
1743 i2c_set_clientdata(client, bdi); in bq24190_probe()
1750 bdi->edev = devm_extcon_dev_allocate(dev, bq24190_usb_extcon_cable); in bq24190_probe()
1751 if (IS_ERR(bdi->edev)) in bq24190_probe()
1752 return PTR_ERR(bdi->edev); in bq24190_probe()
1754 ret = devm_extcon_dev_register(dev, bdi->edev); in bq24190_probe()
1772 charger_cfg.drv_data = bdi; in bq24190_probe()
1776 bdi->charger = power_supply_register(dev, &bq24190_charger_desc, in bq24190_probe()
1778 if (IS_ERR(bdi->charger)) { in bq24190_probe()
1780 ret = PTR_ERR(bdi->charger); in bq24190_probe()
1787 battery_cfg.drv_data = bdi; in bq24190_probe()
1788 bdi->battery = power_supply_register(dev, &bq24190_battery_desc, in bq24190_probe()
1790 if (IS_ERR(bdi->battery)) { in bq24190_probe()
1792 ret = PTR_ERR(bdi->battery); in bq24190_probe()
1797 ret = bq24190_get_config(bdi); in bq24190_probe()
1803 ret = bq24190_hw_init(bdi); in bq24190_probe()
1809 ret = bq24190_configure_usb_otg(bdi, bdi->ss_reg); in bq24190_probe()
1813 bdi->initialized = true; in bq24190_probe()
1818 "bq24190-charger", bdi); in bq24190_probe()
1824 ret = bq24190_register_vbus_regulator(bdi); in bq24190_probe()
1836 if (!IS_ERR_OR_NULL(bdi->battery)) in bq24190_probe()
1837 power_supply_unregister(bdi->battery); in bq24190_probe()
1838 power_supply_unregister(bdi->charger); in bq24190_probe()
1849 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_remove() local
1852 error = pm_runtime_get_sync(bdi->dev); in bq24190_remove()
1854 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_remove()
1855 pm_runtime_put_noidle(bdi->dev); in bq24190_remove()
1858 bq24190_register_reset(bdi); in bq24190_remove()
1859 if (bdi->battery) in bq24190_remove()
1860 power_supply_unregister(bdi->battery); in bq24190_remove()
1861 power_supply_unregister(bdi->charger); in bq24190_remove()
1863 pm_runtime_put_sync(bdi->dev); in bq24190_remove()
1864 pm_runtime_dont_use_autosuspend(bdi->dev); in bq24190_remove()
1865 pm_runtime_disable(bdi->dev); in bq24190_remove()
1873 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_runtime_suspend() local
1875 if (!bdi->initialized) in bq24190_runtime_suspend()
1878 dev_dbg(bdi->dev, "%s\n", __func__); in bq24190_runtime_suspend()
1886 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_runtime_resume() local
1888 if (!bdi->initialized) in bq24190_runtime_resume()
1891 if (!bdi->irq_event) { in bq24190_runtime_resume()
1892 dev_dbg(bdi->dev, "checking events on possible wakeirq\n"); in bq24190_runtime_resume()
1893 bq24190_check_status(bdi); in bq24190_runtime_resume()
1902 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_pm_suspend() local
1905 error = pm_runtime_get_sync(bdi->dev); in bq24190_pm_suspend()
1907 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_pm_suspend()
1908 pm_runtime_put_noidle(bdi->dev); in bq24190_pm_suspend()
1911 bq24190_register_reset(bdi); in bq24190_pm_suspend()
1914 pm_runtime_mark_last_busy(bdi->dev); in bq24190_pm_suspend()
1915 pm_runtime_put_autosuspend(bdi->dev); in bq24190_pm_suspend()
1924 struct bq24190_dev_info *bdi = i2c_get_clientdata(client); in bq24190_pm_resume() local
1927 bdi->f_reg = 0; in bq24190_pm_resume()
1928 bdi->ss_reg = BQ24190_REG_SS_VBUS_STAT_MASK; /* impossible state */ in bq24190_pm_resume()
1930 error = pm_runtime_get_sync(bdi->dev); in bq24190_pm_resume()
1932 dev_warn(bdi->dev, "pm_runtime_get failed: %i\n", error); in bq24190_pm_resume()
1933 pm_runtime_put_noidle(bdi->dev); in bq24190_pm_resume()
1936 bq24190_register_reset(bdi); in bq24190_pm_resume()
1937 bq24190_set_config(bdi); in bq24190_pm_resume()
1938 bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg); in bq24190_pm_resume()
1941 pm_runtime_mark_last_busy(bdi->dev); in bq24190_pm_resume()
1942 pm_runtime_put_autosuspend(bdi->dev); in bq24190_pm_resume()
1946 power_supply_changed(bdi->charger); in bq24190_pm_resume()
1947 if (bdi->battery) in bq24190_pm_resume()
1948 power_supply_changed(bdi->battery); in bq24190_pm_resume()