Thread (12 messages) 12 messages, 4 authors, 2025-08-22

Re: [PATCH 1/3] firmware: imx: Add stub functions for SCMI MISC API

From: Peng Fan <hidden>
Date: 2025-08-21 08:45:50
Also in: imx, lkml

Hi Arnd,

On Wed, Aug 20, 2025 at 03:55:20PM +0200, Arnd Bergmann wrote:
On Thu, Aug 7, 2025, at 03:47, Peng Fan wrote:
quoted
To ensure successful builds when CONFIG_IMX_SCMI_MISC_DRV is not enabled,
this patch adds static inline stub implementations for the following
functions:

  - scmi_imx_misc_ctrl_get()
  - scmi_imx_misc_ctrl_set()

These stubs return -EOPNOTSUPP to indicate that the functionality is not
supported in the current configuration. This avoids potential build or
link errors in code that conditionally calls these functions based on
feature availability.

Fixes: 540c830212ed ("firmware: imx: remove duplicate scmi_imx_misc_ctrl_get()")
Fixes: 0b4f8a68b292 ("firmware: imx: Add i.MX95 MISC driver")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
I don't think this does what you describe, at least not reliably:
quoted
+#if IS_ENABLED(CONFIG_IMX_SCMI_MISC_DRV)
 int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val);
 int scmi_imx_misc_ctrl_set(u32 id, u32 val);
+#else
+static inline int scmi_imx_misc_ctrl_get(u32 id, u32 *num, u32 *val)
+{
+	return -EOPNOTSUPP;
+}
When a caller of this function is in a built-in driver but the
IMX_SCMI_MISC_DRV code is in a loadable module, you still
get a link failure, see 514b2262ade4 ("firmware: arm_scmi:
Fix i.MX build dependency") for an example.

As you still need the correct Kconfig dependencies, I
think your patch here is not helpful.
The consumer driver still needs Kconfig dependcies, such as
  depends on IMX_SCMI_MISC_DRV || !IMX_SCMI_MISC_DRV

So when IMX_SCMI_MISC_DRV is module built, the consumer driver will
also be module built.

But if IMX_SCMI_MISC_DRV is n, the consumer driver is y, there will be
link error.

The consumer driver is to support platform A and platform B.

Platform A does not require the real API in IMX_SCMI_MISC_DRV.
Platform B requires the real API in IMX_SCMI_MISC_DRV.

So when producing an image for platform A, IMX_SCMI_MISC_DRV could set
to n to make Image smaller. Introducing the stub API is mainly for this
case.

Hope this is clear

Thanks,
Peng
    Arnd
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help