From nobody Sun Feb 8 00:26:59 2026 Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (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 09AEE28C2B1; Wed, 7 May 2025 16:01:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633715; cv=none; b=Wit2ccjs3xTwFKIC3SAgILBtD7s+up19lE+nP4O476N9xfq3DndzQPbW4N4XH5WK9SgExIHhRX2JW5l5vrB9WlN3ijOB337C5Cn3W+RYBKwptLZVXY0SjI0/PHnbRpkjXJb6jIImBixSoy9ZUyanqeP2KLl/ZLIMkcS/K/j3xn8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633715; c=relaxed/simple; bh=8mXQzXNqnbCrAuQs9VZHxL7V2QX1630cK3yU69peHzY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CA00eTWKprp5Bvui/gtqF3CBPeGTgujF1C3nwJx3rchTNeA1G8U31PSubZK7qmF7SX7O9z+tXPCihT6Li05DjL2yA+5EGESzSMUK+suIYNSvrIpB2uVZse/Zb9lL+8aRwjXgI3QW45tFZJfFgZSW6oQ3oboi4J+js54htV4hFQk= 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=i9aJaSVR; arc=none smtp.client-ip=209.85.215.173 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="i9aJaSVR" Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-b0b2ce7cc81so6340141a12.3; Wed, 07 May 2025 09:01:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746633713; x=1747238513; 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=6FatHGE4VIxz/uHqMMNdNrLoSBEdfAr4ZgsRcgU3Gsk=; b=i9aJaSVRjOSm69CJ8OH+MeeCG3spEBqRmf/DwDfWc9ctZtpJHBJqnLNknkSj5NvMaE O1Fk6gDK0jQaaRiCMaVwDknV8tsrMyp2W9to9RvxEfHznoGREPxa6q85RLPqeNdQbMrQ xeklzsxHG1Y80eJ5yq7ab7jQkq2IRKd4arREU5vsQ89uOm/gF3usQ9gbsx1IvfgM84jZ jLaFGlXKs5a8wHs6Zzz33dvHv7HTbTeL4gd2dDJikwjE8wd1yCay4QxRcZkKWL4aw0KF c9Y7/gYk1PVBC9dGWTY7uqz7DPNNU/WCopsufGwo/ta0TLZ0+J3ePJY47MqwfaoWbBxe MFfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746633713; x=1747238513; 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=6FatHGE4VIxz/uHqMMNdNrLoSBEdfAr4ZgsRcgU3Gsk=; b=gcpGaSIAN1TkJKQVE/VDYSekxDhIGoVmqCWkDle69kgjAzH588P0meiAzpmGBiCSSy RF5x2mGA5idSzXRuUSeGrDIeun9Fhwv/yiJT2MjC3Tr0RGts4z18BjfcSAqcJiUnAJy/ xoEclwzh/J7EYcHJwTQ8/ZbtEICV0l0Rokjc0cyWmmLIq2WRQlhARrRUDnXhyo44Lc21 fM8XB5vscT9v9ny9XZepUDhApR3UL4RS/MaKUFaTB8mlFI5bBte1c+7tZ8SuARyWFCMA eGLsELWHie8pdRjyQKr0RXXm6gLhRAcakGvJThmkK4OA3XvX8wxOgWqDmItskyfERYVs trjA== X-Forwarded-Encrypted: i=1; AJvYcCUK5Va2j7VYSIAO8Fs3Ra5UGIAgrMWXiOUgmVslg83lxVvoVEm5Dc3tdBoD8NXnu4AuY9qRNIV8eOE=@vger.kernel.org, AJvYcCW3hTXcTr2kzYBPXF82L/OxiMycd1YqcEC8s6+eRhpIixeR998oVQgWfT4WPgIwBgPIzHq+u3P6ozCxs+o=@vger.kernel.org, AJvYcCXDdnL9eLHmvigNC6jyKGogO1IVZGGNi3uwZDqspSLtJx4XGRz1pc1PiOsF9+2TVV3/FQ0dLwj9f/f7rIUlUwKZpQ==@vger.kernel.org X-Gm-Message-State: AOJu0Yw4oQySPwuA3g6mAvBXZYf/gJ0lBR1z6OUGGoRTJwByddWVnzjy NrjFg64e/zGucEzdDVXt4I2OImbPIzrY7jY+i+nL8U5X85IaoQ1K X-Gm-Gg: ASbGncvgMVm1bWKms2i5xTPaeG3rF9tQNurByxKkLM+heoKAi8DEoouW6RA3qPgGd5y Olaf0kFLHjyDQ9YOloYGlCP2RGlgpywE4F9YvC0FENZ/IEjwqlqqTFG3DHZC4ZWTBJut0+mfhyl mXJ/ZmAfC9NfRPYK13QzysgnVPd8CKR+8gESKD3HHcW6UCi17pgLAiw6D9a3yGrf/NxdzqnzUku QV2ZtYnhfBTA0E37CFDdQLgs01uz95Fgqo2nnb3hjL5oflJr1l2b4q5IXPHZeRlezxluxi7LC9M bffF6UjI7+JNCCzQrTNHIFBqALd8fUPkKXeb1Ll0t4PHqB5l4OS7JQkW1+Nd+1g= X-Google-Smtp-Source: AGHT+IElN0mEQWXnntlpRZoPMaa3u2Zy25YDRR9cYt9Rbr4v3uf0PKx7X6rpO9MYHkvEDDFPthmmXQ== X-Received: by 2002:a17:90a:d2c8:b0:2f4:432d:250d with SMTP id 98e67ed59e1d1-30aac19d0c4mr5773367a91.21.1746633712887; Wed, 07 May 2025 09:01:52 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30ad4f82b86sm327242a91.44.2025.05.07.09.01.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 09:01: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 v2 1/3] firmware: imx: move get power mode function from scu-pd.c to misc.c Date: Wed, 7 May 2025 13:00:54 -0300 Message-Id: <20250507160056.11876-2-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250507160056.11876-1-hiagofranco@gmail.com> References: <20250507160056.11876-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 --- v2: moved this patch to be the first one --- 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 00:26:59 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.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 6130828C5D8; Wed, 7 May 2025 16:01:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633719; cv=none; b=juni/gsRFy4kYEg+JOj731oNW3bfaW+XhNV6aGWllSjlbWr4YRWmpJOtZfQkEfXmDw54nbqHH3Nxsh1fLP8YbmvHEozuIRJiPCTxNnK9mNtIN+Y27yIS5MBwnqaCPu71rJ+8SJW3sm3Awk+jg6V7tURuc1mRqBgtryiu6ModNDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633719; c=relaxed/simple; bh=n5VWoI8hwll6ATNrzxyGa1fhudrQz/wOOiEF2X2LP+M=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XNNDrFGmzVLO3lSLnqlgmLQOL8EOXxefG0rfZbzQM5BB/9BvG0XqOvyqSFwAip2Q+/iq2L85FOb3D+xiqPYkISg2gvQ+SfqQoxxesyg3dG+N80YfDXh8aZ1wul3OJwyRVcjp6fj6UIsPI0UUzbgOiOOGdVmIeHznDUXYJiF8hkw= 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=maVuBc34; arc=none smtp.client-ip=209.85.216.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="maVuBc34" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-30828fc17adso104773a91.1; Wed, 07 May 2025 09:01:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746633718; x=1747238518; 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=mvziy4eou3QaoE99EKXIFfvgtdzshqQ6+XPSOJVwJnI=; b=maVuBc34Wiuaz3WUOJUXxWiFlRENhfLdHhPX1UfUe7cuRZgondsmql052V/PIF+w7O jpBzHdcZAGs2jwB7QLaBhSK5yiofb1ZteIugbPKOnz6nfsMvqxUneKp7fQHTvjecCeyv j3FmKaANHZZymM2C8Z/AJKXQ68vY+ACFvAWkW1I1DHXhgwuq/yUiNu6QbHt05a9jexCz 6v+LZlIRFQZCZqIEDmhbKzl2sSqSIXY0Pz3dMV/IFHYja3y8QXd8SmuOumx+xLsZ1JPE wUhflUTRxu9vFfmmfhAcDYWnDxApB6JcOpStRVnFT6VKbtKf8kyJSDj0CguEBMnRvk8b nDig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746633718; x=1747238518; 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=mvziy4eou3QaoE99EKXIFfvgtdzshqQ6+XPSOJVwJnI=; b=hpODl4hfV6oyWsSpyEHwDoJFV6u7BdcomhXYdtSSniWWRZe6XYiwyih8er/eP/AbVf 9JPUKpg4r4B1h05AFvKBUzdw8trqo83TIL1TiuC6qoOop6tqgHAZykJ0pHPD0FjhvEtS tEAsiAvoch0CIlQ8YSvVsUk2d0F2Jnxs8mqxtBJfTd4oROozU1H09/ctpJcB3vPsPwV0 MHGExc/6OKoJHwJ2F8VUW+gJhHWFOL19S8z3K4ohTzwBAA6zYtzVSwCTzlRdy/LJXArv XFMVOm4AekXlwPsD+zYvWMWmu77e8F6F21igdipFR9wddQO1CnWElsC4sLfsdZSmROTz FBVA== X-Forwarded-Encrypted: i=1; AJvYcCVD4Qakx2246QRddCDv33LrjrmFvXJsRBYCKA0/MUP/P9pr39jJzQDjXjFr9erIRF3uIGUVd3iKGlqg3vQ=@vger.kernel.org, AJvYcCXPvK/7CraE2PM5WYcUq0fZss2IYbu1Fr7SPcucSI4gtQDAnaekMl1y1KXXcazLumpK85OTl4F9KZo=@vger.kernel.org, AJvYcCXxHBDrGRUpzl5QQqSRrD6/PEi5wWvdz8hnxxrxSOaq/MMHbgUJSdKBNuwLK5pJ0pFUD0nMZ4oCSo7HMsrUxuM49g==@vger.kernel.org X-Gm-Message-State: AOJu0Ywp05l98yp2BPwbQHq4PBGfIBL9kC0L+tj0bLmetP2duzLgDn93 Eo4uWzBXPATan2skH8HRQ3Gq160htAaJI1+V8ETbfTeBYdookoF2 X-Gm-Gg: ASbGncvBvrnm4NilkmoMIRQLUgrb/ybDK8tmcgbfvUUQUycGjgIYXYgGJpqg7nIF4KR FK5JYXYMk9P721xYFD7ub5/jOSs6Itx//HYxJ8zg0Dh8V70HCFkDZU9tx9ZFZ0MsT7O3REJVgs4 3iFxKHQQaQiV6a8VDlA3Bj5xZnMWKLFBYwQ1TlpLTUu4d57SjLqwttslLz8b7uxnN8srcFyf50W 4eFuPkfGoc0smKtAvI8dfgihMfbhqZBWdSXK3n/ji7M3hSrAFWnsGRV6HZrl0Ogz6ip81ZIVND8 egvJWUjVLgweXMno5idJmzIvIJcmEb6s5OaHwwsTMAOlt7VCCDlvJmtI60NV3kw= X-Google-Smtp-Source: AGHT+IEVQn8W2DCaOLJ8nt6une9BpBR+Zi5adCUsrGW+yDHxUa7uKGXONWqkOwz+Hr7bQ3bU6dYRUA== X-Received: by 2002:a17:90b:2241:b0:2ee:f440:53ed with SMTP id 98e67ed59e1d1-30aac2483e9mr5393663a91.31.1746633717323; Wed, 07 May 2025 09:01:57 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30ad4f82b86sm327242a91.44.2025.05.07.09.01.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 09:01:56 -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 v2 2/3] remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU Date: Wed, 7 May 2025 13:00:55 -0300 Message-Id: <20250507160056.11876-3-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250507160056.11876-1-hiagofranco@gmail.com> References: <20250507160056.11876-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 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 --- 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 *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 00:26:59 2026 Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.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 939D828C860; Wed, 7 May 2025 16:02:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633724; cv=none; b=h2wECPe4rqYLtCSYWL1tGGaOFFysSSIX0fpwPrlE/BwurzTeo8w8WH6dJKCZ7JFRmpjMFgtHKBGI3aNzgGhUn4X2L0LKhSSPQRcy08u6pinsqfvbiiQGPhYjCCALZB7L2sk+x/nk/kJmU8+c1rbudfMJFiy8cSwlQXCEFillbH8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746633724; c=relaxed/simple; bh=cTjBmIVvQ5tleYSwTnurFm1RmNLCa4KLJfhfwkC+sdY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sZw5qH+z0wxtwJPW0Eux/ful0fWddDJe3y4WZWNjEDTH4rGxEILt95laPns6gGwWqV/vkQcfjtvTiXj2/sIj6UJd4BDlfk6eUTFTy0y7bDVWSdm2E+ye5AdjR4I1Wks+K6jLDqMOS+QA0LWsZSQdhNl1IDXOcvWPlBEcgzWQvAU= 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=Hbm9vQil; arc=none smtp.client-ip=209.85.215.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="Hbm9vQil" Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-af59c920d32so4763524a12.0; Wed, 07 May 2025 09:02:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746633722; x=1747238522; 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=RO45tkjbLYjYtv/CvK6w8KfE5OYOXfvwguuZ43NCctQ=; b=Hbm9vQilPEa+VlB/pvMaWXSKs+pzefdn789bdlQoPrynftgAi882rRgKvfGxzSPIzf YAi4MoEpR+ivUAjJhlS1I74IP/Z7vSkxVYRqmckM6p/gZ/mMwqW1fX4VlNL3rqfmx503 8iNLLblGSG1YbD30Mra+SQDRAaK+aO9rjjGKj0u/4OcoBfqT5mvZmWQw3rbKto71ZXec ERv+hZD3IvnVt7ifUpr7JZF85Al9E5CrUV2BqVKSX/Nvt8iOlzdkcTiFhMzgiCWmVY21 IK9GkjaFGaefdGkgkFEBpQwscfvzpxM1RBe+SILiadSgG8FwERpw19Sw10Ea3AIDymnP +DLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746633722; x=1747238522; 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=RO45tkjbLYjYtv/CvK6w8KfE5OYOXfvwguuZ43NCctQ=; b=vTbZ+Cqs40syhEgEztERuCEeZ+NAR5uk9JZ+z41/FOug82xjSyLeT8D47f+kZAVtr8 6wzLPiq61l0qMyO2K0MVcUlaefLu363TeW8ymu2NPMu14lUbA/IpgFTiV4ltPQdrnf9t xNI7u+5Vfsgb4F8aRhQqz+X/oicHDxUFnJDzoEK+TkGNja9s5zAnQtF/CKwozmbnDNSY IND6WFOSneaJSASBiuFSnb/APf8YsVbeek5bLWn80rLDdnF9AMcZGBulcrUiWkE0t1Jp /jFbRtNiDChmegkdPCV9U1TaSjXbPJNhNIuEz2lEf6kmzHJnfCJd8lCD+NF0ncVZLtz6 co2g== X-Forwarded-Encrypted: i=1; AJvYcCUp7fQQKcTqe27QihimGBdKBwbLaLOjskPWHkSjQl3Lc+pQhK3mvvk1i+C7KvOETIW0A5TCRe1148M=@vger.kernel.org, AJvYcCXFo6jtnvs89xoUG2yNXGq2iYZjwRAM1834e6m8hhiNQUyjb+dKYxmjxFLqRDSg716qHA1xl0JLd9BU2dA=@vger.kernel.org, AJvYcCXqF9zIFxhnZVKAZwvKUovw6dEbrroPyzKA385kORN+UxWgrwutGkITQj6QMpgUX0zJx8zeJlMgVVNdwTiDDncvVw==@vger.kernel.org X-Gm-Message-State: AOJu0Yzl1FowFeZvFig1ylXOccWV1EeDK/08M5U2Pf6IJY0NLlIO7pjQ ra+LoRTS6ggGFmAX6eqLLqUZJVsKweiFK6TU/WHlbZDNj9caxwFV X-Gm-Gg: ASbGnctStF0o6MMH3I5iIf7NU8rosjyUKRDAAPF4mwUsv89hwjiaH9eni3yC9FWQWdg 8aEdAo+p01OXaKWKxKhbF0AfsB9/NuReNvIBxHbHjZhUhbDJMDyHl6WnxRVSm3+bNduc7AQIZHG WwVefI+PSTuhgMNFAWP+SFGDQMnmLl4ywqz9Brb5LdKKaTvafYnV1EIW70zRZrDpE8Kgktf6XsS g9y8dPZgScvOQbn07IuWm71vk+1idlYs8G38jTgvlC6T0QL3ipxjBhAh3mV30FTysuTQ4YDOLZQ MLO08p4/pHNV/ERuiSd1s2Vbdn8+n0wTOwyPsg5tefihtdb+WYylQMBM5gK2JbM= X-Google-Smtp-Source: AGHT+IEmJOhnycByNLVKMR/CtrELFdJfDJP1ErBRH92r56MtV1Kyb3oVdVNaoaxWV8fLKFKyiXWbdQ== X-Received: by 2002:a17:90b:554e:b0:2ff:6e72:b8e9 with SMTP id 98e67ed59e1d1-30aac2837bcmr6500291a91.25.1746633721722; Wed, 07 May 2025 09:02:01 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30ad4f82b86sm327242a91.44.2025.05.07.09.01.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 09:02:01 -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 v2 3/3] remoteproc: imx_rproc: add power mode check for remote core attachment Date: Wed, 7 May 2025 13:00:56 -0300 Message-Id: <20250507160056.11876-4-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250507160056.11876-1-hiagofranco@gmail.com> References: <20250507160056.11876-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 --- v2: Dropped unecessary include. Removed the imx_rproc_is_on function, as suggested. --- 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 *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. + */ + ret =3D 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 =3D=3D IMX_SC_PM_PW_MODE_ON) + priv->rproc->state =3D RPROC_DETACHED; + return imx_rproc_attach_pd(priv); } =20 --=20 2.39.5