From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: [PATCH 4.19 22/50] ACPI / PMIC: xpower: Fix TS-pin current-source handling
Date: Tue, 15 Jan 2019 17:35:58 +0100 [thread overview]
Message-ID: <20190115154911.233042610@linuxfoundation.org> (raw)
In-Reply-To: <20190115154909.933241945@linuxfoundation.org>
4.19-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
commit 2b531d71595d2b5b12782a49b23c335869e2621e upstream.
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)
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: 4.14+ <stable@vger.kernel.org> # 4.14+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/acpi/pmic/intel_pmic_xpower.c | 41 +++++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 8 deletions(-)
--- a/drivers/acpi/pmic/intel_pmic_xpower.c
+++ b/drivers/acpi/pmic/intel_pmic_xpower.c
@@ -27,8 +27,11 @@
#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
+#define AXP288_ADC_TS_CURRENT_ON_OFF_MASK GENMASK(1, 0)
+#define AXP288_ADC_TS_CURRENT_OFF (0 << 0)
+#define AXP288_ADC_TS_CURRENT_ON_WHEN_CHARGING (1 << 0)
+#define AXP288_ADC_TS_CURRENT_ON_ONDEMAND (2 << 0)
+#define AXP288_ADC_TS_CURRENT_ON (3 << 0)
static struct pmic_table power_table[] = {
{
@@ -211,22 +214,44 @@ static int intel_xpower_pmic_update_powe
*/
static int intel_xpower_pmic_get_raw_temp(struct regmap *regmap, int reg)
{
+ int ret, adc_ts_pin_ctrl;
u8 buf[2];
- int ret;
- ret = regmap_write(regmap, AXP288_ADC_TS_PIN_CTRL,
- AXP288_ADC_TS_PIN_GPADC);
+ /*
+ * 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.
+ *
+ * Note that the switching from on to on-ondemand is not necessary
+ * when the TS current-source is off (this happens on devices which
+ * do not use the TS-pin).
+ */
+ ret = regmap_read(regmap, AXP288_ADC_TS_PIN_CTRL, &adc_ts_pin_ctrl);
if (ret)
return ret;
- /* After switching to the GPADC pin give things some time to settle */
- usleep_range(6000, 10000);
+ if (adc_ts_pin_ctrl & AXP288_ADC_TS_CURRENT_ON_OFF_MASK) {
+ ret = regmap_update_bits(regmap, AXP288_ADC_TS_PIN_CTRL,
+ AXP288_ADC_TS_CURRENT_ON_OFF_MASK,
+ AXP288_ADC_TS_CURRENT_ON_ONDEMAND);
+ if (ret)
+ return ret;
+
+ /* Wait a bit after switching the current-source */
+ 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);
+ if (adc_ts_pin_ctrl & AXP288_ADC_TS_CURRENT_ON_OFF_MASK) {
+ regmap_update_bits(regmap, AXP288_ADC_TS_PIN_CTRL,
+ AXP288_ADC_TS_CURRENT_ON_OFF_MASK,
+ AXP288_ADC_TS_CURRENT_ON);
+ }
return ret;
}
next prev parent reply other threads:[~2019-01-15 16:42 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 16:35 [PATCH 4.19 00/50] 4.19.16-stable review Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 01/50] Btrfs: fix deadlock when using free space tree due to block group creation Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 02/50] staging: rtl8188eu: Fix module loading from tasklet for CCMP encryption Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 03/50] staging: rtl8188eu: Fix module loading from tasklet for WEP encryption Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 04/50] cpufreq: scmi: Fix frequency invariance in slow path Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 05/50] x86, modpost: Replace last remnants of RETPOLINE with CONFIG_RETPOLINE Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 06/50] ALSA: hda/realtek - Support Dell headset mode for New AIO platform Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 07/50] ALSA: hda/realtek - Add unplug function into unplug state of Headset Mode for ALC225 Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 08/50] ALSA: hda/realtek - Disable headset Mic VREF for headset mode of ALC225 Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 09/50] CIFS: Fix adjustment of credits for MTU requests Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 10/50] CIFS: Do not set credits to 1 if the server didnt grant anything Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 11/50] CIFS: Do not hide EINTR after sending network packets Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 12/50] CIFS: Fix credit computation for compounded requests Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 13/50] cifs: Fix potential OOB access of lock element array Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 14/50] usb: cdc-acm: send ZLP for Telit 3G Intel based modems Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 15/50] USB: storage: dont insert sane sense for SPC3+ when bad sense specified Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 16/50] USB: storage: add quirk for SMI SM3350 Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 17/50] USB: Add USB_QUIRK_DELAY_CTRL_MSG quirk for Corsair K70 RGB Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 18/50] slab: alien caches must not be initialized if the allocation of the alien cache failed Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 19/50] mm/usercopy.c: no check page span for stack objects Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 20/50] mm, memcg: fix reclaim deadlock with writeback Greg Kroah-Hartman
2019-01-15 16:35 ` [PATCH 4.19 21/50] ACPI: power: Skip duplicate power resource references in _PRx Greg Kroah-Hartman
2019-01-15 16:35 ` Greg Kroah-Hartman [this message]
2019-01-15 16:35 ` [PATCH 4.19 23/50] ACPI/IORT: Fix rc_dma_get_range() Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 24/50] i2c: dev: prevent adapter retries and timeout being set as minus value Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 25/50] mtd: rawnand: qcom: fix memory corruption that causes panic Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 26/50] vfio/type1: Fix unmap overflow off-by-one Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 27/50] drm/amdgpu: Add new VegaM pci id Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 28/50] PCI: dwc: Use interrupt masking instead of disabling Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 29/50] PCI: dwc: Take lock when ACKing an interrupt Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 30/50] PCI: dwc: Move interrupt acking into the proper callback Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 31/50] drm/amd/display: Fix MST dp_blank REG_WAIT timeout Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 32/50] drm/fb_helper: Allow leaking fbdev smem_start Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 33/50] drm/fb-helper: Partially bring back workaround for bugs of SDL 1.2 Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 34/50] drm/i915: Unwind failure on pinning the gen7 ppgtt Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 35/50] drm/amdgpu: Dont ignore rc from drm_dp_mst_topology_mgr_resume() Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 36/50] drm/amdgpu: Dont fail resume process if resuming atomic state fails Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 37/50] rbd: dont return 0 on unmap if RBD_DEV_FLAG_REMOVING is set Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 38/50] ext4: make sure enough credits are reserved for dioread_nolock writes Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 39/50] ext4: fix a potential fiemap/page fault deadlock w/ inline_data Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 40/50] ext4: avoid kernel warning when writing the superblock to a dead device Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 41/50] ext4: use ext4_write_inode() when fsyncing w/o a journal Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 42/50] ext4: track writeback errors using the generic tracking infrastructure Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 43/50] ext4: fix special inode number checks in __ext4_iget() Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 44/50] mm: page_mapped: dont assume compound page is huge or THP Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 45/50] sunrpc: use-after-free in svc_process_common() Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 46/50] KVM: arm/arm64: Fix VMID alloc race by reverting to lock-less Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 47/50] arm64: compat: Dont pull syscall number from regs in arm_compat_syscall Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 48/50] Btrfs: fix access to available allocation bits when starting balance Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 49/50] Btrfs: fix deadlock when enabling quotas due to concurrent snapshot creation Greg Kroah-Hartman
2019-01-15 16:36 ` [PATCH 4.19 50/50] Btrfs: use nofs context when initializing security xattrs to avoid deadlock Greg Kroah-Hartman
2019-01-16 2:00 ` [PATCH 4.19 00/50] 4.19.16-stable review shuah
2019-01-16 11:49 ` Naresh Kamboju
2019-01-16 20:38 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190115154911.233042610@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox