lkml.org 
[lkml]   [2021]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v3 00/11] Apple SoC PMGR device power states driver
    From
    On 07/12/2021 06:30, Hector Martin wrote:
    > On 24/11/2021 16.34, Hector Martin wrote:
    >> This series adds the driver for the Apple PMGR device power state
    >> registers. These registers can clockgate and (in some cases) powergate
    >> specific SoC blocks. They also control the reset line, and can have
    >> additional features such as automatic power management.
    >>
    >> The current driver supports only the lowest/highest power states,
    >> provided via the genpd framework, plus reset support provided via
    >> the reset subsystem.
    >>
    >> Apple's PMGRs (there are two in the T8103) have a uniform register
    >> bit layout (sometimes with varying features). To be able to support
    >> multiple SoC generations as well as express pd relationships
    >> dynamically, this binding describes each PMGR power state control
    >> as a single devicetree node. Future SoC generations are expected to
    >> retain backwards compatibility, allowing this driver to work on them
    >> with only DT changes.
    >>
    >> #1: MAINTAINERS updates, to go via the SoC tree to avert merge hell
    >> #2-#5: Adds power-domains properties to existing device bindings
    >> #6-#7: Adds the new pmgr device tree bindings
    >> #8: The driver itself.
    >> #9: Instantiates the driver in t8103.dtsi. This adds the entire PMGR
    >> node tree and references the relevant nodes from existing devices.
    >> #7: Adds runtime-pm support to the Samsung UART driver, as a first
    >> working consumer.
    >> #8: Instantiates a second UART, to more easily test this.
    >>
    >> There are currently no consumers for the reset functionality, so
    >> it is untested, but we will be testing it soon with the NVMe driver
    >> (as it is required to allow driver re-binding to work properly).
    >>
    >> == Changes since v2 ==
    >> - DT schema review comments & patch order fix
    >> - Added the power-domains properties to devices that already mainlined
    >> - Now adds the entire PMGR tree. This turns off all devices we do not
    >> currently instantiate, and adds power-domains to those we do. The
    >> nodes were initially generated with [1] and manually tweaked. all
    >> the labels match the ADT labels (lowercased), which might be used
    >> by the bootloader in the future to conditionally disable nodes
    >> based on hardware configuration.
    >> - Dropped apple,t8103-minipmgr, since I don't expect we will ever need
    >> to tell apart multiple PMGR instances within a SoC, and added
    >> apple,t6000-pmgr{-pwrstate} for the new SoCs.
    >> - Driver now unconditionally enables auto-PM for all devices. This
    >> seems to be safe and should save power (it is not implemented for
    >> all devices; if not implemented, the bit just doesn't exist and is
    >> ignored).
    >> - If an always-on device is not powered on at boot, turn it on and
    >> print a warning. This avoids the PM core complaining. We still
    >> want to know if/when this happens, but let's not outright fail.
    >> - Other minor fixes (use PS names instead of offsets for messages,
    >> do not spuriously clear flag bits).
    >>
    >> On the way the parent node is handled: I've decided that these syscon
    >> nodes will only ever contain pwrstates and nothing else. We now size
    >> them based on the register range that contains pwrstate controls
    >> (rounded up to page size). t6000 has 3 PMGRs and t6001 has 4, and
    >> we shouldn't have to care about telling apart the multiple instances.
    >> Anything else PMGR does that needs a driver will be handled by
    >> entirely separate nodes in the future.
    >>
    >> Re t6001 and t6000 (and the rumored t6002), t6000 is basically a
    >> cut-down version of t6001 (and t6002 is rumored to be two t6001
    >> dies), down to the die floorplan, so I'm quite certain we won't need
    >> t6001/2-specific compatibles for anything shared. The t6000 devicetree
    >> will just #include the t6001 one and remove the missing devices.
    >> Hence, everything for this SoC series is going to have compatibles
    >> named apple,t6000-* (except the extra instances of some blocks in
    >> t6001 which look like they may have differences; PMGR isn't one of
    >> them, but some multimedia stuff might).
    >>
    >> [1] https://github.com/AsahiLinux/m1n1/blob/main/proxyclient/tools/pmgr_adt2dt.py
    >>
    >> Hector Martin (11):
    >> MAINTAINERS: Add PMGR power state files to ARM/APPLE MACHINE
    >> dt-bindings: i2c: apple,i2c: Add power-domains property
    >> dt-bindings: iommu: apple,dart: Add power-domains property
    >> dt-bindings: pinctrl: apple,pinctrl: Add power-domains property
    >> dt-bindings: interrupt-controller: apple,aic: Add power-domains
    >> property
    >> dt-bindings: power: Add apple,pmgr-pwrstate binding
    >> dt-bindings: arm: apple: Add apple,pmgr binding
    >> soc: apple: Add driver for Apple PMGR power state controls
    >> arm64: dts: apple: t8103: Add PMGR nodes
    >> tty: serial: samsung_tty: Support runtime PM
    >> arm64: dts: apple: t8103: Add UART2
    >>
    >> .../bindings/arm/apple/apple,pmgr.yaml | 134 ++
    >> .../devicetree/bindings/i2c/apple,i2c.yaml | 3 +
    >> .../interrupt-controller/apple,aic.yaml | 3 +
    >> .../devicetree/bindings/iommu/apple,dart.yaml | 3 +
    >> .../bindings/pinctrl/apple,pinctrl.yaml | 3 +
    >> .../bindings/power/apple,pmgr-pwrstate.yaml | 71 ++
    >> MAINTAINERS | 3 +
    >> arch/arm64/boot/dts/apple/t8103-j274.dts | 5 +
    >> arch/arm64/boot/dts/apple/t8103-pmgr.dtsi | 1136 +++++++++++++++++
    >> arch/arm64/boot/dts/apple/t8103.dtsi | 36 +
    >> drivers/soc/Kconfig | 1 +
    >> drivers/soc/Makefile | 1 +
    >> drivers/soc/apple/Kconfig | 21 +
    >> drivers/soc/apple/Makefile | 2 +
    >> drivers/soc/apple/apple-pmgr-pwrstate.c | 317 +++++
    >> drivers/tty/serial/samsung_tty.c | 93 +-
    >> 16 files changed, 1798 insertions(+), 34 deletions(-)
    >> create mode 100644 Documentation/devicetree/bindings/arm/apple/apple,pmgr.yaml
    >> create mode 100644 Documentation/devicetree/bindings/power/apple,pmgr-pwrstate.yaml
    >> create mode 100644 arch/arm64/boot/dts/apple/t8103-pmgr.dtsi
    >> create mode 100644 drivers/soc/apple/Kconfig
    >> create mode 100644 drivers/soc/apple/Makefile
    >> create mode 100644 drivers/soc/apple/apple-pmgr-pwrstate.c
    >>
    >
    > Applied everything except the samsung_tty change to asahi-soc/dt (DT
    > changes) and asahi-soc/pmgr (just the driver). Thanks everyone for the
    > reviews!
    >
    > Krzysztof: feel free to take that patch through tty if you think it's in
    > good shape. I'm not sure how much power UART runtime-pm will save us,
    > but at least it's a decent test case, so it's probably worth having.

    The tty/serial driver change goes via Greg's tree.


    Best regards,
    Krzysztof

    \
     
     \ /
      Last update: 2021-12-07 08:54    [W:4.050 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site