diff --git a/target/linux/lantiq/base-files/etc/board.d/01_leds b/target/linux/lantiq/base-files/etc/board.d/01_leds index 0426fb18e6..4476a7eb43 100755 --- a/target/linux/lantiq/base-files/etc/board.d/01_leds +++ b/target/linux/lantiq/base-files/etc/board.d/01_leds @@ -53,6 +53,10 @@ bt,homehub-v5a) netgear,dm200) ucidef_set_led_netdev "lan" "lan" "dm200:green:lan" "eth0" ;; +avm,fritz3370-rev2-hynix|\ +avm,fritz3370-rev2-micron) + ucidef_set_led_switch "lan" "LAN" "fritz3370:green:lan" "switch0" "0x17" + ;; avm,fritz7320) ucidef_set_led_netdev "wifi" "wifi" "fritz7320:green:wlan" "wlan0" ;; diff --git a/target/linux/lantiq/base-files/etc/board.d/02_network b/target/linux/lantiq/base-files/etc/board.d/02_network index ca974b071e..9da01d14cc 100755 --- a/target/linux/lantiq/base-files/etc/board.d/02_network +++ b/target/linux/lantiq/base-files/etc/board.d/02_network @@ -135,10 +135,13 @@ lantiq,easy80920-nand|lantiq,easy80920-nor) "0:lan:4" "1:lan:3" "2:lan:2" "4:lan:1" "5:wan:5" "6t@eth0" ;; -avm,fritz3370) +avm,fritz3370-rev2-hynix|\ +avm,fritz3370-rev2-micron) annex="b" - wan_mac=$(macaddr_add "$(mtd_get_mac_binary urlader 2439)" 1) - ucidef_set_interface_lan 'eth0' + lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)")) + wan_mac=$(macaddr_add "$lan_mac" 3) + ucidef_add_switch "switch0" \ + "0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0" ;; avm,fritz7320) diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom index 498a509012..75b763076e 100644 --- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom +++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom @@ -47,6 +47,24 @@ ath9k_eeprom_extract_raw() { ath9k_eeprom_die "failed to extract from $mtd" } +ath9k_eeprom_extract_reverse() { + local part=$1 + local offset=$2 + local count=$3 + local mtd + local reversed + local caldata + + mtd=$(find_mtd_chardev "$part") + reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd) + + for byte in $reversed; do + caldata="\x${byte}${caldata}" + done + + printf "%b" "$caldata" > /lib/firmware/$FIRMWARE +} + ath9k_eeprom_extract() { local part=$1 local offset=$2 @@ -138,7 +156,11 @@ case "$FIRMWARE" in ath9k_eeprom_extract "calibration" 61440 0 ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_ascii uboot-env ethaddr) +2) 524 ;; - avm,fritz3370|avm,fritz7320|avm,fritz7360sl) + avm,fritz3370-rev2-hynix|\ + avm,fritz3370-rev2-micron) + ath9k_eeprom_extract_reverse "urlader" 5441 1088 + ;; + avm,fritz7320|avm,fritz7360sl) ath9k_eeprom_extract "urlader" 2437 0 ;; tplink,tdw8970|tplink,tdw8980) diff --git a/target/linux/lantiq/base-files/lib/upgrade/platform.sh b/target/linux/lantiq/base-files/lib/upgrade/platform.sh index 2e58cb799a..ecbb939e36 100755 --- a/target/linux/lantiq/base-files/lib/upgrade/platform.sh +++ b/target/linux/lantiq/base-files/lib/upgrade/platform.sh @@ -9,7 +9,13 @@ platform_do_upgrade() { local board=$(board_name) case "$board" in - bt,homehub-v2b|bt,homehub-v3a|bt,homehub-v5a|zyxel,p-2812hnu-f1|zyxel,p-2812hnu-f3) + avm,fritz3370-rev2-hynix|\ + avm,fritz3370-rev2-micron|\ + bt,homehub-v2b|\ + bt,homehub-v3a|\ + bt,homehub-v5a|\ + zyxel,p-2812hnu-f1|\ + zyxel,p-2812hnu-f3) nand_do_upgrade $1 ;; *) diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-HYNIX.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-HYNIX.dts new file mode 100644 index 0000000000..225a4f3e8a --- /dev/null +++ b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-HYNIX.dts @@ -0,0 +1,55 @@ +/dts-v1/; + +#include "FRITZ3370-REV2.dtsi" + +/ { + compatible = "avm,fritz3370-rev2-hynix", "avm,fritz3370-rev2", "lantiq,xway", "lantiq,vr9"; + model = "AVM Fritz!Box WLAN 3370 Rev. 2 (Hynix NAND)"; +}; + +&localbus { + nand@1 { + compatible = "lantiq,nand-xway"; + bank-width = <2>; + reg = <1 0x0 0x2000000>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-mode = "soft"; + nand-ecc-strength = <3>; + nand-ecc-step-size = <256>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x0 0x400000>; + }; + + partition@400000 { + label = "ubi"; + reg = <0x400000 0x3000000>; + }; + + partition@3400000 { + label = "reserved-kernel"; + reg = <0x3400000 0x400000>; + }; + partition@3800000 { + label = "reserved-filesystem"; + reg = <0x3800000 0x3000000>; + }; + partition@6800000 { + label = "config"; + reg = <0x6800000 0x200000>; + }; + partition@6a00000 { + label = "nand-filesystem"; + reg = <0x6a00000 0x1600000>; + }; + }; + }; +}; diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-MICRON.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-MICRON.dts new file mode 100644 index 0000000000..3346310b1b --- /dev/null +++ b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-MICRON.dts @@ -0,0 +1,53 @@ +/dts-v1/; + +#include "FRITZ3370-REV2.dtsi" + +/ { + compatible = "avm,fritz3370-rev2-micron", "avm,fritz3370-rev2", "lantiq,xway", "lantiq,vr9"; + model = "AVM Fritz!Box WLAN 3370 Rev. 2 (Micron NAND)"; +}; + +&localbus { + nand@1 { + compatible = "lantiq,nand-xway"; + bank-width = <2>; + reg = <1 0x0 0x2000000>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-mode = "on-die"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x0 0x400000>; + }; + + partition@400000 { + label = "ubi"; + reg = <0x400000 0x3000000>; + }; + + partition@3400000 { + label = "reserved-kernel"; + reg = <0x3400000 0x400000>; + }; + partition@3800000 { + label = "reserved-filesystem"; + reg = <0x3800000 0x3000000>; + }; + partition@6800000 { + label = "config"; + reg = <0x6800000 0x200000>; + }; + partition@6a00000 { + label = "nand-filesystem"; + reg = <0x6a00000 0x1600000>; + }; + }; + }; +}; diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2.dtsi similarity index 78% rename from target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370.dts rename to target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2.dtsi index a958fc67aa..f6180c474f 100644 --- a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370.dts +++ b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2.dtsi @@ -1,16 +1,14 @@ -/dts-v1/; - #include "vr9.dtsi" #include #include / { - compatible = "avm,fritz3370", "lantiq,xway", "lantiq,vr9"; - model = "Fritz!Box WLAN 3370"; + compatible = "avm,fritz3370-rev2", "lantiq,xway", "lantiq,vr9"; + model = "AVM Fritz!Box WLAN 3370 Rev. 2"; chosen { - bootargs = "console=ttyLTQ0,115200 ubi.mtd=1,512 root=/dev/mtdblock9"; + bootargs = "console=ttyLTQ0,115200"; }; aliases { @@ -27,21 +25,28 @@ reg = <0x0 0x8000000>; }; + gpio-poweroff { + compatible = "gpio-poweroff"; + gpios = <&gpio 45 GPIO_ACTIVE_HIGH>; + }; + gpio-keys-polled { compatible = "gpio-keys-polled"; #address-cells = <1>; #size-cells = <0>; poll-interval = <100>; + power { label = "power"; gpios = <&gpio 1 GPIO_ACTIVE_HIGH>; linux,code = ; }; -/* wifi { - label = "wifi"; + + wifi { + label = "wlan"; gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; - linux,code = ; - };*/ + linux,code = ; + }; }; gpio-leds { @@ -52,31 +57,61 @@ gpios = <&gpio 32 GPIO_ACTIVE_LOW>; default-state = "keep"; }; + power_red: power2 { label = "fritz3370:red:power"; gpios = <&gpio 33 GPIO_ACTIVE_LOW>; }; + info_red { label = "fritz3370:red:info"; gpios = <&gpio 34 GPIO_ACTIVE_LOW>; }; + wifi: wifi { label = "fritz3370:green:wlan"; gpios = <&gpio 35 GPIO_ACTIVE_LOW>; }; + dsl: dsl { label = "fritz3370:green:dsl"; gpios = <&gpio 36 GPIO_ACTIVE_LOW>; }; + lan { label = "fritz3370:green:lan"; gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; + info_green: info_green { label = "fritz3370:green:info"; gpios = <&gpio 47 GPIO_ACTIVE_LOW>; }; }; + + usb0_vbus: regulator-usb0-vbus { + compatible = "regulator-fixed"; + + regulator-name = "USB0_VBUS"; + + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + usb1_vbus: regulator-usb1-vbus { + compatible = "regulator-fixed"; + + regulator-name = "USB1_VBUS"; + + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio 5 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; }; ð0 { @@ -85,8 +120,6 @@ #address-cells = <1>; #size-cells = <0>; reg = <0>; - mtd-mac-address = <&urlader 0x987>; - mtd-mac-address-increment = <(-2)>; lantiq,switch; ethernet@0 { @@ -96,6 +129,7 @@ phy-handle = <&phy0>; gpios = <&gpio 37 GPIO_ACTIVE_HIGH>; }; + ethernet@1 { compatible = "lantiq,xrx200-pdi-port"; reg = <1>; @@ -103,13 +137,15 @@ phy-handle = <&phy1>; gpios = <&gpio 44 GPIO_ACTIVE_HIGH>; }; + ethernet@2 { compatible = "lantiq,xrx200-pdi-port"; reg = <2>; phy-mode = "gmii"; phy-handle = <&phy11>; }; - ethernet@3 { + + ethernet@4 { compatible = "lantiq,xrx200-pdi-port"; reg = <4>; phy-mode = "gmii"; @@ -127,14 +163,17 @@ reg = <0x0>; compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; }; + phy1: ethernet-phy@1 { reg = <0x1>; compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; }; + phy11: ethernet-phy@11 { reg = <0x11>; compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; }; + phy13: ethernet-phy@13 { reg = <0x13>; compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22"; @@ -159,29 +198,34 @@ lantiq,groups = "mdio"; lantiq,function = "mdio"; }; + nand { lantiq,groups = "nand cle", "nand ale", "nand rd", "nand cs1", "nand rdy"; lantiq,function = "ebu"; lantiq,pull = <1>; }; + phy-rst { lantiq,pins = "io37", "io44"; lantiq,pull = <0>; lantiq,open-drain = <0>; lantiq,output = <1>; }; + pcie-rst { - lantiq,pins = "io38"; + lantiq,pins = "io21"; lantiq,pull = <0>; lantiq,output = <1>; }; }; + pins_spi_default: pins_spi_default { spi_in { lantiq,groups = "spi_di"; lantiq,function = "spi"; }; + spi_out { lantiq,groups = "spi_do", "spi_clk", "spi_cs4"; @@ -191,50 +235,9 @@ }; }; -&localbus { - nand@1 { - compatible = "lantiq,nand-xway"; - bank-width = <2>; - reg = <1 0x0 0x2000000>; - #address-cells = <1>; - #size-cells = <1>; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - partition@0 { - label = "kernel"; - reg = <0x0 0x400000>; - }; - - partition@400000 { - label = "rootfs_ubi"; - reg = <0x400000 0x3000000>; - }; - - partition@3400000 { - label = "vr9_firmware"; - reg = <0x3400000 0x400000>; - }; - partition@3800000 { - label = "reserved"; - reg = <0x3800000 0x3000000>; - }; - partition@6800000 { - label = "config"; - reg = <0x6800000 0x200000>; - }; - partition@6a00000 { - label = "nand-filesystem"; - reg = <0x6a00000 0x1600000>; - }; - }; - }; -}; - &pcie0 { + gpio-reset = <&gpio 21 GPIO_ACTIVE_HIGH>; + pcie@0 { reg = <0 0 0 0 0>; #interrupt-cells = <1>; @@ -283,14 +286,20 @@ }; }; -/* - * TODO: add phy-supply, gpio 5 GPIO_ACTIVE_HIGH and gpio 14 GPIO_ACTIVE_HIGH are - * related - */ &usb_phy0 { status = "okay"; + phy-supply = <&usb0_vbus>; +}; + +&usb_phy1 { + status = "okay"; + phy-supply = <&usb1_vbus>; }; &usb0 { status = "okay"; }; + +&usb1 { + status = "okay"; +}; diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile index 031c3fcb83..c4419ce629 100644 --- a/target/linux/lantiq/image/Makefile +++ b/target/linux/lantiq/image/Makefile @@ -617,13 +617,29 @@ TARGET_DEVICES += lantiq_easy80920-nor define Device/avm_fritz3370 $(Device/AVM) $(Device/NAND) - BOARD_NAME := FRITZ3370 DEVICE_DTS := FRITZ3370 - DEVICE_TITLE := Fritz!Box WLan - FRITZ3370 - DEVICE_PACKAGES := kmod-ath9k wpad-mini kmod-usb-dwc2 - SUPPORTED_DEVICES += FRITZ3370 + DEVICE_TITLE := AVM Fritz!Box WLan 3370 Rev. 2 + KERNEL_SIZE := 4096k + UBINIZE_OPTS := -E 5 + IMAGES += eva-kernel.bin eva-filesystem.bin + IMAGE/eva-kernel.bin := append-kernel + IMAGE/eva-filesystem.bin := append-ubi + DEVICE_PACKAGES := kmod-ath9k wpad-mini kmod-usb-dwc2 fritz-tffs endef -TARGET_DEVICES += avm_fritz3370 + +define Device/avm_fritz3370-rev2-hynix + $(Device/avm_fritz3370) + DEVICE_DTS := FRITZ3370-REV2-HYNIX + DEVICE_TITLE := AVM Fritz!Box WLan 3370 Rev. 2 (Hynix NAND) +endef +TARGET_DEVICES += avm_fritz3370-rev2-hynix + +define Device/avm_fritz3370-rev2-micron + $(Device/avm_fritz3370) + DEVICE_DTS := FRITZ3370-REV2-MICRON + DEVICE_TITLE := AVM Fritz!Box WLan 3370 Rev. 2 (Micron NAND) +endef +TARGET_DEVICES += avm_fritz3370-rev2-micron define Device/avm_fritz7360sl $(Device/AVM)