| Marvell Armada AP80x System Controller |
| ====================================== |
| |
| The AP806/AP807 is one of the two core HW blocks of the Marvell Armada |
| 7K/8K/931x SoCs. It contains system controllers, which provide several |
| registers giving access to numerous features: clocks, pin-muxing and |
| many other SoC configuration items. This DT binding allows to describe |
| these system controllers. |
| |
| For the top level node: |
| - compatible: must be: "syscon", "simple-mfd"; |
| - reg: register area of the AP80x system controller |
| |
| SYSTEM CONTROLLER 0 |
| =================== |
| |
| Clocks: |
| ------- |
| |
| |
| The Device Tree node representing the AP806/AP807 system controller |
| provides a number of clocks: |
| |
| - 0: reference clock of CPU cluster 0 |
| - 1: reference clock of CPU cluster 1 |
| - 2: fixed PLL at 1200 Mhz |
| - 3: MSS clock, derived from the fixed PLL |
| |
| Required properties: |
| |
| - compatible: must be one of: |
| * "marvell,ap806-clock" |
| * "marvell,ap807-clock" |
| - #clock-cells: must be set to 1 |
| |
| Pinctrl: |
| -------- |
| |
| For common binding part and usage, refer to |
| Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt. |
| |
| Required properties: |
| - compatible must be "marvell,ap806-pinctrl", |
| |
| Available mpp pins/groups and functions: |
| Note: brackets (x) are not part of the mpp name for marvell,function and given |
| only for more detailed description in this document. |
| |
| name pins functions |
| ================================================================================ |
| mpp0 0 gpio, sdio(clk), spi0(clk) |
| mpp1 1 gpio, sdio(cmd), spi0(miso) |
| mpp2 2 gpio, sdio(d0), spi0(mosi) |
| mpp3 3 gpio, sdio(d1), spi0(cs0n) |
| mpp4 4 gpio, sdio(d2), i2c0(sda) |
| mpp5 5 gpio, sdio(d3), i2c0(sdk) |
| mpp6 6 gpio, sdio(ds) |
| mpp7 7 gpio, sdio(d4), uart1(rxd) |
| mpp8 8 gpio, sdio(d5), uart1(txd) |
| mpp9 9 gpio, sdio(d6), spi0(cs1n) |
| mpp10 10 gpio, sdio(d7) |
| mpp11 11 gpio, uart0(txd) |
| mpp12 12 gpio, sdio(pw_off), sdio(hw_rst) |
| mpp13 13 gpio |
| mpp14 14 gpio |
| mpp15 15 gpio |
| mpp16 16 gpio |
| mpp17 17 gpio |
| mpp18 18 gpio |
| mpp19 19 gpio, uart0(rxd), sdio(pw_off) |
| |
| GPIO: |
| ----- |
| For common binding part and usage, refer to |
| Documentation/devicetree/bindings/gpio/gpio-mvebu.yaml. |
| |
| Required properties: |
| |
| - compatible: "marvell,armada-8k-gpio" |
| |
| - offset: offset address inside the syscon block |
| |
| Optional properties: |
| |
| - marvell,pwm-offset: offset address of PWM duration control registers inside |
| the syscon block |
| |
| Example: |
| ap_syscon: system-controller@6f4000 { |
| compatible = "syscon", "simple-mfd"; |
| reg = <0x6f4000 0x1000>; |
| |
| ap_clk: clock { |
| compatible = "marvell,ap806-clock"; |
| #clock-cells = <1>; |
| }; |
| |
| ap_pinctrl: pinctrl { |
| compatible = "marvell,ap806-pinctrl"; |
| }; |
| |
| ap_gpio: gpio { |
| compatible = "marvell,armada-8k-gpio"; |
| offset = <0x1040>; |
| ngpios = <19>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| gpio-ranges = <&ap_pinctrl 0 0 19>; |
| marvell,pwm-offset = <0x10c0>; |
| #pwm-cells = <2>; |
| clocks = <&ap_clk 3>; |
| }; |
| }; |
| |
| SYSTEM CONTROLLER 1 |
| =================== |
| |
| Thermal: |
| -------- |
| |
| For common binding part and usage, refer to |
| Documentation/devicetree/bindings/thermal/thermal*.yaml |
| |
| The thermal IP can probe the temperature all around the processor. It |
| may feature several channels, each of them wired to one sensor. |
| |
| It is possible to setup an overheat interrupt by giving at least one |
| critical point to any subnode of the thermal-zone node. |
| |
| Required properties: |
| - compatible: must be one of: |
| * marvell,armada-ap806-thermal |
| - reg: register range associated with the thermal functions. |
| |
| Optional properties: |
| - interrupts: overheat interrupt handle. Should point to line 18 of the |
| SEI irqchip. See interrupt-controller/interrupts.txt |
| - #thermal-sensor-cells: shall be <1> when thermal-zones subnodes refer |
| to this IP and represents the channel ID. There is one sensor per |
| channel. O refers to the thermal IP internal channel, while positive |
| IDs refer to each CPU. |
| |
| Example: |
| ap_syscon1: system-controller@6f8000 { |
| compatible = "syscon", "simple-mfd"; |
| reg = <0x6f8000 0x1000>; |
| |
| ap_thermal: thermal-sensor@80 { |
| compatible = "marvell,armada-ap806-thermal"; |
| reg = <0x80 0x10>; |
| interrupt-parent = <&sei>; |
| interrupts = <18>; |
| #thermal-sensor-cells = <1>; |
| }; |
| }; |
| |
| Cluster clocks: |
| --------------- |
| |
| Device Tree Clock bindings for cluster clock of Marvell |
| AP806/AP807. Each cluster contain up to 2 CPUs running at the same |
| frequency. |
| |
| Required properties: |
| - compatible: must be one of: |
| * "marvell,ap806-cpu-clock" |
| * "marvell,ap807-cpu-clock" |
| - #clock-cells : should be set to 1. |
| |
| - clocks : shall be the input parent clock(s) phandle for the clock |
| (one per cluster) |
| |
| - reg: register range associated with the cluster clocks |
| |
| ap_syscon1: system-controller@6f8000 { |
| compatible = "marvell,armada-ap806-syscon1", "syscon", "simple-mfd"; |
| reg = <0x6f8000 0x1000>; |
| |
| cpu_clk: clock-cpu@278 { |
| compatible = "marvell,ap806-cpu-clock"; |
| clocks = <&ap_clk 0>, <&ap_clk 1>; |
| #clock-cells = <1>; |
| reg = <0x278 0xa30>; |
| }; |
| }; |