max17135: add thermistor regulator to read temperature
parent
ed5da916de
commit
f24882dcd7
|
@ -79,6 +79,8 @@
|
|||
#define MAX17135_VPOS_MIN_VAL 0
|
||||
#define MAX17135_VPOS_MAX_VAL 1
|
||||
|
||||
#define MAX17135_EXT_TEMP_DEFAULT 25
|
||||
|
||||
struct max17135_vcom_programming_data {
|
||||
int vcom_min_uV;
|
||||
int vcom_max_uV;
|
||||
|
@ -409,6 +411,35 @@ static int max17135_v3p3_is_enabled(struct regulator_dev *reg)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int max17135_tmst_get_temperature(struct regulator_dev *reg)
|
||||
{
|
||||
struct max17135 *max17135 = rdev_get_drvdata(reg);
|
||||
unsigned int reg_val;
|
||||
int retry, temp;
|
||||
|
||||
for (retry = 0; retry < 50; retry++) {
|
||||
/* max 500ms after VIN> VIN_UVLO and VDD>VDD_UVLO */
|
||||
if (max17135_reg_read(REG_MAX17135_EXT_TEMP, ®_val) ==
|
||||
PMIC_SUCCESS) {
|
||||
reg_val >>= 8;
|
||||
if (reg_val&0x80) {
|
||||
reg_val = ((~reg_val)&0xFF)+1;
|
||||
temp = (0 - (int)reg_val);
|
||||
} else {
|
||||
temp = (int)reg_val;
|
||||
}
|
||||
dev_dbg(max17135->dev, "EXT temperature = %d after waiting %d ms\n",
|
||||
temp, retry*10);
|
||||
return temp;
|
||||
}
|
||||
msleep(10);
|
||||
}
|
||||
dev_dbg(max17135->dev, "Unable to read temperature, use default=%d\n",
|
||||
MAX17135_EXT_TEMP_DEFAULT);
|
||||
|
||||
return MAX17135_EXT_TEMP_DEFAULT;
|
||||
}
|
||||
|
||||
/*
|
||||
* Regulator operations
|
||||
*/
|
||||
|
@ -523,6 +554,13 @@ static struct regulator_desc max17135_reg[MAX17135_NUM_REGULATORS] = {
|
|||
.type = REGULATOR_VOLTAGE,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
{
|
||||
.name = "TMST",
|
||||
.id = MAX17135_TMST,
|
||||
.ops = &max17135_tmst_ops,
|
||||
.type = REGULATOR_VOLTAGE,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static void max17135_setup_timings(struct max17135 *max17135)
|
||||
|
|
|
@ -173,6 +173,7 @@ enum {
|
|||
MAX17135_VNEG,
|
||||
MAX17135_VPOS,
|
||||
MAX17135_V3P3,
|
||||
MAX17135_TMST,
|
||||
MAX17135_NUM_REGULATORS,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue