[PATCH v2 0/4] scmi: Bypass set fwnode and introduce allow/block list to address devlink issue

Peng Fan (OSS)
2025-01-20T07:16:07Z

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@mail.gmail.com/

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
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@nxp.com

---
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@nxp.com>