lantiq: add support for AVM FRITZ!Box 7362 SL
authorDanijel Tudek <danijel.tudek@gmail.com>
Tue, 12 Feb 2019 17:11:09 +0000 (18:11 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 10 Mar 2019 15:49:31 +0000 (16:49 +0100)
Hardware:
- SoC: Lantiq VRX288
- RAM: Winbond W971GG6JB 1 Gb (128 MiB)
- Flash:
  - SPI: 8 Mb (1 MiB) for bootloader and tffs
  - NAND: 1 Gb (128 MiB) for OS
- xDSL: Lantiq VRX208
- WLAN: Atheros AR9381
- DECT: Dialog Semiconductors SC14441

Everything except FXS/DECT works
(no drivers for AVM's FXS implementation with SC14441).

Installation via FTP:
1. Use scripts/flashing/eva_ramboot.py to send initramfs-kernel.bin
to the device when powering on.
Standard AVM procedures with finding the correct IP address and
the right moment to open FTP apply here (approx. 4 seconds on 7362SL).
IMPORTANT: set lzma compression in ramdisk options, bootloader stalls
when receiving uncompressed images.

2. Transfer sysupgrade.bin image with scp to /tmp directory
and run sysupgrade

3. First boot might take a bit longer if linux_fs_start was set to 1,
in that case the device will reboot twice, first time it will fail to load
second kernel (overwritten by ubifs), set linux_fs_start to 0 and reboot.

OpenWrt uses the entire NAND flash. Kernel uses 4 MiB and rootfs uses
the rest of 124 MiB, overwriting everything related to FRITZ!OS - both
OS images, config and answering machine/media server data.
To return to FRITZ!OS, use AVM's recovery image.

Signed-off-by: Danijel Tudek <danijel.tudek@gmail.com>
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/FRITZ7362SL.dts [new file with mode: 0644]
target/linux/lantiq/image/Makefile

index b7d23da..c79fb2d 100755 (executable)
@@ -158,6 +158,14 @@ avm,fritz7360sl)
                "0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0"
        ;;
 
+avm,fritz7362sl)
+       annex="b"
+       lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)"))
+       wan_mac=$(fritz_tffs -n macdsl -i $(find_mtd_part "tffs (1)"))
+       ucidef_add_switch "switch0" \
+               "0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0"
+       ;;
+
 avm,fritz7412)
        tffsdev=$(find_mtd_chardev "nand-tffs")
        annex="b"
index 26b3dd0..6ae5e3c 100644 (file)
@@ -157,7 +157,8 @@ case "$FIRMWARE" in
                                ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_ascii uboot-env ethaddr) +2) 524
                                ;;
                        avm,fritz3370-rev2-hynix|\
-                       avm,fritz3370-rev2-micron)
+                       avm,fritz3370-rev2-micron|\
+                       avm,fritz7362sl)
                                ath9k_eeprom_extract_reverse "urlader" 5441 1088
                                ;;
                        avm,fritz7312|avm,fritz7320|avm,fritz7360sl)
index d7cacb2..840ebe7 100755 (executable)
@@ -11,6 +11,7 @@ platform_do_upgrade() {
        case "$board" in
        avm,fritz3370-rev2-hynix|\
        avm,fritz3370-rev2-micron|\
+       avm,fritz7362sl|\
        avm,fritz7412|\
        bt,homehub-v2b|\
        bt,homehub-v3a|\
diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7362SL.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7362SL.dts
new file mode 100644 (file)
index 0000000..7a6272b
--- /dev/null
@@ -0,0 +1,135 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "FRITZ736X.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mips/lantiq_rcu_gphy.h>
+
+/ {
+       compatible = "avm,fritz7362sl", "avm,fritz736x", "lantiq,xway", "lantiq,vr9";
+       model = "AVM FRITZ!Box 7362 SL";
+};
+
+&power_green {
+       label = "fritz7362sl:green:power";
+};
+
+&power_red {
+       label = "fritz7362sl:red:power";
+};
+
+&info_green {
+       label = "fritz7362sl:green:info";
+};
+
+&wifi {
+       label = "fritz7362sl:green:wlan";
+};
+
+&info_red {
+       label = "fritz7362sl:red:info";
+};
+
+&dect {
+       label = "fritz7362sl:green:dect";
+};
+
+&gpio {
+       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>;
+               };
+       };
+};
+
+&state_default {
+       nand {
+               lantiq,groups = "nand ale", "nand cle",
+                               "nand cs1", "nand rd", "nand rdy";
+               lantiq,function = "ebu";
+       };
+
+       pcie-rst {
+               lantiq,pins = "io21";
+               lantiq,open-drain = <1>;
+               lantiq,output = <1>;
+       };
+};
+
+&spi {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pins_spi_default>;
+
+       flash@4 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <4 0>;
+               spi-max-frequency = <1000000>;
+
+               urlader: partition@0 {
+                       reg = <0x0 0x40000>;
+                       label = "urlader";
+                       read-only;
+               };
+
+               partition@40000 {
+                       reg = <0x40000 0x60000>;
+                       label = "tffs (1)";
+                       read-only;
+               };
+
+               partition@A0000 {
+                       reg = <0xA0000 0x60000>;
+                       label = "tffs (2)";
+                       read-only;
+               };
+       };
+};
+
+&localbus {
+       nand@1 {
+               compatible = "lantiq,nand-xway";
+               lantiq,cs1 = <1>;
+               bank-width = <1>;
+               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 0x7c00000>;
+                       };
+               };
+       };
+};
+
+&pcie0 {
+       gpio-reset = <&gpio 21 GPIO_ACTIVE_LOW>;
+
+       pcie@0 {
+               #size-cells = <1>;
+               #address-cells = <2>;
+       };
+};
index e6fa8b5..fca3fce 100644 (file)
@@ -677,6 +677,17 @@ define Device/avm_fritz7412
 endef
 TARGET_DEVICES += avm_fritz7412
 
+define Device/avm_fritz7362sl
+  $(Device/AVM)
+  $(Device/NAND)
+  KERNEL_SIZE := 4096k
+  IMAGE_SIZE := 49152k
+  DEVICE_DTS := FRITZ7362SL
+  DEVICE_TITLE := AVM FRITZ!Box 7362 SL
+  DEVICE_PACKAGES := kmod-ath9k kmod-owl-loader wpad-basic kmod-usb-dwc2 fritz-tffs
+endef
+TARGET_DEVICES += avm_fritz7362sl
+
 define Device/arcadyan_vg3503j
   IMAGE_SIZE := 8000k
   DEVICE_DTS := VG3503J