Current scmi drivers not work well with devlink. This patchset is a retry to address the issue in [1] which was a few months ago. Current scmi devices are not created from device tree, they are created from a scmi_device_id entry of each driver with the protocol matches with the fwnode reg value, this means there could be multiple devices created for one fwnode, but the fwnode only has one device pointer. This patchset is to do more checking before setting the device fwnode. And Introduce machine_allowlist and machine_blocklist. The reason to introduce machine_blocklist is for case that if pinctrl-scmi.c probes before pinctrl-imx-scmi.c probes on i.MX platform. Need to block pinctrl-scmi.c on i.MX platform. This may looks like hack, but seems no better way to make scmi works well with devlink. [1]: https://lore.kernel.org/arm-scmi/CAGETcx8m48cy-EzP6_uoGN7KWsQw=CfZWQ-hNUzz_7LZ0voG8A@xxxxxxxxxxxxxx/ Signed-off-by: Peng Fan <peng.fan@xxxxxxx> --- Changes in v2: - Introduce machine_allowlist and machine_blocklist - Keep of_node for cpufreq device per Cristian - Patch 2 is an optimization patch when fixing the devlink issue - Link to v1: https://lore.kernel.org/r/20241225-scmi-fwdevlink-v1-0-e9a3a5341362@xxxxxxx --- Peng Fan (4): firmware: arm_scmi: Bypass setting fwnode for scmi cpufreq firmware: arm_scmi: Add machine_allowlist and machine_blocklist pinctrl: freescale: scmi: Switch to use machine_allowlist pinctrl: scmi: Switch to use machine_blocklist drivers/firmware/arm_scmi/bus.c | 31 +++++++++++++++++++++++++++- drivers/pinctrl/freescale/pinctrl-imx-scmi.c | 15 ++++++-------- drivers/pinctrl/pinctrl-scmi.c | 15 ++++++-------- include/linux/scmi_protocol.h | 3 +++ 4 files changed, 45 insertions(+), 19 deletions(-) --- base-commit: 9dff7bbdd359c73f1b44ab592bbb17e1c174fe43 change-id: 20241225-scmi-fwdevlink-afb5131f19ea Best regards, -- Peng Fan <peng.fan@xxxxxxx>