summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorAndreas Kemnade <andreas@kemnade.info>2025-03-31 16:44:39 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-06-27 11:08:46 +0100
commit838d63de34a9defb22149b9606ca420e8772a66e (patch)
tree2e1c1bce21d2a924e1cc7513ab40b121671635af /arch/arm
parentc592d3ceca1aa5d5807e5ba6694d4cc222ed2a60 (diff)
downloadlinux-838d63de34a9defb22149b9606ca420e8772a66e.tar.gz
linux-838d63de34a9defb22149b9606ca420e8772a66e.tar.bz2
linux-838d63de34a9defb22149b9606ca420e8772a66e.zip
ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4
commit 7397daf1029d5bfd3415ec8622f5179603d5702d upstream. The late init call just writes to omap4 registers as soon as CONFIG_MFD_CPCAP is enabled without checking whether the cpcap driver is actually there or the SoC is indeed an OMAP4. Rather do these things only with the right device combination. Fixes booting the BT200 with said configuration enabled and non-factory X-Loader and probably also some surprising behavior on other devices. Fixes: c145649bf262 ("ARM: OMAP2+: Configure voltage controller for cpcap to low-speed") CC: stable@vger.kernel.org Signed-off-by: Andreas Kemnade <andreas@kemnade.info> Reivewed-by: Tony Lindgren <tony@atomide.com> Link: https://lore.kernel.org/r/20250331144439.769697-1-andreas@kemnade.info Signed-off-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-omap2/pmic-cpcap.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/pmic-cpcap.c b/arch/arm/mach-omap2/pmic-cpcap.c
index 668dc84fd31e..527cf4b7e378 100644
--- a/arch/arm/mach-omap2/pmic-cpcap.c
+++ b/arch/arm/mach-omap2/pmic-cpcap.c
@@ -264,7 +264,11 @@ int __init omap4_cpcap_init(void)
static int __init cpcap_late_init(void)
{
- omap4_vc_set_pmic_signaling(PWRDM_POWER_RET);
+ if (!of_find_compatible_node(NULL, NULL, "motorola,cpcap"))
+ return 0;
+
+ if (soc_is_omap443x() || soc_is_omap446x() || soc_is_omap447x())
+ omap4_vc_set_pmic_signaling(PWRDM_POWER_RET);
return 0;
}