From bbedcf586534189b334d3213794c8519574c8e43 Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Mon, 20 Feb 2017 18:38:50 +0100 Subject: [PATCH 1/8] arm64: dts: marvell: add RTC description for Armada 7K/8K This RTC IP is found in the CP110 master and slave which are part of the Armada 8K SoCs and of the subset family the Armada 7K. There is one RTC in each CP but the RTC requires an external oscillator. However on the Armada 80x0, the RTC clock in CP master is not connected (by package) to the oscillator. So this one is disabled for the Armada 8020 and the Armada 8040. As the RTC clock in CP slave is connected to the oscillator this one is let enabled. and will be used on these SoCs (80x0). Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-8020.dtsi | 10 ++++++++++ arch/arm64/boot/dts/marvell/armada-8040.dtsi | 9 +++++++++ arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi | 7 +++++++ arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi | 7 +++++++ 4 files changed, 33 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-8020.dtsi b/arch/arm64/boot/dts/marvell/armada-8020.dtsi index 048e5cf5160e..7c08f1f28d9e 100644 --- a/arch/arm64/boot/dts/marvell/armada-8020.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-8020.dtsi @@ -54,3 +54,13 @@ / { compatible = "marvell,armada8020", "marvell,armada-ap806-dual", "marvell,armada-ap806"; }; + +/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock + * in CP master is not connected (by package) to the oscillator. So + * disable it. However, the RTC clock in CP slave is connected to the + * oscillator so this one is let enabled. + */ + +&cpm_rtc { + status = "disabled"; +}; diff --git a/arch/arm64/boot/dts/marvell/armada-8040.dtsi b/arch/arm64/boot/dts/marvell/armada-8040.dtsi index 9c1b28c47683..33813a75bc30 100644 --- a/arch/arm64/boot/dts/marvell/armada-8040.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-8040.dtsi @@ -54,3 +54,12 @@ / { compatible = "marvell,armada8040", "marvell,armada-ap806-quad", "marvell,armada-ap806"; }; + +/* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock + * in CP master is not connected (by package) to the oscillator. So + * disable it. However, the RTC clock in CP slave is connected to the + * oscillator so this one is let enabled. + */ +&cpm_rtc { + status = "disabled"; +}; diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi index 3a99c36433d6..d12741414009 100644 --- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi @@ -79,6 +79,13 @@ cpm_syscon0: system-controller@440000 { "cpm-usb3dev", "cpm-eip150", "cpm-eip197"; }; + cpm_rtc: rtc@284000 { + compatible = "marvell,armada-8k-rtc"; + reg = <0x284000 0x20>, <0x284080 0x24>; + reg-names = "rtc", "rtc-soc"; + interrupts = ; + }; + cpm_sata0: sata@540000 { compatible = "marvell,armada-8k-ahci", "generic-ahci"; diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi index 9e09c4d3b6bd..d51eb2db6df7 100644 --- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi @@ -59,6 +59,13 @@ config-space@f4000000 { interrupt-parent = <&gic>; ranges = <0x0 0x0 0xf4000000 0x2000000>; + cps_rtc: rtc@284000 { + compatible = "marvell,armada-8k-rtc"; + reg = <0x284000 0x20>, <0x284080 0x24>; + reg-names = "rtc", "rtc-soc"; + interrupts = ; + }; + cps_syscon0: system-controller@440000 { compatible = "marvell,cp110-system-controller0", "syscon"; From 0ddd48de1e844ec5e0f3e3cc8622d85e00edbe35 Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 22 Feb 2017 18:31:44 +0100 Subject: [PATCH 2/8] ARM64: dts: marvell: armada37xx: add address and size property for i2c cells These property were missing when the nodes were added and their lack generate warning messages when adding i2c device in the subnodes. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi index b48d668a6ab6..cf0c2f9ebd7d 100644 --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi @@ -112,6 +112,8 @@ spi0: spi@10600 { i2c0: i2c@11000 { compatible = "marvell,armada-3700-i2c"; reg = <0x11000 0x24>; + #address-cells = <1>; + #size-cells = <0>; clocks = <&nb_periph_clk 10>; interrupts = ; mrvl,i2c-fast-mode; @@ -121,6 +123,8 @@ i2c0: i2c@11000 { i2c1: i2c@11080 { compatible = "marvell,armada-3700-i2c"; reg = <0x11080 0x24>; + #address-cells = <1>; + #size-cells = <0>; clocks = <&nb_periph_clk 9>; interrupts = ; mrvl,i2c-fast-mode; From a844a652e7f2b6e44b5e69c6874c8e2ad2d2f5e6 Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 22 Feb 2017 18:31:45 +0100 Subject: [PATCH 3/8] ARM64: dts: marvell: armada-3720-db: add gpio expander A gpio expander is present on the i2c bus on the Armada 3720 DB board. This patch add it to the device tree. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-3720-db.dts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-3720-db.dts b/arch/arm64/boot/dts/marvell/armada-3720-db.dts index 86602c907a61..864936acc316 100644 --- a/arch/arm64/boot/dts/marvell/armada-3720-db.dts +++ b/arch/arm64/boot/dts/marvell/armada-3720-db.dts @@ -64,6 +64,24 @@ memory@0 { &i2c0 { status = "okay"; + + gpio_exp: pca9555@22 { + compatible = "nxp,pca9555"; + gpio-controller; + #gpio-cells = <2>; + + reg = <0x22>; + /* + * IO0_0: PWR_EN_USB2 IO1_0: PWR_EN_VTT + * IO0_1: PWR_EN_USB23 IO1_1: MPCIE_WDISABLE + * IO0_2: PWR_EN_SATA IO1_2: RGMII_DEV_RSTN + * IO0_3: PWR_EN_PCIE IO1_3: SGMII_DEV_RSTN + * IO0_4: PWR_EN_SD + * IO0_5: PWR_EN_EMMC + * IO0_6: PWR_EN_RGMII IO1_6: SATA_USB3.0_SEL + * IO0_7: PWR_EN_SGMII IO1_7: PWR_MCI_PS + */ + }; }; /* CON3 */ From 86fcb2bca0b8eccf97991e601b1a75a9c5da0406 Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 8 Mar 2017 18:33:13 +0100 Subject: [PATCH 4/8] ARM64: dts: marvell: armada-37xx: Fix interrupt mapping for USB3 IRQ number for xhci controller was wrong, fix it. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi index cf0c2f9ebd7d..4c7ff32acb97 100644 --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi @@ -200,7 +200,7 @@ usb3: usb@58000 { compatible = "marvell,armada3700-xhci", "generic-xhci"; reg = <0x58000 0x4000>; - interrupts = ; + interrupts = ; status = "disabled"; }; From e4afb4804ddce1306607dfcf913abed90b97c862 Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 8 Mar 2017 18:33:14 +0100 Subject: [PATCH 5/8] ARM64: dts: marvell: armada-37xx: Add clock resource for USB3 Now that clocks are available provide a clock resource for xhci node. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi index 4c7ff32acb97..2a4e8dbe33aa 100644 --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi @@ -201,6 +201,7 @@ usb3: usb@58000 { "generic-xhci"; reg = <0x58000 0x4000>; interrupts = ; + clocks = <&sb_periph_clk 12>; status = "disabled"; }; From a12af1c20751340ab6e449a5ef78b37d31123aca Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 8 Mar 2017 18:33:15 +0100 Subject: [PATCH 6/8] ARM64: dts: marvell: armada-3720-db: Add phy for USB3 Now that the gpio expander is present in the dts, use it to add an USB3 PHY using one of these gpio as a regulator. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-3720-db.dts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-3720-db.dts b/arch/arm64/boot/dts/marvell/armada-3720-db.dts index 864936acc316..01e583c07d46 100644 --- a/arch/arm64/boot/dts/marvell/armada-3720-db.dts +++ b/arch/arm64/boot/dts/marvell/armada-3720-db.dts @@ -46,6 +46,7 @@ /dts-v1/; +#include #include "armada-372x.dtsi" / { @@ -60,6 +61,21 @@ memory@0 { device_type = "memory"; reg = <0x00000000 0x00000000 0x00000000 0x20000000>; }; + + exp_usb3_vbus: usb3-vbus { + compatible = "regulator-fixed"; + regulator-name = "usb3-vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + regulator-always-on; + gpio = <&gpio_exp 1 GPIO_ACTIVE_HIGH>; + }; + + usb3_phy: usb3-phy { + compatible = "usb-nop-xceiv"; + vcc-supply = <&exp_usb3_vbus>; + }; }; &i2c0 { @@ -127,6 +143,7 @@ &uart0 { /* CON31 */ &usb3 { status = "okay"; + usb-phy = <&usb3_phy>; }; /* CON17 (PCIe) / CON12 (mini-PCIe) */ From 85bee2af8abc1acff7cbf6fd1b4ce733c19c992b Mon Sep 17 00:00:00 2001 From: Gregory CLEMENT Date: Wed, 8 Mar 2017 18:35:19 +0100 Subject: [PATCH 7/8] ARM64: dts: marvell: armada-3720 add RTC support The Armada 3720 DB board has an RTC on the I2C bus. It's a PT7C4337A from Pericom but which claims to be fully compatible with the ds1337. Signed-off-by: Gregory CLEMENT --- arch/arm64/boot/dts/marvell/armada-3720-db.dts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-3720-db.dts b/arch/arm64/boot/dts/marvell/armada-3720-db.dts index 01e583c07d46..2a6eef2d4d66 100644 --- a/arch/arm64/boot/dts/marvell/armada-3720-db.dts +++ b/arch/arm64/boot/dts/marvell/armada-3720-db.dts @@ -98,6 +98,12 @@ gpio_exp: pca9555@22 { * IO0_7: PWR_EN_SGMII IO1_7: PWR_MCI_PS */ }; + + rtc@68 { + /* PT7C4337A from pericom fully compatible with the ds1337 */ + compatible = "dallas,ds1337"; + reg = <0x68>; + }; }; /* CON3 */ From 60894719241e2b3d6d202304de9ad33a8da3685c Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Thu, 16 Mar 2017 16:16:27 +0100 Subject: [PATCH 8/8] arm64: marvell: dts: add PPv2.2 description to Armada 7K/8K This commit adds the description of the PPv2.2 hardware block for the Marvell Armada 7K and Armada 8K processors, and their corresponding Armada 7040 and 8040 Development boards. Signed-off-by: Thomas Petazzoni Signed-off-by: Gregory CLEMENT --- .../arm64/boot/dts/marvell/armada-7040-db.dts | 25 +++++++++++++ .../arm64/boot/dts/marvell/armada-8040-db.dts | 16 ++++++++ .../boot/dts/marvell/armada-cp110-master.dtsi | 37 +++++++++++++++++++ .../boot/dts/marvell/armada-cp110-slave.dtsi | 37 +++++++++++++++++++ 4 files changed, 115 insertions(+) diff --git a/arch/arm64/boot/dts/marvell/armada-7040-db.dts b/arch/arm64/boot/dts/marvell/armada-7040-db.dts index 070b589680c5..bb0e1e8e7138 100644 --- a/arch/arm64/boot/dts/marvell/armada-7040-db.dts +++ b/arch/arm64/boot/dts/marvell/armada-7040-db.dts @@ -146,3 +146,28 @@ &cpm_usb3_0 { &cpm_usb3_1 { status = "okay"; }; + +&cpm_mdio { + phy0: ethernet-phy@0 { + reg = <0>; + }; + phy1: ethernet-phy@1 { + reg = <1>; + }; +}; + +&cpm_ethernet { + status = "okay"; +}; + +&cpm_eth1 { + status = "okay"; + phy = <&phy0>; + phy-mode = "sgmii"; +}; + +&cpm_eth2 { + status = "okay"; + phy = <&phy1>; + phy-mode = "rgmii-id"; +}; diff --git a/arch/arm64/boot/dts/marvell/armada-8040-db.dts b/arch/arm64/boot/dts/marvell/armada-8040-db.dts index 6e6f182fb297..80e685e4235d 100644 --- a/arch/arm64/boot/dts/marvell/armada-8040-db.dts +++ b/arch/arm64/boot/dts/marvell/armada-8040-db.dts @@ -124,6 +124,22 @@ &cpm_usb3_1 { status = "okay"; }; +&cpm_mdio { + phy1: ethernet-phy@1 { + reg = <1>; + }; +}; + +&cpm_ethernet { + status = "okay"; +}; + +&cpm_eth2 { + status = "okay"; + phy = <&phy1>; + phy-mode = "rgmii-id"; +}; + /* CON5 on CP1 expansion */ &cps_pcie2 { status = "okay"; diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi index d12741414009..a035f5955282 100644 --- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi @@ -59,6 +59,43 @@ config-space@f2000000 { interrupt-parent = <&gic>; ranges = <0x0 0x0 0xf2000000 0x2000000>; + cpm_ethernet: ethernet@0 { + compatible = "marvell,armada-7k-pp22"; + reg = <0x0 0x100000>, <0x129000 0xb000>; + clocks = <&cpm_syscon0 1 3>, <&cpm_syscon0 1 9>, <&cpm_syscon0 1 5>; + clock-names = "pp_clk", "gop_clk", "mg_clk"; + status = "disabled"; + dma-coherent; + + cpm_eth0: eth0 { + interrupts = ; + port-id = <0>; + gop-port-id = <0>; + status = "disabled"; + }; + + cpm_eth1: eth1 { + interrupts = ; + port-id = <1>; + gop-port-id = <2>; + status = "disabled"; + }; + + cpm_eth2: eth2 { + interrupts = ; + port-id = <2>; + gop-port-id = <3>; + status = "disabled"; + }; + }; + + cpm_mdio: mdio@12a200 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "marvell,orion-mdio"; + reg = <0x12a200 0x10>; + }; + cpm_syscon0: system-controller@440000 { compatible = "marvell,cp110-system-controller0", "syscon"; diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi index d51eb2db6df7..fb9141ab9b37 100644 --- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi +++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi @@ -66,6 +66,43 @@ cps_rtc: rtc@284000 { interrupts = ; }; + cps_ethernet: ethernet@0 { + compatible = "marvell,armada-7k-pp22"; + reg = <0x0 0x100000>, <0x129000 0xb000>; + clocks = <&cps_syscon0 1 3>, <&cps_syscon0 1 9>, <&cps_syscon0 1 5>; + clock-names = "pp_clk", "gop_clk", "mg_clk"; + status = "disabled"; + dma-coherent; + + cps_eth0: eth0 { + interrupts = ; + port-id = <0>; + gop-port-id = <0>; + status = "disabled"; + }; + + cps_eth1: eth1 { + interrupts = ; + port-id = <1>; + gop-port-id = <2>; + status = "disabled"; + }; + + cps_eth2: eth2 { + interrupts = ; + port-id = <2>; + gop-port-id = <3>; + status = "disabled"; + }; + }; + + cps_mdio: mdio@12a200 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "marvell,orion-mdio"; + reg = <0x12a200 0x10>; + }; + cps_syscon0: system-controller@440000 { compatible = "marvell,cp110-system-controller0", "syscon";