-----------------------------------------------------------------
Device Tree Bindings for the Xilinx Zynq MPSoC Firmware Interface
-----------------------------------------------------------------

The zynqmp-firmware node describes the interface to platform firmware.
ZynqMP has an interface to communicate with secure firmware. Firmware
driver provides an interface to firmware APIs. Interface APIs can be
used by any driver to communicate to PMUFW(Platform Management Unit).
These requests include clock management, pin control, device control,
power management service, FPGA service and other platform management
services.

Required properties:
 - compatible:	Must contain:	"xlnx,zynqmp-firmware"
 - method:	The method of calling the PM-API firmware layer.
		Permitted values are:
		  - "smc" : SMC #0, following the SMCCC
		  - "hvc" : HVC #0, following the SMCCC

--------------------------------------------------------------------------
Device Tree Clock bindings for the Zynq Ultrascale+ MPSoC controlled using
Zynq MPSoC firmware interface
--------------------------------------------------------------------------
The clock controller is a h/w block of Zynq Ultrascale+ MPSoC clock
tree. It reads required input clock frequencies from the devicetree and acts
as clock provider for all clock consumers of PS clocks.

See clock_bindings.txt for more information on the generic clock bindings.

Required properties:
 - #clock-cells:	Must be 1
 - compatible:		Must contain:	"xlnx,zynqmp-clk"
 - clocks:		List of clock specifiers which are external input
			clocks to the given clock controller. Please refer
			the next section to find the input clocks for a
			given controller.
 - clock-names:		List of clock names which are exteral input clocks
			to the given clock controller. Please refer to the
			clock bindings for more details.

Input clocks for zynqmp Ultrascale+ clock controller:

The Zynq UltraScale+ MPSoC has one primary and four alternative reference clock
inputs. These required clock inputs are:
 - pss_ref_clk (PS reference clock)
 - video_clk (reference clock for video system )
 - pss_alt_ref_clk (alternative PS reference clock)
 - aux_ref_clk
 - gt_crx_ref_clk (transceiver reference clock)

The following strings are optional parameters to the 'clock-names' property in
order to provide an optional (E)MIO clock source:
 - swdt0_ext_clk
 - swdt1_ext_clk
 - gem0_emio_clk
 - gem1_emio_clk
 - gem2_emio_clk
 - gem3_emio_clk
 - mio_clk_XX		# with XX = 00..77
 - mio_clk_50_or_51	#for the mux clock to gem tsu from 50 or 51


Output clocks are registered based on clock information received
from firmware. Output clocks indexes are mentioned in
include/dt-bindings/clock/xlnx,zynqmp-clk.h.

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

firmware {
	zynqmp_firmware: zynqmp-firmware {
		compatible = "xlnx,zynqmp-firmware";
		method = "smc";
		zynqmp_clk: clock-controller {
			#clock-cells = <1>;
			compatible = "xlnx,zynqmp-clk";
			clocks = <&pss_ref_clk>, <&video_clk>, <&pss_alt_ref_clk>, <&aux_ref_clk>, <&gt_crx_ref_clk>;
			clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk","aux_ref_clk", "gt_crx_ref_clk";
		};
	};
};
