Lines Matching refs:info
160 static int fuel_gauge_reg_readb(struct axp288_fg_info *info, int reg) in fuel_gauge_reg_readb() argument
166 ret = regmap_read(info->regmap, reg, &val); in fuel_gauge_reg_readb()
174 dev_err(&info->pdev->dev, "axp288 reg read err:%d\n", ret); in fuel_gauge_reg_readb()
179 static int fuel_gauge_reg_writeb(struct axp288_fg_info *info, int reg, u8 val) in fuel_gauge_reg_writeb() argument
183 ret = regmap_write(info->regmap, reg, (unsigned int)val); in fuel_gauge_reg_writeb()
186 dev_err(&info->pdev->dev, "axp288 reg write err:%d\n", ret); in fuel_gauge_reg_writeb()
192 struct axp288_fg_info *info) in pmic_read_adc_val() argument
204 dev_err(&info->pdev->dev, in pmic_read_adc_val()
209 dev_dbg(&info->pdev->dev, "adc raw val=%x\n", val); in pmic_read_adc_val()
221 struct axp288_fg_info *info = s->private; in fuel_gauge_debug_show() local
226 fuel_gauge_reg_readb(info, AXP20X_PWR_INPUT_STATUS)); in fuel_gauge_debug_show()
229 fuel_gauge_reg_readb(info, AXP20X_PWR_OP_MODE)); in fuel_gauge_debug_show()
232 fuel_gauge_reg_readb(info, AXP20X_CHRG_CTRL1)); in fuel_gauge_debug_show()
235 fuel_gauge_reg_readb(info, AXP20X_V_LTF_DISCHRG)); in fuel_gauge_debug_show()
238 fuel_gauge_reg_readb(info, AXP20X_V_HTF_DISCHRG)); in fuel_gauge_debug_show()
241 fuel_gauge_reg_readb(info, AXP20X_CC_CTRL)); in fuel_gauge_debug_show()
244 fuel_gauge_reg_readb(info, AXP20X_FG_RES)); in fuel_gauge_debug_show()
247 fuel_gauge_reg_readb(info, AXP288_FG_RDC1_REG)); in fuel_gauge_debug_show()
250 fuel_gauge_reg_readb(info, AXP288_FG_RDC0_REG)); in fuel_gauge_debug_show()
253 fuel_gauge_reg_readb(info, AXP288_FG_OCVH_REG)); in fuel_gauge_debug_show()
256 fuel_gauge_reg_readb(info, AXP288_FG_OCVL_REG)); in fuel_gauge_debug_show()
259 fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP1_REG)); in fuel_gauge_debug_show()
262 fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP0_REG)); in fuel_gauge_debug_show()
265 fuel_gauge_reg_readb(info, AXP288_FG_CC_MTR1_REG)); in fuel_gauge_debug_show()
268 fuel_gauge_reg_readb(info, AXP288_FG_CC_MTR0_REG)); in fuel_gauge_debug_show()
271 fuel_gauge_reg_readb(info, AXP288_FG_OCV_CAP_REG)); in fuel_gauge_debug_show()
274 fuel_gauge_reg_readb(info, AXP288_FG_CC_CAP_REG)); in fuel_gauge_debug_show()
277 fuel_gauge_reg_readb(info, AXP288_FG_LOW_CAP_REG)); in fuel_gauge_debug_show()
280 fuel_gauge_reg_readb(info, AXP288_FG_TUNE0)); in fuel_gauge_debug_show()
283 fuel_gauge_reg_readb(info, AXP288_FG_TUNE1)); in fuel_gauge_debug_show()
286 fuel_gauge_reg_readb(info, AXP288_FG_TUNE2)); in fuel_gauge_debug_show()
289 fuel_gauge_reg_readb(info, AXP288_FG_TUNE3)); in fuel_gauge_debug_show()
292 fuel_gauge_reg_readb(info, AXP288_FG_TUNE4)); in fuel_gauge_debug_show()
295 fuel_gauge_reg_readb(info, AXP288_FG_TUNE5)); in fuel_gauge_debug_show()
297 ret = pmic_read_adc_val("axp288-batt-temp", &raw_val, info); in fuel_gauge_debug_show()
300 ret = pmic_read_adc_val("axp288-pmic-temp", &raw_val, info); in fuel_gauge_debug_show()
303 ret = pmic_read_adc_val("axp288-system-temp", &raw_val, info); in fuel_gauge_debug_show()
306 ret = pmic_read_adc_val("axp288-chrg-curr", &raw_val, info); in fuel_gauge_debug_show()
309 ret = pmic_read_adc_val("axp288-chrg-d-curr", &raw_val, info); in fuel_gauge_debug_show()
312 ret = pmic_read_adc_val("axp288-batt-volt", &raw_val, info); in fuel_gauge_debug_show()
331 static void fuel_gauge_create_debugfs(struct axp288_fg_info *info) in fuel_gauge_create_debugfs() argument
333 info->debug_file = debugfs_create_file("fuelgauge", 0666, NULL, in fuel_gauge_create_debugfs()
334 info, &fg_debug_fops); in fuel_gauge_create_debugfs()
337 static void fuel_gauge_remove_debugfs(struct axp288_fg_info *info) in fuel_gauge_remove_debugfs() argument
339 debugfs_remove(info->debug_file); in fuel_gauge_remove_debugfs()
342 static inline void fuel_gauge_create_debugfs(struct axp288_fg_info *info) in fuel_gauge_create_debugfs() argument
345 static inline void fuel_gauge_remove_debugfs(struct axp288_fg_info *info) in fuel_gauge_remove_debugfs() argument
350 static void fuel_gauge_get_status(struct axp288_fg_info *info) in fuel_gauge_get_status() argument
355 pwr_stat = fuel_gauge_reg_readb(info, AXP20X_PWR_INPUT_STATUS); in fuel_gauge_get_status()
357 dev_err(&info->pdev->dev, in fuel_gauge_get_status()
361 ret = pmic_read_adc_val("axp288-chrg-curr", &charge, info); in fuel_gauge_get_status()
363 dev_err(&info->pdev->dev, in fuel_gauge_get_status()
367 ret = pmic_read_adc_val("axp288-chrg-d-curr", &discharge, info); in fuel_gauge_get_status()
369 dev_err(&info->pdev->dev, in fuel_gauge_get_status()
375 info->status = POWER_SUPPLY_STATUS_CHARGING; in fuel_gauge_get_status()
377 info->status = POWER_SUPPLY_STATUS_DISCHARGING; in fuel_gauge_get_status()
380 info->status = POWER_SUPPLY_STATUS_FULL; in fuel_gauge_get_status()
382 info->status = POWER_SUPPLY_STATUS_NOT_CHARGING; in fuel_gauge_get_status()
386 static int fuel_gauge_get_vbatt(struct axp288_fg_info *info, int *vbatt) in fuel_gauge_get_vbatt() argument
390 ret = pmic_read_adc_val("axp288-batt-volt", &raw_val, info); in fuel_gauge_get_vbatt()
399 static int fuel_gauge_get_current(struct axp288_fg_info *info, int *cur) in fuel_gauge_get_current() argument
404 ret = pmic_read_adc_val("axp288-chrg-curr", &charge, info); in fuel_gauge_get_current()
407 ret = pmic_read_adc_val("axp288-chrg-d-curr", &discharge, info); in fuel_gauge_get_current()
421 static int temp_to_adc(struct axp288_fg_info *info, int tval) in temp_to_adc() argument
425 int tcsz = info->pdata->tcsz; in temp_to_adc()
428 if (tval > info->pdata->thermistor_curve[0][1]) { in temp_to_adc()
429 rntc = info->pdata->thermistor_curve[0][0]; in temp_to_adc()
430 } else if (tval <= info->pdata->thermistor_curve[tcsz-1][1]) { in temp_to_adc()
431 rntc = info->pdata->thermistor_curve[tcsz-1][0]; in temp_to_adc()
434 if (tval > info->pdata->thermistor_curve[i][1]) { in temp_to_adc()
435 rmin = info->pdata->thermistor_curve[i-1][0]; in temp_to_adc()
436 rmax = info->pdata->thermistor_curve[i][0]; in temp_to_adc()
437 tmin = info->pdata->thermistor_curve[i-1][1]; in temp_to_adc()
438 tmax = info->pdata->thermistor_curve[i][1]; in temp_to_adc()
447 ret = fuel_gauge_reg_readb(info, AXP20X_ADC_RATE); in temp_to_adc()
449 dev_err(&info->pdev->dev, "%s:read err:%d\n", __func__, ret); in temp_to_adc()
463 static int adc_to_temp(struct axp288_fg_info *info, int adc_val) in adc_to_temp() argument
467 int tcsz = info->pdata->tcsz; in adc_to_temp()
469 ret = fuel_gauge_reg_readb(info, AXP20X_ADC_RATE); in adc_to_temp()
471 dev_err(&info->pdev->dev, "%s:read err:%d\n", __func__, ret); in adc_to_temp()
482 if (r < info->pdata->thermistor_curve[0][0]) { in adc_to_temp()
483 tval = info->pdata->thermistor_curve[0][1]; in adc_to_temp()
484 } else if (r >= info->pdata->thermistor_curve[tcsz-1][0]) { in adc_to_temp()
485 tval = info->pdata->thermistor_curve[tcsz-1][1]; in adc_to_temp()
488 if (r < info->pdata->thermistor_curve[i][0]) { in adc_to_temp()
489 rmin = info->pdata->thermistor_curve[i-1][0]; in adc_to_temp()
490 rmax = info->pdata->thermistor_curve[i][0]; in adc_to_temp()
491 tmin = info->pdata->thermistor_curve[i-1][1]; in adc_to_temp()
492 tmax = info->pdata->thermistor_curve[i][1]; in adc_to_temp()
503 static int fuel_gauge_get_btemp(struct axp288_fg_info *info, int *btemp) in fuel_gauge_get_btemp() argument
507 ret = pmic_read_adc_val("axp288-batt-temp", &raw_val, info); in fuel_gauge_get_btemp()
511 *btemp = adc_to_temp(info, raw_val); in fuel_gauge_get_btemp()
517 static int fuel_gauge_get_vocv(struct axp288_fg_info *info, int *vocv) in fuel_gauge_get_vocv() argument
522 ret = fuel_gauge_reg_readb(info, AXP288_FG_OCVH_REG); in fuel_gauge_get_vocv()
527 ret = fuel_gauge_reg_readb(info, AXP288_FG_OCVL_REG); in fuel_gauge_get_vocv()
537 static int fuel_gauge_battery_health(struct axp288_fg_info *info) in fuel_gauge_battery_health() argument
542 ret = fuel_gauge_get_btemp(info, &temp); in fuel_gauge_battery_health()
546 ret = fuel_gauge_get_vocv(info, &vocv); in fuel_gauge_battery_health()
550 if (vocv > info->pdata->max_volt) in fuel_gauge_battery_health()
552 else if (temp > info->pdata->max_temp) in fuel_gauge_battery_health()
554 else if (temp < info->pdata->min_temp) in fuel_gauge_battery_health()
556 else if (vocv < info->pdata->min_volt) in fuel_gauge_battery_health()
565 static int fuel_gauge_set_high_btemp_alert(struct axp288_fg_info *info) in fuel_gauge_set_high_btemp_alert() argument
570 adc_val = temp_to_adc(info, info->pdata->max_temp); in fuel_gauge_set_high_btemp_alert()
571 ret = fuel_gauge_reg_writeb(info, AXP20X_V_HTF_DISCHRG, adc_val >> 4); in fuel_gauge_set_high_btemp_alert()
576 static int fuel_gauge_set_low_btemp_alert(struct axp288_fg_info *info) in fuel_gauge_set_low_btemp_alert() argument
581 adc_val = temp_to_adc(info, info->pdata->min_temp); in fuel_gauge_set_low_btemp_alert()
582 ret = fuel_gauge_reg_writeb(info, AXP20X_V_LTF_DISCHRG, adc_val >> 4); in fuel_gauge_set_low_btemp_alert()
591 struct axp288_fg_info *info = power_supply_get_drvdata(ps); in fuel_gauge_get_property() local
594 mutex_lock(&info->lock); in fuel_gauge_get_property()
597 fuel_gauge_get_status(info); in fuel_gauge_get_property()
598 val->intval = info->status; in fuel_gauge_get_property()
601 val->intval = fuel_gauge_battery_health(info); in fuel_gauge_get_property()
604 ret = fuel_gauge_get_vbatt(info, &value); in fuel_gauge_get_property()
610 ret = fuel_gauge_get_vocv(info, &value); in fuel_gauge_get_property()
616 ret = fuel_gauge_get_current(info, &value); in fuel_gauge_get_property()
622 ret = fuel_gauge_reg_readb(info, AXP20X_PWR_OP_MODE); in fuel_gauge_get_property()
632 ret = fuel_gauge_reg_readb(info, AXP20X_FG_RES); in fuel_gauge_get_property()
637 dev_err(&info->pdev->dev, in fuel_gauge_get_property()
642 ret = fuel_gauge_reg_readb(info, AXP288_FG_LOW_CAP_REG); in fuel_gauge_get_property()
648 ret = fuel_gauge_get_btemp(info, &value); in fuel_gauge_get_property()
655 val->intval = PROP_TEMP(info->pdata->max_temp); in fuel_gauge_get_property()
659 val->intval = PROP_TEMP(info->pdata->min_temp); in fuel_gauge_get_property()
665 ret = fuel_gauge_reg_readb(info, AXP288_FG_CC_MTR1_REG); in fuel_gauge_get_property()
670 ret = fuel_gauge_reg_readb(info, AXP288_FG_CC_MTR0_REG); in fuel_gauge_get_property()
677 ret = fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP1_REG); in fuel_gauge_get_property()
682 ret = fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP0_REG); in fuel_gauge_get_property()
689 val->intval = PROP_CURR(info->pdata->design_cap); in fuel_gauge_get_property()
692 val->intval = PROP_VOLT(info->pdata->max_volt); in fuel_gauge_get_property()
695 val->intval = PROP_VOLT(info->pdata->min_volt); in fuel_gauge_get_property()
698 val->strval = info->pdata->battid; in fuel_gauge_get_property()
701 mutex_unlock(&info->lock); in fuel_gauge_get_property()
705 mutex_unlock(&info->lock); in fuel_gauge_get_property()
709 mutex_unlock(&info->lock); in fuel_gauge_get_property()
717 struct axp288_fg_info *info = power_supply_get_drvdata(ps); in fuel_gauge_set_property() local
720 mutex_lock(&info->lock); in fuel_gauge_set_property()
723 info->status = val->intval; in fuel_gauge_set_property()
732 info->pdata->min_temp = UNPROP_TEMP(val->intval); in fuel_gauge_set_property()
733 ret = fuel_gauge_set_low_btemp_alert(info); in fuel_gauge_set_property()
735 dev_err(&info->pdev->dev, in fuel_gauge_set_property()
745 info->pdata->max_temp = UNPROP_TEMP(val->intval); in fuel_gauge_set_property()
746 ret = fuel_gauge_set_high_btemp_alert(info); in fuel_gauge_set_property()
748 dev_err(&info->pdev->dev, in fuel_gauge_set_property()
756 ret = fuel_gauge_reg_readb(info, AXP288_FG_LOW_CAP_REG); in fuel_gauge_set_property()
761 ret = fuel_gauge_reg_writeb(info, AXP288_FG_LOW_CAP_REG, ret); in fuel_gauge_set_property()
768 mutex_unlock(&info->lock); in fuel_gauge_set_property()
795 struct axp288_fg_info *info = container_of(work, in fuel_gauge_status_monitor() local
798 fuel_gauge_get_status(info); in fuel_gauge_status_monitor()
799 power_supply_changed(info->bat); in fuel_gauge_status_monitor()
800 schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES); in fuel_gauge_status_monitor()
805 struct axp288_fg_info *info = dev; in fuel_gauge_thread_handler() local
809 if (info->irq[i] == irq) in fuel_gauge_thread_handler()
814 dev_warn(&info->pdev->dev, "spurious interrupt!!\n"); in fuel_gauge_thread_handler()
820 dev_info(&info->pdev->dev, in fuel_gauge_thread_handler()
824 dev_info(&info->pdev->dev, in fuel_gauge_thread_handler()
828 dev_info(&info->pdev->dev, in fuel_gauge_thread_handler()
832 dev_info(&info->pdev->dev, in fuel_gauge_thread_handler()
836 dev_info(&info->pdev->dev, "Low Batt Warning(2) INTR\n"); in fuel_gauge_thread_handler()
839 dev_info(&info->pdev->dev, "Low Batt Warning(1) INTR\n"); in fuel_gauge_thread_handler()
842 dev_warn(&info->pdev->dev, "Spurious Interrupt!!!\n"); in fuel_gauge_thread_handler()
845 power_supply_changed(info->bat); in fuel_gauge_thread_handler()
851 struct axp288_fg_info *info = power_supply_get_drvdata(psy); in fuel_gauge_external_power_changed() local
853 power_supply_changed(info->bat); in fuel_gauge_external_power_changed()
867 static int fuel_gauge_set_lowbatt_thresholds(struct axp288_fg_info *info) in fuel_gauge_set_lowbatt_thresholds() argument
872 ret = fuel_gauge_reg_readb(info, AXP20X_FG_RES); in fuel_gauge_set_lowbatt_thresholds()
874 dev_err(&info->pdev->dev, "%s:read err:%d\n", __func__, ret); in fuel_gauge_set_lowbatt_thresholds()
887 ret = fuel_gauge_reg_writeb(info, AXP288_FG_LOW_CAP_REG, reg_val); in fuel_gauge_set_lowbatt_thresholds()
889 dev_err(&info->pdev->dev, "%s:write err:%d\n", __func__, ret); in fuel_gauge_set_lowbatt_thresholds()
894 static int fuel_gauge_program_vbatt_full(struct axp288_fg_info *info) in fuel_gauge_program_vbatt_full() argument
899 ret = fuel_gauge_reg_readb(info, AXP20X_CHRG_CTRL1); in fuel_gauge_program_vbatt_full()
905 switch (info->pdata->max_volt) { in fuel_gauge_program_vbatt_full()
923 ret = fuel_gauge_reg_writeb(info, AXP20X_CHRG_CTRL1, val); in fuel_gauge_program_vbatt_full()
928 static int fuel_gauge_program_design_cap(struct axp288_fg_info *info) in fuel_gauge_program_design_cap() argument
932 ret = fuel_gauge_reg_writeb(info, in fuel_gauge_program_design_cap()
933 AXP288_FG_DES_CAP1_REG, info->pdata->cap1); in fuel_gauge_program_design_cap()
937 ret = fuel_gauge_reg_writeb(info, in fuel_gauge_program_design_cap()
938 AXP288_FG_DES_CAP0_REG, info->pdata->cap0); in fuel_gauge_program_design_cap()
944 static int fuel_gauge_program_ocv_curve(struct axp288_fg_info *info) in fuel_gauge_program_ocv_curve() argument
949 ret = fuel_gauge_reg_writeb(info, in fuel_gauge_program_ocv_curve()
950 AXP288_FG_OCV_CURVE_REG + i, info->pdata->ocv_curve[i]); in fuel_gauge_program_ocv_curve()
959 static int fuel_gauge_program_rdc_vals(struct axp288_fg_info *info) in fuel_gauge_program_rdc_vals() argument
963 ret = fuel_gauge_reg_writeb(info, in fuel_gauge_program_rdc_vals()
964 AXP288_FG_RDC1_REG, info->pdata->rdc1); in fuel_gauge_program_rdc_vals()
968 ret = fuel_gauge_reg_writeb(info, in fuel_gauge_program_rdc_vals()
969 AXP288_FG_RDC0_REG, info->pdata->rdc0); in fuel_gauge_program_rdc_vals()
975 static void fuel_gauge_init_config_regs(struct axp288_fg_info *info) in fuel_gauge_init_config_regs() argument
984 ret = fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP1_REG); in fuel_gauge_init_config_regs()
986 dev_warn(&info->pdev->dev, "CAP1 reg read err!!\n"); in fuel_gauge_init_config_regs()
988 dev_info(&info->pdev->dev, "FG data needs to be initialized\n"); in fuel_gauge_init_config_regs()
990 dev_info(&info->pdev->dev, "FG data is already initialized\n"); in fuel_gauge_init_config_regs()
994 ret = fuel_gauge_program_vbatt_full(info); in fuel_gauge_init_config_regs()
996 dev_err(&info->pdev->dev, "set vbatt full fail:%d\n", ret); in fuel_gauge_init_config_regs()
998 ret = fuel_gauge_program_design_cap(info); in fuel_gauge_init_config_regs()
1000 dev_err(&info->pdev->dev, "set design cap fail:%d\n", ret); in fuel_gauge_init_config_regs()
1002 ret = fuel_gauge_program_rdc_vals(info); in fuel_gauge_init_config_regs()
1004 dev_err(&info->pdev->dev, "set rdc fail:%d\n", ret); in fuel_gauge_init_config_regs()
1006 ret = fuel_gauge_program_ocv_curve(info); in fuel_gauge_init_config_regs()
1008 dev_err(&info->pdev->dev, "set ocv curve fail:%d\n", ret); in fuel_gauge_init_config_regs()
1010 ret = fuel_gauge_set_lowbatt_thresholds(info); in fuel_gauge_init_config_regs()
1012 dev_err(&info->pdev->dev, "lowbatt thr set fail:%d\n", ret); in fuel_gauge_init_config_regs()
1014 ret = fuel_gauge_reg_writeb(info, AXP20X_CC_CTRL, 0xef); in fuel_gauge_init_config_regs()
1016 dev_err(&info->pdev->dev, "gauge cntl set fail:%d\n", ret); in fuel_gauge_init_config_regs()
1019 static void fuel_gauge_init_irq(struct axp288_fg_info *info) in fuel_gauge_init_irq() argument
1024 pirq = platform_get_irq(info->pdev, i); in fuel_gauge_init_irq()
1025 info->irq[i] = regmap_irq_get_virq(info->regmap_irqc, pirq); in fuel_gauge_init_irq()
1026 if (info->irq[i] < 0) { in fuel_gauge_init_irq()
1027 dev_warn(&info->pdev->dev, in fuel_gauge_init_irq()
1029 pirq, info->irq[i]); in fuel_gauge_init_irq()
1030 info->irq[i] = -1; in fuel_gauge_init_irq()
1033 ret = request_threaded_irq(info->irq[i], in fuel_gauge_init_irq()
1035 IRQF_ONESHOT, DEV_NAME, info); in fuel_gauge_init_irq()
1037 dev_warn(&info->pdev->dev, in fuel_gauge_init_irq()
1039 pirq, info->irq[i]); in fuel_gauge_init_irq()
1040 info->irq[i] = -1; in fuel_gauge_init_irq()
1043 dev_info(&info->pdev->dev, "HW IRQ %d -> VIRQ %d\n", in fuel_gauge_init_irq()
1044 pirq, info->irq[i]); in fuel_gauge_init_irq()
1051 free_irq(info->irq[i - 1], info); in fuel_gauge_init_irq()
1052 info->irq[i - 1] = -1; in fuel_gauge_init_irq()
1056 static void fuel_gauge_init_hw_regs(struct axp288_fg_info *info) in fuel_gauge_init_hw_regs() argument
1061 ret = fuel_gauge_set_high_btemp_alert(info); in fuel_gauge_init_hw_regs()
1063 dev_err(&info->pdev->dev, "high batt temp set fail:%d\n", ret); in fuel_gauge_init_hw_regs()
1065 ret = fuel_gauge_set_low_btemp_alert(info); in fuel_gauge_init_hw_regs()
1067 dev_err(&info->pdev->dev, "low batt temp set fail:%d\n", ret); in fuel_gauge_init_hw_regs()
1070 val = fuel_gauge_reg_readb(info, AXP20X_IRQ3_EN); in fuel_gauge_init_hw_regs()
1072 fuel_gauge_reg_writeb(info, AXP20X_IRQ3_EN, val); in fuel_gauge_init_hw_regs()
1074 val = fuel_gauge_reg_readb(info, AXP20X_IRQ4_EN); in fuel_gauge_init_hw_regs()
1076 val = fuel_gauge_reg_writeb(info, AXP20X_IRQ4_EN, val); in fuel_gauge_init_hw_regs()
1082 struct axp288_fg_info *info; in axp288_fuel_gauge_probe() local
1086 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); in axp288_fuel_gauge_probe()
1087 if (!info) in axp288_fuel_gauge_probe()
1090 info->pdev = pdev; in axp288_fuel_gauge_probe()
1091 info->regmap = axp20x->regmap; in axp288_fuel_gauge_probe()
1092 info->regmap_irqc = axp20x->regmap_irqc; in axp288_fuel_gauge_probe()
1093 info->status = POWER_SUPPLY_STATUS_UNKNOWN; in axp288_fuel_gauge_probe()
1094 info->pdata = pdev->dev.platform_data; in axp288_fuel_gauge_probe()
1095 if (!info->pdata) in axp288_fuel_gauge_probe()
1098 platform_set_drvdata(pdev, info); in axp288_fuel_gauge_probe()
1100 mutex_init(&info->lock); in axp288_fuel_gauge_probe()
1101 INIT_DELAYED_WORK(&info->status_monitor, fuel_gauge_status_monitor); in axp288_fuel_gauge_probe()
1103 psy_cfg.drv_data = info; in axp288_fuel_gauge_probe()
1104 info->bat = power_supply_register(&pdev->dev, &fuel_gauge_desc, &psy_cfg); in axp288_fuel_gauge_probe()
1105 if (IS_ERR(info->bat)) { in axp288_fuel_gauge_probe()
1106 ret = PTR_ERR(info->bat); in axp288_fuel_gauge_probe()
1111 fuel_gauge_create_debugfs(info); in axp288_fuel_gauge_probe()
1112 fuel_gauge_init_config_regs(info); in axp288_fuel_gauge_probe()
1113 fuel_gauge_init_irq(info); in axp288_fuel_gauge_probe()
1114 fuel_gauge_init_hw_regs(info); in axp288_fuel_gauge_probe()
1115 schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES); in axp288_fuel_gauge_probe()
1127 struct axp288_fg_info *info = platform_get_drvdata(pdev); in axp288_fuel_gauge_remove() local
1130 cancel_delayed_work_sync(&info->status_monitor); in axp288_fuel_gauge_remove()
1131 power_supply_unregister(info->bat); in axp288_fuel_gauge_remove()
1132 fuel_gauge_remove_debugfs(info); in axp288_fuel_gauge_remove()
1135 if (info->irq[i] >= 0) in axp288_fuel_gauge_remove()
1136 free_irq(info->irq[i], info); in axp288_fuel_gauge_remove()