From patchwork Mon May 19 17:15:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hiago De Franco X-Patchwork-Id: 891478 Received: from mail-il1-f175.google.com (mail-il1-f175.google.com [209.85.166.175]) (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 C0708288C81; Mon, 19 May 2025 17:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674990; cv=none; b=XHYzXsfGv+wze/n9UHQm8aqRb1CfsTwtIAewlHv13IR+TTJ6+9qKsHDFucvPXQdnH+RQmOQTVuC+OadpyaZzQOclrntiIlsawvoTfF/EBtCUZpazRzrGzj0TkK2vqI8jzGDjiOzN2QW8l8aFrqmii4/zKLfH5UFhNQ8dlTsEb5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674990; c=relaxed/simple; bh=guaS0IJYrKBzUQ7n6cApSVOAkZpGRn7ZgmTQXkQpvxM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fiZnoZTdrYHRA5Ko+sGIbNSYCPt+YtSSdpptHX5SMMjJn2vTvZ2PcuYaxTqFPbO5SAvwE++pvkJeNLLxEmZF2f7iObOoFnj53h9IsOlrZiT8MtuLyAh+1kXk6uofSnYy1O+y78JIj4U/79XBP/WqBxZR+NzxbYnlZtfx8k5BhNQ= 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=I5DgD0P+; arc=none smtp.client-ip=209.85.166.175 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="I5DgD0P+" Received: by mail-il1-f175.google.com with SMTP id e9e14a558f8ab-3da73e9cf17so41546025ab.2; Mon, 19 May 2025 10:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747674988; x=1748279788; 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=a1uDXUypTxPVrOjDkyW8a3QEFjfv2DCfH/Ibxzs5fII=; b=I5DgD0P+iWGkIl2aCkofPUNEupnbzdcntJM4j/PJ0N+a+2hicPgjSUgeFvo32PtbuI +Rehw1beN9B4Vzg2DV5FAL8XxWw2Hjm4UlFbdG7+88hpQKu4lavW7AlIKgxnq6qgYMZS CVSJIvTwQp5pSsMee7AuEIB3TBlWlq0UMLlvbpj8ERmIdhJDkJUgTwrGpQqrOOFCDGDo NOYrukqvejq7Fs8brofg6oAC+s1TfIZjRnCSmgVg2rxQdJwaNlMVkTE2hV2NuvaKPyX6 mUa9X4CyLBF3PmE6CH3uPOs2Lfg01eehAASworTRRcdLHwXaTLZWupGVOA/sYeTDb6UV GYoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747674988; x=1748279788; 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=a1uDXUypTxPVrOjDkyW8a3QEFjfv2DCfH/Ibxzs5fII=; b=Y63hzC6vBjJzJ8ySglkSIYil3RMRCHZhx7e424pe8kHrfQNUUnXFmrHomDcujaKfYc z2cBnSDvkiAfLsihJZT/410tFEibJnjBxefTJS6WsBhqaEInWnoWyPJmEnXxy8MN42RY zFHsxudMPUjCQrFYmfmf3W7FDo9nwcA/M+6u3PxPhbERtlst5otDnBjBrzsinqXlo2jt UlhvUsnmugqWyGcOLNBXDdpaN0AAp9PuIfQWaAlzhlbFFMqa7ENysIa9kPeBLn4vMAhW Jy2wPKI9Uy/lDjaewdjSeMtyRLQO+QNGhHNym816ZUC+uMSHo2mHst8u/jqAwfgHl/3v yZTw== X-Forwarded-Encrypted: i=1; AJvYcCUz+amBrkk0AKlNIVN9mcYrTM1zbOkYbAE5/mRynASLm//HxRLtG7ogUQYDgWSOOVguX/HoiN40wd0=@vger.kernel.org, AJvYcCW363kJFCTw5hHC8+dXrE0awqM3FoQVWr5pYIFAk8RP5XxK0PzQUd/WReRlrdhFkj/XfmF1+Y14SE7lf4Y=@vger.kernel.org, AJvYcCXx70CE5ZiNTK7j7e2Dl/oLILw7SMPzuP1juTaweMTQs5QOvn2NFBqRLiMHRWFczaHwsku0fNNSdUny8dFpK4JQ4Q==@vger.kernel.org X-Gm-Message-State: AOJu0YypjTf5BBxG44FtBsAiA9xbefak3L1o6aqByhQN4YcXT9X24AFo h0lXuAdrCDNgCkV/P9lHY+CoZfqypqJzCEnB+RHglh1iE1V+ihIdUXsIqpr5aS0tB7s= X-Gm-Gg: ASbGncu4NfWwKHdNeqK8RAgnRM/yYS18Gy8W11MVExl4Uspe988DGhjiR0a0MRSVB4k t8WYeUwQgj8GSMwT75rc2I5jHkC1xdqOOxccRM2pMxVBHzYpEh0hR/1mIc7RZr8jtK+TWsfJLCd JbFjviGAKtO3rBSfOiv++kdJHZBbkFZlKP1OT4HPutubmckZt9K6nzReQ1J8J6HsIbEIIapPZ5b Lc6s/d1DXS1XpANgaEA9oTHnqjN7TUE4k328FS+7QGvo2/vrml7sWnBjMPwGSpwBAstLG5C4pYP NVaPI1+qt4hvZd9vgzWXhY1ez1syT3yZXn+CqmBCMIBWKa5BIisHT/EvqqMAWT+/YlnkVAchE6Q HG4Yogx+S X-Google-Smtp-Source: AGHT+IGcPhmxLm05zfOvv98rT+S8AoJqTq1ZTmACNFyaA4DcN6+SVqyHcTRF8Wm1vE2yc2bqeR6yjA== X-Received: by 2002:a05:6122:310f:b0:528:bd71:8932 with SMTP id 71dfb90a1353d-52dba9513ddmr11512958e0c.11.1747674976187; Mon, 19 May 2025 10:16:16 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-52dbab4e983sm7003647e0c.31.2025.05.19.10.16.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 10:16:15 -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 , Peng Fan Subject: [PATCH v3 1/3] firmware: imx: introduce imx_sc_pm_get_resource_power_mode() Date: Mon, 19 May 2025 14:15:12 -0300 Message-Id: <20250519171514.61974-2-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250519171514.61974-1-hiagofranco@gmail.com> References: <20250519171514.61974-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Hiago De Franco This SCU API returns the power mode of a given resource. As example, remoteproc/imx_rproc.c can now use this function to check the power mode of the remote core to properly set "attached" or "offline" modes. Since there is no proper firmware/imx file to place this function, also introduce firmware/imx/power.c file to keep all the PM functions inside. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- v3: New patch. --- drivers/firmware/imx/Makefile | 2 +- drivers/firmware/imx/power.c | 52 +++++++++++++++++++++++++++++ include/linux/firmware/imx/svc/pm.h | 9 +++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 drivers/firmware/imx/power.c diff --git a/drivers/firmware/imx/Makefile b/drivers/firmware/imx/Makefile index 8d046c341be8..5f5548e34459 100644 --- a/drivers/firmware/imx/Makefile +++ b/drivers/firmware/imx/Makefile @@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_IMX_DSP) += imx-dsp.o -obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o +obj-$(CONFIG_IMX_SCU) += imx-scu.o misc.o imx-scu-irq.o rm.o imx-scu-soc.o power.o obj-${CONFIG_IMX_SCMI_MISC_DRV} += sm-misc.o diff --git a/drivers/firmware/imx/power.c b/drivers/firmware/imx/power.c new file mode 100644 index 000000000000..b982cebba72a --- /dev/null +++ b/drivers/firmware/imx/power.c @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * File containing client-side RPC functions for the PM (Power Management) + * service. These function are ported to clients that communicate to the SC. + */ + +#include + +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); + +/** + * imx_sc_pm_get_resource_power_mode - Get power mode from a given resource. + * @ipc: IPC handle. + * @resource: Resource to check the power mode. + * + * Return: Returns < 0 for errors or the following for success: + * * %IMX_SC_PM_PW_MODE_OFF - Power off + * * %IMX_SC_PM_PW_MODE_STBY - Power in standby + * * %IMX_SC_PM_PW_MODE_LP - Power in low-power + * * %IMX_SC_PM_PW_MODE_ON - Power on + * + */ +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 = &msg.hdr; + int ret; + + hdr->ver = IMX_SC_RPC_VERSION; + hdr->svc = IMX_SC_RPC_SVC_PM; + hdr->func = IMX_SC_PM_FUNC_GET_RESOURCE_POWER_MODE; + hdr->size = 2; + + msg.data.req.resource = resource; + + ret = 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/include/linux/firmware/imx/svc/pm.h b/include/linux/firmware/imx/svc/pm.h index 1f6975dd37b0..56e93a953295 100644 --- a/include/linux/firmware/imx/svc/pm.h +++ b/include/linux/firmware/imx/svc/pm.h @@ -82,4 +82,13 @@ enum imx_sc_pm_func { #define IMX_SC_PM_PARENT_PLL2 3 /* Parent in PLL2 or PLL0/4 */ #define IMX_SC_PM_PARENT_BYPS 4 /* Parent is a bypass clock. */ +#if IS_ENABLED(CONFIG_IMX_SCU) +int imx_sc_pm_get_resource_power_mode(struct imx_sc_ipc *ipc, u32 resource); +#else +static inline int imx_sc_pm_get_resource_power_mode(struct imx_sc_ipc *ipc, + u32 resource) +{ + return -EOPNOTSUPP; +} +#endif #endif /* _SC_PM_API_H */ From patchwork Mon May 19 17:15:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hiago De Franco X-Patchwork-Id: 891479 Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.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 385312882C6; Mon, 19 May 2025 17:16:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674983; cv=none; b=A7u3ELZD1Xk2G1K4UdFdlAr6e2hZmvzgwYYyWgUuxTlPqGhD3RNbscc7erAMQEuRAxLMg12vPJFw+hahV1DmYQ0YLRjHef3IzVv0aTq9/L4USC3zs4l22fnmOFC6XWDxa/QrI57Zy2YHj8G7zRl9I25v1y9L2YEbwSLehMMgQQo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674983; c=relaxed/simple; bh=rQAwwHGSkb+3HPYT26JL1d2p9vSi54lvUjzrl/7T5w8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nnE+8a0T9mSIOca1RFTUfSFQK7Oji3+9MFB5Qq3+uwCqEMA9XB0z3w3xqTY24eYmq9NAxigDp1EcrgK7xqn0rXLNmYWPYyWoRq3L7ktp1myCp6+18QC0Ptgj6S9n2Mp0Se6dAO1/iGSE/Lx9o0q4eGl/ubPgqFMkJ1JZgKJz+lk= 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=IV1pe4hY; arc=none smtp.client-ip=209.85.222.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="IV1pe4hY" Received: by mail-ua1-f43.google.com with SMTP id a1e0cc1a2514c-875b8e006f8so1263255241.0; Mon, 19 May 2025 10:16:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747674981; x=1748279781; 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=tGjXFGuWNPuMSkHVFxRqYuJrDQhGPryMypgumm+l/4k=; b=IV1pe4hYv2GLXU2P83u/f3VbPHbUgl/kVClB/eE+jVNWOtg6yvPUOsGG6mJt9IklFW hkqPdofcH5DD3hxNNmLICR7sYKESx6zWIxHYPqI150LcYoiSNuOIb1/L2tzB08sp2WZO gBnFDoqXlNAh9M3pV60JALI/YT8U7LSq1JZ+M3bvIx7wXCiF3VkZRDV/JfORSc4/KIDR KXMX3KXEKYf+85yRtFe+W7Vcvlwb9aeifnb03FaLWpXRi+Gu4nMNNL+vQlySStbQq62n WILzn4phWv+hpTpLDRuwzy95C6hrXgx58SXTKwxvf4GEzzlVDbDBpZN1360WJi6yH8Qt nAsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747674981; x=1748279781; 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=tGjXFGuWNPuMSkHVFxRqYuJrDQhGPryMypgumm+l/4k=; b=Sd0r/Sf8ViHWW1VufoPD/DtokXm+EZUKKZPPqcf/5qquHrdct2m9dMC2K+dD8X9dt3 9Ewz+SGKGkNdjLNhu9oWRUOENFq0H1FAZlVQWGT7Xtn0j5rCzVQMX8OQ1av4f/jCiQzp VyKowRMMOOuAI1Mt2rQKdXAy+Vrguq9YPKb7HAvvoCgSSYEsD1/TawfqnMlyVKnPkhFp IjvEnxq5BpUlUOIHxWmi/5FeYqti+lygA1xZ2TaO8WTK2x+rFVLrfTAY9nfQrmOLa0+R SXoLtotmxaIuJR8lEl2dcjDyzqMcT0b78lwU2+xegDBurZnaWUOzfRvQgIDtpCBdPVDZ mdwg== X-Forwarded-Encrypted: i=1; AJvYcCU0s5GmAOW/SCwPXYnyfKGhUOeY0SIbrgoeNWh6vK07fLlylf0kgVoCiD2F6i3nZ6igzxcsOrsd0oKoC9mcyYBqdQ==@vger.kernel.org, AJvYcCVoJt5ie8Wd3LgvkX1Ur7alMWXKu1uUrM1BX39OKBtyhgpZWsN/XRIwWPtSdwxeG7s4jIjWg358IJg=@vger.kernel.org, AJvYcCWX7+YNBckJTqMYncn66s7mOO78FYIoGQTVXV5y0I2Nk+I/KxnvvaDcxK+/VOMH5MRNEhuCIcd3o+24yhw=@vger.kernel.org X-Gm-Message-State: AOJu0YxcK8N0Ydu19j2P+89LS8D8Y6xfqi12QXK5srfHpAjWwT05B9Ej eCAb7TqJJJynYUW9DGeJLPqzFGWCzSuF0CRuQLkLzpkqAbhZHB3feYG/ X-Gm-Gg: ASbGncsK2uK/J1lhG7QxhCp9iP/MdZ1tHEpG/bh3KwOzFu7a9BKxOvJ3VO0CLaizn0b gPIK2W57anrCV+v2DICHJor/1v1zAUDhOA5TaVxEnLm8xj/C4CnQ4pKxPxLkK3aj+CWHoKwmyLl zWT85gZBt16zPPk9n6AovXIxQYetgyKl8/eR4kB8k5qrxGoZNCpf8mvRzXyXYbufJq5qQEojXQQ jaoyMz7yT2bi6of9BOJSj49NpNLSIJNMxQ1f8Cf1qK87GWU+K9YJ79n3iMNcnWJKP0ukrTdtaLT ZZSspdR4ELUsht/BHeHnKGbQHGAyiGAVbssyi79jRIp+AftZKecExMDAgdMEcuKqvq66KmFRCw= = X-Google-Smtp-Source: AGHT+IH9BchR+WY1xG/OkUX8wAcOrhxgnJTryDQb39oorpQKhqyzK9wy1AtcbLqbWwTQkOs8cLfUHg== X-Received: by 2002:a05:6122:2049:b0:52d:bbab:2055 with SMTP id 71dfb90a1353d-52dbbab9460mr8433938e0c.10.1747674981032; Mon, 19 May 2025 10:16:21 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-52dbab4e983sm7003647e0c.31.2025.05.19.10.16.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 10:16:20 -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 , Peng Fan Subject: [PATCH v3 2/3] remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU Date: Mon, 19 May 2025 14:15:13 -0300 Message-Id: <20250519171514.61974-3-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250519171514.61974-1-hiagofranco@gmail.com> References: <20250519171514.61974-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Hiago De Franco 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. But when M-core is started, the SCFW will automatically enable the clock 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. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- v3: Unchanged. v2: Commit description updated, as suggested. Fixed Peng Fan email. v1: https://lore.kernel.org/lkml/20250505154849.64889-2-hiagofranco@gmail.com/ --- 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); From patchwork Mon May 19 17:15:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hiago De Franco X-Patchwork-Id: 891238 Received: from mail-vk1-f178.google.com (mail-vk1-f178.google.com [209.85.221.178]) (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 EA6F3288C36; Mon, 19 May 2025 17:16:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674988; cv=none; b=u5jLjYxyyySvH7bg/qt28DlCETPjUKF3AOJNIRVwpa+jy/1zdpmA74jhkmZVnSzsLS7QBGSLsbnjoPEPj7De21F99/LxhyaWHns2zq2SaSPavt2S1lcujUAbwTkEOpe/D+ROrZXx9XoGtGvtY2vATwI7W4XNM6PcVZRD4yn3Oj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747674988; c=relaxed/simple; bh=PKBq78bzubgMQ/vHAE1CkKGTFKeq16OIfKRTurY/NKM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NmzKeVBkb58jCXngJ4ms75QTEn52nT7XSgA1ewCmWEIe5Ybz9Iazaz6TY87nclB6BVtVahXJQNO/JyMNZYrXYhfS/tbOACENzCJk+ElMk2uCFIJ8QRExdJTYhyrvOhmYifTMFCzWI9F9f9VEj1qDz9qivDA7B+7xnRLPd3T6Ob0= 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=iqMdd78a; arc=none smtp.client-ip=209.85.221.178 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="iqMdd78a" Received: by mail-vk1-f178.google.com with SMTP id 71dfb90a1353d-52446b21cfdso1456144e0c.1; Mon, 19 May 2025 10:16:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747674986; x=1748279786; 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=7omkwwv22LywzPK9OnluDC1evnMI2mYZ/bT9rkSvGw8=; b=iqMdd78aXASG+Sjiu6scIMgX34l29vfHowqw2BlqyW5rCejD1FQ11pQP87G8vo+gPW YKDf+P7RsAJP8EKCxJnbgf6kVdFI2NnY6TlDePqYtGIzwklCMkRn76Pc5XQen4ulZxWX YyG/CXlPtBObQnoE1iug7u2u882Tl8CdQyIpo4auDO3wZMzrHiz+Q2ymmSi6FeVgGAxZ s6rizKSlVj0fZI3qWPAWh9eeOJ4e+ecGfHPf/UjSSxIgg0LVcKoQJUF1Slcawdo8selP QixCPmd5wpVdS1LVDEktifpfXbwy9vFXdsxkoqjq6GJmN8b/mt11eDkoyTx8m62uH/Mc LBOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747674986; x=1748279786; 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=7omkwwv22LywzPK9OnluDC1evnMI2mYZ/bT9rkSvGw8=; b=H5UQavKQ2Lf1c/8MiZBvFZNzVP6MnjZxSgttaMACIgIgc3BBOLekiTUyqelMVeNnho KMXiFX8xHAViv5ReFsEOEcl3jQOKWFGPubi/79ZCCPgAK4eJYULMj/V9LyqX1F+ExCVO lqti/y1MOwjxj4CVFBd343djLdZg66oIUYZk8hVFWgtQ9kzQ4CmW5GktaXHH4qr2hGY/ OqStJrfBt6jZxa6I4jg6ulILhUjpRXWDcA0NiV3hmID9wxjPdBkK3xUd06paunJldJSK LxhiJ+qjx3FwAOH3UnelpHBKaQTNS5SV25k1wMDQ2Nf5u/2PKd3BbARKR0LZNzVC19jz u1Hw== X-Forwarded-Encrypted: i=1; AJvYcCUR/ppc6cDpsEmhR7w1VCldpMz0M/4EYE/okQjXdIPzMuoP0l2jZS58XVzJPDdO8Qx4VXV7s+rzwDSadeo=@vger.kernel.org, AJvYcCUe1ldpBTTor2bN0PBCPTI5NqoDDtn07lNDbr0mOobWa+C0I/TSNEyQWYznvCrGEbbrno45jLAYwP42+O/id4zc/Q==@vger.kernel.org, AJvYcCWuW57DKFcnoho6XECtAAmQa9rE4MI6vhs7pEDCmKFKZaoEB0ISXD3077z25HN7Z7Exvyk3Jhn/JGA=@vger.kernel.org X-Gm-Message-State: AOJu0YzUcuuRl3sLGRgYmxuCUCTDhjZ2ydO+pQ3aJ/PWFgLnzboG0qT+ V/tCFaP3LsqJ3ow2AvjoJ1VY7oi9kClgp2oRcB4gr3j9Vlgum3w+Ugnd X-Gm-Gg: ASbGnctxwBFIQ3kQo6sga7VSF0jYJLj6lJqrHhpvMPs+E76XfAVsy00otOfK9tNH/aD 5w1cHSTfIzMNw4MgtE3f9EIt8QnaXpgMQ8O5RB9SxYcQuYD7KGJKYvRTbkcwo7lvijOkQ5px7C0 jdtl5asg4vMdtuTpzf8Qy64lzp6uwa3oXRzoDYXD4pOKlMQV218oQ5q0Wm3bT1Xhu3XQkpOy1mI z+pOi6ARJjYXX2QW1wKlJMdxBwkXC75o3uylY6PZjOgSl9B0am70qhbva6i7DjLyY76/wdujOCk cnkLWA5BMUilvHg6OrmrT9br588ZWCQCtcm5sSni46o0r+mITH34qJWeaG258M83dVEsiGBGLvl 57AnHhShm X-Google-Smtp-Source: AGHT+IE6q6gZqSe9Ip0nuMzYQBfcuFkViraMC2BkT8AsUnpaWIwgC9BeYahAGarm+vPPXTf/z60teQ== X-Received: by 2002:a05:6122:8c0f:b0:520:3536:feb5 with SMTP id 71dfb90a1353d-52dba97c622mr12664280e0c.11.1747674985608; Mon, 19 May 2025 10:16:25 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-52dbab4e983sm7003647e0c.31.2025.05.19.10.16.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 10:16:25 -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 , Peng Fan Subject: [PATCH v3 3/3] remoteproc: imx_rproc: add power mode check for remote core attachment Date: Mon, 19 May 2025 14:15:14 -0300 Message-Id: <20250519171514.61974-4-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250519171514.61974-1-hiagofranco@gmail.com> References: <20250519171514.61974-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 --- v3: Unchanged. v2: Dropped unecessary include. Removed the imx_rproc_is_on function, as suggested. v1: https://lore.kernel.org/lkml/20250505154849.64889-4-hiagofranco@gmail.com/ --- drivers/remoteproc/imx_rproc.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 627e57a88db2..9b6e9e41b7fc 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -949,6 +949,19 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv) if (of_property_read_u32(dev->of_node, "fsl,entry-address", &priv->entry)) return -EINVAL; + /* + * If remote core is already running (e.g. kicked by + * the bootloader), attach to it. + */ + ret = imx_sc_pm_get_resource_power_mode(priv->ipc_handle, + priv->rsrc_id); + if (ret < 0) + dev_err(dev, "failed to get power resource %d mode, ret %d\n", + priv->rsrc_id, ret); + + if (ret == IMX_SC_PM_PW_MODE_ON) + priv->rproc->state = RPROC_DETACHED; + return imx_rproc_attach_pd(priv); }