Lines Matching refs:chip
96 struct max17042_chip *chip = power_supply_get_drvdata(psy); in max17042_get_property() local
97 struct regmap *map = chip->regmap; in max17042_get_property()
101 if (!chip->init_complete) in max17042_get_property()
131 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_get_property()
199 if (chip->pdata->enable_current_sense) { in max17042_get_property()
211 val->intval *= 1562500 / chip->pdata->r_sns; in max17042_get_property()
217 if (chip->pdata->enable_current_sense) { in max17042_get_property()
229 val->intval *= 1562500 / chip->pdata->r_sns; in max17042_get_property()
268 static inline void max10742_unlock_model(struct max17042_chip *chip) in max10742_unlock_model() argument
270 struct regmap *map = chip->regmap; in max10742_unlock_model()
276 static inline void max10742_lock_model(struct max17042_chip *chip) in max10742_lock_model() argument
278 struct regmap *map = chip->regmap; in max10742_lock_model()
284 static inline void max17042_write_model_data(struct max17042_chip *chip, in max17042_write_model_data() argument
287 struct regmap *map = chip->regmap; in max17042_write_model_data()
292 chip->pdata->config_data->cell_char_tbl[i]); in max17042_write_model_data()
295 static inline void max17042_read_model_data(struct max17042_chip *chip, in max17042_read_model_data() argument
298 struct regmap *map = chip->regmap; in max17042_read_model_data()
305 static inline int max17042_model_data_compare(struct max17042_chip *chip, in max17042_model_data_compare() argument
311 dev_err(&chip->client->dev, "%s compare failed\n", __func__); in max17042_model_data_compare()
313 dev_info(&chip->client->dev, "0x%x, 0x%x", in max17042_model_data_compare()
315 dev_info(&chip->client->dev, "\n"); in max17042_model_data_compare()
321 static int max17042_init_model(struct max17042_chip *chip) in max17042_init_model() argument
324 int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl); in max17042_init_model()
331 max10742_unlock_model(chip); in max17042_init_model()
332 max17042_write_model_data(chip, MAX17042_MODELChrTbl, in max17042_init_model()
334 max17042_read_model_data(chip, MAX17042_MODELChrTbl, temp_data, in max17042_init_model()
338 chip, in max17042_init_model()
339 chip->pdata->config_data->cell_char_tbl, in max17042_init_model()
343 max10742_lock_model(chip); in max17042_init_model()
349 static int max17042_verify_model_lock(struct max17042_chip *chip) in max17042_verify_model_lock() argument
352 int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl); in max17042_verify_model_lock()
360 max17042_read_model_data(chip, MAX17042_MODELChrTbl, temp_data, in max17042_verify_model_lock()
370 static void max17042_write_config_regs(struct max17042_chip *chip) in max17042_write_config_regs() argument
372 struct max17042_config_data *config = chip->pdata->config_data; in max17042_write_config_regs()
373 struct regmap *map = chip->regmap; in max17042_write_config_regs()
380 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17047 || in max17042_write_config_regs()
381 chip->chip_type == MAXIM_DEVICE_TYPE_MAX17050) in max17042_write_config_regs()
386 static void max17042_write_custom_regs(struct max17042_chip *chip) in max17042_write_custom_regs() argument
388 struct max17042_config_data *config = chip->pdata->config_data; in max17042_write_custom_regs()
389 struct regmap *map = chip->regmap; in max17042_write_custom_regs()
394 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) { in max17042_write_custom_regs()
410 static void max17042_update_capacity_regs(struct max17042_chip *chip) in max17042_update_capacity_regs() argument
412 struct max17042_config_data *config = chip->pdata->config_data; in max17042_update_capacity_regs()
413 struct regmap *map = chip->regmap; in max17042_update_capacity_regs()
422 static void max17042_reset_vfsoc0_reg(struct max17042_chip *chip) in max17042_reset_vfsoc0_reg() argument
425 struct regmap *map = chip->regmap; in max17042_reset_vfsoc0_reg()
433 static void max17042_load_new_capacity_params(struct max17042_chip *chip) in max17042_load_new_capacity_params() argument
438 struct max17042_config_data *config = chip->pdata->config_data; in max17042_load_new_capacity_params()
439 struct regmap *map = chip->regmap; in max17042_load_new_capacity_params()
474 static inline void max17042_override_por_values(struct max17042_chip *chip) in max17042_override_por_values() argument
476 struct regmap *map = chip->regmap; in max17042_override_por_values()
477 struct max17042_config_data *config = chip->pdata->config_data; in max17042_override_por_values()
503 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_override_por_values()
510 if (chip->chip_type == MAXIM_DEVICE_TYPE_MAX17042) in max17042_override_por_values()
519 if (chip->chip_type) { in max17042_override_por_values()
527 static int max17042_init_chip(struct max17042_chip *chip) in max17042_init_chip() argument
529 struct regmap *map = chip->regmap; in max17042_init_chip()
532 max17042_override_por_values(chip); in max17042_init_chip()
539 max17042_write_config_regs(chip); in max17042_init_chip()
542 ret = max17042_init_model(chip); in max17042_init_chip()
544 dev_err(&chip->client->dev, "%s init failed\n", in max17042_init_chip()
549 ret = max17042_verify_model_lock(chip); in max17042_init_chip()
551 dev_err(&chip->client->dev, "%s lock verify failed\n", in max17042_init_chip()
556 max17042_write_custom_regs(chip); in max17042_init_chip()
559 max17042_update_capacity_regs(chip); in max17042_init_chip()
567 max17042_reset_vfsoc0_reg(chip); in max17042_init_chip()
570 max17042_load_new_capacity_params(chip); in max17042_init_chip()
577 static void max17042_set_soc_threshold(struct max17042_chip *chip, u16 off) in max17042_set_soc_threshold() argument
579 struct regmap *map = chip->regmap; in max17042_set_soc_threshold()
594 struct max17042_chip *chip = dev; in max17042_thread_handler() local
597 regmap_read(chip->regmap, MAX17042_STATUS, &val); in max17042_thread_handler()
600 dev_info(&chip->client->dev, "SOC threshold INTR\n"); in max17042_thread_handler()
601 max17042_set_soc_threshold(chip, 1); in max17042_thread_handler()
604 power_supply_changed(chip->battery); in max17042_thread_handler()
610 struct max17042_chip *chip = container_of(work, in max17042_init_worker() local
615 if (chip->pdata->enable_por_init && chip->pdata->config_data) { in max17042_init_worker()
616 ret = max17042_init_chip(chip); in max17042_init_worker()
621 chip->init_complete = 1; in max17042_init_worker()
686 struct max17042_chip *chip; in max17042_probe() local
694 chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL); in max17042_probe()
695 if (!chip) in max17042_probe()
698 chip->client = client; in max17042_probe()
699 chip->regmap = devm_regmap_init_i2c(client, &max17042_regmap_config); in max17042_probe()
700 if (IS_ERR(chip->regmap)) { in max17042_probe()
705 chip->pdata = max17042_get_pdata(&client->dev); in max17042_probe()
706 if (!chip->pdata) { in max17042_probe()
711 i2c_set_clientdata(client, chip); in max17042_probe()
712 chip->chip_type = id->driver_data; in max17042_probe()
713 psy_cfg.drv_data = chip; in max17042_probe()
717 if (!chip->pdata->enable_current_sense) in max17042_probe()
720 if (chip->pdata->r_sns == 0) in max17042_probe()
721 chip->pdata->r_sns = MAX17042_DEFAULT_SNS_RESISTOR; in max17042_probe()
723 if (chip->pdata->init_data) in max17042_probe()
724 for (i = 0; i < chip->pdata->num_init_data; i++) in max17042_probe()
725 regmap_write(chip->regmap, in max17042_probe()
726 chip->pdata->init_data[i].addr, in max17042_probe()
727 chip->pdata->init_data[i].data); in max17042_probe()
729 if (!chip->pdata->enable_current_sense) { in max17042_probe()
730 regmap_write(chip->regmap, MAX17042_CGAIN, 0x0000); in max17042_probe()
731 regmap_write(chip->regmap, MAX17042_MiscCFG, 0x0003); in max17042_probe()
732 regmap_write(chip->regmap, MAX17042_LearnCFG, 0x0007); in max17042_probe()
735 chip->battery = power_supply_register(&client->dev, max17042_desc, in max17042_probe()
737 if (IS_ERR(chip->battery)) { in max17042_probe()
739 return PTR_ERR(chip->battery); in max17042_probe()
746 chip->battery->desc->name, chip); in max17042_probe()
748 regmap_update_bits(chip->regmap, MAX17042_CONFIG, in max17042_probe()
751 max17042_set_soc_threshold(chip, 1); in max17042_probe()
759 regmap_read(chip->regmap, MAX17042_STATUS, &val); in max17042_probe()
761 INIT_WORK(&chip->work, max17042_init_worker); in max17042_probe()
762 schedule_work(&chip->work); in max17042_probe()
764 chip->init_complete = 1; in max17042_probe()
772 struct max17042_chip *chip = i2c_get_clientdata(client); in max17042_remove() local
775 free_irq(client->irq, chip); in max17042_remove()
776 power_supply_unregister(chip->battery); in max17042_remove()
783 struct max17042_chip *chip = dev_get_drvdata(dev); in max17042_suspend() local
789 if (chip->client->irq) { in max17042_suspend()
790 disable_irq(chip->client->irq); in max17042_suspend()
791 enable_irq_wake(chip->client->irq); in max17042_suspend()
799 struct max17042_chip *chip = dev_get_drvdata(dev); in max17042_resume() local
801 if (chip->client->irq) { in max17042_resume()
802 disable_irq_wake(chip->client->irq); in max17042_resume()
803 enable_irq(chip->client->irq); in max17042_resume()
805 max17042_set_soc_threshold(chip, 1); in max17042_resume()