From nobody Sun Feb 8 06:21:47 2026 Received: from mail-oo1-f48.google.com (mail-oo1-f48.google.com [209.85.161.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9848261571; Mon, 5 May 2025 15:49:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460196; cv=none; b=UA1wjlyNp/X0WT+hvlbeX82Gww/O9wGjVxNRqbe/MN7vkVKwQjDI83vZE8QDA4kVHPVwyNdV4yPHkkY3oONJB+dFPNwS5oJ8w+6mbNI2nIjEs1U5cB7uPPtI9S/yNoOrq9uZO06RbHfCa+mjPO+UzI8hM4hUC63dtVf4tFpI7yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460196; c=relaxed/simple; bh=sBz0S7IFIbK4ZEXgBhD2c8M5U9d3QySQf/FYHBNgH4s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nlOz/l7e5g2l8vLIupJMjIjb6RlGWSzjg61fkRfwDkbpqCCmdhprNX4REo401qGzGVksRI6tWnJFAonFcRrHzdmvpinREKYuOeUQmri1RD515YJaUiVa1vAFZgPpe7RlzNJKH+2h2tMbMxRYUwYxkdGrXgf1Q41B5oD3Bgh3BEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J1VphmUL; arc=none smtp.client-ip=209.85.161.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J1VphmUL" Received: by mail-oo1-f48.google.com with SMTP id 006d021491bc7-6065803ef35so919839eaf.1; Mon, 05 May 2025 08:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746460194; x=1747064994; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jrh837RVy54Gg6Y+qeX+8goZwlDp8QNNPgp6OA+KrOY=; b=J1VphmULFjrPMbsO+aBu+8QAqV3krNICPaxJ5kLnEryug2JaMi6BGBzYnva/WzJQRE 01rsmdm6KQC1N3Uy0Ikzp3T2sJL6z8nDl1KyVsVNzQ/bdo7fL255kyj1JPbFfceAwddl UxqJJbH9A1l6QWanq8bRbAxZOjTE6wSKb6vU6LjYPUamrKvfksRN5HNNYc6z+zPd/zAO bkzbK5/a4T/d0JIVpW5Sl6wHs2E8kayaf73P5tolDWPbwYO/XTcNZjoX0mtiWCaXIaQ2 CG33NE+QJaU3eziadwiUQpB3c3fdgshEE+0LUEor5lmfwbS0JZPFbvsn7z0CJgLgEZ91 hXtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746460194; x=1747064994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jrh837RVy54Gg6Y+qeX+8goZwlDp8QNNPgp6OA+KrOY=; b=Im3z6V4vNfknnsTv6xFgRc+FAl1NocCi3S9wdRdn6hxONll42upU9CSMDiRi70aIzZ FaftY7bRIXpCsJ/eh3+76YUDyG95zca8VzaP+Vx0opSOjNNzhQllgNqLQHz8ku7ijfAq sq4nx0H6izCLkIsqMY6KAEZe+tH4df6QboTHfdHgEMCXt+tTwY5U4L+0GgCGPm+rfEWW UVWbUA717pJPVXbkyNtINOt5B5q9PHbsBPtacCi5OGXSTxKFbnHLc/+8aXyKZE+oYAyN frDrjXYwTPPUKXgJRsh5cvhevDviiHwgE++kUztqG2OGflgclWPVzHX2YI2ZI95SLBz9 1l6w== X-Forwarded-Encrypted: i=1; AJvYcCUMgL0SHS/LOF9kL9QSJLEqKjFClQcKh1WGlABw6vsQpMiBp+f7v1mFk3WuUDwOtettQxSVgyb/Jn/mDTE=@vger.kernel.org, AJvYcCXITt18JOaaoSY20hfFZ8Y73TYZEcCmIV9sL4Vc4oW2Hd9iFJt43T2HRJQleoM1HU5MHLfmhecH8os=@vger.kernel.org, AJvYcCXpHsqWlR9czOaz3TS7C3YRs4/t88tKNyB7f9xU5BYHhvSfR1NiK9GReqAFaQ9vemR1LBQr3EqJdHR+teOYtylauA==@vger.kernel.org X-Gm-Message-State: AOJu0YxK92jK4Skn4Cn5wpldcdgliONu4pWWPMpkNB7LxtdRyjwrHxeW NBYba2pSgXLRAoVEePEp/n/QStHJxrdg4T1hDeR47zYSEcu+r5W6 X-Gm-Gg: ASbGncuTzu2WwP6dcBHeQURkDR+gPvbRlUS/73Euim7+jMrV2XOt+9ynkBDabVYnUpf HPpzS3aYhekifo6n5/8Qcl9dEoFv0qFsTWnStaTW4J4dhO5gfuxZyECJ1WXR+eyRIAcqF3t6Eru s1Wh9HxNUsjgGrwZCXCcO1yZVrxkMf2zLYelZQJoTLZ+q3NgcOBtLEl7UHdZ6X9Orl6AGDHaFMP jkaNSZgPSFRV4wtWBgosnnqkbIjfc4pkphvBou2BQ2JabwkHoYo7pnmVOQ/e2qgns227KwZ+qIw ZHBQKLzkTgAOxvT8UNIJ9DVDvo1hMwk2aqbi6BTFKY5eOj0v21PtD4jqTpAT6tA= X-Google-Smtp-Source: AGHT+IHzxBFSeMM74yjOto3P7ALY8hiN3bLZVvyyH/Nc6q5335Rn3C/QA8sNLRqmd/RLKdgG+WebEA== X-Received: by 2002:a05:6820:1391:b0:607:cc1a:572f with SMTP id 006d021491bc7-6080030f9b9mr4884601eaf.6.1746460193770; Mon, 05 May 2025 08:49:53 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-607e7fe84a8sm1606217eaf.36.2025.05.05.08.49.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 May 2025 08:49:52 -0700 (PDT) From: Hiago De Franco To: Mathieu Poirier , Ulf Hansson , linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org Cc: Shawn Guo , Sascha Hauer , Bjorn Andersson , Hiago De Franco , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , daniel.baluta@nxp.com, iuliana.prodan@oss.nxp.com, Fabio Estevam , Pengutronix Kernel Team Subject: [PATCH 1/3] remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU Date: Mon, 5 May 2025 12:48:47 -0300 Message-Id: <20250505154849.64889-2-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505154849.64889-1-hiagofranco@gmail.com> References: <20250505154849.64889-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hiago De Franco For the i.MX8X and i.MX8 family SoCs, when the M-core is powered up before Linux starts (e.g., by the bootloader) and it is being managed by the SCU, the SCFW will not allow the kernel to enable the clock again. This currently causes an SCU fault reset when the M-core is up and running and the kernel boots, resetting the system. Therefore, add a check in the clock enable function to not execute it if the M-core is being managed by the SCU. This change affects only the i.MX8X and i.MX8 family SoCs, as this is under the IMX_RPROC_SCU_API method. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- 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 *pri= v) struct device *dev =3D priv->dev; int ret; =20 - /* Remote core is not under control of Linux */ - if (dcfg->method =3D=3D IMX_RPROC_NONE) + /* Remote core is not under control of Linux or it is managed by SCU API = */ + if (dcfg->method =3D=3D IMX_RPROC_NONE || dcfg->method =3D=3D IMX_RPROC_S= CU_API) return 0; =20 priv->clk =3D devm_clk_get(dev, NULL); --=20 2.39.5 From nobody Sun Feb 8 06:21:47 2026 Received: from mail-oo1-f43.google.com (mail-oo1-f43.google.com [209.85.161.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EDE6263F5E; Mon, 5 May 2025 15:49:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460201; cv=none; b=YUnGSEGOyH9ZXwTP+mqxJkEEO6OBjY2+BEizjY/M3vTAISz/VlIsnNVp1M7Uf2BxprTTm9iYoiZDh0GGyE5QMg9I8+zZnOblWvHy5QCt6grrsH2+jy/KvA1tZGVuoKkgl28L9rRY+32KOQu14acxaEdGWQ7KSWekP2tMMhZ87wE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460201; c=relaxed/simple; bh=oBMozJskEtvEjWYaahWUrCheNux/pXEF9fkwgtqsPEo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TxqhWk0DCCUbp9bMcrmSkbAQ6lshmlb2jyxmR7wNynCrTkYslq4IcymbBpbef7XqWhujgVM+7nP4BQRqvPqjaV+gFr4fp7Fu29u/1lUwweq3MJRojMGeFX7Q9QeGjZnGCHB/IDxgPm2fZ70hzuVE3D3DkCVO3/97zhYApJl3/h0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TVw+WWRT; arc=none smtp.client-ip=209.85.161.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TVw+WWRT" Received: by mail-oo1-f43.google.com with SMTP id 006d021491bc7-60634f82d1aso1259287eaf.3; Mon, 05 May 2025 08:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746460198; x=1747064998; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bF/eU9zOanUVVZXeOgSfSnbo986yXdUGTIPTl3NGixQ=; b=TVw+WWRTdXvrCX3/dWOUWD570jUij4+6XxA2gL5dL+XHUmv2UHJ3sYgvLIXOeznOIl VchoiHFNuE0HuL9xRwzoIG+RiGT8Jxkmze8y+9fQdlU0Q4dMF+HfYWMoYRYpMXjhQSzo Li7sAHFfTWdh1xeQJIe4tkU5AIngwwgpYw6cdTPvJjdJY5QuAiJ2v8KU0uE0p74CAXYh XCZJn6Fc1tAJufFip3AXuxcfx2N/0UqwJD8sMj5DETAZ/jlE1VdTCSzTg1Vqabh+Yc/K 05q0e2gb3abK/c0ME5pGzLi3l0iN7qW2mvUZkJCdSAq8q8trshbJfB72W2PrmB2Cwjl1 SBhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746460198; x=1747064998; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bF/eU9zOanUVVZXeOgSfSnbo986yXdUGTIPTl3NGixQ=; b=ODLjPnnD++ErWXsTcyWOQtchT2GO3zHIVekf6BodZqfLmymIuG/V3T6zXEsptdrYaS oQjDpEnHkpCut9+sclPBzmmosr8HBhsDJlMrqmWvsoQOdiyzVFrhhZe/27J7DaarQAtW 9kthz+q0EksQLuwLM7auiD51C1ZhPOdtpLO9KDqihhaifBDuzIBi9O8CmjYnf6gReFDN yez7BGVsRraGl8tzjdlFsJ9bi8wmrLIuVAcmKS2ZWqWRG9blwtz4RcQQWnfMBeIDlmz3 POKn+slJBhxB0ztF+C/vprHFkUMjyk3egq3i8rGx4EyZcbTmTqZkElZU1zXqHxgDy2QB Udzg== X-Forwarded-Encrypted: i=1; AJvYcCUHmfNtEwQb8UO72Zd0dDI2s/RzzuE74SvDuAG+F1bjVT0z6d3QFT92SitXYIH69CuOFzhSIe3dtEYkoUs=@vger.kernel.org, AJvYcCUW9hSW24ri09I+MdoeOYiqsXW99umo5xx5IehFShHJKqRc8n42xiEO6VOduxKRXqC4q3BD68OHlco=@vger.kernel.org, AJvYcCX8GCMdHRoleYz78YowbZT1CZP0aPNsJfHZMPE2dOHhJ9y1rrT9E3omzzQhERDNtUTJ6WECNgB4uDmgkyBCsDxvBg==@vger.kernel.org X-Gm-Message-State: AOJu0YyJCCwt3ocoCpOA7QNvGC9al4GfA5dTbmzoF0MqdHaXkvp5dEJf RY952cc+nKkhyEP3PfRJay/Nqmjkkc0RC2o4mGWPKP8fhIhlgamC X-Gm-Gg: ASbGncsoZYCOCDAeQfAdUqW2i8/bVMmL+K+58Rt1DZVpJPHcIB73/p5csemvgmToMa3 eAVaxWWiu2ecULXW9otM8Rfx5wpZoDudGdG369ipNpYoc9nsgSq0SevMaklRAlkFCxEIUnpKszq R2kDRo52/ARqndQS2DtRBHlb3pw+MU3VOo8UOvzsrKSHMSRi+EcDuerXqvrwT2BHArvjo4W3zn0 8m5KyINRD3A47ypYU0SzoiGGXCcd2lv1t4NiekVuxJkmykaXWgW9khG1CRQoHo8qXihFagncDzM KAzPrXFPewGOoCqmRxH+HiZlGado0EiWdW0KfldwHdOTpJOkfW/Vug8Wc2hed68= X-Google-Smtp-Source: AGHT+IFxOKSARBqkkegTT/BsbuPFrrDgx1ik3eNh9a8qIMK8qDnzx+rY6GvlMdOoHHyHuHjMiQD4vQ== X-Received: by 2002:a05:6820:208:b0:603:f973:1b3 with SMTP id 006d021491bc7-607fa81c1f3mr5567422eaf.0.1746460198572; Mon, 05 May 2025 08:49:58 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-607e7fe84a8sm1606217eaf.36.2025.05.05.08.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 May 2025 08:49:57 -0700 (PDT) From: Hiago De Franco To: Mathieu Poirier , Ulf Hansson , linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org Cc: Shawn Guo , Sascha Hauer , Bjorn Andersson , Hiago De Franco , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , daniel.baluta@nxp.com, iuliana.prodan@oss.nxp.com, Fabio Estevam , Pengutronix Kernel Team Subject: [PATCH 2/3] firmware: imx: move get power mode function from scu-pd.c to misc.c Date: Mon, 5 May 2025 12:48:48 -0300 Message-Id: <20250505154849.64889-3-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505154849.64889-1-hiagofranco@gmail.com> References: <20250505154849.64889-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hiago De Franco Move imx_sc_get_pd_power() from pmdomain/imx/scu-pd.c to firmware/imx/misc.c and rename it to imx_sc_pm_get_resource_power_mode() to maintain the same naming logic with other functions in misc.c. This makes the API available for other use cases. For example, remoteproc/imx_rproc.c can now use this function to check the power mode of the remote core. Signed-off-by: Hiago De Franco --- drivers/firmware/imx/misc.c | 47 +++++++++++++++++++++++++++ drivers/pmdomain/imx/scu-pd.c | 29 ++++------------- include/linux/firmware/imx/svc/misc.h | 8 +++++ 3 files changed, 62 insertions(+), 22 deletions(-) diff --git a/drivers/firmware/imx/misc.c b/drivers/firmware/imx/misc.c index d073cb3ce699..61fcb0066ec9 100644 --- a/drivers/firmware/imx/misc.c +++ b/drivers/firmware/imx/misc.c @@ -37,6 +37,18 @@ struct imx_sc_msg_resp_misc_get_ctrl { u32 val; } __packed __aligned(4); =20 +struct imx_sc_msg_req_get_resource_power_mode { + struct imx_sc_rpc_msg hdr; + union { + struct { + u16 resource; + } req; + struct { + u8 mode; + } resp; + } data; +} __packed __aligned(4); + /* * This function sets a miscellaneous control value. * @@ -135,3 +147,38 @@ int imx_sc_pm_cpu_start(struct imx_sc_ipc *ipc, u32 re= source, return imx_scu_call_rpc(ipc, &msg, true); } EXPORT_SYMBOL(imx_sc_pm_cpu_start); + +/* + * This function gets the power mode from a given @resource + * + * @param[in] ipc IPC handle + * @param[in] resource resource to check the power mode + * + * @return Returns < 0 for errors or the following for success: + * IMX_SC_PM_PW_MODE_OFF 0 Power off + * IMX_SC_PM_PW_MODE_STBY 1 Power in standby + * IMX_SC_PM_PW_MODE_LP 2 Power in low-power + * IMX_SC_PM_PW_MODE_ON 3 Power on + * + * These are defined under firmware/imx/svc/pm.h + */ +int imx_sc_pm_get_resource_power_mode(struct imx_sc_ipc *ipc, u32 resource) +{ + struct imx_sc_msg_req_get_resource_power_mode msg; + struct imx_sc_rpc_msg *hdr =3D &msg.hdr; + int ret; + + hdr->ver =3D IMX_SC_RPC_VERSION; + hdr->svc =3D IMX_SC_RPC_SVC_PM; + hdr->func =3D IMX_SC_PM_FUNC_GET_RESOURCE_POWER_MODE; + hdr->size =3D 2; + + msg.data.req.resource =3D resource; + + ret =3D imx_scu_call_rpc(ipc, &msg, true); + if (ret) + return ret; + + return msg.data.resp.mode; +} +EXPORT_SYMBOL(imx_sc_pm_get_resource_power_mode); diff --git a/drivers/pmdomain/imx/scu-pd.c b/drivers/pmdomain/imx/scu-pd.c index 01d465d88f60..945f972e636f 100644 --- a/drivers/pmdomain/imx/scu-pd.c +++ b/drivers/pmdomain/imx/scu-pd.c @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -328,27 +329,6 @@ static void imx_sc_pd_get_console_rsrc(void) imx_con_rsrc =3D specs.args[0]; } =20 -static int imx_sc_get_pd_power(struct device *dev, u32 rsrc) -{ - struct imx_sc_msg_req_get_resource_power_mode msg; - struct imx_sc_rpc_msg *hdr =3D &msg.hdr; - int ret; - - hdr->ver =3D IMX_SC_RPC_VERSION; - hdr->svc =3D IMX_SC_RPC_SVC_PM; - hdr->func =3D IMX_SC_PM_FUNC_GET_RESOURCE_POWER_MODE; - hdr->size =3D 2; - - msg.data.req.resource =3D rsrc; - - ret =3D imx_scu_call_rpc(pm_ipc_handle, &msg, true); - if (ret) - dev_err(dev, "failed to get power resource %d mode, ret %d\n", - rsrc, ret); - - return msg.data.resp.mode; -} - static int imx_sc_pd_power(struct generic_pm_domain *domain, bool power_on) { struct imx_sc_msg_req_set_resource_power_mode msg; @@ -438,7 +418,12 @@ imx_scu_add_pm_domain(struct device *dev, int idx, if (imx_con_rsrc =3D=3D sc_pd->rsrc) sc_pd->pd.flags =3D GENPD_FLAG_RPM_ALWAYS_ON; =20 - mode =3D imx_sc_get_pd_power(dev, pd_ranges->rsrc + idx); + mode =3D imx_sc_pm_get_resource_power_mode(pm_ipc_handle, + pd_ranges->rsrc + idx); + if (mode < 0) + dev_err(dev, "failed to get power resource %d mode, ret %d\n", + pd_ranges->rsrc + idx, mode); + if (mode =3D=3D IMX_SC_PM_PW_MODE_ON) is_off =3D false; else diff --git a/include/linux/firmware/imx/svc/misc.h b/include/linux/firmware= /imx/svc/misc.h index 760db08a67fc..376c800a88d0 100644 --- a/include/linux/firmware/imx/svc/misc.h +++ b/include/linux/firmware/imx/svc/misc.h @@ -55,6 +55,8 @@ int imx_sc_misc_get_control(struct imx_sc_ipc *ipc, u32 r= esource, =20 int imx_sc_pm_cpu_start(struct imx_sc_ipc *ipc, u32 resource, bool enable, u64 phys_addr); + +int imx_sc_pm_get_resource_power_mode(struct imx_sc_ipc *ipc, u32 resource= ); #else static inline int imx_sc_misc_set_control(struct imx_sc_ipc *ipc, u32 resource, u8 ctrl, u32 val) @@ -73,5 +75,11 @@ static inline int imx_sc_pm_cpu_start(struct imx_sc_ipc = *ipc, u32 resource, { return -ENOTSUPP; } + +static inline int imx_sc_pm_get_resource_power_mode(struct imx_sc_ipc *ipc, + u32 resource) +{ + return -ENOTSUPP; +} #endif #endif /* _SC_MISC_API_H */ --=20 2.39.5 From nobody Sun Feb 8 06:21:47 2026 Received: from mail-oo1-f54.google.com (mail-oo1-f54.google.com [209.85.161.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5666B264FA6; Mon, 5 May 2025 15:50:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460205; cv=none; b=FoTEEyHxZJI/RIe857mrOX4vHoit1pmLFANV1Q3+ZJaOJSz8ilL4vbRhczTXuOF9qa7S0ysMVZF4WJEnlm2T9YeiFYsVTFayf2pajt6QoDQLSh6DiyxomGljlgQ6gue52i3Ds4wmAs8lffz1bHOgtQsjwiI8s8y32wRYdHaVROA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460205; c=relaxed/simple; bh=kYiHN+nVO56jpSLDAYAFIb8zFBmSTO/Xrj6sX4vDXQ4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n1dDOCefOaOuCWqnjz1VMpIO2zJJfKxQlzrpcoJUcO8Bn3MryBn8HXDCj/qoaZIinmq/8cLwZs9YNiauTUglGSacmmMnlAhHm7gNzNHBua2u58cZrkqyXtC6O8otcB9YWx37x3dDPgOQSAHmLdn1f9aDfp9lv0rpcvNNgLaNT3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WHRWY+f5; arc=none smtp.client-ip=209.85.161.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WHRWY+f5" Received: by mail-oo1-f54.google.com with SMTP id 006d021491bc7-60634f82d1aso1259313eaf.3; Mon, 05 May 2025 08:50:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746460203; x=1747065003; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QzxoNjX13i4eG31sNq5COpLdWdwplkA/ut9vzb6w+YA=; b=WHRWY+f5hDH7Ku+c+S2VKu2igtVUB+TfhDs2F3G/5tQNlpBwfQiu0Mywjps2hAlvcT +mPgEnlhI59qRQPxmk7d/0GG7sS+AGnkHtwyKUepLuIBcBt12tYEI0vIBhcsvndH8ahE n78i8WxHZiugErvicRkXr0FbahNfQ1SANFmh+asV84U4tbf0ZEF35yietjdFmTI/H+Ep bEOytD2K/ntzPcVE0P5LNuJSBY2LKb5pFevKTwc0jFHXq4FpnQSpSVIUS2vkfvDrlwtN HfciZ4wq1MgLRenNPlDzXveD++hT7L/S/IBM6oj2376NXbl9NBIQSSwQaHKBBIsnpRd2 XQpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746460203; x=1747065003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QzxoNjX13i4eG31sNq5COpLdWdwplkA/ut9vzb6w+YA=; b=X4pjdIestnd/XW/1ChUteGzxioX4ObpDxFdKp1KLC9vQMWWV6MYCZAhkM2ue8C4/XH AVWGarzpV6Ja8MVje62NfP5kii5+JIzX+6XZux3Pre2QgaVA7cssvRGiJb4Hd5ISN2VK 0yLy/pfFPvnBkjd8RgEwkka6ik5k4NF0p87o3By66PZJq8RTOQ3IfdksqgmdWu5ivgxb w/SZ96oE1F4s13NELE/y9yk71rMO1vJ7Y18+z/stDFzfM9tHJ3o2E+99pyfqobqK1VzL Nf/yCT8grJU9Tjn2MnDORUgvWFtmtdBboWe/MRwD3jBP1IZOXifezJR9Yafkk8Cvdkhn E66A== X-Forwarded-Encrypted: i=1; AJvYcCW5K8CrXbVxz9Ux34pw6Ymt1RNaiD7qBOO3s10Lc5myRJTkcviOY9D41UOv80FhqSgLHfWhs7wqCoipOXo=@vger.kernel.org, AJvYcCWo+HX/rzo1Gtr+IiEmLpfxkl97MU6DvTPCQ85AuREJRzhK1C+52UEYgU+qqGNMQYuj9Ns89ULxVG4=@vger.kernel.org, AJvYcCXgnKHepCYxqgKVTss4HRsqIwvaK2HMJCj2Lns+nnJja1iuow3UUg5CwDFCjohXIILXWVd7kQUp7LIcqwtdIT+pzw==@vger.kernel.org X-Gm-Message-State: AOJu0YwdDTuWNz3ClP3R+RadwlWgnZ4wU0HkCCDvBKrNfzhAL31OQSya JSAK0BhgHA1AYvUVQWjl9CaeR7KiM+INJrwfHV8IddfTbh6vMnUO X-Gm-Gg: ASbGncvrdLUhTu+7e0KHV8jX46Qc0AM83EgbQGnupQE8MJIqT7gs0u+l28GHwPGAh/b Mcw0VN6P6pGnYk/S+JiUQ/cKZdkn8OnRRCenEVgTJoqhdEqZ0l4iITcbD6tTmCrPDvklbTkXVux 2vLfUiigH5VF+36Av7ktcoWwmMT7oU1AYUfvSfIpNx6IlrwgIPgCeLFz0npvc9WNu3Zl2nEDxvX IEO9az0YTb2kikh0il+3FPYKjH8spjSyO9ttaY3GEMZP/+4RKwvVyRct/MBIivpVZZIACCMgyWg LRsjWFj/fKpxgf/xUKqoH1nY893r/fexE+q5gjF5FHYRYn7vxea4staYGzuFHsU= X-Google-Smtp-Source: AGHT+IFmXHRAfXFJOCHFZobnyaZvTqkwxSNtmF5ex7yON9mHi0l4M2n37VTw9ZY8eHmQoifZiTSQ/g== X-Received: by 2002:a4a:ec44:0:b0:607:e293:95b2 with SMTP id 006d021491bc7-607fab26b1emr5755194eaf.8.1746460203351; Mon, 05 May 2025 08:50:03 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-607e7fe84a8sm1606217eaf.36.2025.05.05.08.49.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 May 2025 08:50:02 -0700 (PDT) From: Hiago De Franco To: Mathieu Poirier , Ulf Hansson , linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org Cc: Shawn Guo , Sascha Hauer , Bjorn Andersson , Hiago De Franco , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , daniel.baluta@nxp.com, iuliana.prodan@oss.nxp.com, Fabio Estevam , Pengutronix Kernel Team Subject: [PATCH 3/3] remoteproc: imx_rproc: add power mode check for remote core attachment Date: Mon, 5 May 2025 12:48:49 -0300 Message-Id: <20250505154849.64889-4-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505154849.64889-1-hiagofranco@gmail.com> References: <20250505154849.64889-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Hiago De Franco When the remote core is started before Linux boots (e.g., by the bootloader), the driver currently is not able to attach because it only checks for cores running in different partitions. If the core was kicked by the bootloader, it is in the same partition as Linux and it is already up and running. This adds power mode verification through the SCU interface, enabling the driver to detect when the remote core is already running and properly attach to it. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- drivers/remoteproc/imx_rproc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 627e57a88db2..86541d9d8640 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -906,6 +907,21 @@ static int imx_rproc_attach_pd(struct imx_rproc *priv) return ret < 0 ? ret : 0; } =20 +static bool imx_rproc_is_on(struct device *dev, struct imx_sc_ipc *ipc, + u32 resource) +{ + int ret; + + ret =3D imx_sc_pm_get_resource_power_mode(ipc, resource); + if (ret < 0) { + dev_err(dev, "failed to get power resource %d mode, ret %d\n", + resource, ret); + return false; + } + + return ret =3D=3D IMX_SC_PM_PW_MODE_ON; +} + static int imx_rproc_detect_mode(struct imx_rproc *priv) { struct regmap_config config =3D { .name =3D "imx-rproc" }; @@ -949,6 +965,13 @@ static int imx_rproc_detect_mode(struct imx_rproc *pri= v) if (of_property_read_u32(dev->of_node, "fsl,entry-address", &priv->entr= y)) return -EINVAL; =20 + /* + * If remote core is already running (e.g. kicked by + * the bootloader), attach to it. + */ + if (imx_rproc_is_on(dev, priv->ipc_handle, priv->rsrc_id)) + priv->rproc->state =3D RPROC_DETACHED; + return imx_rproc_attach_pd(priv); } =20 --=20 2.39.5