linux/drivers/remoteproc
Hiago De Franco 02e184dadb remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU
[ Upstream commit 496deecb02 ]

For the i.MX8X and i.MX8 family SoCs, when the Cortex-M core is powered
up and started by the Cortex-A core using the bootloader (e.g., via the
U-Boot bootaux command), both M-core and Linux run within the same SCFW
(System Controller Firmware) partition. With that, Linux has permission
to control the M-core.

But once the M-core is started by the bootloader, the SCFW automatically
enables its clock and sets the clock rate. If Linux later attempts to
enable the same clock via clk_prepare_enable(), the SCFW returns a
'LOCKED' error, as the clock is already configured by the SCFW. This
causes the probe function in imx_rproc.c to fail, leading to the M-core
power domain being shut down while the core is still running. This
results in a fault from the SCU (System Controller Unit) and triggers a
system reset.

To address this issue, ignore handling the clk for i.MX8X and i.MX8
M-core, as SCFW already takes care of enabling and configuring the
clock.

Suggested-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20250629172512.14857-3-hiagofranco@gmail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-08-20 18:30:22 +02:00
..
da8xx_remoteproc.c remoteproc: da8xx: Use devm_platform_ioremap_resource_byname() 2024-09-09 09:50:50 -06:00
imx_dsp_rproc.c remoteproc: Use of_property_present() 2024-08-13 09:23:11 -06:00
imx_rproc.c remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU 2025-08-20 18:30:22 +02:00
imx_rproc.h remoteproc: imx_rproc: Add support for poweroff and reboot 2024-08-26 10:25:15 -06:00
ingenic_rproc.c remoteporc: ingenic: Use devm_platform_ioremap_resource_byname() 2024-09-09 09:50:54 -06:00
Kconfig mailbox, remoteproc: k3-m4+: fix compile testing 2024-12-05 14:02:20 +01:00
keystone_remoteproc.c remoteproc: keystone: Use devm_rproc_alloc() helper 2024-08-13 09:41:51 -06:00
Makefile remoteproc: k3-m4: Add a remoteproc driver for M4F subsystem 2024-08-21 11:22:54 -06:00
meson_mx_ao_arc.c remoteproc: meson_mx_ao_arc: Convert to platform remove callback returning void 2023-05-09 13:17:22 -06:00
mtk_common.h remoteproc: mediatek: Support setting DRAM and IPI shared buffer sizes 2024-04-30 10:43:59 -06:00
mtk_scp.c remoteproc: mtk_scp: Only populate devices for SCP cores 2025-02-08 09:57:52 +01:00
mtk_scp_ipi.c remoteproc: mediatek: Support setting DRAM and IPI shared buffer sizes 2024-04-30 10:43:59 -06:00
omap_remoteproc.c remoteproc: omap: Handle ARM dma_iommu_mapping 2025-02-17 10:05:06 +01:00
omap_remoteproc.h remoteproc/omap: Switch to SPDX license identifiers 2020-03-25 22:29:51 -07:00
pru_rproc.c remoteproc: pru: add support for configuring GPMUX based on client setup 2023-08-21 15:19:28 -06:00
pru_rproc.h remoteproc: pru: Add support for PRU specific interrupt configuration 2020-12-10 10:56:01 -06:00
qcom_common.c remoteproc: qcom: enable in-kernel PD mapper 2024-06-25 07:40:38 -07:00
qcom_common.h remoteproc: qcom: enable in-kernel PD mapper 2024-06-25 07:40:38 -07:00
qcom_pil_info.c remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided 2021-12-13 16:58:05 -06:00
qcom_pil_info.h remoteproc: qcom: Introduce helper to store pil info in IMEM 2020-07-01 22:10:18 -07:00
qcom_q6v5.c soc: qcom: aoss: Tidy up qmp_send() callers 2023-08-13 19:27:32 -07:00
qcom_q6v5.h remoteproc: qcom: q6v5: Add interconnect path proxy vote 2022-03-11 14:22:03 -06:00
qcom_q6v5_adsp.c remoteproc: qcom: adsp: Remove subdevs on the error path of adsp_probe() 2024-12-05 14:02:25 +01:00
qcom_q6v5_mss.c remoteproc: qcom_q6v5_mss: Handle platforms with one power domain 2025-04-10 14:39:19 +02:00
qcom_q6v5_pas.c remoteproc: qcom_q6v5_pas: Use resource with CX PD for MSM8226 2025-04-10 14:39:19 +02:00
qcom_q6v5_wcss.c remoteproc: qcom: enable in-kernel PD mapper 2024-06-25 07:40:38 -07:00
qcom_sysmon.c remoteproc: Explicitly include correct DT includes 2023-07-15 10:35:50 -07:00
qcom_wcnss.c remoteproc: qcom_wcnss: Fix on platforms without fallback regulators 2025-05-29 11:03:14 +02:00
qcom_wcnss.h remoteproc: qcom: wcnss: remove unused qcom_iris_driver declaration 2022-12-28 09:50:07 -06:00
qcom_wcnss_iris.c remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe 2025-06-19 15:32:06 +02:00
rcar_rproc.c remoteproc: Explicitly include correct DT includes 2023-07-15 10:35:50 -07:00
remoteproc_cdev.c remoteproc: core: Move state checking to remoteproc_core 2022-04-14 11:13:33 -06:00
remoteproc_core.c remoteproc: core: Release rproc->clean_table after rproc_attach() fails 2025-06-27 11:11:24 +01:00
remoteproc_coredump.c remoteproc: core: Export the rproc coredump APIs 2023-07-15 12:56:48 -07:00
remoteproc_debugfs.c remoteproc: Don't bother checking the return value of debugfs_create* 2022-04-11 10:04:40 -06:00
remoteproc_elf_helpers.h remoteproc: fix an typo in fw_elf_get_class code comments 2021-07-28 14:57:30 -05:00
remoteproc_elf_loader.c ELF: fix all "Elf" typos 2023-04-08 13:45:37 -07:00
remoteproc_internal.h remoteproc: Make rproc_class constant 2024-03-26 11:24:38 -06:00
remoteproc_sysfs.c remoteproc: Make rproc_class constant 2024-03-26 11:24:38 -06:00
remoteproc_virtio.c virtio: rename find_vqs_info() op to find_vqs() 2024-07-17 05:20:57 -04:00
st_remoteproc.c remoteproc: st: Use devm_rproc_alloc() helper 2024-02-02 11:36:27 -07:00
st_slim_rproc.c remoteproc: st_slim: Use devm_platform_ioremap_resource_byname() 2024-09-09 09:50:31 -06:00
stm32_rproc.c remoteproc: stm32_rproc: Fix mailbox interrupts queuing 2024-05-28 13:25:38 -06:00
ti_k3_dsp_remoteproc.c remoteproc: k3: Call of_node_put(rmem_np) only once in three functions 2025-07-10 16:05:01 +02:00
ti_k3_m4_remoteproc.c remoteproc: k3: Call of_node_put(rmem_np) only once in three functions 2025-07-10 16:05:01 +02:00
ti_k3_r5_remoteproc.c remoteproc: k3-r5: Refactor sequential core power up/down operations 2025-07-10 16:05:02 +02:00
ti_sci_proc.h remoteproc: k3: Factor out TI-SCI processor control OF get function 2024-08-21 11:21:02 -06:00
wkup_m3_rproc.c remoteproc: Explicitly include correct DT includes 2023-07-15 10:35:50 -07:00
xlnx_r5_remoteproc.c remoteproc: xlnx: Disable unsupported features 2025-08-15 12:13:56 +02:00