Re: [PATCH] mfd: db8500-prcmu: Add devicetree bindings
From: Rob Herring
Date: Wed Dec 09 2020 - 18:40:04 EST
On Fri, Dec 04, 2020 at 02:06:55PM +0100, Linus Walleij wrote:
> This driver was merged in the early days of device tree
> on Arm in 2012 and somehow we failed to provide bindings
> for it. Fix it up with some YAML bindings.
>
> Cc: devicetree@xxxxxxxxxxxxxxx
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---
> .../bindings/mfd/stericsson,db8500-prcmu.yaml | 282 ++++++++++++++++++
> 1 file changed, 282 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/stericsson,db8500-prcmu.yaml
>
> diff --git a/Documentation/devicetree/bindings/mfd/stericsson,db8500-prcmu.yaml b/Documentation/devicetree/bindings/mfd/stericsson,db8500-prcmu.yaml
> new file mode 100644
> index 000000000000..10cb7d40ebf2
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/stericsson,db8500-prcmu.yaml
> @@ -0,0 +1,282 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/stericsson,db8500-prcmu.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ST-Ericsson DB8500 PRCMU - Power Reset and Control Management Unit
> +
> +maintainers:
> + - Linus Walleij <linus.walleij@xxxxxxxxxx>
> +
> +description:
> + The DB8500 Power Reset and Control Management Unit is an XP70 8-bit
> + microprocessor that is embedded in the always-on power domain of the
> + DB8500 SoCs to manage the low power states, powering up and down parts
> + of the silicon, and controlling reset of different IP blocks.
> +
> +properties:
> + $nodename:
> + pattern: '^prcmu@80157000$'
That's awfully specific. While I guess this will only ever be this one
platform, it could still have some address translations that would
change the unit-addresses. So I wouldn't enforce the unit-addresses
here.
> +
> + compatible:
> + description: The device is compatible both to the device-specific
> + compatible "stericsson,db8500-prcmu" and "syscon". The latter
> + compatible is needed for the device to be exposed as a system
> + controller so that arbitrary registers can be access by
> + different operating system components.
> + items:
> + - const: stericsson,db8500-prcmu
> + - const: syscon
> +
> + reg:
> + items:
> + - description: Main PRCMU register area
> + - description: PRCMU TCPM register area
> + - description: PRCMU TCDM register area
> +
> + reg-names:
> + items:
> + - const: prcmu
> + - const: prcmu-tcpm
> + - const: prcmu-tcdm
> +
> + interrupts:
> + maxItems: 1
> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 1
> +
> + ranges: true
> +
> + interrupt-controller: true
> +
> + '#interrupt-cells':
> + const: 2
> +
> + db8500-prcmu-regulators:
> + description: Node describing the DB8500 regulators. These are mainly
> + power rails inside the silicon but some of those are also routed
> + out to external pins.
> + type: object
> +
> + properties:
> + compatible:
> + const: stericsson,db8500-prcmu-regulator
> +
> + db8500_vape:
> + description: The voltage for the application processor, the
> + main voltage domain for the chip.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_varm:
> + description: The voltage for the ARM Cortex A-9 CPU.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vmodem:
> + description: The voltage for the modem subsystem.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vpll:
> + description: The voltage for the phase locked loop clocks.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vsmps1:
> + description: Also known as VIO12, is a step-down voltage regulator
> + for 1.2V I/O. SMPS means System Management Power Source.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vsmps2:
> + description: Also known as VIO18, is a step-down voltage regulator
> + for 1.8V I/O. SMPS means System Management Power Source.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vsmps3:
> + description: This is a step-down voltage regulator
> + for 0.87 thru 1.875V I/O. SMPS means System Management Power Source.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_vrf1:
> + description: RF transciever voltage regulator.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sva_mmdsp:
> + description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
> + voltage regulator. This is the voltage for the accelerator DSP
> + for video encoding and decoding.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sva_mmdsp_ret:
> + description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
> + voltage regulator for retention mode.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sva_pipe:
> + description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
> + voltage regulator for the data pipe.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sia_mmdsp:
> + description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
> + voltage regulator. This is the voltage for the accelerator DSP
> + for image encoding and decoding.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sia_mmdsp_ret:
> + description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
> + voltage regulator for retention mode.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sia_pipe:
> + description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
> + voltage regulator for the data pipe.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_sga:
> + description: Smart Graphics Accelerator (SGA) voltage regulator.
> + This is in effect controlling the power to the MALI400 3D
> + accelerator block.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_b2r2_mcde:
> + description: Blit Blend Rotate and Rescale (B2R2), and Multi-Channel
> + Display Engine (MCDE) voltage regulator. These are two graphics
> + blocks.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_esram12:
> + description: Embedded Static RAM (ESRAM) 1 and 2 voltage regulator.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_esram12_ret:
> + description: Embedded Static RAM (ESRAM) 1 and 2 voltage regulator for
> + retention mode.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_esram34:
> + description: Embedded Static RAM (ESRAM) 3 and 4 voltage regulator.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + db8500_esram34_ret:
> + description: Embedded Static RAM (ESRAM) 3 and 4 voltage regulator for
> + retention mode.
> + type: object
> + $ref: ../regulator/regulator.yaml#
> +
> + required:
> + - compatible
> + - db8500_vape
> + - db8500_varm
> + - db8500_vmodem
> + - db8500_vpll
> + - db8500_vsmps1
> + - db8500_vsmps2
> + - db8500_vsmps3
> + - db8500_vrf1
> + - db8500_sva_mmdsp
> + - db8500_sva_mmdsp_ret
> + - db8500_sva_pipe
> + - db8500_sia_mmdsp
> + - db8500_sia_mmdsp_ret
> + - db8500_sia_pipe
> + - db8500_sga
> + - db8500_b2r2_mcde
> + - db8500_esram12
> + - db8500_esram12_ret
> + - db8500_esram34
> + - db8500_esram34_ret
> +
> + additionalProperties: false
> +
> + thermal@801573c0:
> + description: Node describing the DB8500 thermal control functions.
> + This binds to an operating system driver that monitors the
> + temperature of the SoC.
> + type: object
> +
> + properties:
> + compatible:
> + const: stericsson,db8500-thermal
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + items:
> + - description: Hotmon low interrupt (falling temperature)
> + - description: Hotmon high interrupt (rising temperature)
> +
> + interrupt-names:
> + items:
> + - const: IRQ_HOTMON_LOW
> + - const: IRQ_HOTMON_HIGH
> +
> + '#thermal-sensor-cells':
> + const: 0
> +
> + additionalProperties: false
> +
> + prcmu-timer-4@80157450:
> + description: Node describing the externally visible timer 4 in the
> + PRCMU block. This timer is interesting to the operating system
> + since even thought it has a very low resolution (32768 Hz) it is
> + always on, and thus provides a consistent monotonic timeline for
> + the system.
> + type: object
> +
> + properties:
> + compatible:
> + const: stericsson,db8500-prcmu-timer-4
> +
> + reg:
> + maxItems: 1
> +
> + additionalProperties: false
> +
> +patternProperties:
> + "^ab850[05]$":
> + description: Node describing the Analog Baseband 8500 mixed-signals
> + ASIC AB8500 and subcomponents. The AB8500 is accessed through the
> + PRCMU and hence it appears here. This component has a separate
> + set of devicetree bindings. The AB8505 is a newer version of the
> + same ASIC.
> + type: object
> +
> +required:
> + - compatible
> + - reg
> + - '#address-cells'
> + - '#size-cells'
> + - ranges
> + - interrupt-controller
> + - '#interrupt-cells'
> + - db8500-prcmu-regulators
> + - thermal@801573c0
> + - prcmu-timer-4@80157450
> +
> +dependencies:
> + interrupt-controller: [ interrupts ]
> +
> +additionalProperties: false
> --
> 2.26.2
>