mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-15 16:26:45 +07:00
db06f826ec
We've added duty cycle support to the clk API so that clk signal duty cycle ratios can be adjusted while taking into account things like clk dividers and clk tree hierarchy. So far only one SoC has implemented support for this, but I expect there will be more to come in the future. Outside of the core, we have the usual pile of clk driver updates and additions. The Amlogic meson driver got the most lines in the diffstat this time around because it added support for a whole bunch of hardware and duty cycle configuration. After that the Rockchip PX30, Qualcomm SDM845, and Renesas SoC drivers fill in a majority of the diff. We're left with the collection of non-critical fixes after that. Overall it looks pretty quiet this time. Core: - Clk duty cycle support - Proper CLK_SET_RATE_GATE support throughout the tree New Drivers: - Actions Semi Owl series S700 SoC clk driver - Qualcomm SDM845 display clock controller - i.MX6SX ocram_s clk support - Uniphier NAND, USB3 PHY, and SPI clk support - Qualcomm RPMh clk driver - i.MX7D mailbox clk support - Maxim 9485 Programmable Clock Generator - Expose 32 kHz PLL on PXA SoCs - imx6sll GPIO clk gate support - Atmel at91 I2S audio clk support - SI544/SI514 clk on/off support - i.MX6UL GPIO clock gates in CCM CCGR - Renesas Crypto Engine clocks on R-Car H3 - Renesas clk support for the new RZ/N1D SoC - Allwinner A64 display engine clock support - Support for Rockchip's PX30 SoC - Amlogic Meson axg PCIe and audio clocks - Amlogic Meson GEN CLK on gxbb, gxl and axg Updates: - Remove an unused variable from Exynos4412 ISP driver - Fix a thinko bug in SCMI clk division logic - Add missing of_node_put()s in some i.MX clk drivers - Tegra SDMMC clk jitter improvements with high speed signaling modes - SPDX tagging for qcom and cs2000-cp drivers - Stop leaking con ids in __clk_put() - Fix a corner case in fixed factor clk probing where node is in DT but parent clk is registered much later - Marvell Armada 3700 clk_pm_cpu_get_parent() had an invalid return value - i.MX clk init arrays removed in place of CLK_IS_CRITICAL - Convert to CLK_IS_CRITICAL for i.MX51/53 driver - Fix Tegra BPMP driver oops when xlating a NULL clk - Proper default configuration for vic03 and vde clks on Tegra124 - Mark Tegra memory controller clks as critical - Fix array bounds clamp in Tegra's emc determine_rate() op - Ingenic i2s bit update and allow UDC clk to gate - Fix name of aspeed SDC clk define to have only one 'CLK' - Fix i.MX6QDL video clk parent - Critical clk markings for qcom SDM845 - Fix Stratix10 mpu_free_clk and sdmmc_free_clk parents - Mark Rockchip's pclk_rkpwm_pmu as critical clock, due to it supplying the pwm used to drive the logic supply of the rk3399 core. -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEE9L57QeeUxqYDyoaDrQKIl8bklSUFAlt0WD0RHHNib3lkQGtl cm5lbC5vcmcACgkQrQKIl8bklSX5jBAAlMLb0fqnuAGNJeXZDk5rsCa496LMyGWx ku7uLA2H68SlbSQqq8FUPoCjDZkmsu2CbOX1U2/H4HFDS0pqpPiV3mZNtSeacedp 4Wf8yUB5G3xdq9QUCSX5LxMmEQoGeJ+gaTspBvM6sNvEMBR2kEMGBqUy768tnDTR qCQ8Q1jOU6l8IdFV0SZGssmZ+oFqOyQoJVquPWPkw1+p/2f1KyYIyG5J5FXGxgcR 1XQITY/I/dShQ2wd+ZeDdt+GjZqIXQ06Pt3ruRG7HVP79Zt1XCRJd5dZ2lf+Wj8T 1ul3TWCAMYZ8gCPebLMbBGzKvQJQJcDU6DpIZsrUDN+C6z7KCS9vqeCxP9cF+3jJ LOmA6cWE7z9Vkk9s0I0KJJ2Sw7wRoXzE5OJcwa/yousSz3s9cX+F8SAkdZs77oUF 0XnzPsvwdHI/egQ4UrsStPHM/gOFhsQqo8vvm5xaaTR2AxLKBHuPa9oUv9YpO/P5 J6FCst3qeY3Wp69fJ5/Z058OFOAt81dKXij2fZJBOO4KJy7Kse8Sz5ApybXVAbY5 lfvx+KGMITFqLYrcRIQZmlCuoHcMwI0FtHr9Ens5GXdbrJ+W+FlvP43eLCA0ZmRx 9DidemChj3k3PC3H6tbax/jzV4IIxZdyUoBJ1imL4uyhhaXp/qr45A/aGwNp8Q8a WvkIGm3epK4= =Mcn+ -----END PGP SIGNATURE----- Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux Pull clk updates from Stephen Boyd: "The new and exciting feature this time around is in the clk core. We've added duty cycle support to the clk API so that clk signal duty cycle ratios can be adjusted while taking into account things like clk dividers and clk tree hierarchy. So far only one SoC has implemented support for this, but I expect there will be more to come in the future. Outside of the core, we have the usual pile of clk driver updates and additions. The Amlogic meson driver got the most lines in the diffstat this time around because it added support for a whole bunch of hardware and duty cycle configuration. After that the Rockchip PX30, Qualcomm SDM845, and Renesas SoC drivers fill in a majority of the diff. We're left with the collection of non-critical fixes after that. Overall it looks pretty quiet this time. Core: - Clk duty cycle support - Proper CLK_SET_RATE_GATE support throughout the tree New Drivers: - Actions Semi Owl series S700 SoC clk driver - Qualcomm SDM845 display clock controller - i.MX6SX ocram_s clk support - Uniphier NAND, USB3 PHY, and SPI clk support - Qualcomm RPMh clk driver - i.MX7D mailbox clk support - Maxim 9485 Programmable Clock Generator - expose 32 kHz PLL on PXA SoCs - imx6sll GPIO clk gate support - Atmel at91 I2S audio clk support - SI544/SI514 clk on/off support - i.MX6UL GPIO clock gates in CCM CCGR - Renesas Crypto Engine clocks on R-Car H3 - Renesas clk support for the new RZ/N1D SoC - Allwinner A64 display engine clock support - support for Rockchip's PX30 SoC - Amlogic Meson axg PCIe and audio clocks - Amlogic Meson GEN CLK on gxbb, gxl and axg Updates: - remove an unused variable from Exynos4412 ISP driver - fix a thinko bug in SCMI clk division logic - add missing of_node_put()s in some i.MX clk drivers - Tegra SDMMC clk jitter improvements with high speed signaling modes - SPDX tagging for qcom and cs2000-cp drivers - stop leaking con ids in __clk_put() - fix a corner case in fixed factor clk probing where node is in DT but parent clk is registered much later - Marvell Armada 3700 clk_pm_cpu_get_parent() had an invalid return value - i.MX clk init arrays removed in place of CLK_IS_CRITICAL - convert to CLK_IS_CRITICAL for i.MX51/53 driver - fix Tegra BPMP driver oops when xlating a NULL clk - proper default configuration for vic03 and vde clks on Tegra124 - mark Tegra memory controller clks as critical - fix array bounds clamp in Tegra's emc determine_rate() op - Ingenic i2s bit update and allow UDC clk to gate - fix name of aspeed SDC clk define to have only one 'CLK' - fix i.MX6QDL video clk parent - critical clk markings for qcom SDM845 - fix Stratix10 mpu_free_clk and sdmmc_free_clk parents - mark Rockchip's pclk_rkpwm_pmu as critical clock, due to it supplying the pwm used to drive the logic supply of the rk3399 core" * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (85 commits) clk: rockchip: Add pclk_rkpwm_pmu to PMU critical clocks in rk3399 clk: cs2000-cp: convert to SPDX identifiers clk: scmi: Fix the rounding of clock rate clk: qcom: Add display clock controller driver for SDM845 clk: mvebu: armada-37xx-periph: Remove unused var num_parents clk: samsung: Remove unused mout_user_aclk400_mcuisp_p4x12 variable clk: actions: Add S700 SoC clock support dt-bindings: clock: Add S700 support for Actions Semi Soc's clk: actions: Add missing REGMAP_MMIO dependency clk: uniphier: add clock frequency support for SPI clk: uniphier: add more USB3 PHY clocks clk: uniphier: add NAND 200MHz clock clk: tegra: make sdmmc2 and sdmmc4 as sdmmc clocks clk: tegra: Add sdmmc mux divider clock clk: tegra: Refactor fractional divider calculation clk: tegra: Fix includes required by fence_udelay() clk: imx6sll: fix missing of_node_put() clk: imx6ul: fix missing of_node_put() clk: imx: add ocram_s clock for i.mx6sx clk: mvebu: armada-37xx-periph: Fix wrong return value in get_parent ...
538 lines
15 KiB
Plaintext
538 lines
15 KiB
Plaintext
Device Tree Clock bindings for arch-at91
|
|
|
|
This binding uses the common clock binding[1].
|
|
|
|
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
|
|
|
Required properties:
|
|
- compatible : shall be one of the following:
|
|
"atmel,at91sam9x5-sckc" or
|
|
"atmel,sama5d4-sckc":
|
|
at91 SCKC (Slow Clock Controller)
|
|
This node contains the slow clock definitions.
|
|
|
|
"atmel,at91sam9x5-clk-slow-osc":
|
|
at91 slow oscillator
|
|
|
|
"atmel,at91sam9x5-clk-slow-rc-osc":
|
|
at91 internal slow RC oscillator
|
|
|
|
"atmel,at91rm9200-pmc" or
|
|
"atmel,at91sam9g45-pmc" or
|
|
"atmel,at91sam9n12-pmc" or
|
|
"atmel,at91sam9x5-pmc" or
|
|
"atmel,sama5d3-pmc":
|
|
at91 PMC (Power Management Controller)
|
|
All at91 specific clocks (clocks defined below) must be child
|
|
node of the PMC node.
|
|
|
|
"atmel,at91sam9x5-clk-slow" (under sckc node)
|
|
or
|
|
"atmel,at91sam9260-clk-slow" (under pmc node):
|
|
at91 slow clk
|
|
|
|
"atmel,at91rm9200-clk-main-osc"
|
|
"atmel,at91sam9x5-clk-main-rc-osc"
|
|
at91 main clk sources
|
|
|
|
"atmel,at91sam9x5-clk-main"
|
|
"atmel,at91rm9200-clk-main":
|
|
at91 main clock
|
|
|
|
"atmel,at91rm9200-clk-master" or
|
|
"atmel,at91sam9x5-clk-master":
|
|
at91 master clock
|
|
|
|
"atmel,at91sam9x5-clk-peripheral" or
|
|
"atmel,at91rm9200-clk-peripheral":
|
|
at91 peripheral clocks
|
|
|
|
"atmel,at91rm9200-clk-pll" or
|
|
"atmel,at91sam9g45-clk-pll" or
|
|
"atmel,at91sam9g20-clk-pllb" or
|
|
"atmel,sama5d3-clk-pll":
|
|
at91 pll clocks
|
|
|
|
"atmel,at91sam9x5-clk-plldiv":
|
|
at91 plla divisor
|
|
|
|
"atmel,at91rm9200-clk-programmable" or
|
|
"atmel,at91sam9g45-clk-programmable" or
|
|
"atmel,at91sam9x5-clk-programmable":
|
|
at91 programmable clocks
|
|
|
|
"atmel,at91sam9x5-clk-smd":
|
|
at91 SMD (Soft Modem) clock
|
|
|
|
"atmel,at91rm9200-clk-system":
|
|
at91 system clocks
|
|
|
|
"atmel,at91rm9200-clk-usb" or
|
|
"atmel,at91sam9x5-clk-usb" or
|
|
"atmel,at91sam9n12-clk-usb":
|
|
at91 usb clock
|
|
|
|
"atmel,at91sam9x5-clk-utmi":
|
|
at91 utmi clock
|
|
|
|
"atmel,sama5d4-clk-h32mx":
|
|
at91 h32mx clock
|
|
|
|
"atmel,sama5d2-clk-generated":
|
|
at91 generated clock
|
|
|
|
"atmel,sama5d2-clk-audio-pll-frac":
|
|
at91 audio fractional pll
|
|
|
|
"atmel,sama5d2-clk-audio-pll-pad":
|
|
at91 audio pll CLK_AUDIO output pin
|
|
|
|
"atmel,sama5d2-clk-audio-pll-pmc"
|
|
at91 audio pll output on AUDIOPLLCLK that feeds the PMC
|
|
and can be used by peripheral clock or generic clock
|
|
|
|
"atmel,sama5d2-clk-i2s-mux" (under pmc node):
|
|
at91 I2S clock source selection
|
|
|
|
Required properties for SCKC node:
|
|
- reg : defines the IO memory reserved for the SCKC.
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
|
|
|
|
For example:
|
|
sckc: sckc@fffffe50 {
|
|
compatible = "atmel,sama5d3-pmc";
|
|
reg = <0xfffffe50 0x4>
|
|
#size-cells = <0>;
|
|
#address-cells = <1>;
|
|
|
|
/* put at91 slow clocks here */
|
|
};
|
|
|
|
|
|
Required properties for internal slow RC oscillator:
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clock-frequency : define the internal RC oscillator frequency.
|
|
|
|
Optional properties:
|
|
- clock-accuracy : define the internal RC oscillator accuracy.
|
|
|
|
For example:
|
|
slow_rc_osc: slow_rc_osc {
|
|
compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
|
|
clock-frequency = <32768>;
|
|
clock-accuracy = <50000000>;
|
|
};
|
|
|
|
Required properties for slow oscillator:
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall encode the main osc source clk sources (see atmel datasheet).
|
|
|
|
Optional properties:
|
|
- atmel,osc-bypass : boolean property. Set this when a clock signal is directly
|
|
provided on XIN.
|
|
|
|
For example:
|
|
slow_osc: slow_osc {
|
|
compatible = "atmel,at91rm9200-clk-slow-osc";
|
|
#clock-cells = <0>;
|
|
clocks = <&slow_xtal>;
|
|
};
|
|
|
|
Required properties for slow clock:
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall encode the slow clk sources (see atmel datasheet).
|
|
|
|
For example:
|
|
clk32k: slck {
|
|
compatible = "atmel,at91sam9x5-clk-slow";
|
|
#clock-cells = <0>;
|
|
clocks = <&slow_rc_osc &slow_osc>;
|
|
};
|
|
|
|
Required properties for PMC node:
|
|
- reg : defines the IO memory reserved for the PMC.
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
- interrupts : shall be set to PMC interrupt line.
|
|
- interrupt-controller : tell that the PMC is an interrupt controller.
|
|
- #interrupt-cells : must be set to 1. The first cell encodes the interrupt id,
|
|
and reflect the bit position in the PMC_ER/DR/SR registers.
|
|
You can use the dt macros defined in dt-bindings/clock/at91.h.
|
|
0 (AT91_PMC_MOSCS) -> main oscillator ready
|
|
1 (AT91_PMC_LOCKA) -> PLL A ready
|
|
2 (AT91_PMC_LOCKB) -> PLL B ready
|
|
3 (AT91_PMC_MCKRDY) -> master clock ready
|
|
6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready
|
|
8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready
|
|
16 (AT91_PMC_MOSCSELS) -> main oscillator selected
|
|
17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized
|
|
18 (AT91_PMC_CFDEV) -> clock failure detected
|
|
|
|
For example:
|
|
pmc: pmc@fffffc00 {
|
|
compatible = "atmel,sama5d3-pmc";
|
|
interrupts = <1 4 7>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
#size-cells = <0>;
|
|
#address-cells = <1>;
|
|
|
|
/* put at91 clocks here */
|
|
};
|
|
|
|
Required properties for main clock internal RC oscillator:
|
|
- interrupts : shall be set to "<0>".
|
|
- clock-frequency : define the internal RC oscillator frequency.
|
|
|
|
Optional properties:
|
|
- clock-accuracy : define the internal RC oscillator accuracy.
|
|
|
|
For example:
|
|
main_rc_osc: main_rc_osc {
|
|
compatible = "atmel,at91sam9x5-clk-main-rc-osc";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <0>;
|
|
clock-frequency = <12000000>;
|
|
clock-accuracy = <50000000>;
|
|
};
|
|
|
|
Required properties for main clock oscillator:
|
|
- interrupts : shall be set to "<0>".
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall encode the main osc source clk sources (see atmel datasheet).
|
|
|
|
Optional properties:
|
|
- atmel,osc-bypass : boolean property. Specified if a clock signal is provided
|
|
on XIN.
|
|
|
|
clock signal is directly provided on XIN pin.
|
|
|
|
For example:
|
|
main_osc: main_osc {
|
|
compatible = "atmel,at91rm9200-clk-main-osc";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <0>;
|
|
#clock-cells = <0>;
|
|
clocks = <&main_xtal>;
|
|
};
|
|
|
|
Required properties for main clock:
|
|
- interrupts : shall be set to "<0>".
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall encode the main clk sources (see atmel datasheet).
|
|
|
|
For example:
|
|
main: mainck {
|
|
compatible = "atmel,at91sam9x5-clk-main";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <0>;
|
|
#clock-cells = <0>;
|
|
clocks = <&main_rc_osc &main_osc>;
|
|
};
|
|
|
|
Required properties for master clock:
|
|
- interrupts : shall be set to "<3>".
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the master clock sources (see atmel datasheet) phandles.
|
|
e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>".
|
|
- atmel,clk-output-range : minimum and maximum clock frequency (two u32
|
|
fields).
|
|
e.g. output = <0 133000000>; <=> 0 to 133MHz.
|
|
- atmel,clk-divisors : master clock divisors table (four u32 fields).
|
|
0 <=> reserved value.
|
|
e.g. divisors = <1 2 4 6>;
|
|
- atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the
|
|
PRES field as CLOCK_DIV3 (e.g sam9x5).
|
|
|
|
For example:
|
|
mck: mck {
|
|
compatible = "atmel,at91rm9200-clk-master";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <3>;
|
|
#clock-cells = <0>;
|
|
atmel,clk-output-range = <0 133000000>;
|
|
atmel,clk-divisors = <1 2 4 0>;
|
|
};
|
|
|
|
Required properties for peripheral clocks:
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
- clocks : shall be the master clock phandle.
|
|
e.g. clocks = <&mck>;
|
|
- name: device tree node describing a specific peripheral clock.
|
|
* #clock-cells : from common clock binding; shall be set to 0.
|
|
* reg: peripheral id. See Atmel's datasheets to get a full
|
|
list of peripheral ids.
|
|
* atmel,clk-output-range : minimum and maximum clock frequency
|
|
(two u32 fields). Only valid on at91sam9x5-clk-peripheral
|
|
compatible IPs.
|
|
|
|
For example:
|
|
periph: periphck {
|
|
compatible = "atmel,at91sam9x5-clk-peripheral";
|
|
#size-cells = <0>;
|
|
#address-cells = <1>;
|
|
clocks = <&mck>;
|
|
|
|
ssc0_clk {
|
|
#clock-cells = <0>;
|
|
reg = <2>;
|
|
atmel,clk-output-range = <0 133000000>;
|
|
};
|
|
|
|
usart0_clk {
|
|
#clock-cells = <0>;
|
|
reg = <3>;
|
|
atmel,clk-output-range = <0 66000000>;
|
|
};
|
|
};
|
|
|
|
|
|
Required properties for pll clocks:
|
|
- interrupts : shall be set to "<1>".
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the main clock phandle.
|
|
- reg : pll id.
|
|
0 -> PLL A
|
|
1 -> PLL B
|
|
- atmel,clk-input-range : minimum and maximum source clock frequency (two u32
|
|
fields).
|
|
e.g. input = <1 32000000>; <=> 1 to 32MHz.
|
|
- #atmel,pll-clk-output-range-cells : number of cells reserved for pll output
|
|
range description. Sould be set to 2, 3
|
|
or 4.
|
|
* 1st and 2nd cells represent the frequency range (min-max).
|
|
* 3rd cell is optional and represents the OUT field value for the given
|
|
range.
|
|
* 4th cell is optional and represents the ICPLL field (PLLICPR
|
|
register)
|
|
- atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter
|
|
depending on #atmel,pll-output-range-cells
|
|
property value.
|
|
|
|
For example:
|
|
plla: pllack {
|
|
compatible = "atmel,at91sam9g45-clk-pll";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <1>;
|
|
#clock-cells = <0>;
|
|
clocks = <&main>;
|
|
reg = <0>;
|
|
atmel,clk-input-range = <2000000 32000000>;
|
|
#atmel,pll-clk-output-range-cells = <4>;
|
|
atmel,pll-clk-output-ranges = <74500000 800000000 0 0
|
|
69500000 750000000 1 0
|
|
64500000 700000000 2 0
|
|
59500000 650000000 3 0
|
|
54500000 600000000 0 1
|
|
49500000 550000000 1 1
|
|
44500000 500000000 2 1
|
|
40000000 450000000 3 1>;
|
|
};
|
|
|
|
Required properties for plldiv clocks (plldiv = pll / 2):
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the plla clock phandle.
|
|
|
|
The pll divisor is equal to 2 and cannot be changed.
|
|
|
|
For example:
|
|
plladiv: plladivck {
|
|
compatible = "atmel,at91sam9x5-clk-plldiv";
|
|
#clock-cells = <0>;
|
|
clocks = <&plla>;
|
|
};
|
|
|
|
Required properties for programmable clocks:
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
- clocks : shall be the programmable clock source phandles.
|
|
e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
|
|
- name: device tree node describing a specific prog clock.
|
|
* #clock-cells : from common clock binding; shall be set to 0.
|
|
* reg : programmable clock id (register offset from PCKx
|
|
register).
|
|
* interrupts : shall be set to "<(8 + id)>".
|
|
|
|
For example:
|
|
prog: progck {
|
|
compatible = "atmel,at91sam9g45-clk-programmable";
|
|
#size-cells = <0>;
|
|
#address-cells = <1>;
|
|
interrupt-parent = <&pmc>;
|
|
clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>;
|
|
|
|
prog0 {
|
|
#clock-cells = <0>;
|
|
reg = <0>;
|
|
interrupts = <8>;
|
|
};
|
|
|
|
prog1 {
|
|
#clock-cells = <0>;
|
|
reg = <1>;
|
|
interrupts = <9>;
|
|
};
|
|
};
|
|
|
|
|
|
Required properties for smd clock:
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the smd clock source phandles.
|
|
e.g. clocks = <&plladiv>, <&utmi>;
|
|
|
|
For example:
|
|
smd: smdck {
|
|
compatible = "atmel,at91sam9x5-clk-smd";
|
|
#clock-cells = <0>;
|
|
clocks = <&plladiv>, <&utmi>;
|
|
};
|
|
|
|
Required properties for system clocks:
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
- name: device tree node describing a specific system clock.
|
|
* #clock-cells : from common clock binding; shall be set to 0.
|
|
* reg: system clock id (bit position in SCER/SCDR/SCSR registers).
|
|
See Atmel's datasheet to get a full list of system clock ids.
|
|
|
|
For example:
|
|
system: systemck {
|
|
compatible = "atmel,at91rm9200-clk-system";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
ddrck {
|
|
#clock-cells = <0>;
|
|
reg = <2>;
|
|
clocks = <&mck>;
|
|
};
|
|
|
|
uhpck {
|
|
#clock-cells = <0>;
|
|
reg = <6>;
|
|
clocks = <&usb>;
|
|
};
|
|
|
|
udpck {
|
|
#clock-cells = <0>;
|
|
reg = <7>;
|
|
clocks = <&usb>;
|
|
};
|
|
};
|
|
|
|
|
|
Required properties for usb clock:
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the smd clock source phandles.
|
|
e.g. clocks = <&pllb>;
|
|
- atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"):
|
|
usb clock divisor table.
|
|
e.g. divisors = <1 2 4 0>;
|
|
|
|
For example:
|
|
usb: usbck {
|
|
compatible = "atmel,at91sam9x5-clk-usb";
|
|
#clock-cells = <0>;
|
|
clocks = <&plladiv>, <&utmi>;
|
|
};
|
|
|
|
usb: usbck {
|
|
compatible = "atmel,at91rm9200-clk-usb";
|
|
#clock-cells = <0>;
|
|
clocks = <&pllb>;
|
|
atmel,clk-divisors = <1 2 4 0>;
|
|
};
|
|
|
|
|
|
Required properties for utmi clock:
|
|
- interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>".
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the main clock source phandle.
|
|
|
|
For example:
|
|
utmi: utmick {
|
|
compatible = "atmel,at91sam9x5-clk-utmi";
|
|
interrupt-parent = <&pmc>;
|
|
interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>;
|
|
#clock-cells = <0>;
|
|
clocks = <&main>;
|
|
};
|
|
|
|
Required properties for 32 bits bus Matrix clock (h32mx clock):
|
|
- #clock-cells : from common clock binding; shall be set to 0.
|
|
- clocks : shall be the master clock source phandle.
|
|
|
|
For example:
|
|
h32ck: h32mxck {
|
|
#clock-cells = <0>;
|
|
compatible = "atmel,sama5d4-clk-h32mx";
|
|
clocks = <&mck>;
|
|
};
|
|
|
|
Required properties for generated clocks:
|
|
- #size-cells : shall be 0 (reg is used to encode clk id).
|
|
- #address-cells : shall be 1 (reg is used to encode clk id).
|
|
- clocks : shall be the generated clock source phandles.
|
|
e.g. clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>;
|
|
- name: device tree node describing a specific generated clock.
|
|
* #clock-cells : from common clock binding; shall be set to 0.
|
|
* reg: peripheral id. See Atmel's datasheets to get a full
|
|
list of peripheral ids.
|
|
* atmel,clk-output-range : minimum and maximum clock frequency
|
|
(two u32 fields).
|
|
|
|
For example:
|
|
gck {
|
|
compatible = "atmel,sama5d2-clk-generated";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>, <&audio_pll_pmc>;
|
|
|
|
tcb0_gclk: tcb0_gclk {
|
|
#clock-cells = <0>;
|
|
reg = <35>;
|
|
atmel,clk-output-range = <0 83000000>;
|
|
};
|
|
|
|
pwm_gclk: pwm_gclk {
|
|
#clock-cells = <0>;
|
|
reg = <38>;
|
|
atmel,clk-output-range = <0 83000000>;
|
|
};
|
|
};
|
|
|
|
Required properties for I2S mux clocks:
|
|
- #size-cells : shall be 0 (reg is used to encode I2S bus id).
|
|
- #address-cells : shall be 1 (reg is used to encode I2S bus id).
|
|
- name: device tree node describing a specific mux clock.
|
|
* #clock-cells : from common clock binding; shall be set to 0.
|
|
* clocks : shall be the mux clock parent phandles; shall be 2 phandles:
|
|
peripheral and generated clock; the first phandle shall belong to the
|
|
peripheral clock and the second one shall belong to the generated
|
|
clock; "clock-indices" property can be user to specify
|
|
the correct order.
|
|
* reg: I2S bus id of the corresponding mux clock.
|
|
e.g. reg = <0>; for i2s0, reg = <1>; for i2s1
|
|
|
|
For example:
|
|
i2s_clkmux {
|
|
compatible = "atmel,sama5d2-clk-i2s-mux";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
i2s0muxck: i2s0_muxclk {
|
|
clocks = <&i2s0_clk>, <&i2s0_gclk>;
|
|
#clock-cells = <0>;
|
|
reg = <0>;
|
|
};
|
|
|
|
i2s1muxck: i2s1_muxclk {
|
|
clocks = <&i2s1_clk>, <&i2s1_gclk>;
|
|
#clock-cells = <0>;
|
|
reg = <1>;
|
|
};
|
|
};
|