lantiq: complete AVM FRITZ!Box 3370 support
authorMathias Kresin <dev@kresin.me>
Fri, 9 Jun 2017 17:28:36 +0000 (19:28 +0200)
committerMathias Kresin <dev@kresin.me>
Thu, 17 May 2018 05:40:19 +0000 (07:40 +0200)
Rename the image and use a compatible string which indicates that only
hardware revision 2 and higher is supported.

It allows to use the wireless LED, as HWRev 1 uses GPIO#39 for the
wireless LED and starting with HWRev 2 GPIO#35 is used for the wireless
LED and GPIO#39 for IFX_GPIO_MODULE_EXTPHY_MDIO.

The HWREV can be checked by connecting to the fritzbox right after power
on via ftp:

  ftp> quote GETENV HWSubRevision

Within the same HW revision 5 of the Fritz!Box 3370 different NAND flash
chips are used. Usually it isn't a big deal but depending on the used
NAND flash chip, the ECC calculation is done different (and incompatible
of course).

Boards with a Micron MT29F1G08ABADA NAND flash chip are using the NAND
chip to calculate the ECC (on-die). Boards with a Hynix HY27UF081G2M NAND
flash chip are doing the ECC calculation in software.

Supporting both with a single DTS isn't possible. It might be possible
to add a patch selecting the ECC mode dynamicaly based on the found NAND
flash chip. But such a patch has no chance to get accepted upstream and
most likely need to be touched with every kernel update.

Instead two images are created. One for Micron NAND flash chip and one
for Hynix NAND flash chip. So far no pattern is known to identify the
used flash chip without opening the box.

Add the power off GPIO. At least EVA version 2186 sets/keeps the GPIO as
input, which will cause a reboot 30sec after power on. For boards with
EVA version 2186 the installation is tricky as it has to be finished
within the 30sec time frame.

The EVA version can be checked by connecting to the fritzbox right after
power on via ftp:

  ftp> quote GETENV urlader-version

The ath9k eeprom/caldata is at a different and offset and stored in
reverse order (from the last byte to the beginning) on the flash.
Reverse the bits to bring the data into the format expected by the
ath9k driver.

Since the ath9k eeprom is stored in reverse order on flash, we can not
use the mac address from the on flash eeprom. Get the MAC address from
the tffs instead.

Within the same HW revision 5 of the Fritz!Box 3370 both version of the
vr9 SoC are used. During preparation of kernel 4.14 support, all
devicetree source files were changed to load the vr9 v1.1 and vr9 v1.2
gphy firmware, which fixed the embedded phys for boards using the
version 1.2 of the vr9 SoC.

While at it, add a trigger to make use of the LAN LED. Setup the
build-in switch and add a hint for LuCI two show the ports in order
matching the labels on the case

Add support for the second USB port and provide the volatage GPIOs. Use
GPIO#21 as PCIe reset pin. The lan led is connected to GPIO#38.

Name the rootfs partition ubi and remove the mtd/rootfs related kernel
bootargs to use the OpenWrt autoprobing based on the partition name.

Enable sysupgrade support to allow an upgrade from a running system.
Since sysupgrade wasn't supported till now, drop image build code which
was added to allow a sysupgrade from earlier OpenWrt versions.

Build images that allow an (initial) installation via EVA bootloader.

To install OpenWrt via Eva bootloader, within the first seconds after
power on a ftp connection need to be established to the FRITZ!Box at
192.168.178.1 and the the following ftp commands need to be run:

  ftp> quote USER adam2
  ftp> quote PASS adam2
  ftp> binary
  ftp> debug
  ftp> passive
  ftp> quote SETENV linux_fs_start 0
  ftp> quote MEDIA FLSH
  ftp> put /path/to/openwrt-lantiq-xrx200-FRITZ3370-eva-kernel.bin mtd1
  ftp> put /path/to/openwrt-lantiq-xrx200-FRITZ3370-eva-filesystem.bin mtd0

Signed-off-by: Andrea Merello <andrea.merello@gmail.com>
Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/lantiq/base-files/etc/board.d/01_leds
target/linux/lantiq/base-files/etc/board.d/02_network
target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
target/linux/lantiq/base-files/lib/upgrade/platform.sh
target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-HYNIX.dts [new file with mode: 0644]
target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2-MICRON.dts [new file with mode: 0644]
target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2.dtsi [new file with mode: 0644]
target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370.dts [deleted file]
target/linux/lantiq/image/Makefile

index 0426fb1..4476a7e 100755 (executable)
@@ -53,6 +53,10 @@ bt,homehub-v5a)
 netgear,dm200)
        ucidef_set_led_netdev "lan" "lan" "dm200:green:lan" "eth0"
        ;;
 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"
        ;;
 avm,fritz7320)
        ucidef_set_led_netdev "wifi" "wifi" "fritz7320:green:wlan" "wlan0"
        ;;
index ca974b0..9da01d1 100755 (executable)
@@ -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"
        ;;
 
                "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"
        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)
        ;;
 
 avm,fritz7320)
index 498a509..75b7630 100644 (file)
@@ -47,6 +47,24 @@ ath9k_eeprom_extract_raw() {
                        ath9k_eeprom_die "failed to extract from $mtd"
 }
 
                        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
 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
                                ;;
                                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)
                                ath9k_eeprom_extract "urlader" 2437 0
                                ;;
                        tplink,tdw8970|tplink,tdw8980)
index 2e58cb7..ecbb939 100755 (executable)
@@ -9,7 +9,13 @@ platform_do_upgrade() {
        local board=$(board_name)
 
        case "$board" in
        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
                ;;
        *)
                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 (file)
index 0000000..225a4f3
--- /dev/null
@@ -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 (file)
index 0000000..3346310
--- /dev/null
@@ -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-REV2.dtsi b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370-REV2.dtsi
new file mode 100644 (file)
index 0000000..f6180c4
--- /dev/null
@@ -0,0 +1,305 @@
+#include "vr9.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mips/lantiq_rcu_gphy.h>
+
+/ {
+       compatible = "avm,fritz3370-rev2", "lantiq,xway", "lantiq,vr9";
+       model = "AVM Fritz!Box WLAN 3370 Rev. 2";
+
+       chosen {
+               bootargs = "console=ttyLTQ0,115200";
+       };
+
+       aliases {
+               led-boot = &power_green;
+               led-failsafe = &power_red;
+               led-running = &power_green;
+
+               led-dsl = &dsl;
+               led-internet = &info_green;
+               led-wifi = &wifi;
+       };
+
+       memory@0 {
+               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 = <KEY_POWER>;
+               };
+
+               wifi {
+                       label = "wlan";
+                       gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_WLAN>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               power_green: power {
+                       label = "fritz3370:green:power";
+                       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;
+       };
+};
+
+&eth0 {
+       lan: interface@0 {
+               compatible = "lantiq,xrx200-pdi";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+               lantiq,switch;
+
+               ethernet@0 {
+                       compatible = "lantiq,xrx200-pdi-port";
+                       reg = <0>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy0>;
+                       gpios = <&gpio 37 GPIO_ACTIVE_HIGH>;
+               };
+
+               ethernet@1 {
+                       compatible = "lantiq,xrx200-pdi-port";
+                       reg = <1>;
+                       phy-mode = "rgmii";
+                       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@4 {
+                       compatible = "lantiq,xrx200-pdi-port";
+                       reg = <4>;
+                       phy-mode = "gmii";
+                       phy-handle = <&phy13>;
+               };
+       };
+
+       mdio@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "lantiq,xrx200-mdio";
+               reg = <0>;
+
+               phy0: ethernet-phy@0 {
+                       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";
+               };
+       };
+};
+
+&gphy0 {
+       lantiq,gphy-mode = <GPHY_MODE_GE>;
+};
+
+&gphy1 {
+       lantiq,gphy-mode = <GPHY_MODE_GE>;
+};
+
+&gpio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&state_default>;
+
+       state_default: pinmux {
+               mdio {
+                       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 = "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";
+                       lantiq,function = "spi";
+                       lantiq,output = <1>;
+               };
+       };
+};
+
+&pcie0 {
+       gpio-reset = <&gpio 21 GPIO_ACTIVE_HIGH>;
+
+       pcie@0 {
+               reg = <0 0 0 0 0>;
+               #interrupt-cells = <1>;
+               #size-cells = <2>;
+               #address-cells = <3>;
+               device_type = "pci";
+
+               wifi@0,0 {
+                       compatible = "pci0,0";
+                       reg = <0 0 0 0 0>;
+                       qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
+               };
+       };
+};
+
+&spi {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pins_spi_default>;
+
+       m25p80@4 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <4 0>;
+               spi-max-frequency = <1000000>;
+
+               urlader: partition@0 {
+                       reg = <0x0 0x20000>;
+                       label = "urlader";
+                       read-only;
+               };
+
+               partition@20000 {
+                       reg = <0x20000 0x10000>;
+                       label = "tffs (1)";
+                       read-only;
+               };
+
+               partition@30000 {
+                       reg = <0x30000 0x10000>;
+                       label = "tffs (2)";
+                       read-only;
+               };
+       };
+};
+
+&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/files-4.14/arch/mips/boot/dts/FRITZ3370.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ3370.dts
deleted file mode 100644 (file)
index a958fc6..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-/dts-v1/;
-
-#include "vr9.dtsi"
-
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/mips/lantiq_rcu_gphy.h>
-
-/ {
-       compatible = "avm,fritz3370", "lantiq,xway", "lantiq,vr9";
-       model = "Fritz!Box WLAN 3370";
-
-       chosen {
-               bootargs = "console=ttyLTQ0,115200 ubi.mtd=1,512 root=/dev/mtdblock9";
-       };
-
-       aliases {
-               led-boot = &power_green;
-               led-failsafe = &power_red;
-               led-running = &power_green;
-
-               led-dsl = &dsl;
-               led-internet = &info_green;
-               led-wifi = &wifi;
-       };
-
-       memory@0 {
-               reg = <0x0 0x8000000>;
-       };
-
-       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 = <KEY_POWER>;
-               };
-/*             wifi {
-                       label = "wifi";
-                       gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
-                       linux,code = <BTN_1>;
-               };*/
-       };
-
-       gpio-leds {
-               compatible = "gpio-leds";
-
-               power_green: power {
-                       label = "fritz3370:green:power";
-                       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>;
-               };
-       };
-};
-
-&eth0 {
-       lan: interface@0 {
-               compatible = "lantiq,xrx200-pdi";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <0>;
-               mtd-mac-address = <&urlader 0x987>;
-               mtd-mac-address-increment = <(-2)>;
-               lantiq,switch;
-
-               ethernet@0 {
-                       compatible = "lantiq,xrx200-pdi-port";
-                       reg = <0>;
-                       phy-mode = "rgmii";
-                       phy-handle = <&phy0>;
-                       gpios = <&gpio 37 GPIO_ACTIVE_HIGH>;
-               };
-               ethernet@1 {
-                       compatible = "lantiq,xrx200-pdi-port";
-                       reg = <1>;
-                       phy-mode = "rgmii";
-                       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 {
-                       compatible = "lantiq,xrx200-pdi-port";
-                       reg = <4>;
-                       phy-mode = "gmii";
-                       phy-handle = <&phy13>;
-               };
-       };
-
-       mdio@0 {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               compatible = "lantiq,xrx200-mdio";
-               reg = <0>;
-
-               phy0: ethernet-phy@0 {
-                       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";
-               };
-       };
-};
-
-&gphy0 {
-       lantiq,gphy-mode = <GPHY_MODE_GE>;
-};
-
-&gphy1 {
-       lantiq,gphy-mode = <GPHY_MODE_GE>;
-};
-
-&gpio {
-       pinctrl-names = "default";
-       pinctrl-0 = <&state_default>;
-
-       state_default: pinmux {
-               mdio {
-                       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,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";
-                       lantiq,function = "spi";
-                       lantiq,output = <1>;
-               };
-       };
-};
-
-&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 {
-       pcie@0 {
-               reg = <0 0 0 0 0>;
-               #interrupt-cells = <1>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               device_type = "pci";
-
-               wifi@0,0 {
-                       compatible = "pci0,0";
-                       reg = <0 0 0 0 0>;
-                       qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
-               };
-       };
-};
-
-&spi {
-       status = "okay";
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&pins_spi_default>;
-
-       m25p80@4 {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "jedec,spi-nor";
-               reg = <4 0>;
-               spi-max-frequency = <1000000>;
-
-               urlader: partition@0 {
-                       reg = <0x0 0x20000>;
-                       label = "urlader";
-                       read-only;
-               };
-
-               partition@20000 {
-                       reg = <0x20000 0x10000>;
-                       label = "tffs (1)";
-                       read-only;
-               };
-
-               partition@30000 {
-                       reg = <0x30000 0x10000>;
-                       label = "tffs (2)";
-                       read-only;
-               };
-       };
-};
-
-/*
- * TODO: add phy-supply, gpio 5 GPIO_ACTIVE_HIGH and gpio 14 GPIO_ACTIVE_HIGH are
- * related
- */
-&usb_phy0 {
-       status = "okay";
-};
-
-&usb0 {
-       status = "okay";
-};
index 031c3fc..c4419ce 100644 (file)
@@ -617,13 +617,29 @@ TARGET_DEVICES += lantiq_easy80920-nor
 define Device/avm_fritz3370
   $(Device/AVM)
   $(Device/NAND)
 define Device/avm_fritz3370
   $(Device/AVM)
   $(Device/NAND)
-  BOARD_NAME := FRITZ3370
   DEVICE_DTS := 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
 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)
 
 define Device/avm_fritz7360sl
   $(Device/AVM)