Commit 59f527dd authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'zynqmp-soc-for-v5.1' of https://github.com/Xilinx/linux-xlnx into arm/drivers

arm64: zynqmp: SoC changes for v5.1

- Extend firmware interface with reset, nvmem,
  power management and power domain support

- Add reset, nvmem driver, power management and
  power domain drivers
-

* tag 'zynqmp-soc-for-v5.1' of https://github.com/Xilinx/linux-xlnx

:
  drivers: soc: xilinx: Add ZynqMP power domain driver
  firmware: xilinx: Add APIs to control node status/power
  dt-bindings: power: Add ZynqMP power domain bindings
  drivers: soc: xilinx: Add ZynqMP PM driver
  firmware: xilinx: Implement ZynqMP power management APIs
  dt-bindings: soc: Add ZynqMP PM bindings
  nvmem: zynqmp: Added zynqmp nvmem firmware driver
  dt-bindings: nvmem: Add bindings for ZynqMP nvmem driver
  firmware: xilinx: Add zynqmp_pm_get_chipid() API
  reset: reset-zynqmp: Adding support for Xilinx zynqmp reset controller.
  dt-bindings: reset: Add bindings for ZynqMP reset driver
  firmware: xilinx: Add reset API's

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 57f87c79 e23d9c6d
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
--------------------------------------------------------------------------
=  Zynq UltraScale+ MPSoC nvmem firmware driver binding =
--------------------------------------------------------------------------
The nvmem_firmware node provides access to the hardware related data
like soc revision, IDCODE... etc, By using the firmware interface.

Required properties:
- compatible: should be "xlnx,zynqmp-nvmem-fw"

= Data cells =
Are child nodes of silicon id, bindings of which as described in
bindings/nvmem/nvmem.txt

-------
 Example
-------
firmware {
	zynqmp_firmware: zynqmp-firmware {
		compatible = "xlnx,zynqmp-firmware";
		method = "smc";

		nvmem_firmware {
			compatible = "xlnx,zynqmp-nvmem-fw";
			#address-cells = <1>;
			#size-cells = <1>;

			/* Data cells */
			soc_revision: soc_revision {
				reg = <0x0 0x4>;
			};
		};
	};
};

= Data consumers =
Are device nodes which consume nvmem data cells.

For example:
	pcap {
		...

		nvmem-cells = <&soc_revision>;
		nvmem-cell-names = "soc_revision";

		...
	};
+25 −0
Original line number Diff line number Diff line
--------------------------------------------------------------------
Device Tree Bindings for the Xilinx Zynq MPSoC Power Management
--------------------------------------------------------------------
The zynqmp-power node describes the power management configurations.
It will control remote suspend/shutdown interfaces.

Required properties:
 - compatible:		Must contain:	"xlnx,zynqmp-power"
 - interrupts:		Interrupt specifier

-------
Example
-------

firmware {
	zynqmp_firmware: zynqmp-firmware {
		compatible = "xlnx,zynqmp-firmware";
		method = "smc";

		zynqmp_power: zynqmp-power {
			compatible = "xlnx,zynqmp-power";
			interrupts = <0 35 4>;
		};
	};
};
+34 −0
Original line number Diff line number Diff line
-----------------------------------------------------------
Device Tree Bindings for the Xilinx Zynq MPSoC PM domains
-----------------------------------------------------------
The binding for zynqmp-power-controller follow the common
generic PM domain binding[1].

[1] Documentation/devicetree/bindings/power/power_domain.txt

== Zynq MPSoC Generic PM Domain Node ==

Required property:
 - Below property should be in zynqmp-firmware node.
 - #power-domain-cells:	Number of cells in a PM domain specifier. Must be 1.

Power domain ID indexes are mentioned in
include/dt-bindings/power/xlnx-zynqmp-power.h.

-------
Example
-------

firmware {
	zynqmp_firmware: zynqmp-firmware {
		...
		#power-domain-cells = <1>;
		...
	};
};

sata {
	...
	power-domains = <&zynqmp_firmware 28>;
	...
};
+52 −0
Original line number Diff line number Diff line
--------------------------------------------------------------------------
 =  Zynq UltraScale+ MPSoC reset driver binding =
--------------------------------------------------------------------------
The Zynq UltraScale+ MPSoC has several different resets.

See Chapter 36 of the Zynq UltraScale+ MPSoC TRM (UG) for more information
about zynqmp resets.

Please also refer to reset.txt in this directory for common reset
controller binding usage.

Required Properties:
- compatible:	"xlnx,zynqmp-reset"
- #reset-cells:	Specifies the number of cells needed to encode reset
		line, should be 1

-------
Example
-------

firmware {
	zynqmp_firmware: zynqmp-firmware {
		compatible = "xlnx,zynqmp-firmware";
		method = "smc";

		zynqmp_reset: reset-controller {
			compatible = "xlnx,zynqmp-reset";
			#reset-cells = <1>;
		};
	};
};

Specifying reset lines connected to IP modules
==============================================

Device nodes that need access to reset lines should
specify them as a reset phandle in their corresponding node as
specified in reset.txt.

For list of all valid reset indicies see
<dt-bindings/reset/xlnx-zynqmp-resets.h>

Example:

serdes: zynqmp_phy@fd400000 {
	...

	resets = <&zynqmp_reset ZYNQMP_RESET_SATA>;
	reset-names = "sata_rst";

	...
};
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ menu "Zynq MPSoC Firmware Drivers"

config ZYNQMP_FIRMWARE
	bool "Enable Xilinx Zynq MPSoC firmware interface"
	select MFD_CORE
	help
	  Firmware interface driver is used by different
	  drivers to communicate with the firmware for
Loading