On Fri, Jan 4, 2019 at 11:11 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > The current-source used for the battery temp-sensor (TS) is shared with the > GPADC. For proper fuel-gauge and charger operation the TS current-source > needs to be permanently on. But to read the GPADC we need to temporary > switch the TS current-source to ondemand, so that the GPADC can use it, > otherwise we will always read an all 0 value. > > The switching from on to on-ondemand is not necessary when the TS > current-source is off (this happens on devices which do not have a TS). > > Prior to this commit there were 2 issues with our handling of the TS > current-source switching: > > 1) We were writing hardcoded values to the ADC TS pin-ctrl register, > overwriting various other unrelated bits. Specifically we were overwriting > the current-source setting for the TS and GPIO0 pins, forcing it to 80ųA > independent of its original setting. On a Chuwi Vi10 tablet this was > causing us to get a too high adc value (due to a too high current-source) > resulting in acpi_lpat_raw_to_temp() returning -ENOENT, resulting in: > > ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion] > ACPI Error: Method parse/execution failed \_SB.SXP1._TMP, AE_ERROR > > This commit fixes this by using regmap_update_bits to change only the > relevant bits. > > 2) At the end of intel_xpower_pmic_get_raw_temp() we were unconditionally > enabling the TS current-source even on devices where the TS-pin is not used > and the current-source thus was off on entry of the function. > > This commit fixes this by checking if the TS current-source is off when > entering intel_xpower_pmic_get_raw_temp() and if so it is left as is. > > Fixes: 58eefe2f3f53 ("ACPI / PMIC: xpower: Do pinswitch ... reading GPADC") AFAICS this commit went in during the 4.14 cycle, so I'm assuming the patch to be stable-candidate material, right?