18c2ecf20Sopenharmony_ciMarvell Armada AP80x System Controller 28c2ecf20Sopenharmony_ci====================================== 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciThe AP806/AP807 is one of the two core HW blocks of the Marvell Armada 58c2ecf20Sopenharmony_ci7K/8K/931x SoCs. It contains system controllers, which provide several 68c2ecf20Sopenharmony_ciregisters giving access to numerous features: clocks, pin-muxing and 78c2ecf20Sopenharmony_cimany other SoC configuration items. This DT binding allows to describe 88c2ecf20Sopenharmony_cithese system controllers. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciFor the top level node: 118c2ecf20Sopenharmony_ci - compatible: must be: "syscon", "simple-mfd"; 128c2ecf20Sopenharmony_ci - reg: register area of the AP80x system controller 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciSYSTEM CONTROLLER 0 158c2ecf20Sopenharmony_ci=================== 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciClocks: 188c2ecf20Sopenharmony_ci------- 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciThe Device Tree node representing the AP806/AP807 system controller 228c2ecf20Sopenharmony_ciprovides a number of clocks: 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci - 0: reference clock of CPU cluster 0 258c2ecf20Sopenharmony_ci - 1: reference clock of CPU cluster 1 268c2ecf20Sopenharmony_ci - 2: fixed PLL at 1200 Mhz 278c2ecf20Sopenharmony_ci - 3: MSS clock, derived from the fixed PLL 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ciRequired properties: 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci - compatible: must be one of: 328c2ecf20Sopenharmony_ci * "marvell,ap806-clock" 338c2ecf20Sopenharmony_ci * "marvell,ap807-clock" 348c2ecf20Sopenharmony_ci - #clock-cells: must be set to 1 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciPinctrl: 378c2ecf20Sopenharmony_ci-------- 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciFor common binding part and usage, refer to 408c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciRequired properties: 438c2ecf20Sopenharmony_ci- compatible must be "marvell,ap806-pinctrl", 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciAvailable mpp pins/groups and functions: 468c2ecf20Sopenharmony_ciNote: brackets (x) are not part of the mpp name for marvell,function and given 478c2ecf20Sopenharmony_cionly for more detailed description in this document. 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciname pins functions 508c2ecf20Sopenharmony_ci================================================================================ 518c2ecf20Sopenharmony_cimpp0 0 gpio, sdio(clk), spi0(clk) 528c2ecf20Sopenharmony_cimpp1 1 gpio, sdio(cmd), spi0(miso) 538c2ecf20Sopenharmony_cimpp2 2 gpio, sdio(d0), spi0(mosi) 548c2ecf20Sopenharmony_cimpp3 3 gpio, sdio(d1), spi0(cs0n) 558c2ecf20Sopenharmony_cimpp4 4 gpio, sdio(d2), i2c0(sda) 568c2ecf20Sopenharmony_cimpp5 5 gpio, sdio(d3), i2c0(sdk) 578c2ecf20Sopenharmony_cimpp6 6 gpio, sdio(ds) 588c2ecf20Sopenharmony_cimpp7 7 gpio, sdio(d4), uart1(rxd) 598c2ecf20Sopenharmony_cimpp8 8 gpio, sdio(d5), uart1(txd) 608c2ecf20Sopenharmony_cimpp9 9 gpio, sdio(d6), spi0(cs1n) 618c2ecf20Sopenharmony_cimpp10 10 gpio, sdio(d7) 628c2ecf20Sopenharmony_cimpp11 11 gpio, uart0(txd) 638c2ecf20Sopenharmony_cimpp12 12 gpio, sdio(pw_off), sdio(hw_rst) 648c2ecf20Sopenharmony_cimpp13 13 gpio 658c2ecf20Sopenharmony_cimpp14 14 gpio 668c2ecf20Sopenharmony_cimpp15 15 gpio 678c2ecf20Sopenharmony_cimpp16 16 gpio 688c2ecf20Sopenharmony_cimpp17 17 gpio 698c2ecf20Sopenharmony_cimpp18 18 gpio 708c2ecf20Sopenharmony_cimpp19 19 gpio, uart0(rxd), sdio(pw_off) 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ciGPIO: 738c2ecf20Sopenharmony_ci----- 748c2ecf20Sopenharmony_ciFor common binding part and usage, refer to 758c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/gpio/gpio-mvebu.txt. 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciRequired properties: 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci- compatible: "marvell,armada-8k-gpio" 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci- offset: offset address inside the syscon block 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciExample: 848c2ecf20Sopenharmony_ciap_syscon: system-controller@6f4000 { 858c2ecf20Sopenharmony_ci compatible = "syscon", "simple-mfd"; 868c2ecf20Sopenharmony_ci reg = <0x6f4000 0x1000>; 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci ap_clk: clock { 898c2ecf20Sopenharmony_ci compatible = "marvell,ap806-clock"; 908c2ecf20Sopenharmony_ci #clock-cells = <1>; 918c2ecf20Sopenharmony_ci }; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci ap_pinctrl: pinctrl { 948c2ecf20Sopenharmony_ci compatible = "marvell,ap806-pinctrl"; 958c2ecf20Sopenharmony_ci }; 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci ap_gpio: gpio { 988c2ecf20Sopenharmony_ci compatible = "marvell,armada-8k-gpio"; 998c2ecf20Sopenharmony_ci offset = <0x1040>; 1008c2ecf20Sopenharmony_ci ngpios = <19>; 1018c2ecf20Sopenharmony_ci gpio-controller; 1028c2ecf20Sopenharmony_ci #gpio-cells = <2>; 1038c2ecf20Sopenharmony_ci gpio-ranges = <&ap_pinctrl 0 0 19>; 1048c2ecf20Sopenharmony_ci }; 1058c2ecf20Sopenharmony_ci}; 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ciSYSTEM CONTROLLER 1 1088c2ecf20Sopenharmony_ci=================== 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ciThermal: 1118c2ecf20Sopenharmony_ci-------- 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ciFor common binding part and usage, refer to 1148c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/thermal/thermal*.yaml 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ciThe thermal IP can probe the temperature all around the processor. It 1178c2ecf20Sopenharmony_cimay feature several channels, each of them wired to one sensor. 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ciIt is possible to setup an overheat interrupt by giving at least one 1208c2ecf20Sopenharmony_cicritical point to any subnode of the thermal-zone node. 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ciRequired properties: 1238c2ecf20Sopenharmony_ci- compatible: must be one of: 1248c2ecf20Sopenharmony_ci * marvell,armada-ap806-thermal 1258c2ecf20Sopenharmony_ci- reg: register range associated with the thermal functions. 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ciOptional properties: 1288c2ecf20Sopenharmony_ci- interrupts: overheat interrupt handle. Should point to line 18 of the 1298c2ecf20Sopenharmony_ci SEI irqchip. See interrupt-controller/interrupts.txt 1308c2ecf20Sopenharmony_ci- #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer 1318c2ecf20Sopenharmony_ci to this IP and represents the channel ID. There is one sensor per 1328c2ecf20Sopenharmony_ci channel. O refers to the thermal IP internal channel, while positive 1338c2ecf20Sopenharmony_ci IDs refer to each CPU. 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ciExample: 1368c2ecf20Sopenharmony_ciap_syscon1: system-controller@6f8000 { 1378c2ecf20Sopenharmony_ci compatible = "syscon", "simple-mfd"; 1388c2ecf20Sopenharmony_ci reg = <0x6f8000 0x1000>; 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci ap_thermal: thermal-sensor@80 { 1418c2ecf20Sopenharmony_ci compatible = "marvell,armada-ap806-thermal"; 1428c2ecf20Sopenharmony_ci reg = <0x80 0x10>; 1438c2ecf20Sopenharmony_ci interrupt-parent = <&sei>; 1448c2ecf20Sopenharmony_ci interrupts = <18>; 1458c2ecf20Sopenharmony_ci #thermal-sensor-cells = <1>; 1468c2ecf20Sopenharmony_ci }; 1478c2ecf20Sopenharmony_ci}; 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ciCluster clocks: 1508c2ecf20Sopenharmony_ci--------------- 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ciDevice Tree Clock bindings for cluster clock of Marvell 1538c2ecf20Sopenharmony_ciAP806/AP807. Each cluster contain up to 2 CPUs running at the same 1548c2ecf20Sopenharmony_cifrequency. 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ciRequired properties: 1578c2ecf20Sopenharmony_ci - compatible: must be one of: 1588c2ecf20Sopenharmony_ci * "marvell,ap806-cpu-clock" 1598c2ecf20Sopenharmony_ci * "marvell,ap807-cpu-clock" 1608c2ecf20Sopenharmony_ci- #clock-cells : should be set to 1. 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci- clocks : shall be the input parent clock(s) phandle for the clock 1638c2ecf20Sopenharmony_ci (one per cluster) 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ci- reg: register range associated with the cluster clocks 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ciap_syscon1: system-controller@6f8000 { 1688c2ecf20Sopenharmony_ci compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd"; 1698c2ecf20Sopenharmony_ci reg = <0x6f8000 0x1000>; 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci cpu_clk: clock-cpu@278 { 1728c2ecf20Sopenharmony_ci compatible = "marvell,ap806-cpu-clock"; 1738c2ecf20Sopenharmony_ci clocks = <&ap_clk 0>, <&ap_clk 1>; 1748c2ecf20Sopenharmony_ci #clock-cells = <1>; 1758c2ecf20Sopenharmony_ci reg = <0x278 0xa30>; 1768c2ecf20Sopenharmony_ci }; 1778c2ecf20Sopenharmony_ci}; 178