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@xxxxxxx> --- 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@xxxxxxx 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@xxxxxxx --- 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@xxxxxxx>