From ca1db6b5ce5675d88b45b23f576e8c59f7f4fc48 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 5 Jun 2015 14:11:36 +0000 Subject: [PATCH] lantiq: Add support for Arcadyan VGV7510KW22 (known as o2 Box 6431) SVN-Revision: 45897 --- .../etc/hotplug.d/firmware/10-rt2x00-eeprom | 11 + .../base-files/etc/uci-defaults/01_leds | 7 + .../base-files/etc/uci-defaults/02_network | 8 + target/linux/lantiq/dts/VGV7510KW22.dtsi | 256 ++++++++++++++++++ target/linux/lantiq/dts/VGV7510KW22BRN.dts | 53 ++++ target/linux/lantiq/dts/VGV7510KW22NOR.dts | 33 +++ target/linux/lantiq/image/Makefile | 6 + target/linux/lantiq/xrx200/profiles/arv.mk | 14 + 8 files changed, 388 insertions(+) create mode 100644 target/linux/lantiq/dts/VGV7510KW22.dtsi create mode 100644 target/linux/lantiq/dts/VGV7510KW22BRN.dts create mode 100644 target/linux/lantiq/dts/VGV7510KW22NOR.dts diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom index 3ebd5e83b2..5f1cb00452 100644 --- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom +++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom @@ -46,4 +46,15 @@ case "$FIRMWARE" in ;; esac ;; +"RT3062.eeprom" ) + local board=$(lantiq_board_name) + case $board in + VGV7510KW22) + rt2x00_eeprom_extract "board_config" 520 256 1 + ;; + *) + rt2x00_eeprom_die "board $board is not supported yet" + ;; + esac + ;; esac diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/01_leds b/target/linux/lantiq/base-files/etc/uci-defaults/01_leds index 3502eb2b27..8041ac941f 100644 --- a/target/linux/lantiq/base-files/etc/uci-defaults/01_leds +++ b/target/linux/lantiq/base-files/etc/uci-defaults/01_leds @@ -30,6 +30,13 @@ BTHOMEHUBV3A) ucidef_set_led_wlan "wifi" "wifi" "soc:blue:wireless" "phy0tpt" ucidef_set_led_netdev "internet" "internet" "soc:blue:broadband" "pppoa-wan" ;; +VGV7510KW22) + ucidef_set_led_default "power" "power" "power" "1" + ucidef_set_led_default "power2" "power2" "power2" "0" + ucidef_set_led_wlan "wifi" "wifi" "wifi" "phy0radio" + ucidef_set_led_netdev "dsl" "dsl" "dsl" "nas0" + ucidef_set_led_netdev "internet_green" "internet_green" "internet_green" "pppoe-wan" + ;; VGV7519) ucidef_set_led_default "power" "power" "power" "0" ucidef_set_led_default "power2" "power2" "power2" "1" diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/02_network b/target/linux/lantiq/base-files/etc/uci-defaults/02_network index 5997bf5d5b..afb8714fe8 100644 --- a/target/linux/lantiq/base-files/etc/uci-defaults/02_network +++ b/target/linux/lantiq/base-files/etc/uci-defaults/02_network @@ -174,6 +174,14 @@ VGV7519) wan_mac=$(macaddr_add "$lan_mac" 1) ;; +VGV7510KW22) + lan_mac=$(mtd_get_mac_binary board_config 22) + wan_mac=$(macaddr_add "$lan_mac" 1) + ucidef_set_interface_lan 'eth0.1' + ucidef_add_switch "switch0" "1" "1" + ucidef_add_switch_vlan "switch0" "1" "2 3 4 5 6t" + ;; + esac [ -z "$(ls /lib/modules/`uname -r`/ltq_atm*)" ] || set_atm_wan "$vpi" "$vci" "$encaps" "$payload" diff --git a/target/linux/lantiq/dts/VGV7510KW22.dtsi b/target/linux/lantiq/dts/VGV7510KW22.dtsi new file mode 100644 index 0000000000..077ed2372a --- /dev/null +++ b/target/linux/lantiq/dts/VGV7510KW22.dtsi @@ -0,0 +1,256 @@ +/include/ "vr9.dtsi" + +/ { + model = "VGV7510KW22 - o2 Box 6431"; + + chosen { + bootargs = "console=ttyLTQ0,115200 init=/etc/preinit"; + }; + + memory@0 { + reg = <0x0 0x4000000>; + }; + + fpi@10000000 { + localbus@0 { + nor-boot@0 { + compatible = "lantiq,nor"; + bank-width = <2>; + reg = <0 0x0 0x1000000>; + #address-cells = <1>; + #size-cells = <1>; + + boardconfig: partition@fe0000 { + label = "board_config"; + reg = <0xfe0000 0x20000>; + read-only; + }; + }; + }; + + gpio: pinmux@E100B10 { + pinctrl-names = "default"; + pinctrl-0 = <&state_default>; + + state_default: pinmux { + ip101a-rst { + lantiq,pins = "io46"; + lantiq,output = <0>; + lantiq,pull = <1>; + }; + gphy-leds { + lantiq,groups = "gphy0 led1", + "gphy1 led0", "gphy1 led1"; + lantiq,function = "gphy"; + lantiq,open-drain = <0>; + lantiq,pull = <0>; + lantiq,output = <1>; + }; + stp { + lantiq,groups = "stp"; + lantiq,function = "stp"; + lantiq,pull = <2>; + lantiq,open-drain = <0>; + lantiq,output = <1>; + }; + mdio { + lantiq,groups = "mdio"; + lantiq,function = "mdio"; + }; + pci-rst { + lantiq,pins = "io21"; + lantiq,open-drain = <0>; + lantiq,pull = <0>; + lantiq,output = <1>; + }; + spi { + lantiq,groups = "spi"; + lantiq,function = "spi"; + }; + }; + }; + + eth@E108000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "lantiq,xrx200-net"; + reg = < 0xE108000 0x3000 /* switch */ + 0xE10B100 0x70 /* mdio */ + 0xE10B1D8 0x30 /* mii */ + 0xE10B308 0x30 /* pmac */ + >; + interrupt-parent = <&icu0>; + interrupts = <73 72>; + + lan: interface@0 { + compatible = "lantiq,xrx200-pdi"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + mtd-mac-address = <&boardconfig 0x16>; + lantiq,switch; + + ethernet@2 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <2>; + phy-mode = "mii"; + phy-handle = <&phy11>; + }; + ethernet@3 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <3>; + phy-mode = "mii"; + phy-handle = <&phy12>; + }; + ethernet@4 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <4>; + phy-mode = "mii"; + phy-handle = <&phy13>; + }; + ethernet@5 { + compatible = "lantiq,xrx200-pdi-port"; + reg = <5>; + phy-mode = "mii"; + phy-handle = <&phy14>; + }; + }; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "lantiq,xrx200-mdio"; + + phy11: ethernet-phy@11 { + reg = <0x11>; + compatible = "lantiq,phy22f", "ethernet-phy-ieee802.3-c22"; + }; + phy12: ethernet-phy@12 { + reg = <0x12>; + compatible = "lantiq,phy22f", "ethernet-phy-ieee802.3-c22"; + }; + phy13: ethernet-phy@13 { + reg = <0x13>; + compatible = "lantiq,phy22f", "ethernet-phy-ieee802.3-c22"; + }; + phy14: ethernet-phy@14 { + reg = <0x14>; + compatible = "lantiq,phy22f", "ethernet-phy-ieee802.3-c22"; + }; + }; + }; + + stp: stp@E100BB0 { + compatible = "lantiq,gpio-stp-xway"; + reg = <0xE100BB0 0x40>; + #gpio-cells = <2>; + gpio-controller; + + lantiq,shadow = <0xff>; + lantiq,groups = <0x1>; + lantiq,dsl = <0x0>; + lantiq,phy1 = <0x7>; + lantiq,phy2 = <0x7>; /* enable gphy0 led2 = LAN2 LED */ + }; + + ifxhcd@E101000 { + status = "okay"; + gpios = <&gpio 47 0>; + }; + + pci@E105400 { + status = "okay"; + lantiq,bus-clock = <33333333>; + interrupt-map-mask = <0xf800 0x0 0x0 0x7>; + interrupt-map = < + 0x7000 0 0 1 &icu0 30 1 // slot 14, irq 30 + >; + gpio-reset = <&gpio 21 0>; + req-mask = <0x1>; /* GNT1 */ + }; + + pcie@d900000 { + status = "disabled"; + }; + }; + + gphy-xrx200 { + compatible = "lantiq,phy-xrx200"; + firmware1 = "lantiq/vr9_phy22f_a1x.bin"; /*VR9 1.1*/ + firmware2 = "lantiq/vr9_phy22f_a2x.bin"; /*VR9 1.2*/ + phys = [ 00 01 ]; + }; + + ralink_eep { + compatible = "ralink,eeprom"; + ralink,eeprom = "RT3062.eeprom"; + }; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <100>; + + reset { + label = "reset"; + gpios = <&gpio 6 1>; + linux,code = <0x198>; + }; + + wps { + label = "wps"; + gpios = <&gpio 9 1>; + linux,code = <0x211>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + dsl { + label = "dsl"; + gpios = <&gpio 2 1>; + }; + + internet_red { + label = "internet_red"; + gpios = <&gpio 10 1>; + }; + + info_red { + label = "info_red"; + gpios = <&gpio 12 1>; + }; + + power { + label = "power"; /* green */ + gpios = <&gpio 14 1>; + }; + + info_green { + label = "info_green"; + gpios = <&gpio 15 1>; + }; + + internet_green { + label = "internet_green"; + gpios = <&gpio 19 1>; + }; + + wifi { + label = "wifi"; + gpios = <&gpio 20 1>; + }; + + power2 { + label = "power2"; /* red */ + gpios = <&gpio 28 1>; + }; + + phone_red { + label = "phone_red"; + gpios = <&gpio 29 1>; + }; + }; +}; diff --git a/target/linux/lantiq/dts/VGV7510KW22BRN.dts b/target/linux/lantiq/dts/VGV7510KW22BRN.dts new file mode 100644 index 0000000000..1880c8c3b8 --- /dev/null +++ b/target/linux/lantiq/dts/VGV7510KW22BRN.dts @@ -0,0 +1,53 @@ +/dts-v1/; + +/include/ "VGV7510KW22.dtsi" + +/ { + fpi@10000000 { + localbus@0 { + nor-boot@0 { + partition@0 { + label = "Boot"; + reg = <0x00000 0x40000>; + read-only; + }; + + partition@40000 { + label = "Configuration"; + reg = <0x40000 0x40000>; + read-only; + }; + + partition@80000 { + label = "Certificate"; + reg = <0x80000 0x20000>; + read-only; + }; + + partition@a0000 { + label = "Special_Area"; + reg = <0xa0000 0x20000>; + read-only; + }; + + partition@c0000 { + label = "Primary_Setting"; + reg = <0xc0000 0x20000>; + read-only; + }; + + partition@e0000 { + label = "firmware"; /* "Code Image 0" in OFW */ + reg = <0xe0000 0x780000>; + read-only; + }; + + partition@860000 { + label = "Code_Image_1"; + reg = <0x860000 0x780000>; + read-only; + }; + }; + }; + }; +}; diff --git a/target/linux/lantiq/dts/VGV7510KW22NOR.dts b/target/linux/lantiq/dts/VGV7510KW22NOR.dts new file mode 100644 index 0000000000..57842bbca3 --- /dev/null +++ b/target/linux/lantiq/dts/VGV7510KW22NOR.dts @@ -0,0 +1,33 @@ +/dts-v1/; + +/include/ "VGV7510KW22.dtsi" + +/ { + fpi@10000000 { + localbus@0 { + nor-boot@0 { + partition@0 { + label = "uboot"; + reg = <0x0 0x60000>; /* 384 KiB */ + read-only; + }; + + partition@60000 { + label = "uboot-env"; + reg = <0x60000 0x20000>; /* 128 KiB */ + read-only; + }; + + partition@80000 { + label = "firmware"; + reg = <0x80000 0xe60000>; /* 14720 KiB */ + }; + + partition@1e80000 { + label = "dsl_fw"; + reg = <0xee0000 0x100000>; /* 1024 KiB */ + }; + }; + }; + }; +}; diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile index 51766ba083..3e8c20b55c 100644 --- a/target/linux/lantiq/image/Makefile +++ b/target/linux/lantiq/image/Makefile @@ -432,6 +432,12 @@ Image/Build/Profile/VG3503J_V2=$(call Image/BuildLoader/$(1),$(1),VG3503J_V2) Image/BuildKernel/Profile/TDW8970=$(call Image/BuildKernelTPLink/Template,TDW8970,TD-W8970v1,$(1)) Image/Build/Profile/TDW8970=$(call Image/BuildTPLink/$(1),$(1),TDW8970,TD-W8970v1) +Image/BuildKernel/Profile/VGV7510KW22NOR=$(call Image/BuildKernel/Template,VGV7510KW22NOR,$(1)) +Image/Build/Profile/VGV7510KW22NOR=$(call Image/Build/$(1),$(1),VGV7510KW22NOR) + +Image/BuildKernel/Profile/VGV7510KW22BRN=$(call Image/BuildKernel/Template,VGV7510KW22BRN,$(1)) +Image/Build/Profile/VGV7510KW22BRN=$(call Image/Build/$(1),$(1),VGV7510KW22BRN,5BRNDA6431,0x12345678,0x04c11db7,$(1)) + Image/BuildKernel/Profile/VGV7519NOR=$(call Image/BuildKernel/Template,VGV7519NOR,$(1)) Image/Build/Profile/VGV7519NOR=$(call Image/Build/$(1),$(1),VGV7519NOR) diff --git a/target/linux/lantiq/xrx200/profiles/arv.mk b/target/linux/lantiq/xrx200/profiles/arv.mk index f68862bca4..3dc22c00da 100644 --- a/target/linux/lantiq/xrx200/profiles/arv.mk +++ b/target/linux/lantiq/xrx200/profiles/arv.mk @@ -10,6 +10,20 @@ endef $(eval $(call Profile,VG3503J_V2)) +define Profile/VGV7510KW22NOR + NAME:=o2 Box 6431 / Arcadyan VGV7510KW22 (NOR) + PACKAGES:=kmod-rt2800-pci wpad-mini kmod-usb-dwc2 +endef + +$(eval $(call Profile,VGV7510KW22NOR)) + +define Profile/VGV7510KW22BRN + NAME:=o2 Box 6431 / Arcadyan VGV7510KW22 (BRN) + PACKAGES:=kmod-rt2800-pci wpad-mini kmod-usb-dwc2 +endef + +$(eval $(call Profile,VGV7510KW22BRN)) + define Profile/VGV7519NOR NAME:=Experiabox 8 VGV7519 PACKAGES:=kmod-rt2800-pci wpad-mini kmod-usb-dwc2