From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Fri, 16 Aug 2019 16:40:20 +0200 Subject: arm64: dts: allwinner: h6: Add AC200 EPHY nodes All Allwinner H6 SoCs feature a co-packaged AC200 die, which replaces the integrated PHY and audio circuitry of its H3/H5 predecessors. It is using an internal I2C connection, but otherwise pretty much behaves as it would be externally connected. Since every H6 SoC contains this chip, add the required DT nodes to the SoC .dtsi, but keep them disabled. This is for now just covering the AC200 MFD parent and its EPHY child. Any board making use of one of the integrated PHY needs to enable it and connect the MAC and PHY accordingly. Signed-off-by: Jernej Skrabec Signed-off-by: Andre Przywara --- arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 73 ++++++++++ 1 file changed, 73 insertions(+) diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi @@ -24,6 +24,16 @@ aliases { mmc2 = &mmc2; }; + ac200_pwm_clk: ac200_clk { + compatible = "pwm-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + pinctrl-names = "default"; + pinctrl-0 = <&pwm1_pin>; + pwms = <&pwm 1 42 0>; + status = "disabled"; + }; + cpus { #address-cells = <1>; #size-cells = <0>; @@ -350,6 +360,14 @@ ths_calibration: thermal-sensor-calibration@14 { cpu_speed_grade: cpu-speed-grade@1c { reg = <0x1c 0x4>; }; + + ephy_calib: ephy_calib@2c { + reg = <0x2c 0x2>; + }; + + ac200_bg: ac200_bg@30 { + reg = <0x30 0x2>; + }; }; timer@3009000 { @@ -405,6 +423,13 @@ ext_rgmii_pins: rgmii-pins { drive-strength = <40>; }; + ext_rmii_pins: rmii_pins { + pins = "PA0", "PA1", "PA2", "PA3", "PA4", + "PA5", "PA6", "PA7", "PA8", "PA9"; + function = "emac"; + drive-strength = <40>; + }; + hdmi_pins: hdmi-pins { pins = "PH8", "PH9", "PH10"; function = "hdmi"; @@ -425,6 +450,12 @@ i2c2_pins: i2c2-pins { function = "i2c2"; }; + i2c3_pins: i2c3-pins { + pins = "PB17", "PB18"; + function = "i2c3"; + bias-pull-up; + }; + mmc0_pins: mmc0-pins { pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; @@ -452,6 +483,11 @@ mmc2_pins: mmc2-pins { bias-pull-up; }; + pwm1_pin: pwm1-pin { + pins = "PB19"; + function = "pwm1"; + }; + /omit-if-no-ref/ spi0_pins: spi0-pins { pins = "PC0", "PC2", "PC3"; @@ -664,6 +700,43 @@ i2c2: i2c@5002800 { #size-cells = <0>; }; + i2c3: i2c@5002c00 { + compatible = "allwinner,sun50i-h6-i2c", + "allwinner,sun6i-a31-i2c"; + reg = <0x05002c00 0x400>; + interrupts = ; + clocks = <&ccu CLK_BUS_I2C3>; + resets = <&ccu RST_BUS_I2C3>; + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_pins>; + clock-frequency = <100000>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + + ac200: mfd@10 { + compatible = "x-powers,ac200"; + reg = <0x10>; + clocks = <&ac200_pwm_clk>; + interrupt-parent = <&pio>; + interrupts = <1 20 IRQ_TYPE_LEVEL_LOW>; + interrupt-controller; + #interrupt-cells = <1>; + nvmem-cells = <&ac200_bg>; + nvmem-cell-names = "bandgap"; + + ac200_ephy_ctl: syscon { + compatible = "x-powers,ac200-ephy-ctl"; + nvmem-cells = <&ephy_calib>; + nvmem-cell-names = "calibration"; + #clock-cells = <0>; + #reset-cells = <0>; + phy-mode = "rmii"; + status = "disabled"; + }; + }; + }; + spi0: spi@5010000 { compatible = "allwinner,sun50i-h6-spi", "allwinner,sun8i-h3-spi"; -- Armbian