]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge branch 'psy-mfd-axp288-immutable' into psy-next
authorSebastian Reichel <sre@kernel.org>
Wed, 4 Jan 2017 21:01:42 +0000 (22:01 +0100)
committerSebastian Reichel <sre@kernel.org>
Wed, 4 Jan 2017 21:01:42 +0000 (22:01 +0100)
1  2 
drivers/power/supply/axp288_charger.c
drivers/power/supply/axp288_fuel_gauge.c

Simple merge
index b0325a108431af581633bb0107b64bf335e2dc1e,326eb08beaa27f3c55d04f7754c6af78fe029f2a..abff4225f78937338459a6db20c0c53bf529696b
@@@ -447,110 -402,23 +432,14 @@@ current_read_fail
        return ret;
  }
  
- static int temp_to_adc(struct axp288_fg_info *info, int tval)
- {
-       int rntc = 0, i, ret, adc_val;
-       int rmin, rmax, tmin, tmax;
-       int tcsz = info->pdata->tcsz;
-       /* get the Rntc resitance value for this temp */
-       if (tval > info->pdata->thermistor_curve[0][1]) {
-               rntc = info->pdata->thermistor_curve[0][0];
-       } else if (tval <= info->pdata->thermistor_curve[tcsz-1][1]) {
-               rntc = info->pdata->thermistor_curve[tcsz-1][0];
-       } else {
-               for (i = 1; i < tcsz; i++) {
-                       if (tval > info->pdata->thermistor_curve[i][1]) {
-                               rmin = info->pdata->thermistor_curve[i-1][0];
-                               rmax = info->pdata->thermistor_curve[i][0];
-                               tmin = info->pdata->thermistor_curve[i-1][1];
-                               tmax = info->pdata->thermistor_curve[i][1];
-                               rntc = rmin + ((rmax - rmin) *
-                                       (tval - tmin) / (tmax - tmin));
-                               break;
-                       }
-               }
-       }
-       /* we need the current to calculate the proper adc voltage */
-       ret = fuel_gauge_reg_readb(info, AXP20X_ADC_RATE);
-       if (ret < 0) {
-               dev_err(&info->pdev->dev, "%s:read err:%d\n", __func__, ret);
-               ret = 0x30;
-       }
-       /*
-        * temperature is proportional to NTS thermistor resistance
-        * ADC_RATE[5-4] determines current, 00=20uA,01=40uA,10=60uA,11=80uA
-        * [12-bit ADC VAL] = R_NTC(Ω) * current / 800
-        */
-       adc_val = rntc * (20 + (20 * ((ret >> 4) & 0x3))) / 800;
-       return adc_val;
- }
- static int adc_to_temp(struct axp288_fg_info *info, int adc_val)
- {
-       int ret, r, i, tval = 0;
-       int rmin, rmax, tmin, tmax;
-       int tcsz = info->pdata->tcsz;
-       ret = fuel_gauge_reg_readb(info, AXP20X_ADC_RATE);
-       if (ret < 0) {
-               dev_err(&info->pdev->dev, "%s:read err:%d\n", __func__, ret);
-               ret = 0x30;
-       }
-       /*
-        * temperature is proportional to NTS thermistor resistance
-        * ADC_RATE[5-4] determines current, 00=20uA,01=40uA,10=60uA,11=80uA
-        * R_NTC(Ω) = [12-bit ADC VAL] * 800 / current
-        */
-       r = adc_val * 800 / (20 + (20 * ((ret >> 4) & 0x3)));
-       if (r < info->pdata->thermistor_curve[0][0]) {
-               tval = info->pdata->thermistor_curve[0][1];
-       } else if (r >= info->pdata->thermistor_curve[tcsz-1][0]) {
-               tval = info->pdata->thermistor_curve[tcsz-1][1];
-       } else {
-               for (i = 1; i < tcsz; i++) {
-                       if (r < info->pdata->thermistor_curve[i][0]) {
-                               rmin = info->pdata->thermistor_curve[i-1][0];
-                               rmax = info->pdata->thermistor_curve[i][0];
-                               tmin = info->pdata->thermistor_curve[i-1][1];
-                               tmax = info->pdata->thermistor_curve[i][1];
-                               tval = tmin + ((tmax - tmin) *
-                                       (r - rmin) / (rmax - rmin));
-                               break;
-                       }
-               }
-       }
-       return tval;
- }
- static int fuel_gauge_get_btemp(struct axp288_fg_info *info, int *btemp)
- {
-       int ret, raw_val = 0;
-       ret = pmic_read_adc_val("axp288-batt-temp", &raw_val, info);
-       if (ret < 0)
-               goto temp_read_fail;
-       *btemp = adc_to_temp(info, raw_val);
- temp_read_fail:
-       return ret;
- }
  static int fuel_gauge_get_vocv(struct axp288_fg_info *info, int *vocv)
  {
 -      int ret, value;
 -
 -      /* 12-bit data value, upper 8 in OCVH, lower 4 in OCVL */
 -      ret = fuel_gauge_reg_readb(info, AXP288_FG_OCVH_REG);
 -      if (ret < 0)
 -              goto vocv_read_fail;
 -      value = ret << 4;
 +      int ret;
  
 -      ret = fuel_gauge_reg_readb(info, AXP288_FG_OCVL_REG);
 -      if (ret < 0)
 -              goto vocv_read_fail;
 -      value |= (ret & 0xf);
 +      ret = fuel_gauge_read_12bit_word(info, AXP288_FG_OCVH_REG);
 +      if (ret >= 0)
 +              *vocv = VOLTAGE_FROM_ADC(ret);
  
 -      *vocv = VOLTAGE_FROM_ADC(value);
 -vocv_read_fail:
        return ret;
  }
  
@@@ -693,19 -519,15 +535,10 @@@ static int fuel_gauge_get_property(stru
                if (ret < 0)
                        goto fuel_gauge_read_err;
  
 -              value = (ret & FG_DES_CAP1_VAL_MASK) << 8;
 -              ret = fuel_gauge_reg_readb(info, AXP288_FG_DES_CAP0_REG);
 -              if (ret < 0)
 -                      goto fuel_gauge_read_err;
 -              value |= (ret & FG_DES_CAP0_VAL_MASK);
 -              val->intval = value * FG_DES_CAP_RES_LSB;
 +              val->intval = ret * FG_DES_CAP_RES_LSB;
                break;
-       case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
-               val->intval = PROP_CURR(info->pdata->design_cap);
-               break;
        case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
-               val->intval = PROP_VOLT(info->pdata->max_volt);
-               break;
-       case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
-               val->intval = PROP_VOLT(info->pdata->min_volt);
-               break;
-       case POWER_SUPPLY_PROP_MODEL_NAME:
-               val->strval = info->pdata->battid;
+               val->intval = PROP_VOLT(info->max_volt);
                break;
        default:
                mutex_unlock(&info->lock);