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"
;;
"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)
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 "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)
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
;;
*)
--- /dev/null
+/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>;
+ };
+ };
+ };
+};
--- /dev/null
+/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>;
+ };
+ };
+ };
+};
--- /dev/null
+#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;
+ };
+};
+
+ð0 {
+ 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";
+};
+++ /dev/null
-/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>;
- };
- };
-};
-
-ð0 {
- 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";
-};
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)