Lines Matching refs:chip

99 static int max17042_get_temperature(struct max17042_chip *chip, int *temp)  in max17042_get_temperature()  argument
103 struct regmap *map = chip->regmap; in max17042_get_temperature()
122 static int max17042_get_battery_health(struct max17042_chip *chip, int *health) in max17042_get_battery_health() argument
127 ret = regmap_read(chip->regmap, MAX17042_AvgVCELL, &val); in max17042_get_battery_health()
136 ret = regmap_read(chip->regmap, MAX17042_VCELL, &val); in max17042_get_battery_health()
145 if (vavg < chip->pdata->vmin) { in max17042_get_battery_health()
150 if (vbatt > chip->pdata->vmax + MAX17042_VMAX_TOLERANCE) { in max17042_get_battery_health()
155 ret = max17042_get_temperature(chip, &temp); in max17042_get_battery_health()
159 if (temp <= chip->pdata->temp_min) { in max17042_get_battery_health()
164 if (temp >= chip->pdata->temp_max) { in max17042_get_battery_health()
182 struct max17042_chip *chip = power_supply_get_drvdata(psy); in max17042_get_property() local
183 struct regmap *map = chip->regmap; in max17042_get_property()
187 if (!chip->init_complete) in max17042_get_property()
217 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_get_property()
270 ret = max17042_get_temperature(chip, &val->intval); in max17042_get_property()
289 val->intval = chip->pdata->temp_min; in max17042_get_property()
292 val->intval = chip->pdata->temp_max; in max17042_get_property()
295 ret = max17042_get_battery_health(chip, &val->intval); in max17042_get_property()
300 if (chip->pdata->enable_current_sense) { in max17042_get_property()
312 val->intval *= 1562500 / chip->pdata->r_sns; in max17042_get_property()
318 if (chip->pdata->enable_current_sense) { in max17042_get_property()
330 val->intval *= 1562500 / chip->pdata->r_sns; in max17042_get_property()
345 struct max17042_chip *chip = power_supply_get_drvdata(psy); in max17042_set_property() local
346 struct regmap *map = chip->regmap; in max17042_set_property()
432 static inline void max10742_unlock_model(struct max17042_chip *chip) in max10742_unlock_model() argument
434 struct regmap *map = chip->regmap; in max10742_unlock_model()
440 static inline void max10742_lock_model(struct max17042_chip *chip) in max10742_lock_model() argument
442 struct regmap *map = chip->regmap; in max10742_lock_model()
448 static inline void max17042_write_model_data(struct max17042_chip *chip, in max17042_write_model_data() argument
451 struct regmap *map = chip->regmap; in max17042_write_model_data()
456 chip->pdata->config_data->cell_char_tbl[i]); in max17042_write_model_data()
459 static inline void max17042_read_model_data(struct max17042_chip *chip, in max17042_read_model_data() argument
462 struct regmap *map = chip->regmap; in max17042_read_model_data()
469 static inline int max17042_model_data_compare(struct max17042_chip *chip, in max17042_model_data_compare() argument
475 dev_err(&chip->client->dev, "%s compare failed\n", __func__); in max17042_model_data_compare()
477 dev_info(&chip->client->dev, "0x%x, 0x%x", in max17042_model_data_compare()
479 dev_info(&chip->client->dev, "\n"); in max17042_model_data_compare()
485 static int max17042_init_model(struct max17042_chip *chip) in max17042_init_model() argument
488 int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl); in max17042_init_model()
495 max10742_unlock_model(chip); in max17042_init_model()
496 max17042_write_model_data(chip, MAX17042_MODELChrTbl, in max17042_init_model()
498 max17042_read_model_data(chip, MAX17042_MODELChrTbl, temp_data, in max17042_init_model()
502 chip, in max17042_init_model()
503 chip->pdata->config_data->cell_char_tbl, in max17042_init_model()
507 max10742_lock_model(chip); in max17042_init_model()
513 static int max17042_verify_model_lock(struct max17042_chip *chip) in max17042_verify_model_lock() argument
516 int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl); in max17042_verify_model_lock()
524 max17042_read_model_data(chip, MAX17042_MODELChrTbl, temp_data, in max17042_verify_model_lock()
534 static void max17042_write_config_regs(struct max17042_chip *chip) in max17042_write_config_regs() argument
536 struct max17042_config_data *config = chip->pdata->config_data; in max17042_write_config_regs()
537 struct regmap *map = chip->regmap; in max17042_write_config_regs()
544 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17047 || in max17042_write_config_regs()
545 chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050) in max17042_write_config_regs()
550 static void max17042_write_custom_regs(struct max17042_chip *chip) in max17042_write_custom_regs() argument
552 struct max17042_config_data *config = chip->pdata->config_data; in max17042_write_custom_regs()
553 struct regmap *map = chip->regmap; in max17042_write_custom_regs()
558 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) { in max17042_write_custom_regs()
574 static void max17042_update_capacity_regs(struct max17042_chip *chip) in max17042_update_capacity_regs() argument
576 struct max17042_config_data *config = chip->pdata->config_data; in max17042_update_capacity_regs()
577 struct regmap *map = chip->regmap; in max17042_update_capacity_regs()
586 static void max17042_reset_vfsoc0_reg(struct max17042_chip *chip) in max17042_reset_vfsoc0_reg() argument
589 struct regmap *map = chip->regmap; in max17042_reset_vfsoc0_reg()
597 static void max17042_load_new_capacity_params(struct max17042_chip *chip) in max17042_load_new_capacity_params() argument
602 struct max17042_config_data *config = chip->pdata->config_data; in max17042_load_new_capacity_params()
603 struct regmap *map = chip->regmap; in max17042_load_new_capacity_params()
638 static inline void max17042_override_por_values(struct max17042_chip *chip) in max17042_override_por_values() argument
640 struct regmap *map = chip->regmap; in max17042_override_por_values()
641 struct max17042_config_data *config = chip->pdata->config_data; in max17042_override_por_values()
667 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_override_por_values()
674 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_override_por_values()
683 if (chip->chip_type) { in max17042_override_por_values()
691 static int max17042_init_chip(struct max17042_chip *chip) in max17042_init_chip() argument
693 struct regmap *map = chip->regmap; in max17042_init_chip()
696 max17042_override_por_values(chip); in max17042_init_chip()
703 max17042_write_config_regs(chip); in max17042_init_chip()
706 ret = max17042_init_model(chip); in max17042_init_chip()
708 dev_err(&chip->client->dev, "%s init failed\n", in max17042_init_chip()
713 ret = max17042_verify_model_lock(chip); in max17042_init_chip()
715 dev_err(&chip->client->dev, "%s lock verify failed\n", in max17042_init_chip()
720 max17042_write_custom_regs(chip); in max17042_init_chip()
723 max17042_update_capacity_regs(chip); in max17042_init_chip()
731 max17042_reset_vfsoc0_reg(chip); in max17042_init_chip()
734 max17042_load_new_capacity_params(chip); in max17042_init_chip()
741 static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off) in max17042_set_soc_threshold() argument
743 struct regmap *map = chip->regmap; in max17042_set_soc_threshold()
758 struct max17042_chip *chip = dev; in max17042_thread_handler() local
761 regmap_read(chip->regmap, MAX17042_STATUS, &val); in max17042_thread_handler()
764 dev_info(&chip->client->dev, "SOC threshold INTR\n"); in max17042_thread_handler()
765 max17042_set_soc_threshold(chip, 1); in max17042_thread_handler()
768 power_supply_changed(chip->battery); in max17042_thread_handler()
774 struct max17042_chip *chip = container_of(work, in max17042_init_worker() local
779 if (chip->pdata->enable_por_init && chip->pdata->config_data) { in max17042_init_worker()
780 ret = max17042_init_chip(chip); in max17042_init_worker()
785 chip->init_complete = 1; in max17042_init_worker()
863 struct max17042_chip *chip; in max17042_probe() local
871 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in max17042_probe()
872 if (!chip) in max17042_probe()
875 chip->client = client; in max17042_probe()
876 chip->regmap = devm_regmap_init_i2c(client, &max17042_regmap_config); in max17042_probe()
877 if (IS_ERR(chip->regmap)) { in max17042_probe()
882 chip->pdata = max17042_get_pdata(&client->dev); in max17042_probe()
883 if (!chip->pdata) { in max17042_probe()
888 i2c_set_clientdata(client, chip); in max17042_probe()
889 chip->chip_type = id->driver_data; in max17042_probe()
890 psy_cfg.drv_data = chip; in max17042_probe()
894 if (!chip->pdata->enable_current_sense) in max17042_probe()
897 if (chip->pdata->r_sns == 0) in max17042_probe()
898 chip->pdata->r_sns = MAX17042_DEFAULT_SNS_RESISTOR; in max17042_probe()
900 if (chip->pdata->init_data) in max17042_probe()
901 for (i = 0; i < chip->pdata->num_init_data; i++) in max17042_probe()
902 regmap_write(chip->regmap, in max17042_probe()
903 chip->pdata->init_data[i].addr, in max17042_probe()
904 chip->pdata->init_data[i].data); in max17042_probe()
906 if (!chip->pdata->enable_current_sense) { in max17042_probe()
907 regmap_write(chip->regmap, MAX17042_CGAIN, 0x0000); in max17042_probe()
908 regmap_write(chip->regmap, MAX17042_MiscCFG, 0x0003); in max17042_probe()
909 regmap_write(chip->regmap, MAX17042_LearnCFG, 0x0007); in max17042_probe()
912 chip->battery = devm_power_supply_register(&client->dev, max17042_desc, in max17042_probe()
914 if (IS_ERR(chip->battery)) { in max17042_probe()
916 return PTR_ERR(chip->battery); in max17042_probe()
925 chip->battery->desc->name, in max17042_probe()
926 chip); in max17042_probe()
928 regmap_update_bits(chip->regmap, MAX17042_CONFIG, in max17042_probe()
931 max17042_set_soc_threshold(chip, 1); in max17042_probe()
939 regmap_read(chip->regmap, MAX17042_STATUS, &val); in max17042_probe()
941 INIT_WORK(&chip->work, max17042_init_worker); in max17042_probe()
942 schedule_work(&chip->work); in max17042_probe()
944 chip->init_complete = 1; in max17042_probe()
953 struct max17042_chip *chip = dev_get_drvdata(dev); in max17042_suspend() local
959 if (chip->client->irq) { in max17042_suspend()
960 disable_irq(chip->client->irq); in max17042_suspend()
961 enable_irq_wake(chip->client->irq); in max17042_suspend()
969 struct max17042_chip *chip = dev_get_drvdata(dev); in max17042_resume() local
971 if (chip->client->irq) { in max17042_resume()
972 disable_irq_wake(chip->client->irq); in max17042_resume()
973 enable_irq(chip->client->irq); in max17042_resume()
975 max17042_set_soc_threshold(chip, 1); in max17042_resume()