162306a36Sopenharmony_ciMarvell Armada AP80x System Controller 262306a36Sopenharmony_ci====================================== 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciThe AP806/AP807 is one of the two core HW blocks of the Marvell Armada 562306a36Sopenharmony_ci7K/8K/931x SoCs. It contains system controllers, which provide several 662306a36Sopenharmony_ciregisters giving access to numerous features: clocks, pin-muxing and 762306a36Sopenharmony_cimany other SoC configuration items. This DT binding allows to describe 862306a36Sopenharmony_cithese system controllers. 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciFor the top level node: 1162306a36Sopenharmony_ci - compatible: must be: "syscon", "simple-mfd"; 1262306a36Sopenharmony_ci - reg: register area of the AP80x system controller 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciSYSTEM CONTROLLER 0 1562306a36Sopenharmony_ci=================== 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciClocks: 1862306a36Sopenharmony_ci------- 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciThe Device Tree node representing the AP806/AP807 system controller 2262306a36Sopenharmony_ciprovides a number of clocks: 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci - 0: reference clock of CPU cluster 0 2562306a36Sopenharmony_ci - 1: reference clock of CPU cluster 1 2662306a36Sopenharmony_ci - 2: fixed PLL at 1200 Mhz 2762306a36Sopenharmony_ci - 3: MSS clock, derived from the fixed PLL 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ciRequired properties: 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci - compatible: must be one of: 3262306a36Sopenharmony_ci * "marvell,ap806-clock" 3362306a36Sopenharmony_ci * "marvell,ap807-clock" 3462306a36Sopenharmony_ci - #clock-cells: must be set to 1 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciPinctrl: 3762306a36Sopenharmony_ci-------- 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciFor common binding part and usage, refer to 4062306a36Sopenharmony_ciDocumentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt. 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciRequired properties: 4362306a36Sopenharmony_ci- compatible must be "marvell,ap806-pinctrl", 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciAvailable mpp pins/groups and functions: 4662306a36Sopenharmony_ciNote: brackets (x) are not part of the mpp name for marvell,function and given 4762306a36Sopenharmony_cionly for more detailed description in this document. 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciname pins functions 5062306a36Sopenharmony_ci================================================================================ 5162306a36Sopenharmony_cimpp0 0 gpio, sdio(clk), spi0(clk) 5262306a36Sopenharmony_cimpp1 1 gpio, sdio(cmd), spi0(miso) 5362306a36Sopenharmony_cimpp2 2 gpio, sdio(d0), spi0(mosi) 5462306a36Sopenharmony_cimpp3 3 gpio, sdio(d1), spi0(cs0n) 5562306a36Sopenharmony_cimpp4 4 gpio, sdio(d2), i2c0(sda) 5662306a36Sopenharmony_cimpp5 5 gpio, sdio(d3), i2c0(sdk) 5762306a36Sopenharmony_cimpp6 6 gpio, sdio(ds) 5862306a36Sopenharmony_cimpp7 7 gpio, sdio(d4), uart1(rxd) 5962306a36Sopenharmony_cimpp8 8 gpio, sdio(d5), uart1(txd) 6062306a36Sopenharmony_cimpp9 9 gpio, sdio(d6), spi0(cs1n) 6162306a36Sopenharmony_cimpp10 10 gpio, sdio(d7) 6262306a36Sopenharmony_cimpp11 11 gpio, uart0(txd) 6362306a36Sopenharmony_cimpp12 12 gpio, sdio(pw_off), sdio(hw_rst) 6462306a36Sopenharmony_cimpp13 13 gpio 6562306a36Sopenharmony_cimpp14 14 gpio 6662306a36Sopenharmony_cimpp15 15 gpio 6762306a36Sopenharmony_cimpp16 16 gpio 6862306a36Sopenharmony_cimpp17 17 gpio 6962306a36Sopenharmony_cimpp18 18 gpio 7062306a36Sopenharmony_cimpp19 19 gpio, uart0(rxd), sdio(pw_off) 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ciGPIO: 7362306a36Sopenharmony_ci----- 7462306a36Sopenharmony_ciFor common binding part and usage, refer to 7562306a36Sopenharmony_ciDocumentation/devicetree/bindings/gpio/gpio-mvebu.yaml. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ciRequired properties: 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci- compatible: "marvell,armada-8k-gpio" 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci- offset: offset address inside the syscon block 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciOptional properties: 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci- marvell,pwm-offset: offset address of PWM duration control registers inside 8662306a36Sopenharmony_ci the syscon block 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciExample: 8962306a36Sopenharmony_ciap_syscon: system-controller@6f4000 { 9062306a36Sopenharmony_ci compatible = "syscon", "simple-mfd"; 9162306a36Sopenharmony_ci reg = <0x6f4000 0x1000>; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci ap_clk: clock { 9462306a36Sopenharmony_ci compatible = "marvell,ap806-clock"; 9562306a36Sopenharmony_ci #clock-cells = <1>; 9662306a36Sopenharmony_ci }; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci ap_pinctrl: pinctrl { 9962306a36Sopenharmony_ci compatible = "marvell,ap806-pinctrl"; 10062306a36Sopenharmony_ci }; 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci ap_gpio: gpio { 10362306a36Sopenharmony_ci compatible = "marvell,armada-8k-gpio"; 10462306a36Sopenharmony_ci offset = <0x1040>; 10562306a36Sopenharmony_ci ngpios = <19>; 10662306a36Sopenharmony_ci gpio-controller; 10762306a36Sopenharmony_ci #gpio-cells = <2>; 10862306a36Sopenharmony_ci gpio-ranges = <&ap_pinctrl 0 0 19>; 10962306a36Sopenharmony_ci marvell,pwm-offset = <0x10c0>; 11062306a36Sopenharmony_ci #pwm-cells = <2>; 11162306a36Sopenharmony_ci clocks = <&ap_clk 3>; 11262306a36Sopenharmony_ci }; 11362306a36Sopenharmony_ci}; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ciSYSTEM CONTROLLER 1 11662306a36Sopenharmony_ci=================== 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ciThermal: 11962306a36Sopenharmony_ci-------- 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ciFor common binding part and usage, refer to 12262306a36Sopenharmony_ciDocumentation/devicetree/bindings/thermal/thermal*.yaml 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ciThe thermal IP can probe the temperature all around the processor. It 12562306a36Sopenharmony_cimay feature several channels, each of them wired to one sensor. 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ciIt is possible to setup an overheat interrupt by giving at least one 12862306a36Sopenharmony_cicritical point to any subnode of the thermal-zone node. 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ciRequired properties: 13162306a36Sopenharmony_ci- compatible: must be one of: 13262306a36Sopenharmony_ci * marvell,armada-ap806-thermal 13362306a36Sopenharmony_ci- reg: register range associated with the thermal functions. 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ciOptional properties: 13662306a36Sopenharmony_ci- interrupts: overheat interrupt handle. Should point to line 18 of the 13762306a36Sopenharmony_ci SEI irqchip. See interrupt-controller/interrupts.txt 13862306a36Sopenharmony_ci- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer 13962306a36Sopenharmony_ci to this IP and represents the channel ID. There is one sensor per 14062306a36Sopenharmony_ci channel. O refers to the thermal IP internal channel, while positive 14162306a36Sopenharmony_ci IDs refer to each CPU. 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ciExample: 14462306a36Sopenharmony_ciap_syscon1: system-controller@6f8000 { 14562306a36Sopenharmony_ci compatible = "syscon", "simple-mfd"; 14662306a36Sopenharmony_ci reg = <0x6f8000 0x1000>; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci ap_thermal: thermal-sensor@80 { 14962306a36Sopenharmony_ci compatible = "marvell,armada-ap806-thermal"; 15062306a36Sopenharmony_ci reg = <0x80 0x10>; 15162306a36Sopenharmony_ci interrupt-parent = <&sei>; 15262306a36Sopenharmony_ci interrupts = <18>; 15362306a36Sopenharmony_ci #thermal-sensor-cells = <1>; 15462306a36Sopenharmony_ci }; 15562306a36Sopenharmony_ci}; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciCluster clocks: 15862306a36Sopenharmony_ci--------------- 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ciDevice Tree Clock bindings for cluster clock of Marvell 16162306a36Sopenharmony_ciAP806/AP807. Each cluster contain up to 2 CPUs running at the same 16262306a36Sopenharmony_cifrequency. 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ciRequired properties: 16562306a36Sopenharmony_ci - compatible: must be one of: 16662306a36Sopenharmony_ci * "marvell,ap806-cpu-clock" 16762306a36Sopenharmony_ci * "marvell,ap807-cpu-clock" 16862306a36Sopenharmony_ci- #clock-cells : should be set to 1. 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci- clocks : shall be the input parent clock(s) phandle for the clock 17162306a36Sopenharmony_ci (one per cluster) 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci- reg: register range associated with the cluster clocks 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ciap_syscon1: system-controller@6f8000 { 17662306a36Sopenharmony_ci compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd"; 17762306a36Sopenharmony_ci reg = <0x6f8000 0x1000>; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci cpu_clk: clock-cpu@278 { 18062306a36Sopenharmony_ci compatible = "marvell,ap806-cpu-clock"; 18162306a36Sopenharmony_ci clocks = <&ap_clk 0>, <&ap_clk 1>; 18262306a36Sopenharmony_ci #clock-cells = <1>; 18362306a36Sopenharmony_ci reg = <0x278 0xa30>; 18462306a36Sopenharmony_ci }; 18562306a36Sopenharmony_ci}; 186