forked from Minki/linux
b0504e39c2
The clkc has its registers in the range of the slcr. Instead of passing around the slcr base address pointer, let the clkc get the address from the DT. This prepares the slcr to be a real driver with multiple memory ranges (slcr, clocks, pinctrl,...) Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
111 lines
2.9 KiB
Plaintext
111 lines
2.9 KiB
Plaintext
Device Tree Clock bindings for the Zynq 7000 EPP
|
|
|
|
The Zynq EPP has several different clk providers, each with there own bindings.
|
|
The purpose of this document is to document their usage.
|
|
|
|
See clock_bindings.txt for more information on the generic clock bindings.
|
|
See Chapter 25 of Zynq TRM for more information about Zynq clocks.
|
|
|
|
== Clock Controller ==
|
|
The clock controller is a logical abstraction of Zynq's clock tree. It reads
|
|
required input clock frequencies from the devicetree and acts as clock provider
|
|
for all clock consumers of PS clocks.
|
|
|
|
Required properties:
|
|
- #clock-cells : Must be 1
|
|
- compatible : "xlnx,ps7-clkc"
|
|
- reg : SLCR offset and size taken via syscon < 0x100 0x100 >
|
|
- ps-clk-frequency : Frequency of the oscillator providing ps_clk in HZ
|
|
(usually 33 MHz oscillators are used for Zynq platforms)
|
|
- clock-output-names : List of strings used to name the clock outputs. Shall be
|
|
a list of the outputs given below.
|
|
|
|
Optional properties:
|
|
- clocks : as described in the clock bindings
|
|
- clock-names : as described in the clock bindings
|
|
- fclk-enable : Bit mask to enable FCLKs statically at boot time.
|
|
Bit [0..3] correspond to FCLK0..FCLK3. The corresponding
|
|
FCLK will only be enabled if it is actually running at
|
|
boot time.
|
|
|
|
Clock inputs:
|
|
The following strings are optional parameters to the 'clock-names' property in
|
|
order to provide an optional (E)MIO clock source.
|
|
- swdt_ext_clk
|
|
- gem0_emio_clk
|
|
- gem1_emio_clk
|
|
- mio_clk_XX # with XX = 00..53
|
|
...
|
|
|
|
Clock outputs:
|
|
0: armpll
|
|
1: ddrpll
|
|
2: iopll
|
|
3: cpu_6or4x
|
|
4: cpu_3or2x
|
|
5: cpu_2x
|
|
6: cpu_1x
|
|
7: ddr2x
|
|
8: ddr3x
|
|
9: dci
|
|
10: lqspi
|
|
11: smc
|
|
12: pcap
|
|
13: gem0
|
|
14: gem1
|
|
15: fclk0
|
|
16: fclk1
|
|
17: fclk2
|
|
18: fclk3
|
|
19: can0
|
|
20: can1
|
|
21: sdio0
|
|
22: sdio1
|
|
23: uart0
|
|
24: uart1
|
|
25: spi0
|
|
26: spi1
|
|
27: dma
|
|
28: usb0_aper
|
|
29: usb1_aper
|
|
30: gem0_aper
|
|
31: gem1_aper
|
|
32: sdio0_aper
|
|
33: sdio1_aper
|
|
34: spi0_aper
|
|
35: spi1_aper
|
|
36: can0_aper
|
|
37: can1_aper
|
|
38: i2c0_aper
|
|
39: i2c1_aper
|
|
40: uart0_aper
|
|
41: uart1_aper
|
|
42: gpio_aper
|
|
43: lqspi_aper
|
|
44: smc_aper
|
|
45: swdt
|
|
46: dbg_trc
|
|
47: dbg_apb
|
|
|
|
Example:
|
|
clkc: clkc@100 {
|
|
#clock-cells = <1>;
|
|
compatible = "xlnx,ps7-clkc";
|
|
ps-clk-frequency = <33333333>;
|
|
reg = <0x100 0x100>;
|
|
clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
|
|
"cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
|
|
"dci", "lqspi", "smc", "pcap", "gem0", "gem1",
|
|
"fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
|
|
"sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
|
|
"dma", "usb0_aper", "usb1_aper", "gem0_aper",
|
|
"gem1_aper", "sdio0_aper", "sdio1_aper",
|
|
"spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
|
|
"i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
|
|
"gpio_aper", "lqspi_aper", "smc_aper", "swdt",
|
|
"dbg_trc", "dbg_apb";
|
|
# optional props
|
|
clocks = <&clkc 16>, <&clk_foo>;
|
|
clock-names = "gem1_emio_clk", "can_mio_clk_23";
|
|
};
|