Hi Mathieu, On Mon, Jun 23, 2025 at 09:15:52AM -0600, Mathieu Poirier wrote: > Hi Hiago, > > On Tue, Jun 17, 2025 at 04:34:49PM -0300, Hiago De Franco wrote: > > From: Hiago De Franco <[email protected]> > > > > For the i.MX8X and i.MX8 family SoCs, when the M-core is powered up > > by the bootloader, M-core and Linux are in same SCFW (System Controller > > Firmware) partition, so linux has permission to control M-core. > > Ok > > > > > But when M-core is started, the SCFW will automatically enable the clock > > I find the "But when M-core is started" part confusing. Started by who? And > are you making a distinction between "powered up" and "started"? It is not > possible for someone that doesn't have HW documentation to understand what is > going on.
Ok, understood, I will improve this in the next revision. Just to make clear, I am talking about Cortex-A bootloader starting Cortex-M (U-Boot bootaux command in this case). This means powered up, started and running. > > > and configure the rate, and any users that want to enable the clock will > > get error 'LOCKED' from SCFW. So current imx_rproc.c probe function > > fails because clk_prepare_enable also fails. With that, the M-core power > > domain is powered off when it is still running, causing a SCU (System > > Controller Unit) fault reset, and the system restarts. > > > > To address the issue, ignore handling the clk for i.MX8X and i.MX8 M-core, > > because SCFW will automatically enable and configure the clock. > > > > Suggested-by: Peng Fan <[email protected]> > > Reviewed-by: Ulf Hansson <[email protected]> > > Signed-off-by: Hiago De Franco <[email protected]> > > --- > > v4 -> v5: > > - Unchanged. > > v3 -> v4: > > - Unchanged. > > v2 -> v3: > > - Unchanged. > > v1 -> v2: > > - Commit description updated, as suggested. Fixed Peng Fan email. > > --- > > drivers/remoteproc/imx_rproc.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > > index 74299af1d7f1..627e57a88db2 100644 > > --- a/drivers/remoteproc/imx_rproc.c > > +++ b/drivers/remoteproc/imx_rproc.c > > @@ -1029,8 +1029,8 @@ static int imx_rproc_clk_enable(struct imx_rproc > > *priv) > > struct device *dev = priv->dev; > > int ret; > > > > - /* Remote core is not under control of Linux */ > > - if (dcfg->method == IMX_RPROC_NONE) > > + /* Remote core is not under control of Linux or it is managed by SCU > > API */ > > + if (dcfg->method == IMX_RPROC_NONE || dcfg->method == IMX_RPROC_SCU_API) > > return 0; > > > > priv->clk = devm_clk_get(dev, NULL); > > -- > > 2.39.5 > >

