Lines Matching refs:data
158 int offset, int *data) in measure_12bit_voltage() argument
167 *data = ((buf[0] & 0xff) << 4) | (buf[1] & 0x0f); in measure_12bit_voltage()
169 *data = ((*data & 0xfff) * 9 * 25) >> 9; in measure_12bit_voltage()
174 int *data) in measure_vbatt() argument
181 ret = measure_12bit_voltage(info, PM8607_VBAT_MEAS1, data); in measure_vbatt()
185 *data *= 3; in measure_vbatt()
204 *data = ((*data & 0xff) * 27 * 25) >> 9; in measure_vbatt()
216 static int measure_current(struct pm860x_battery_info *info, int *data) in measure_current() argument
228 *data = s >> 3; in measure_current()
232 static int set_charger_current(struct pm860x_battery_info *info, int data, in set_charger_current() argument
237 if (data < 50 || data > 1600 || !old) in set_charger_current()
240 data = ((data - 50) / 50) & 0x1f; in set_charger_current()
243 ret = pm860x_set_bits(info->i2c, PM8607_CHG_CTRL2, 0x1f, data); in set_charger_current()
271 int data; in calc_ccnt() local
273 ret = read_ccnt(info, CCNT_POS1, &data); in calc_ccnt()
276 sum = data & 0xffff; in calc_ccnt()
277 ret = read_ccnt(info, CCNT_POS2, &data); in calc_ccnt()
280 sum |= (data & 0xffff) << 16; in calc_ccnt()
283 ret = read_ccnt(info, CCNT_NEG1, &data); in calc_ccnt()
286 sum = data & 0xffff; in calc_ccnt()
287 ret = read_ccnt(info, CCNT_NEG2, &data); in calc_ccnt()
290 sum |= (data & 0xffff) << 16; in calc_ccnt()
294 ret = read_ccnt(info, CCNT_SPOS, &data); in calc_ccnt()
297 ccnt->spos += data; in calc_ccnt()
298 ret = read_ccnt(info, CCNT_SNEG, &data); in calc_ccnt()
316 int data; in clear_ccnt() local
320 read_ccnt(info, CCNT_POS1, &data); in clear_ccnt()
321 read_ccnt(info, CCNT_POS2, &data); in clear_ccnt()
322 read_ccnt(info, CCNT_NEG1, &data); in clear_ccnt()
323 read_ccnt(info, CCNT_NEG2, &data); in clear_ccnt()
324 read_ccnt(info, CCNT_SPOS, &data); in clear_ccnt()
325 read_ccnt(info, CCNT_SNEG, &data); in clear_ccnt()
334 int data; in calc_ocv() local
344 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in calc_ocv()
347 vbatt_sum += data; in calc_ocv()
348 ret = measure_current(info, &data); in calc_ocv()
351 ibatt_sum += data; in calc_ocv()
405 static irqreturn_t pm860x_coulomb_handler(int irq, void *data) in pm860x_coulomb_handler() argument
407 struct pm860x_battery_info *info = data; in pm860x_coulomb_handler()
413 static irqreturn_t pm860x_batt_handler(int irq, void *data) in pm860x_batt_handler() argument
415 struct pm860x_battery_info *info = data; in pm860x_batt_handler()
437 int data; in pm860x_init_battery() local
442 data = MEAS1_GP1; in pm860x_init_battery()
444 data |= MEAS1_TINT; in pm860x_init_battery()
445 ret = pm860x_set_bits(info->i2c, PM8607_MEAS_EN1, data, data); in pm860x_init_battery()
450 data = MEAS3_IBAT | MEAS3_BAT_DET | MEAS3_CC; in pm860x_init_battery()
451 ret = pm860x_set_bits(info->i2c, PM8607_MEAS_EN3, data, data); in pm860x_init_battery()
504 data = pm860x_reg_read(info->i2c, PM8607_POWER_UP_LOG); in pm860x_init_battery()
505 bat_remove = data & BAT_WU_LOG; in pm860x_init_battery()
514 data = ((buf[1] & 0x3) << 5) | ((buf[0] >> 3) & 0x1F); in pm860x_init_battery()
515 if (data > soc + 15) in pm860x_init_battery()
517 else if (data < soc - 15) in pm860x_init_battery()
520 info->start_soc = data; in pm860x_init_battery()
521 dev_dbg(info->dev, "soc_rtc %d, soc_ocv :%d\n", data, soc); in pm860x_init_battery()
536 int data; in set_temp_threshold() local
540 data = 0; in set_temp_threshold()
542 data = (min << 8) / 1800; in set_temp_threshold()
543 pm860x_reg_write(info->i2c, PM8607_GPADC1_HIGHTH, data); in set_temp_threshold()
544 dev_dbg(info->dev, "TEMP_HIGHTH : min: %d, 0x%x\n", min, data); in set_temp_threshold()
547 data = 0xff; in set_temp_threshold()
549 data = (max << 8) / 1800; in set_temp_threshold()
550 pm860x_reg_write(info->i2c, PM8607_GPADC1_LOWTH, data); in set_temp_threshold()
551 dev_dbg(info->dev, "TEMP_LOWTH:max : %d, 0x%x\n", max, data); in set_temp_threshold()
554 static int measure_temp(struct pm860x_battery_info *info, int *data) in measure_temp() argument
562 ret = measure_12bit_voltage(info, PM8607_TINT_MEAS1, data); in measure_temp()
565 *data = (*data - 884) * 1000 / 3611; in measure_temp()
567 ret = measure_12bit_voltage(info, PM8607_GPADC1_MEAS1, data); in measure_temp()
571 *data = (*data * 1000) / GPBIAS2_GPADC1_UA; in measure_temp()
573 if (*data > TBAT_NEG_25D) { in measure_temp()
577 } else if (*data > TBAT_NEG_10D) { in measure_temp()
581 } else if (*data > TBAT_0D) { in measure_temp()
586 } else if (*data > TBAT_10D) { in measure_temp()
591 } else if (*data > TBAT_20D) { in measure_temp()
596 } else if (*data > TBAT_30D) { in measure_temp()
601 } else if (*data > TBAT_40D) { in measure_temp()
612 dev_dbg(info->dev, "temp_C:%d C,temp_mv:%d mv\n", temp, *data); in measure_temp()
613 *data = temp; in measure_temp()
625 int data; in calc_resistor() local
629 ret = measure_current(info, &data); in calc_resistor()
631 if (ret || data < 0) in calc_resistor()
634 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in calc_resistor()
638 if (data < VBATT_RESISTOR_MIN || data > VBATT_RESISTOR_MAX) in calc_resistor()
652 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in calc_resistor()
655 vbatt_sum1 += data; in calc_resistor()
656 ret = measure_current(info, &data); in calc_resistor()
660 if (data < 0) in calc_resistor()
661 ibatt_sum1 = ibatt_sum1 - data; /* discharging */ in calc_resistor()
663 ibatt_sum1 = ibatt_sum1 + data; /* charging */ in calc_resistor()
675 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in calc_resistor()
678 vbatt_sum2 += data; in calc_resistor()
679 ret = measure_current(info, &data); in calc_resistor()
683 if (data < 0) in calc_resistor()
684 ibatt_sum2 = ibatt_sum2 - data; /* discharging */ in calc_resistor()
686 ibatt_sum2 = ibatt_sum2 + data; /* charging */ in calc_resistor()
696 data = 1000 * (vbatt_sum1 - vbatt_sum2) in calc_resistor()
698 if ((data - info->resistor > 0) && in calc_resistor()
699 (data - info->resistor < info->resistor)) in calc_resistor()
700 info->resistor = data; in calc_resistor()
701 if ((info->resistor - data > 0) && in calc_resistor()
702 (info->resistor - data < data)) in calc_resistor()
703 info->resistor = data; in calc_resistor()
716 int data; in calc_capacity() local
725 data = info->max_capacity * info->start_soc / 100; in calc_capacity()
726 if (ccnt_data.total_dischg - ccnt_data.total_chg <= data) { in calc_capacity()
728 data + ccnt_data.total_chg - ccnt_data.total_dischg; in calc_capacity()
754 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in calc_capacity()
757 if (data <= LOW_BAT_THRESHOLD) { in calc_capacity()
811 int data; in pm860x_batt_get_prop() local
819 ret = calc_capacity(info, &data); in pm860x_batt_get_prop()
822 if (data < 0) in pm860x_batt_get_prop()
823 data = 0; in pm860x_batt_get_prop()
824 else if (data > 100) in pm860x_batt_get_prop()
825 data = 100; in pm860x_batt_get_prop()
828 data = 100; in pm860x_batt_get_prop()
829 val->intval = data; in pm860x_batt_get_prop()
836 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data); in pm860x_batt_get_prop()
839 val->intval = data * 1000; in pm860x_batt_get_prop()
843 ret = calc_ocv(info, &data); in pm860x_batt_get_prop()
846 val->intval = data * 1000; in pm860x_batt_get_prop()
849 ret = measure_current(info, &data); in pm860x_batt_get_prop()
852 val->intval = data; in pm860x_batt_get_prop()
856 ret = measure_temp(info, &data); in pm860x_batt_get_prop()
859 data *= 10; in pm860x_batt_get_prop()
862 data = 250; in pm860x_batt_get_prop()
864 val->intval = data; in pm860x_batt_get_prop()