Lines Matching refs:data
155 int offset, int *data)
164 *data = ((buf[0] & 0xff) << 4) | (buf[1] & 0x0f);
165 /* V_MEAS(mV) = data * 1.8 * 1000 / (2^12) */
166 *data = ((*data & 0xfff) * 9 * 25) >> 9;
171 int *data)
178 ret = measure_12bit_voltage(info, PM8607_VBAT_MEAS1, data);
182 *data *= 3;
200 /* V_BATT_MEAS(mV) = data * 3 * 1.8 * 1000 / (2^12) */
201 *data = ((*data & 0xff) * 27 * 25) >> 9;
210 * Return value is signed data.
213 static int measure_current(struct pm860x_battery_info *info, int *data)
225 *data = s >> 3;
229 static int set_charger_current(struct pm860x_battery_info *info, int data,
234 if (data < 50 || data > 1600 || !old)
237 data = ((data - 50) / 50) & 0x1f;
240 ret = pm860x_set_bits(info->i2c, PM8607_CHG_CTRL2, 0x1f, data);
268 int data;
270 ret = read_ccnt(info, CCNT_POS1, &data);
273 sum = data & 0xffff;
274 ret = read_ccnt(info, CCNT_POS2, &data);
277 sum |= (data & 0xffff) << 16;
280 ret = read_ccnt(info, CCNT_NEG1, &data);
283 sum = data & 0xffff;
284 ret = read_ccnt(info, CCNT_NEG2, &data);
287 sum |= (data & 0xffff) << 16;
291 ret = read_ccnt(info, CCNT_SPOS, &data);
294 ccnt->spos += data;
295 ret = read_ccnt(info, CCNT_SNEG, &data);
313 int data;
317 read_ccnt(info, CCNT_POS1, &data);
318 read_ccnt(info, CCNT_POS2, &data);
319 read_ccnt(info, CCNT_NEG1, &data);
320 read_ccnt(info, CCNT_NEG2, &data);
321 read_ccnt(info, CCNT_SPOS, &data);
322 read_ccnt(info, CCNT_SNEG, &data);
331 int data;
341 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
344 vbatt_sum += data;
345 ret = measure_current(info, &data);
348 ibatt_sum += data;
402 static irqreturn_t pm860x_coulomb_handler(int irq, void *data)
404 struct pm860x_battery_info *info = data;
410 static irqreturn_t pm860x_batt_handler(int irq, void *data)
412 struct pm860x_battery_info *info = data;
434 int data;
439 data = MEAS1_GP1;
441 data |= MEAS1_TINT;
442 ret = pm860x_set_bits(info->i2c, PM8607_MEAS_EN1, data, data);
447 data = MEAS3_IBAT | MEAS3_BAT_DET | MEAS3_CC;
448 ret = pm860x_set_bits(info->i2c, PM8607_MEAS_EN3, data, data);
503 data = pm860x_reg_read(info->i2c, PM8607_POWER_UP_LOG);
504 bat_remove = data & BAT_WU_LOG;
513 data = ((buf[1] & 0x3) << 5) | ((buf[0] >> 3) & 0x1F);
514 if (data > soc + 15)
516 else if (data < soc - 15)
519 info->start_soc = data;
520 dev_dbg(info->dev, "soc_rtc %d, soc_ocv :%d\n", data, soc);
535 int data;
539 data = 0;
541 data = (min << 8) / 1800;
542 pm860x_reg_write(info->i2c, PM8607_GPADC1_HIGHTH, data);
543 dev_dbg(info->dev, "TEMP_HIGHTH : min: %d, 0x%x\n", min, data);
546 data = 0xff;
548 data = (max << 8) / 1800;
549 pm860x_reg_write(info->i2c, PM8607_GPADC1_LOWTH, data);
550 dev_dbg(info->dev, "TEMP_LOWTH:max : %d, 0x%x\n", max, data);
553 static int measure_temp(struct pm860x_battery_info *info, int *data)
561 ret = measure_12bit_voltage(info, PM8607_TINT_MEAS1, data);
564 *data = (*data - 884) * 1000 / 3611;
566 ret = measure_12bit_voltage(info, PM8607_GPADC1_MEAS1, data);
570 *data = (*data * 1000) / GPBIAS2_GPADC1_UA;
572 if (*data > TBAT_NEG_25D) {
576 } else if (*data > TBAT_NEG_10D) {
580 } else if (*data > TBAT_0D) {
585 } else if (*data > TBAT_10D) {
590 } else if (*data > TBAT_20D) {
595 } else if (*data > TBAT_30D) {
600 } else if (*data > TBAT_40D) {
611 dev_dbg(info->dev, "temp_C:%d C,temp_mv:%d mv\n", temp, *data);
612 *data = temp;
624 int data;
628 ret = measure_current(info, &data);
629 /* make sure that charging is launched by data > 0 */
630 if (ret || data < 0)
633 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
637 if (data < VBATT_RESISTOR_MIN || data > VBATT_RESISTOR_MAX)
651 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
654 vbatt_sum1 += data;
655 ret = measure_current(info, &data);
659 if (data < 0)
660 ibatt_sum1 = ibatt_sum1 - data; /* discharging */
662 ibatt_sum1 = ibatt_sum1 + data; /* charging */
674 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
677 vbatt_sum2 += data;
678 ret = measure_current(info, &data);
682 if (data < 0)
683 ibatt_sum2 = ibatt_sum2 - data; /* discharging */
685 ibatt_sum2 = ibatt_sum2 + data; /* charging */
695 data = 1000 * (vbatt_sum1 - vbatt_sum2)
697 if ((data - info->resistor > 0) &&
698 (data - info->resistor < info->resistor))
699 info->resistor = data;
700 if ((info->resistor - data > 0) &&
701 (info->resistor - data < data))
702 info->resistor = data;
715 int data;
724 data = info->max_capacity * info->start_soc / 100;
725 if (ccnt_data.total_dischg - ccnt_data.total_chg <= data) {
727 data + ccnt_data.total_chg - ccnt_data.total_dischg;
753 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
756 if (data <= LOW_BAT_THRESHOLD) {
810 int data;
818 ret = calc_capacity(info, &data);
821 if (data < 0)
822 data = 0;
823 else if (data > 100)
824 data = 100;
827 data = 100;
828 val->intval = data;
835 ret = measure_vbatt(info, OCV_MODE_ACTIVE, &data);
838 val->intval = data * 1000;
842 ret = calc_ocv(info, &data);
845 val->intval = data * 1000;
848 ret = measure_current(info, &data);
851 val->intval = data;
855 ret = measure_temp(info, &data);
858 data *= 10;
861 data = 250;
863 val->intval = data;