diff --git a/patch/kernel/sunxi-current/board-h2plus-sunvell-r69-add-device.patch b/patch/kernel/sunxi-current/board-h2plus-sunvell-r69-add-device.patch index 11fab7ee8..e2a587d14 100644 --- a/patch/kernel/sunxi-current/board-h2plus-sunvell-r69-add-device.patch +++ b/patch/kernel/sunxi-current/board-h2plus-sunvell-r69-add-device.patch @@ -1,61 +1,24 @@ diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index e3d5a6c..0d3eef6 100644 +index f47ce87..9f4bc9e 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -995,6 +995,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ +@@ -1092,6 +1092,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ + sun8i-h2-plus-nanopi-duo.dtb \ sun8i-h2-plus-orangepi-r1.dtb \ - sun8i-h2-plus-bananapi-m2-zero.dtb \ sun8i-h2-plus-orangepi-zero.dtb \ + sun8i-h2-plus-sunvell-r69.dtb \ sun8i-h3-bananapi-m2-plus.dtb \ + sun8i-h3-bananapi-m2-plus-v1.2.dtb \ sun8i-h3-beelink-x2.dtb \ - sun8i-h3-libretech-all-h3-cc.dtb \ diff --git a/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts b/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts new file mode 100644 -index 0000000..1adfb0c +index 0000000..3cb766b --- /dev/null +++ b/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts -@@ -0,0 +1,215 @@ +@@ -0,0 +1,225 @@ ++// SPDX-License-Identifier: (GPL-2.0+ or MIT) +/* -+ * Based original Sunvell R69 FEX file (2018 ) -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. ++ * Based original Sunvell R69 FEX file (2019 karabek) + */ + +/dts-v1/; @@ -71,41 +34,60 @@ index 0000000..1adfb0c + compatible = "sunvell,sunvell-r69", "allwinner,sun8i-h2-plus"; + + aliases { -+ serial0 = &uart0; + ethernet0 = &emac; + ethernet1 = &xr819; ++ serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + -+ connector { -+ compatible = "hdmi-connector"; -+ type = "a"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; + + leds { + compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&leds_opc>, <&leds_r_opc>; + + pwr_led { -+ label = "sunvell-r69:blue:pwr"; -+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "heartbeat"; ++ label = "sunvell-r69:red:pwr"; ++ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; + }; + + status_led { -+ label = "sunvell-r69:red:status"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; ++ label = "sunvell-r69:blue:status"; ++ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; + }; + }; + ++ reg_vdd_cpux: vdd-cpux-regulator { ++ compatible = "regulator-gpio"; ++ regulator-name = "vdd-cpux"; ++ regulator-type = "voltage"; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-ramp-delay = <50>; /* 4ms */ ++ ++ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ ++ enable-active-high; ++ gpios-states = <0x1>; ++ states = <1100000 0x0 ++ 1300000 0x1>; ++ }; ++ + reg_vcc_wifi: reg_vcc_wifi { + compatible = "regulator-fixed"; + regulator-min-microvolt = <3300000>; @@ -123,6 +105,10 @@ index 0000000..1adfb0c + }; +}; + ++&cpu0 { ++ cpu-supply = <®_vdd_cpux>; ++}; ++ +&de { + status = "okay"; +}; @@ -154,37 +140,24 @@ index 0000000..1adfb0c + +&ir { + pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; ++ pinctrl-0 = <&r_ir_rx_pin>; /* <&r_ir_rx_pin> */ + status = "okay"; +}; + +&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; -+ cd-inverted; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + status = "okay"; +}; + -+&mmc1_pins { -+ bias-pull-up; -+}; -+ +&mmc1 { -+ pinctrl-names = "default"; -+ /* pinctrl-0 = <&mmc1_pins>; */ + vmmc-supply = <®_vcc_wifi>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + status = "okay"; + -+ /* -+ * Explicitly define the sdio device, so that we can add an ethernet -+ * alias for it (which e.g. makes u-boot set a mac-address). -+ */ + xr819: sdio_wifi@1 { + reg = <1>; + compatible = "xradio,xr819"; @@ -204,6 +177,11 @@ index 0000000..1adfb0c + status = "okay"; +}; + ++&mmc2_8bit_pins { ++ /* Increase current from 30mA to 40mA for DDR eMMC */ ++ allwinner,drive = ; ++}; ++ +&ohci0 { + status = "okay"; +}; @@ -212,7 +190,22 @@ index 0000000..1adfb0c + status = "okay"; +}; + -+&tcon0 { ++&pio { ++ leds_opc: led_pins { ++ pins = "PA15"; ++ function = "gpio_out"; ++ }; ++}; ++ ++&r_pio { ++ leds_r_opc: led_pins { ++ pins = "PL10"; ++ function = "gpio_out"; ++ }; ++}; ++ ++®_usb0_vbus { ++ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */ + status = "okay"; +}; + @@ -222,12 +215,29 @@ index 0000000..1adfb0c + status = "okay"; +}; + ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "disabled"; ++}; ++ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "disabled"; ++}; ++ ++&uart3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3_pins>; ++ status = "disabled"; ++}; ++ +&usb_otg { -+ dr_mode = "host"; /* host -or- peripheral */ ++ dr_mode = "otg"; + status = "okay"; +}; + +&usbphy { -+ /* USB VBUS is always on */ + status = "okay"; +}; diff --git a/patch/kernel/sunxi-dev/board-h2plus-sunvell-r69-add-device.patch b/patch/kernel/sunxi-dev/board-h2plus-sunvell-r69-add-device.patch index 11fab7ee8..e2a587d14 100644 --- a/patch/kernel/sunxi-dev/board-h2plus-sunvell-r69-add-device.patch +++ b/patch/kernel/sunxi-dev/board-h2plus-sunvell-r69-add-device.patch @@ -1,61 +1,24 @@ diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index e3d5a6c..0d3eef6 100644 +index f47ce87..9f4bc9e 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -995,6 +995,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ +@@ -1092,6 +1092,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ + sun8i-h2-plus-nanopi-duo.dtb \ sun8i-h2-plus-orangepi-r1.dtb \ - sun8i-h2-plus-bananapi-m2-zero.dtb \ sun8i-h2-plus-orangepi-zero.dtb \ + sun8i-h2-plus-sunvell-r69.dtb \ sun8i-h3-bananapi-m2-plus.dtb \ + sun8i-h3-bananapi-m2-plus-v1.2.dtb \ sun8i-h3-beelink-x2.dtb \ - sun8i-h3-libretech-all-h3-cc.dtb \ diff --git a/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts b/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts new file mode 100644 -index 0000000..1adfb0c +index 0000000..3cb766b --- /dev/null +++ b/arch/arm/boot/dts/sun8i-h2-plus-sunvell-r69.dts -@@ -0,0 +1,215 @@ +@@ -0,0 +1,225 @@ ++// SPDX-License-Identifier: (GPL-2.0+ or MIT) +/* -+ * Based original Sunvell R69 FEX file (2018 ) -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. ++ * Based original Sunvell R69 FEX file (2019 karabek) + */ + +/dts-v1/; @@ -71,41 +34,60 @@ index 0000000..1adfb0c + compatible = "sunvell,sunvell-r69", "allwinner,sun8i-h2-plus"; + + aliases { -+ serial0 = &uart0; + ethernet0 = &emac; + ethernet1 = &xr819; ++ serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + -+ connector { -+ compatible = "hdmi-connector"; -+ type = "a"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; + + leds { + compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&leds_opc>, <&leds_r_opc>; + + pwr_led { -+ label = "sunvell-r69:blue:pwr"; -+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "heartbeat"; ++ label = "sunvell-r69:red:pwr"; ++ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; + }; + + status_led { -+ label = "sunvell-r69:red:status"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; ++ label = "sunvell-r69:blue:status"; ++ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; + }; + }; + ++ reg_vdd_cpux: vdd-cpux-regulator { ++ compatible = "regulator-gpio"; ++ regulator-name = "vdd-cpux"; ++ regulator-type = "voltage"; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-ramp-delay = <50>; /* 4ms */ ++ ++ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ ++ enable-active-high; ++ gpios-states = <0x1>; ++ states = <1100000 0x0 ++ 1300000 0x1>; ++ }; ++ + reg_vcc_wifi: reg_vcc_wifi { + compatible = "regulator-fixed"; + regulator-min-microvolt = <3300000>; @@ -123,6 +105,10 @@ index 0000000..1adfb0c + }; +}; + ++&cpu0 { ++ cpu-supply = <®_vdd_cpux>; ++}; ++ +&de { + status = "okay"; +}; @@ -154,37 +140,24 @@ index 0000000..1adfb0c + +&ir { + pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_rx_pin>; ++ pinctrl-0 = <&r_ir_rx_pin>; /* <&r_ir_rx_pin> */ + status = "okay"; +}; + +&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; -+ cd-inverted; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + status = "okay"; +}; + -+&mmc1_pins { -+ bias-pull-up; -+}; -+ +&mmc1 { -+ pinctrl-names = "default"; -+ /* pinctrl-0 = <&mmc1_pins>; */ + vmmc-supply = <®_vcc_wifi>; + mmc-pwrseq = <&wifi_pwrseq>; + bus-width = <4>; + non-removable; + status = "okay"; + -+ /* -+ * Explicitly define the sdio device, so that we can add an ethernet -+ * alias for it (which e.g. makes u-boot set a mac-address). -+ */ + xr819: sdio_wifi@1 { + reg = <1>; + compatible = "xradio,xr819"; @@ -204,6 +177,11 @@ index 0000000..1adfb0c + status = "okay"; +}; + ++&mmc2_8bit_pins { ++ /* Increase current from 30mA to 40mA for DDR eMMC */ ++ allwinner,drive = ; ++}; ++ +&ohci0 { + status = "okay"; +}; @@ -212,7 +190,22 @@ index 0000000..1adfb0c + status = "okay"; +}; + -+&tcon0 { ++&pio { ++ leds_opc: led_pins { ++ pins = "PA15"; ++ function = "gpio_out"; ++ }; ++}; ++ ++&r_pio { ++ leds_r_opc: led_pins { ++ pins = "PL10"; ++ function = "gpio_out"; ++ }; ++}; ++ ++®_usb0_vbus { ++ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */ + status = "okay"; +}; + @@ -222,12 +215,29 @@ index 0000000..1adfb0c + status = "okay"; +}; + ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "disabled"; ++}; ++ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "disabled"; ++}; ++ ++&uart3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3_pins>; ++ status = "disabled"; ++}; ++ +&usb_otg { -+ dr_mode = "host"; /* host -or- peripheral */ ++ dr_mode = "otg"; + status = "okay"; +}; + +&usbphy { -+ /* USB VBUS is always on */ + status = "okay"; +}; diff --git a/patch/u-boot/u-boot-sunxi/add-sunvell-r69.patch b/patch/u-boot/u-boot-sunxi/add-sunvell-r69.patch index 5ec650207..09269e50c 100644 --- a/patch/u-boot/u-boot-sunxi/add-sunvell-r69.patch +++ b/patch/u-boot/u-boot-sunxi/add-sunvell-r69.patch @@ -1,36 +1,31 @@ diff --git a/configs/sunvell_r69_defconfig b/configs/sunvell_r69_defconfig new file mode 100644 -index 0000000..f4947ab +index 0000000..afbeb08 --- /dev/null +++ b/configs/sunvell_r69_defconfig -@@ -0,0 +1,22 @@ +@@ -0,0 +1,17 @@ +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y -+CONFIG_SYS_TEXT_BASE=0x4a000000 ++CONFIG_SPL=y +CONFIG_MACH_SUN8I_H3=y +CONFIG_DRAM_CLK=408 +CONFIG_DRAM_ZQ=3881979 +CONFIG_DRAM_ODT_EN=y -+# CONFIG_VIDEO_DE2 is not set -+# CONFIG_VIDEO_COMPOSITE is not set -+CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-sunvell-r69" -+CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_NR_DRAM_BANKS=1 +# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+# CONFIG_CONSOLE_MUX is not set -+CONFIG_SPL=y +# CONFIG_CMD_FLASH is not set -+# CONFIG_CMD_FPGA is not set -+# CONFIG_SPL_SPI_SUNXI is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_SPL_EFI_PARTITION is not set ++CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-sunvell-r69" +CONFIG_SUN8I_EMAC=y +CONFIG_USB_EHCI_HCD=y -+CONFIG_SYS_CLK_FREQ=480000000 ++CONFIG_USB_OHCI_HCD=y +CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+ diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 7202541..1af2005 100644 +index 81fb8be..73de6f6 100755 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -320,6 +320,7 @@ dtb-$(CONFIG_MACH_SUN8I_A83T) += \ +@@ -436,6 +436,7 @@ dtb-$(CONFIG_MACH_SUN8I_A83T) += \ dtb-$(CONFIG_MACH_SUN8I_H3) += \ sun8i-h2-plus-orangepi-zero.dtb \ sun8i-h2-plus-nanopi-duo.dtb \ @@ -40,50 +35,13 @@ index 7202541..1af2005 100644 sun8i-h3-orangepi-lite.dtb \ diff --git a/arch/arm/dts/sun8i-h2-plus-sunvell-r69.dts b/arch/arm/dts/sun8i-h2-plus-sunvell-r69.dts new file mode 100644 -index 0000000..4b41116 +index 0000000..4c5ba85 --- /dev/null +++ b/arch/arm/dts/sun8i-h2-plus-sunvell-r69.dts -@@ -0,0 +1,166 @@ +@@ -0,0 +1,220 @@ ++// SPDX-License-Identifier: (GPL-2.0+ or MIT) +/* -+ * Based original Sunvell R69 FEX file (2017 ) -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. ++ * Based original Sunvell R69 FEX file (2019 karabek) + */ + +/dts-v1/; @@ -99,67 +57,113 @@ index 0000000..4b41116 + compatible = "sunvell,sunvell-r69", "allwinner,sun8i-h2-plus"; + + aliases { ++ ethernet0 = &emac; + serial0 = &uart0; -+ /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ -+ ethernet1 = &xr819; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ + leds { + compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&leds_opc>, <&leds_r_opc>; + + pwr_led { -+ label = "sunvell-r69:blue:pwr"; -+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; ++ label = "sunvell-r69:red:pwr"; ++ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + + status_led { -+ label = "sunvell-r69:red:status"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; ++ label = "sunvell-r69:blue:status"; ++ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; + }; + }; + ++ reg_vdd_cpux: vdd-cpux-regulator { ++ compatible = "regulator-gpio"; ++ regulator-name = "vdd-cpux"; ++ regulator-type = "voltage"; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-ramp-delay = <50>; /* 4ms */ ++ ++ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ ++ enable-active-high; ++ gpios-states = <0x1>; ++ states = <1100000 0x0 ++ 1300000 0x1>; ++ }; ++ + reg_vcc_wifi: reg_vcc_wifi { + compatible = "regulator-fixed"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-wifi"; -+ enable-active-high; + gpio = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; ++ startup-delay-us = <70000>; ++ enable-active-high; + }; + + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&r_pio 0 0 GPIO_ACTIVE_LOW>; ++ post-power-on-delay-ms = <200>; + }; +}; + ++&cpu0 { ++ cpu-supply = <®_vdd_cpux>; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ +&ehci1 { + status = "okay"; +}; + +&emac { -+ phy = <&phy1>; ++ phy-handle = <&int_mii_phy>; + phy-mode = "mii"; -+ allwinner,use-internal-phy; + allwinner,leds-active-low; + status = "okay"; -+ phy1: ethernet-phy@1 { -+ reg = <1>; ++}; ++ ++&hdmi { ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; + }; +}; + +&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins>; + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */ -+ cd-inverted; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ + status = "okay"; +}; + @@ -196,17 +200,62 @@ index 0000000..4b41116 + allwinner,drive = ; +}; + ++&ohci0 { ++ status = "okay"; ++}; ++ +&ohci1 { + status = "okay"; +}; + ++&pio { ++ leds_opc: led_pins { ++ pins = "PA15"; ++ function = "gpio_out"; ++ }; ++}; ++ ++&r_pio { ++ leds_r_opc: led_pins { ++ pins = "PL10"; ++ function = "gpio_out"; ++ }; ++}; ++ ++®_usb0_vbus { ++ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */ ++ status = "okay"; ++}; ++ +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>; + status = "okay"; +}; + -+&usbphy { -+ /* USB VBUS is always on */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "disabled"; ++}; ++ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "disabled"; ++}; ++ ++&uart3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3_pins>; ++ status = "disabled"; ++}; ++ ++&usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usbphy { + status = "okay"; +};