• Home
  • Raw
  • Download

Lines Matching refs:bq

280 	int (*bq256xx_get_ichg)(struct bq256xx_device *bq);
281 int (*bq256xx_get_iindpm)(struct bq256xx_device *bq);
282 int (*bq256xx_get_vbatreg)(struct bq256xx_device *bq);
283 int (*bq256xx_get_iterm)(struct bq256xx_device *bq);
284 int (*bq256xx_get_iprechg)(struct bq256xx_device *bq);
285 int (*bq256xx_get_vindpm)(struct bq256xx_device *bq);
287 int (*bq256xx_set_ichg)(struct bq256xx_device *bq, int ichg);
288 int (*bq256xx_set_iindpm)(struct bq256xx_device *bq, int iindpm);
289 int (*bq256xx_set_vbatreg)(struct bq256xx_device *bq, int vbatreg);
290 int (*bq256xx_set_iterm)(struct bq256xx_device *bq, int iterm);
291 int (*bq256xx_set_iprechg)(struct bq256xx_device *bq, int iprechg);
292 int (*bq256xx_set_vindpm)(struct bq256xx_device *bq, int vindpm);
360 struct bq256xx_device *bq = in bq256xx_usb_notifier() local
363 bq->usb_event = val; in bq256xx_usb_notifier()
364 queue_work(system_power_efficient_wq, &bq->usb_work); in bq256xx_usb_notifier()
371 struct bq256xx_device *bq = in bq256xx_usb_work() local
374 switch (bq->usb_event) { in bq256xx_usb_work()
378 power_supply_changed(bq->charger); in bq256xx_usb_work()
381 dev_err(bq->dev, "Error switching to charger mode.\n"); in bq256xx_usb_work()
423 static int bq256xx_get_state(struct bq256xx_device *bq, in bq256xx_get_state() argument
430 ret = regmap_read(bq->regmap, BQ256XX_CHARGER_STATUS_0, in bq256xx_get_state()
435 ret = regmap_read(bq->regmap, BQ256XX_CHARGER_STATUS_1, in bq256xx_get_state()
452 static int bq256xx_get_ichg_curr(struct bq256xx_device *bq) in bq256xx_get_ichg_curr() argument
458 ret = regmap_read(bq->regmap, BQ256XX_CHARGE_CURRENT_LIMIT, in bq256xx_get_ichg_curr()
468 static int bq25618_619_get_ichg_curr(struct bq256xx_device *bq) in bq25618_619_get_ichg_curr() argument
474 ret = regmap_read(bq->regmap, BQ256XX_CHARGE_CURRENT_LIMIT, in bq25618_619_get_ichg_curr()
487 static int bq256xx_set_ichg_curr(struct bq256xx_device *bq, int ichg) in bq256xx_set_ichg_curr() argument
490 int ichg_max = bq->init_data.ichg_max; in bq256xx_set_ichg_curr()
495 return regmap_update_bits(bq->regmap, BQ256XX_CHARGE_CURRENT_LIMIT, in bq256xx_set_ichg_curr()
499 static int bq25618_619_set_ichg_curr(struct bq256xx_device *bq, int ichg) in bq25618_619_set_ichg_curr() argument
503 int ichg_max = bq->init_data.ichg_max; in bq25618_619_set_ichg_curr()
514 return regmap_update_bits(bq->regmap, BQ256XX_CHARGE_CURRENT_LIMIT, in bq25618_619_set_ichg_curr()
518 static int bq25618_619_get_chrg_volt(struct bq256xx_device *bq) in bq25618_619_get_chrg_volt() argument
524 ret = regmap_read(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25618_619_get_chrg_volt()
541 static int bq25611d_get_chrg_volt(struct bq256xx_device *bq) in bq25611d_get_chrg_volt() argument
547 ret = regmap_read(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25611d_get_chrg_volt()
563 static int bq2560x_get_chrg_volt(struct bq256xx_device *bq) in bq2560x_get_chrg_volt() argument
569 ret = regmap_read(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq2560x_get_chrg_volt()
581 static int bq25601d_get_chrg_volt(struct bq256xx_device *bq) in bq25601d_get_chrg_volt() argument
587 ret = regmap_read(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25601d_get_chrg_volt()
599 static int bq25618_619_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) in bq25618_619_set_chrg_volt() argument
603 int vbatreg_max = bq->init_data.vbatreg_max; in bq25618_619_set_chrg_volt()
616 return regmap_update_bits(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25618_619_set_chrg_volt()
621 static int bq25611d_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) in bq25611d_set_chrg_volt() argument
625 int vbatreg_max = bq->init_data.vbatreg_max; in bq25611d_set_chrg_volt()
638 return regmap_update_bits(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25611d_set_chrg_volt()
643 static int bq2560x_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) in bq2560x_set_chrg_volt() argument
646 int vbatreg_max = bq->init_data.vbatreg_max; in bq2560x_set_chrg_volt()
653 return regmap_update_bits(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq2560x_set_chrg_volt()
658 static int bq25601d_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) in bq25601d_set_chrg_volt() argument
661 int vbatreg_max = bq->init_data.vbatreg_max; in bq25601d_set_chrg_volt()
668 return regmap_update_bits(bq->regmap, BQ256XX_BATTERY_VOLTAGE_LIMIT, in bq25601d_set_chrg_volt()
673 static int bq256xx_get_prechrg_curr(struct bq256xx_device *bq) in bq256xx_get_prechrg_curr() argument
679 ret = regmap_read(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq256xx_get_prechrg_curr()
691 static int bq256xx_set_prechrg_curr(struct bq256xx_device *bq, int iprechg) in bq256xx_set_prechrg_curr() argument
701 return regmap_update_bits(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq256xx_set_prechrg_curr()
705 static int bq25618_619_get_prechrg_curr(struct bq256xx_device *bq) in bq25618_619_get_prechrg_curr() argument
711 ret = regmap_read(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq25618_619_get_prechrg_curr()
723 static int bq25618_619_set_prechrg_curr(struct bq256xx_device *bq, int iprechg) in bq25618_619_set_prechrg_curr() argument
733 return regmap_update_bits(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq25618_619_set_prechrg_curr()
737 static int bq256xx_get_term_curr(struct bq256xx_device *bq) in bq256xx_get_term_curr() argument
743 ret = regmap_read(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq256xx_get_term_curr()
754 static int bq256xx_set_term_curr(struct bq256xx_device *bq, int iterm) in bq256xx_set_term_curr() argument
763 return regmap_update_bits(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq256xx_set_term_curr()
767 static int bq25618_619_get_term_curr(struct bq256xx_device *bq) in bq25618_619_get_term_curr() argument
773 ret = regmap_read(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq25618_619_get_term_curr()
784 static int bq25618_619_set_term_curr(struct bq256xx_device *bq, int iterm) in bq25618_619_set_term_curr() argument
793 return regmap_update_bits(bq->regmap, BQ256XX_PRECHG_AND_TERM_CURR_LIM, in bq25618_619_set_term_curr()
797 static int bq256xx_get_input_volt_lim(struct bq256xx_device *bq) in bq256xx_get_input_volt_lim() argument
803 ret = regmap_read(bq->regmap, BQ256XX_CHARGER_CONTROL_2, in bq256xx_get_input_volt_lim()
814 static int bq256xx_set_input_volt_lim(struct bq256xx_device *bq, int vindpm) in bq256xx_set_input_volt_lim() argument
823 return regmap_update_bits(bq->regmap, BQ256XX_CHARGER_CONTROL_2, in bq256xx_set_input_volt_lim()
827 static int bq256xx_get_input_curr_lim(struct bq256xx_device *bq) in bq256xx_get_input_curr_lim() argument
833 ret = regmap_read(bq->regmap, BQ256XX_INPUT_CURRENT_LIMIT, in bq256xx_get_input_curr_lim()
844 static int bq256xx_set_input_curr_lim(struct bq256xx_device *bq, int iindpm) in bq256xx_set_input_curr_lim() argument
853 return regmap_update_bits(bq->regmap, BQ256XX_INPUT_CURRENT_LIMIT, in bq256xx_set_input_curr_lim()
859 struct bq256xx_device *bq = data; in bq256xx_charger_reset() local
861 regmap_update_bits(bq->regmap, BQ256XX_PART_INFORMATION, in bq256xx_charger_reset()
864 if (!IS_ERR_OR_NULL(bq->usb2_phy)) in bq256xx_charger_reset()
865 usb_unregister_notifier(bq->usb2_phy, &bq->usb_nb); in bq256xx_charger_reset()
867 if (!IS_ERR_OR_NULL(bq->usb3_phy)) in bq256xx_charger_reset()
868 usb_unregister_notifier(bq->usb3_phy, &bq->usb_nb); in bq256xx_charger_reset()
875 struct bq256xx_device *bq = power_supply_get_drvdata(psy); in bq256xx_set_charger_property() local
880 ret = bq->chip_info->bq256xx_set_iindpm(bq, val->intval); in bq256xx_set_charger_property()
889 ret = bq->chip_info->bq256xx_set_vbatreg(bq, val->intval); in bq256xx_set_charger_property()
895 ret = bq->chip_info->bq256xx_set_ichg(bq, val->intval); in bq256xx_set_charger_property()
901 ret = bq->chip_info->bq256xx_set_iprechg(bq, val->intval); in bq256xx_set_charger_property()
907 ret = bq->chip_info->bq256xx_set_iterm(bq, val->intval); in bq256xx_set_charger_property()
913 ret = bq->chip_info->bq256xx_set_vindpm(bq, val->intval); in bq256xx_set_charger_property()
930 struct bq256xx_device *bq = power_supply_get_drvdata(psy); in bq256xx_get_battery_property() local
934 val->intval = bq->init_data.ichg_max; in bq256xx_get_battery_property()
938 val->intval = bq->init_data.vbatreg_max; in bq256xx_get_battery_property()
952 struct bq256xx_device *bq = power_supply_get_drvdata(psy); in bq256xx_get_charger_property() local
956 mutex_lock(&bq->lock); in bq256xx_get_charger_property()
957 ret = bq256xx_get_state(bq, &state); in bq256xx_get_charger_property()
958 mutex_unlock(&bq->lock); in bq256xx_get_charger_property()
1020 if (bq->chip_info->has_usb_detect) { in bq256xx_get_charger_property()
1077 val->strval = bq->model_name; in bq256xx_get_charger_property()
1085 ret = bq->chip_info->bq256xx_get_vindpm(bq); in bq256xx_get_charger_property()
1092 ret = bq->chip_info->bq256xx_get_iindpm(bq); in bq256xx_get_charger_property()
1099 ret = bq->chip_info->bq256xx_get_vbatreg(bq); in bq256xx_get_charger_property()
1106 ret = bq->chip_info->bq256xx_get_ichg(bq); in bq256xx_get_charger_property()
1113 ret = bq->chip_info->bq256xx_get_iprechg(bq); in bq256xx_get_charger_property()
1120 ret = bq->chip_info->bq256xx_get_iterm(bq); in bq256xx_get_charger_property()
1133 static bool bq256xx_state_changed(struct bq256xx_device *bq, in bq256xx_state_changed() argument
1138 mutex_lock(&bq->lock); in bq256xx_state_changed()
1139 old_state = bq->state; in bq256xx_state_changed()
1140 mutex_unlock(&bq->lock); in bq256xx_state_changed()
1147 struct bq256xx_device *bq = private; in bq256xx_irq_handler_thread() local
1151 ret = bq256xx_get_state(bq, &state); in bq256xx_irq_handler_thread()
1155 if (!bq256xx_state_changed(bq, &state)) in bq256xx_irq_handler_thread()
1158 mutex_lock(&bq->lock); in bq256xx_irq_handler_thread()
1159 bq->state = state; in bq256xx_irq_handler_thread()
1160 mutex_unlock(&bq->lock); in bq256xx_irq_handler_thread()
1162 power_supply_changed(bq->charger); in bq256xx_irq_handler_thread()
1484 static int bq256xx_power_supply_init(struct bq256xx_device *bq, in bq256xx_power_supply_init() argument
1487 bq->charger = devm_power_supply_register(bq->dev, in bq256xx_power_supply_init()
1490 if (IS_ERR(bq->charger)) { in bq256xx_power_supply_init()
1492 return PTR_ERR(bq->charger); in bq256xx_power_supply_init()
1495 bq->battery = devm_power_supply_register(bq->dev, in bq256xx_power_supply_init()
1498 if (IS_ERR(bq->battery)) { in bq256xx_power_supply_init()
1500 return PTR_ERR(bq->battery); in bq256xx_power_supply_init()
1505 static int bq256xx_hw_init(struct bq256xx_device *bq) in bq256xx_hw_init() argument
1513 if (bq->watchdog_timer == bq256xx_watchdog_time[i]) { in bq256xx_hw_init()
1518 bq->watchdog_timer > bq256xx_watchdog_time[i] && in bq256xx_hw_init()
1519 bq->watchdog_timer < bq256xx_watchdog_time[i + 1]) in bq256xx_hw_init()
1522 ret = regmap_update_bits(bq->regmap, BQ256XX_CHARGER_CONTROL_1, in bq256xx_hw_init()
1528 ret = power_supply_get_battery_info(bq->charger, &bat_info); in bq256xx_hw_init()
1530 dev_warn(bq->dev, "battery info missing, default values will be applied\n"); in bq256xx_hw_init()
1533 bq->chip_info->bq256xx_def_ichg; in bq256xx_hw_init()
1536 bq->chip_info->bq256xx_def_vbatreg; in bq256xx_hw_init()
1539 bq->chip_info->bq256xx_def_iprechg; in bq256xx_hw_init()
1542 bq->chip_info->bq256xx_def_iterm; in bq256xx_hw_init()
1544 bq->init_data.ichg_max = in bq256xx_hw_init()
1545 bq->chip_info->bq256xx_max_ichg; in bq256xx_hw_init()
1547 bq->init_data.vbatreg_max = in bq256xx_hw_init()
1548 bq->chip_info->bq256xx_max_vbatreg; in bq256xx_hw_init()
1550 bq->init_data.ichg_max = in bq256xx_hw_init()
1553 bq->init_data.vbatreg_max = in bq256xx_hw_init()
1557 ret = bq->chip_info->bq256xx_set_vindpm(bq, bq->init_data.vindpm); in bq256xx_hw_init()
1561 ret = bq->chip_info->bq256xx_set_iindpm(bq, bq->init_data.iindpm); in bq256xx_hw_init()
1565 ret = bq->chip_info->bq256xx_set_ichg(bq, in bq256xx_hw_init()
1570 ret = bq->chip_info->bq256xx_set_iprechg(bq, in bq256xx_hw_init()
1575 ret = bq->chip_info->bq256xx_set_vbatreg(bq, in bq256xx_hw_init()
1580 ret = bq->chip_info->bq256xx_set_iterm(bq, in bq256xx_hw_init()
1585 power_supply_put_battery_info(bq->charger, &bat_info); in bq256xx_hw_init()
1590 static int bq256xx_parse_dt(struct bq256xx_device *bq, in bq256xx_parse_dt() argument
1595 psy_cfg->drv_data = bq; in bq256xx_parse_dt()
1598 ret = device_property_read_u32(bq->dev, "ti,watchdog-timeout-ms", in bq256xx_parse_dt()
1599 &bq->watchdog_timer); in bq256xx_parse_dt()
1601 bq->watchdog_timer = BQ256XX_WATCHDOG_DIS; in bq256xx_parse_dt()
1603 if (bq->watchdog_timer > BQ256XX_WATCHDOG_MAX || in bq256xx_parse_dt()
1604 bq->watchdog_timer < BQ256XX_WATCHDOG_DIS) in bq256xx_parse_dt()
1607 ret = device_property_read_u32(bq->dev, in bq256xx_parse_dt()
1609 &bq->init_data.vindpm); in bq256xx_parse_dt()
1611 bq->init_data.vindpm = bq->chip_info->bq256xx_def_vindpm; in bq256xx_parse_dt()
1613 ret = device_property_read_u32(bq->dev, in bq256xx_parse_dt()
1615 &bq->init_data.iindpm); in bq256xx_parse_dt()
1617 bq->init_data.iindpm = bq->chip_info->bq256xx_def_iindpm; in bq256xx_parse_dt()
1626 struct bq256xx_device *bq; in bq256xx_probe() local
1631 bq = devm_kzalloc(dev, sizeof(*bq), GFP_KERNEL); in bq256xx_probe()
1632 if (!bq) in bq256xx_probe()
1635 bq->client = client; in bq256xx_probe()
1636 bq->dev = dev; in bq256xx_probe()
1637 bq->chip_info = &bq256xx_chip_info_tbl[id->driver_data]; in bq256xx_probe()
1639 mutex_init(&bq->lock); in bq256xx_probe()
1641 strncpy(bq->model_name, id->name, I2C_NAME_SIZE); in bq256xx_probe()
1643 bq->regmap = devm_regmap_init_i2c(client, in bq256xx_probe()
1644 bq->chip_info->bq256xx_regmap_config); in bq256xx_probe()
1646 if (IS_ERR(bq->regmap)) { in bq256xx_probe()
1648 return PTR_ERR(bq->regmap); in bq256xx_probe()
1651 i2c_set_clientdata(client, bq); in bq256xx_probe()
1653 ret = bq256xx_parse_dt(bq, &psy_cfg, dev); in bq256xx_probe()
1659 ret = devm_add_action_or_reset(dev, bq256xx_charger_reset, bq); in bq256xx_probe()
1664 bq->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); in bq256xx_probe()
1665 if (!IS_ERR_OR_NULL(bq->usb2_phy)) { in bq256xx_probe()
1666 INIT_WORK(&bq->usb_work, bq256xx_usb_work); in bq256xx_probe()
1667 bq->usb_nb.notifier_call = bq256xx_usb_notifier; in bq256xx_probe()
1668 usb_register_notifier(bq->usb2_phy, &bq->usb_nb); in bq256xx_probe()
1671 bq->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3); in bq256xx_probe()
1672 if (!IS_ERR_OR_NULL(bq->usb3_phy)) { in bq256xx_probe()
1673 INIT_WORK(&bq->usb_work, bq256xx_usb_work); in bq256xx_probe()
1674 bq->usb_nb.notifier_call = bq256xx_usb_notifier; in bq256xx_probe()
1675 usb_register_notifier(bq->usb3_phy, &bq->usb_nb); in bq256xx_probe()
1683 dev_name(&client->dev), bq); in bq256xx_probe()
1690 ret = bq256xx_power_supply_init(bq, &psy_cfg, dev); in bq256xx_probe()
1696 ret = bq256xx_hw_init(bq); in bq256xx_probe()