Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH/RFC 0/9] R-Car X5H Ironhide pure SCMI proof-of-concept
@ 2026-06-11 13:02 Geert Uytterhoeven
  2026-06-11 13:02 ` [PATCH/RFC 1/9] firmware: arm_scmi: Replace scmi_power_proto_ops.name_get() by .info_get() Geert Uytterhoeven
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Geert Uytterhoeven @ 2026-06-11 13:02 UTC (permalink / raw)
  To: Sudeep Holla, Cristian Marussi, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Michael Turquette, Stephen Boyd, Brian Masney,
	Ulf Hansson
  Cc: arm-scmi, linux-arm-kernel, devicetree, linux-clk, linux-pm,
	linux-renesas-soc, linux-kernel, Geert Uytterhoeven

	Hi all,

As promised[1], I tried handling all issues with current R-Car X5H
Ironhide SCP FW SDK v4.28, v4.31, and v4.32 as SCMI quirks.  This helped
identifying missing features in the SCMI drivers and/or protocol:
  - The SCMI PM domain driver does not support always-on domains.
    This limits the ability of the Linux Power Management core to
    optimize its decisions by taking into account which PM domains
    cannot be disabled,
  - The SCMI protocol does not support clock domains.
  - Power management of on-SoC modules is typically handled through two
    methods: module power control and module clock gating.  The former
    can be exposed as an SCMI power domain, the latter as an SCMI clock.
    Currently, the SCMI clock protocol does not support advertizing
    whether a clock is intended for power-management of a hardware
    module, so such clocks can not be managed automatically through
    Runtime PM.  To solve this in general, the SCMI CLOCK_ATTRIBUTES
    could be extended with a new flag in the returned attributes (which
    is not done by this series).

Series overvies:
  - Patch 1 is a preparatory refactoring,
  - Patches 2-3 add support for always-on power areas,
  - Patches 4-7 add support for clock domains,
  - Patch 8 adds an SCMI quirk to advertize power-management clocks on
    R-Car X5H,
  - Patch 9 switches the (still minimal) Ironhide DTS to SCMI (this
    needs manual configuration for the actual SCP firmware version, as
    the SCMI domain IDs differ).
Note that other SCMI quirks than patch 8 are not included in this
series[2], as IMHO the original issues must be fixed in the SCP firmware
instead.

While the result works, and we might get stable SCMI domain IDs
(eventually), I still prefer the approach taking by the CPG/MDLC
remapping driver series[3], as:
  - It describes in DT the actual hardware (which is needed for U-Boot
    IPL),
  - It does not depend on SCMI domain IDs defined by firmware that is
    still under active development,
  - It lets us keep the DTB stable, while SCMI domain IDs may change,
    depending on system partitioning (i.e. software policy),
  - It allows us to support (in the Renesas LTS tree, not upstream)
    firmware versions that already exist, but need quirks for proper
    operation.

Thanks for your comments!

[1] "Re: [PATCH/RFC 05/14] firmware: arm_scmi: Add scmi_get_base_info()"
    https://lore.kernel.org/CAMuHMdWJvMH+a1RqozbaCxxH_8M569JcruTFa8PW+87FysnjHw@mail.gmail.com

[2] List of SCMI quirks which are not included in this series, but are
    needed to boot on R-Car X5H Ironhide:

	firmware: arm_scmi: quirk: Handle critical clocks on R-Car X5H
	firmware: arm_scmi: quirk: Handle bad power domains on R-Car X5H
	firmware: arm_scmi: quirk: Handle bad clocks on R-Car X5H
	firmware: arm_scmi: quirk: Handle wrong clock rates on R-Car X5H
	firmware: arm_scmi: Add support for retrieving rates from another clock
	firmware: arm_scmi: quirk: Handle zero clock rates on R-Car X5H
	firmware: arm_scmi: quirk: Add always-on power domains on R-Car X5H
	firmware: arm_scmi: quirk: Handle broken HSCIF0 reset on R-Car X5H

    With diffstat:

	 drivers/firmware/arm_scmi/clock.c  | 2555 +++++++++++++++++++++++++++-
	 drivers/firmware/arm_scmi/power.c  |   83 +
	 drivers/firmware/arm_scmi/quirks.c |   12 +
	 drivers/firmware/arm_scmi/quirks.h |    4 +
	 drivers/firmware/arm_scmi/reset.c  |    9 +
	 5 files changed, 2655 insertions(+), 8 deletions(-)

[3] "[PATCH/RFC 00/14] R-Car X5H Ironhide SCMI CPG/MDLC remapping"
    https://lore.kernel.org/cover.1776793163.git.geert+renesas@glider.be

Geert Uytterhoeven (9):
  firmware: arm_scmi: Replace scmi_power_proto_ops.name_get() by
    .info_get()
  firmware: arm_scmi: Advertize always-on power domains
  pmdomain: arm: scmi: Add always-on support
  firmware: arm_scmi: Add a flag for power-management clocks
  clk: scmi: Add scmi_clk_is_pm_clk()
  dt-bindings: firmware: arm,scmi: Document arm,clock-domain
  pmdomain: arm: scmi: Add clock domain support
  firmware: arm_scmi: quirk: Handle power management clocks on R-Car X5H
  arm64: dts: renesas: ironhide: Switch to pure SCMI

 .../bindings/firmware/arm,scmi.yaml           |  7 ++
 .../boot/dts/renesas/r8a78000-ironhide.dts    | 44 +++++++++
 drivers/clk/clk-scmi.c                        |  9 ++
 drivers/firmware/arm_scmi/clock.c             | 15 +++
 drivers/firmware/arm_scmi/power.c             | 21 +++--
 drivers/pmdomain/arm/Kconfig                  |  1 +
 drivers/pmdomain/arm/scmi_pm_domain.c         | 93 ++++++++++++++++++-
 include/linux/clk/scmi.h                      | 17 ++++
 include/linux/scmi_protocol.h                 | 12 ++-
 9 files changed, 204 insertions(+), 15 deletions(-)
 create mode 100644 include/linux/clk/scmi.h

-- 
2.43.0

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2026-06-11 13:03 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-11 13:02 [PATCH/RFC 0/9] R-Car X5H Ironhide pure SCMI proof-of-concept Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 1/9] firmware: arm_scmi: Replace scmi_power_proto_ops.name_get() by .info_get() Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 2/9] firmware: arm_scmi: Advertize always-on power domains Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 3/9] pmdomain: arm: scmi: Add always-on support Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 4/9] firmware: arm_scmi: Add a flag for power-management clocks Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 5/9] clk: scmi: Add scmi_clk_is_pm_clk() Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 6/9] dt-bindings: firmware: arm,scmi: Document arm,clock-domain Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 7/9] pmdomain: arm: scmi: Add clock domain support Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 8/9] firmware: arm_scmi: quirk: Handle power management clocks on R-Car X5H Geert Uytterhoeven
2026-06-11 13:02 ` [PATCH/RFC 9/9] arm64: dts: renesas: ironhide: Switch to pure SCMI Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox