[PATCH v5 0/7] firmware: support i.MX95 SCMI BBM/MISC Extenstion

Peng Fan (OSS)
2024-06-21T06:55:39Z

i.MX95 System Manager Firmware source: https://github.com/nxp-imx/imx-sm
To generate html from the repo: make html

i.MX95 System Manager Firmware support vendor extension protocol:
- Battery Backed Module(BBM) Protocol
This protocol is intended provide access to the battery-backed module.
This contains persistent storage (GPR), an RTC, and the ON/OFF button.
The protocol can also provide access to similar functions implemented via
external board components. The BBM protocol provides functions to:

- Describe the protocol version.
- Discover implementation attributes.
- Read/write GPR
- Discover the RTCs available in the system.
- Read/write the RTC time in seconds and ticks
- Set an alarm (per LM) in seconds
- Get notifications on RTC update, alarm, or rollover.
- Get notification on ON/OFF button activity.

- MISC Protocol for misc settings
This includes controls that are misc settings/actions that must be exposed
from the SM to agents. They are device specific and are usually define to
access bit fields in various mix block control modules, IOMUX_GPR, and other
GPR/CSR owned by the SM.
This protocol supports the following functions:

- Describe the protocol version.
- Discover implementation attributes.
- Set/Get a control.
- Initiate an action on a control.
- Obtain platform (i.e. SM) build information.
- Obtain ROM passover data.
- Read boot/shutdown/reset information for the LM or the system.

This patchset is to support the two protocols and users that use the
protocols. The upper protocol infomation is also included in patch 1

Signed-off-by: Peng Fan <peng.fan@nxp.com>
To: Jonathan Corbet <corbet@lwn.net>
To: Shawn Guo <shawnguo@kernel.org>
To: Sascha Hauer <s.hauer@pengutronix.de>
To: Pengutronix Kernel Team <kernel@pengutronix.de>
To: Fabio Estevam <festevam@gmail.com>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Sudeep Holla <sudeep.holla@arm.com>
To: Cristian Marussi <cristian.marussi@arm.com>
To: Peng Fan <peng.fan@nxp.com>
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: devicetree@vger.kernel.org

Changes in v5:
- Collected missing comments in v1, I not intend to miss any, and sorry
if I make something wrong.
- Update the documentation per Cristian's comments. Not sure we need a
new directory for firmware stuff, not firmware-guide direcotyr.
- Added R-b for patch 3 "firmware: arm_scmi: add initial support for i.MX BBM protocol"
- For patch 4, added comments in scmi_imx_misc_ctrl_validate_id, use
num_sources in scmi_protocol_events, move scmi_imx_misc_protocol_init
near init, use get_max_msg_size and drop MISC_MAX_VAL.
- Separate the sm-bbm.c into rtc and key drivers with
each has its own notifiy callback, put the driver in rtc and input
directory, handle error return, add kconfig for each driver, use
to_delayed_work, use READ/WRITE_ONCE, still keep ops as private,
device_init_wakeup set false if failure.
- For patch 5, Add kconfig for sm-misc.c. Only support one instance, so add a check
ops in probe.
- Link to v4: https://lore.kernel.org/r/20240524-imx95-bbm-misc-v2-v4-0-dc456995d590@nxp.com

Changes in v4:
- Rebased to next-20240520
- Added vendor/sub-vendor, currently the sub-vendor is "i.MX95 EVK",
this may not be proper, I will check with firmware owner on this to
seen any update. please still help review other parts of the patchset.
- Added constrain value in binding doc, change the property name from
nxp,wakeup-sources to nxp,ctrl-ids to match firmware definition.
- Put i.MX code under new directory imx/
- Change the misc event from three to one, the code in previous patchset
was wrong.
- Link to v3: https://lore.kernel.org/r/20240412-imx95-bbm-misc-v2-v3-0-4380a4070980@nxp.com

Changes in v3:
- Update cover letter and patch commit log to include more information.
- Add documentation for BBM and MISC protocols under
Documentation/firmware-guide/nxp. Not sure if this is a good place.
- Fix the bindings, hope I have addressed the issues.
Drop imx,scmi.yaml.
Add nxp,imx95-scmi.yaml for NXP vendor protocol properties.
Add constraints, add nxp prefix for NXP vendor properties.
Use anyOf in arm,scmi.yaml to ref vendor yaml.
- Use cpu_to_le32 per Cristian
- Link to v2: https://lore.kernel.org/r/20240405-imx95-bbm-misc-v2-v2-0-9fc9186856c2@nxp.com

Changes in v2:
- Sorry for late update since v1.
- Add a new patch 1
- Address imx,scmi.yaml issues
- Address comments for imx-sm-bbm.c and imx-sm-misc.c
- I not add vendor id since related patches not landed in linux-next.
- Link to v1: https://lore.kernel.org/r/20240202-imx95-bbm-misc-v1-0-3cb743020933@nxp.com

---
Peng Fan (7):
Documentation: firmware-guide: add NXP i.MX95 SCMI documentation
dt-bindings: firmware: add i.MX95 SCMI Extension protocol
firmware: arm_scmi: add initial support for i.MX BBM protocol
firmware: arm_scmi: add initial support for i.MX MISC protocol
firmware: imx: add i.MX95 MISC driver
rtc: support i.MX95 BBM RTC
input: keyboard: support i.MX95 BBM module

.../devicetree/bindings/firmware/arm,scmi.yaml | 5 +-
.../bindings/firmware/nxp,imx95-scmi.yaml | 43 +
Documentation/firmware-guide/index.rst | 10 +
Documentation/firmware-guide/nxp/imx95-scmi.rst | 887 +++++++++++++++++++++
Documentation/firmware-guide/nxp/index.rst | 10 +
drivers/firmware/arm_scmi/Kconfig | 2 +
drivers/firmware/arm_scmi/Makefile | 1 +
drivers/firmware/arm_scmi/imx/Kconfig | 23 +
drivers/firmware/arm_scmi/imx/Makefile | 3 +
drivers/firmware/arm_scmi/imx/imx-sm-bbm.c | 379 +++++++++
drivers/firmware/arm_scmi/imx/imx-sm-misc.c | 315 ++++++++
drivers/firmware/imx/Kconfig | 11 +
drivers/firmware/imx/Makefile | 1 +
drivers/firmware/imx/sm-misc.c | 119 +++
drivers/input/keyboard/Kconfig | 11 +
drivers/input/keyboard/Makefile | 1 +
drivers/input/keyboard/imx-sm-bbm-key.c | 225 ++++++
drivers/rtc/Kconfig | 8 +
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-imx-sm-bbm.c | 168 ++++
include/linux/firmware/imx/sm.h | 33 +
include/linux/scmi_imx_protocol.h | 59 ++
22 files changed, 2314 insertions(+), 1 deletion(-)
---
base-commit: 76db4c64526c5e8ba0f56ad3d890dce8f9b00bbc
change-id: 20240405-imx95-bbm-misc-v2-b5e9d24adc42

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