Hi ARM SoC Team,
Please pull ! Please note the input and rtc subsystem changes here are
agreed by the maintainers to route via SoC tree.
Regards,
Sudeep
-->8
The following changes since commit 8400291e289ee6b2bf9779ff1c83a291501f017b:
Linux 6.11-rc1 (2024-07-28 14:19:55 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git tags/scmi-updates-6.12
for you to fetch changes up to 3008598ef3b009252aaf2f5967df0b11d14258a6:
rtc: support i.MX95 BBM RTC (2024-08-28 21:54:51 +0100)
----------------------------------------------------------------
Arm SCMI updates for v6.12
Few main features include:
1. SCMI transport as stand-alone drivers
Currently the SCMI transport layer is being built embedded into in
the core SCMI stack. Some of these transports, despite being currently
part of the main SCMI module, are indeed also registered with different
subsystems like optee or virtio, and actively probed also by those.
This leads to a few awkward and convoluted tricks to properly handle
such interactions at boot time in the SCMI stack.
This change adds the new logic to the core SCMI stack so that each
existing transport is transitioned to be a standi-alone driver. With
that all the probe deferral and awkward retries between the SCMI
core stack and the transports has been removed, since no more needed.
2. Support for obtaining transport descriptors from the devicetree
SCMI platform firmwares might have different designs depending on
the platform. Some of the transport descriptors rely on such design.
E.g. the maximum receive channel timeout value might vary depending
on the specific underlying hardware and firmware design choices.
This change adds support for max-rx-timeout-ms property to describe
the transport needs of a specific platform design. It will be extended
in the future to obtain other such hardware/firmware dependent
transport related descriptors.
3. NXP i.MX95 specific SCMI vendor protocol extensions
SCMI specification allows vendor or platform-specific extensions to
the interface. NXP i.MX95 System Manager(SM) that implements SCMI
extends the interface to implement couple of vendor/platform specific
protocol, namely:
a. 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.
b. 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.
4. SCMI debug/tracking metrics
Since SCMI involves interaction with the entity(software, firmware
and/or hardware) providing services or features, it is quite useful
to track certain metrics(for pure debugging purposes) like how many
messages were sent or received, were there any failures, what kind
of failures, ..etc. This feature adds support for the same via debugfs.
Apart from these main features, there are some miscellaneous updates, fixes
and cleanups.
----------------------------------------------------------------
Cristian Marussi (11):
firmware: arm_scmi: Fix double free in OPTEE transport
firmware: arm_scmi: Introduce packet handling helpers
firmware: arm_scmi: Add support for standalone transport drivers
firmware: arm_scmi: Make MBOX transport a standalone driver
firmware: arm_scmi: Make SMC transport a standalone driver
firmware: arm_scmi: Make OPTEE transport a standalone driver
firmware: arm_scmi: Make VirtIO transport a standalone driver
firmware: arm_scmi: Remove legacy transport-layer code
firmware: arm_scmi: Update various protocols versions
firmware: arm_scmi: Remove const from transport descriptors
firmware: arm_scmi: Use max-rx-timeout-ms from devicetree
Etienne Carriere (1):
firmware: arm_scmi: Fix voltage description in failure cases
Krzysztof Kozlowski (1):
firmware: arm_scmi: Simplify with scoped for each OF child loop
Luke Parkin (5):
firmware: arm_scmi: Remove superfluous handle_to_scmi_info
firmware: arm_scmi: Add support for debug metrics at the interface
firmware: arm_scmi: Track basic SCMI communication debug metrics
firmware: arm_scmi: Create debugfs files for SCMI communication debug metrics
firmware: arm_scmi: Add support to reset the debug metrics
Peng Fan (10):
dt-bindings: firmware: arm,scmi: Add support for system power protocol
firmware: arm_scmi: Introduce setup_shmem_iomap
dt-bindings: firmware: arm,scmi: Introduce property max-rx-timeout-ms
dt-bindings: firmware: Add i.MX95 SCMI Extension protocol
firmware: arm_scmi: Add NXP i.MX95 SCMI documentation
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
input: keyboard: support i.MX95 BBM module
rtc: support i.MX95 BBM RTC
Sudeep Holla (3):
firmware: arm_scmi: Fix trivial whitespace/coding style issues
firmware: arm_scmi: Replace the use of of_node_put() to __free(device_node)
firmware: arm_scmi: Replace comma with the semicolon
.../devicetree/bindings/firmware/arm,scmi.yaml | 20 +-
.../bindings/firmware/nxp,imx95-scmi.yaml | 43 +
drivers/firmware/arm_scmi/Kconfig | 120 +--
drivers/firmware/arm_scmi/Makefile | 14 +-
drivers/firmware/arm_scmi/base.c | 6 +-
drivers/firmware/arm_scmi/clock.c | 1 +
drivers/firmware/arm_scmi/common.h | 208 +++--
drivers/firmware/arm_scmi/driver.c | 241 +++---
drivers/firmware/arm_scmi/msg.c | 32 +-
drivers/firmware/arm_scmi/perf.c | 2 +-
drivers/firmware/arm_scmi/pinctrl.c | 1 +
drivers/firmware/arm_scmi/power.c | 2 +-
drivers/firmware/arm_scmi/reset.c | 2 +-
drivers/firmware/arm_scmi/sensors.c | 2 +-
drivers/firmware/arm_scmi/shmem.c | 85 +-
drivers/firmware/arm_scmi/system.c | 2 +-
drivers/firmware/arm_scmi/transports/Kconfig | 123 +++
drivers/firmware/arm_scmi/transports/Makefile | 16 +
.../firmware/arm_scmi/{ => transports}/mailbox.c | 84 +-
drivers/firmware/arm_scmi/{ => transports}/optee.c | 131 ++-
drivers/firmware/arm_scmi/{ => transports}/smc.c | 62 +-
.../firmware/arm_scmi/{ => transports}/virtio.c | 103 +--
drivers/firmware/arm_scmi/vendors/imx/Kconfig | 25 +
drivers/firmware/arm_scmi/vendors/imx/Makefile | 3 +
drivers/firmware/arm_scmi/vendors/imx/imx-sm-bbm.c | 383 +++++++++
.../firmware/arm_scmi/vendors/imx/imx-sm-misc.c | 318 ++++++++
drivers/firmware/arm_scmi/vendors/imx/imx95.rst | 886 +++++++++++++++++++++
drivers/firmware/arm_scmi/voltage.c | 6 +-
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 | 11 +
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-imx-sm-bbm.c | 162 ++++
include/linux/firmware/imx/sm.h | 34 +
include/linux/scmi_imx_protocol.h | 59 ++
39 files changed, 3054 insertions(+), 502 deletions(-)
create mode 100644 Documentation/devicetree/bindings/firmware/nxp,imx95-scmi.yaml
create mode 100644 drivers/firmware/arm_scmi/transports/Kconfig
create mode 100644 drivers/firmware/arm_scmi/transports/Makefile
rename drivers/firmware/arm_scmi/{ => transports}/mailbox.c (85%)
rename drivers/firmware/arm_scmi/{ => transports}/optee.c (89%)
rename drivers/firmware/arm_scmi/{ => transports}/smc.c (86%)
rename drivers/firmware/arm_scmi/{ => transports}/virtio.c (94%)
create mode 100644 drivers/firmware/arm_scmi/vendors/imx/Kconfig
create mode 100644 drivers/firmware/arm_scmi/vendors/imx/Makefile
create mode 100644 drivers/firmware/arm_scmi/vendors/imx/imx-sm-bbm.c
create mode 100644 drivers/firmware/arm_scmi/vendors/imx/imx-sm-misc.c
create mode 100644 drivers/firmware/arm_scmi/vendors/imx/imx95.rst
create mode 100644 drivers/firmware/imx/sm-misc.c
create mode 100644 drivers/input/keyboard/imx-sm-bbm-key.c
create mode 100644 drivers/rtc/rtc-imx-sm-bbm.c
create mode 100644 include/linux/firmware/imx/sm.h
create mode 100644 include/linux/scmi_imx_protocol.h