[PATCH v3 0/7] firmware: scmi/imx: Add i.MX95 LMM/CPU Protocol

Peng Fan (OSS)
2025-03-03T02:54:26Z

i.MX95 System Manager(SM) implements Logical Machine Management(LMM) and
CPU protocol to manage Logical Machine(LM) and CPUs(eg, M7).

To manage M7 in a separate LM or in same LM as Linux itself. LMM APIs
and CPU APIs are needed.

When M7 is in LM 'lm-m7', and this LM is managable by 'linux-lm',
linux could use LMM_BOOT, LMM_SHUTDOWN and etc to manage 'lm-m7'.

If in same LM, use CPU_START, CPU_STOP, CPU_RESET_VECTOR_SET and etc to
manage M7.

Both LMM/CPU APIs will be used by remoteproc driver. The remoteproc
patchset will be posted out after this patchset gets reviewed or in
good shape per Maitainer's view.

Build pass with COMPILE_TEST
Tested with remoteproc on i.MX95

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Changes in v3:
Patch 1: Correct LMM_ATTRIBUTE return values
Update the return status of LM_BOOT/RESET/SHUTDOWN/WAKE
clarify sync/async in the Introduction chapter of LMM
Update the Origin entry in LMM_RESET_REASON
Clarify CPU run/sleep mode
Add note for CPU protocol to indicate AP using PSCI, non-AP use OS.
Specify mandatory for each command in LMM/CPU per firmware owner.
For BBM/MISC which have optional command, I will update doc in separate patch later
Patch 2: Add description in binding doc
Patch 3: Unify scmi_imx_lmm_[boot,power_on], Use le32_get_bits
Patch 4: Unify scmi_imx_cpu_[start,stop], Use le32_encode_bits
Add pointer check in scmi_imx_cpu_started
correct nr_cpus calculation
Patch 5: Unify lmm shutdown,boot/power_on, update kconfig to avoid build bot issue
Add R-b
Patch 6: Unity cpu start/stop, update Kconfig to avoid build bot issue.
Add R-b

Ran smatch as below, no issue found.
~/smatch/smatch_scripts/kchecker drivers/firmware/arm_scmi/vendors/imx/
~/smatch/smatch_scripts/kchecker drivers/firmware/imx/

- Link to v2: https://lore.kernel.org/r/20250212-imx-lmm-cpu-v2-0-3aee005968c1@nxp.com

Changes in v2:
- Add dt-bindings patch 2
- Add a maintainer entry with patch 7
- Update doc to address various questions and make it clear
- Use strscpy to use scmi server returned string
- Drop extra blank line
- Shrink scmi_imx_cpu_attributes_get function args.
- Typo fixes
- Add LMM_RESET_VECTOR_SET
- Link to v1: https://lore.kernel.org/r/20250121-imx-lmm-cpu-v1-0-0eab7e073e4e@nxp.com

---
Peng Fan (7):
firmware: arm_scmi: imx: Add LMM and CPU documentation
dt-bindings: firmware: Add i.MX95 SCMI LMM and CPU protocol
firmware: arm_scmi: imx: Add i.MX95 LMM protocol
firmware: arm_scmi: imx: Add i.MX95 CPU Protocol
firmware: imx: Add i.MX95 SCMI LMM driver
firmware: imx: Add i.MX95 SCMI CPU driver
MAINTAINERS: add entry for i.MX SCMI extensions

.../bindings/firmware/nxp,imx95-scmi.yaml | 23 +
MAINTAINERS | 9 +
drivers/firmware/arm_scmi/vendors/imx/Kconfig | 24 +
drivers/firmware/arm_scmi/vendors/imx/Makefile | 2 +
drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c | 276 +++++++
drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c | 257 +++++++
drivers/firmware/arm_scmi/vendors/imx/imx95.rst | 801 +++++++++++++++++++++
drivers/firmware/imx/Kconfig | 22 +
drivers/firmware/imx/Makefile | 2 +
drivers/firmware/imx/sm-cpu.c | 85 +++
drivers/firmware/imx/sm-lmm.c | 91 +++
include/linux/firmware/imx/sm.h | 19 +
include/linux/scmi_imx_protocol.h | 42 ++
13 files changed, 1653 insertions(+)
---
base-commit: fb2b3e3bd74b8a3f742eaade06f6565323cf4bdf
change-id: 20250120-imx-lmm-cpu-418daaa257e2

Best regards,
--
Peng Fan <peng.fan@nxp.com>