Re: [PATCH v5 6/6] clk: scmi: Add i.MX95 OEM extension support for SCMI clock driver

From: Sebin Francis
Date: Tue Nov 11 2025 - 06:42:00 EST


Hi Peng,

On 05/11/25 21:18, Peng Fan wrote:
Hi Sebin,

Subject: Re: [PATCH v5 6/6] clk: scmi: Add i.MX95 OEM extension
support for SCMI clock driver

Hi Peng,

On 09/10/25 09:18, Peng Fan wrote:
- Introduce 'clk-scmi-oem.c' to support vendor-specific OEM
extensions
for the SCMI clock driver, allows clean integration of vendor-
specific
features without impacting the core SCMI clock driver logic.
- Extend 'clk-scmi.h' with 'scmi_clk_oem' structure and related
declarations.
- Initialize OEM extensions via 'scmi_clk_oem_init()'.
- Support querying OEM-specific features and setting spread
spectrum.
- Pass 'scmi_device' to 'scmi_clk_ops_select()' for OEM data access.

Signed-off-by: Peng Fan <peng.fan@xxxxxxx>

Thanks for the patch. I only have a minor comment, otherwise the
patch looks good.

[...]

+
+int scmi_clk_oem_init(struct scmi_device *sdev) {
+ const struct scmi_handle *handle = sdev->handle;
+ int i, size = ARRAY_SIZE(info);
+
+ for (i = 0; i < size; i++) {
+ if (strcmp(handle->version->vendor_id,
SCMI_IMX_VENDOR) ||
+ strcmp(handle->version->sub_vendor_id,
SCMI_IMX_SUBVENDOR))
+ continue;
+ if (info[i].compatible &&
+ !of_machine_is_compatible(info[i].compatible))
+ continue;
+
+ break;
+ }
+
+ if (i < size)
+ dev_set_drvdata(&sdev->dev, (void *)info[i].data);
+
+ return 0;
+}

This above logic is tailor made for IMX is it possible to make it generic?

Yeah. I will update it. It should compare with each entry in
const struct scmi_clk_oem_info info[] = {
{ SCMI_IMX_VENDOR, SCMI_IMX_SUBVENDOR, NULL, &scmi_clk_oem_imx },
};

To TI, I think it could be extended to
+const struct scmi_clk_oem_info info[] = {
+ { SCMI_IMX_VENDOR, SCMI_IMX_SUBVENDOR, NULL, &scmi_clk_oem_imx },
+ { SCMI_TI_VENDOR, SCMI_TI_SUBVENDOR, NULL, &scmi_clk_oem_ti },
+};


Thanks for updating it. Yes, for TI as you mentioned we will add one entry.

Thanks
Sebin.

Regards
Peng.


diff --git a/drivers/clk/clk-scmi.c b/drivers/clk/clk-scmi.c index

bf85924d61985eb9e596419349eb883e3817de73..1ed2091e3d4a951
c8662db4c94de
e4b9c98b8326 100644
--- a/drivers/clk/clk-scmi.c
+++ b/drivers/clk/clk-scmi.c
@@ -14,6 +14,8 @@
#include <linux/scmi_protocol.h>
#include <asm/div64.h>

+#include "clk-scmi.h"

[...]


Thanks
Sebin