lantiq: add support for FritzBox 7312
authorJohann Neuhauser <johann@it-neuhauser.de>
Thu, 17 May 2018 17:12:35 +0000 (19:12 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:20 +0000 (17:32 +0100)
The FritzBox 7312 is also known as 1&1 WLAN-MODEM. The device is almost
the same as FB7330, but only one ETH-Port and no USB.

Hardware
SoC: Lantiq Xway ARX188 PSB 50812 EL
RAM: 64MB DDR1 (Zentel A4S12D40FTP-G5)
Ethernet: Atheros 8030
Wireless: Atheros AR9227 b/g/n 2x2
DSL: Lantiq ADSL2+
DECT: Dialog SC14441
Buttons: WiFi, DECT
LEDs: Power/DSL, Fon, DECT, WLAN, Info

LEDs
Power: GPIO#44 (active low)
Internet: GPIO#47 (active low)
DECT: GPIO#38 (active low)
WLAN: GPIO#37 (active low)
Info: GPIO#35 (active low)

The Fon LED is labeled as internet in avm gpl sources.

Buttons
WLAN: GPIO#1 (active low)
DECT: GPIO#2 (active low)

Phy
GPIO#03: 25 MHz
GPIO#34: Reset (active low)
GPIO#39: Int
GPIO#42: MII MDIO
GPIO#43: MII MDC

PCIe
GPIO#21: reset (active low)

Installation:

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 MEDIA FLSH
  ftp> put /path/to/openwrt-lantiq-xway-avm_fritz7312-squashfs-sysupgrade.bin mtd1
  ftp> quote REBOOT

Signed-off-by: Johann Neuhauser <johann@it-neuhauser.de>
(backported from 02d53e6a2113f80ae429664e7990d167fbf44604)

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/files-4.14/arch/mips/boot/dts/FRITZ7312.dts [new file with mode: 0644]
target/linux/lantiq/image/Makefile
target/linux/lantiq/xway/config-4.14

index 6e2e1934aebce7418a532f750714e6fcf5142867..7817bdd00eb4137d030fc07199511167a7613768 100755 (executable)
@@ -144,6 +144,7 @@ avm,fritz3370-rev2-micron)
                "0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0"
        ;;
 
+avm,fritz7312|\
 avm,fritz7320)
        annex="b"
        wan_mac=$(macaddr_add "$(mtd_get_mac_binary urlader 2705)" 1)
index 75b763076e9b00c31d56eeb4cccb3fc52d3290ac..40642e580fd720646035e2e8bc56d5cdf08be54d 100644 (file)
@@ -160,7 +160,7 @@ case "$FIRMWARE" in
                        avm,fritz3370-rev2-micron)
                                ath9k_eeprom_extract_reverse "urlader" 5441 1088
                                ;;
-                       avm,fritz7320|avm,fritz7360sl)
+                       avm,fritz7312|avm,fritz7320|avm,fritz7360sl)
                                ath9k_eeprom_extract "urlader" 2437 0
                                ;;
                        tplink,tdw8970|tplink,tdw8980)
diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7312.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7312.dts
new file mode 100644 (file)
index 0000000..eca127a
--- /dev/null
@@ -0,0 +1,181 @@
+/dts-v1/;
+
+#include "ar9.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "avm,fritz7312", "lantiq,xway", "lantiq,ar9";
+       model = "FritzBox 7312 (1&1 WLAN-MODEM)";
+
+       chosen {
+               bootargs = "console=ttyLTQ0,115200";
+       };
+
+       aliases {
+               led-boot = &power;
+               led-failsafe = &power;
+               led-running = &power;
+
+               led-internet = &info_green;
+               led-dsl = &power;
+               led-wifi = &wlan;
+       };
+
+       memory@0 {
+               reg = <0x0 0x4000000>;
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <100>;
+
+               wlan {
+                       label = "wlan";
+                       gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RFKILL>;
+               };
+               dect {
+                       label = "dect";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_PHONE>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               power: power {
+                       label = "fritz7312:green:power";
+                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+               };
+               voice {
+                       label = "fritz7312:green:fon";
+                       gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
+               };
+               dect {
+                       label = "fritz7312:green:dect";
+                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+               };
+               wlan: wlan {
+                       label = "fritz7312:green:wlan";
+                       gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
+               };
+               info_green: info_green {
+                       label = "fritz7312:green:info";
+                       gpios = <&gpio 35 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&gpio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&state_default>;
+
+       state_default: pinmux {
+               pci {
+                       lantiq,groups = "gnt1", "req1", "req2", "req4", "gnt2", "gnt3", "gnt4";
+                       lantiq,function = "pci";
+               };
+               pci-in {
+                       lantiq,groups = "req1", "req2", "req4";
+                       lantiq,output = <0>;
+                       lantiq,open-drain = <1>;
+                       lantiq,pull = <2>;
+               };
+               pci-out {
+                       lantiq,groups = "gnt1", "gnt2", "gnt3", "gnt4";
+                       lantiq,output = <1>;
+                       lantiq,pull = <0>;
+               };
+               ar8030-intr {
+                       lantiq,groups = "exin3";
+                       lantiq,function = "exin";
+                       lantiq,pull = <2>;
+                       lantiq,output = <0>;
+               };
+               ar8030-clk {
+                       lantiq,groups = "clkout2";
+                       lantiq,output = <1>;
+                       lantiq,open-drain;
+               };
+               ar8030-rst {
+                       lantiq,pins = "io34";
+                       lantiq,output = <1>;
+                       lantiq,pull = <2>;
+                       lantiq,open-drain;
+               };
+       };
+};
+
+&gsw {
+       phy-mode = "rmii";
+       phy-handle = <&phy0>;
+       mtd-mac-address = <&ath9k_cal 0xa91>;
+       mtd-mac-address-increment = <(-2)>;
+
+       mdio-bus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               phy0: ethernet-phy@0 {
+                       reg = <0>;
+                       reset-gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&localbus {
+       nor@0 {
+               compatible = "lantiq,nor";
+               bank-width = <2>;
+               reg = <0 0x0 0x1000000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       ath9k_cal: partition@0 {
+                               label = "urlader";
+                               reg = <0x00000 0x20000>;
+                               read-only;
+                       };
+
+                       partition@20000 {
+                               label = "firmware";
+                               reg = <0x20000 0xf60000>;
+                       };
+
+                       partition@f80000 {
+                               label = "tffs (1)";
+                               reg = <0xf80000 0x40000>;
+                               read-only;
+                       };
+
+                       partition@fc0000 {
+                               label = "tffs (2)";
+                               reg = <0xfc0000 0x40000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&pci0 {
+       status = "okay";
+       req-mask = <0xf>;
+       gpio-reset = <&gpio 21 GPIO_ACTIVE_LOW>;
+
+       wifi@0,0 {
+               compatible = "pci0,0";
+               reg = <0x7000 0 0 0 0>;
+               qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:00:0e.0.bin */
+       };
+};
index c4419ce629ba0e3fe52617036ebf9f783141de63..0bedfcf0af0d7fb87a9da44d8559cc4633804174 100644 (file)
@@ -485,6 +485,19 @@ define Device/buffalo_wbmr-hp-g300h-b
 endef
 TARGET_DEVICES += buffalo_wbmr-hp-g300h-b
 
+define Device/avm_fritz7312
+  $(Device/AVM)
+  DEVICE_DTS := FRITZ7312
+  IMAGE_SIZE := 15744k
+  DEVICE_TITLE := 1&1 WLAN-MODEM - FRITZ7312
+  DEVICE_PACKAGES := kmod-ath9k kmod-owl-loader wpad-mini \
+       kmod-ltq-adsl-ar9-mei kmod-ltq-adsl-ar9 \
+       kmod-ltq-adsl-ar9-fw-b kmod-ltq-atm-ar9 \
+       ltq-adsl-app ppp-mod-pppoa \
+       kmod-ltq-deu-ar9 -swconfig
+endef
+TARGET_DEVICES += avm_fritz7312
+
 define Device/avm_fritz7320
   $(Device/AVM)
   DEVICE_DTS := FRITZ7320
index 5e18a4deefa51a3ce5a6e2071ef53c27b2aa85cf..64a6c5583244b029b156b00c7165f1a4fa2e4d03 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ADM6996_PHY=y
 CONFIG_AR8216_PHY=y
+CONFIG_AT803X_PHY=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_CRC16=y
 CONFIG_CRYPTO_ACOMP2=y