|
@@ -27,6 +27,9 @@
|
|
|
#define GPI1_LDO_ON (3 << 0)
|
|
|
#define GPI1_LDO_OFF (4 << 0)
|
|
|
|
|
|
+#define AXP288_ADC_TS_PIN_GPADC 0xf2
|
|
|
+#define AXP288_ADC_TS_PIN_ON 0xf3
|
|
|
+
|
|
|
static struct pmic_table power_table[] = {
|
|
|
{
|
|
|
.address = 0x00,
|
|
@@ -209,11 +212,23 @@ static int intel_xpower_pmic_update_power(struct regmap *regmap, int reg,
|
|
|
static int intel_xpower_pmic_get_raw_temp(struct regmap *regmap, int reg)
|
|
|
{
|
|
|
u8 buf[2];
|
|
|
+ int ret;
|
|
|
|
|
|
- if (regmap_bulk_read(regmap, AXP288_GP_ADC_H, buf, 2))
|
|
|
- return -EIO;
|
|
|
+ ret = regmap_write(regmap, AXP288_ADC_TS_PIN_CTRL,
|
|
|
+ AXP288_ADC_TS_PIN_GPADC);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ /* After switching to the GPADC pin give things some time to settle */
|
|
|
+ usleep_range(6000, 10000);
|
|
|
+
|
|
|
+ ret = regmap_bulk_read(regmap, AXP288_GP_ADC_H, buf, 2);
|
|
|
+ if (ret == 0)
|
|
|
+ ret = (buf[0] << 4) + ((buf[1] >> 4) & 0x0f);
|
|
|
+
|
|
|
+ regmap_write(regmap, AXP288_ADC_TS_PIN_CTRL, AXP288_ADC_TS_PIN_ON);
|
|
|
|
|
|
- return (buf[0] << 4) + ((buf[1] >> 4) & 0x0F);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static struct intel_pmic_opregion_data intel_xpower_pmic_opregion_data = {
|