Skip to content

Commit

Permalink
ipq40xx: add support for FritzBox 7530
Browse files Browse the repository at this point in the history
Hardware
--------
CPU:   Qualcomm IPQ4019
RAM:   256M
FLASH: 128M NAND
ETH:   QCA8075
VDSL:  Intel/Lantiq VRX518 PCIe attached
       currently not supported
DECT:  Dialog SC14448
       currently not supported
WiFi2: IPQ4019 2T2R 2SS b/g/n
WiFi5: IPQ4019 2T2R 2SS n/ac
LED:    - Power/DSL green
        - WLAN green
        - FON/DECT green
        - Connect/WPS green
        - Info green
        - Info red
BTN:    - WLAN
        - FON
        - WPS/Connect
UART:  115200n8 3.3V (located under the Dialog chip)
       VCC - RX - TX - GND (Square is VCC)

Installation
------------
1. Grab the uboot for the Device from the 'u-boot-fritz7530'
   subdirectory. Place it in the same directory as the 'eva_ramboot.py'
   script. It is located in the 'scripts/flashing' subdirectory of the
   OpenWRT tree.

2. Assign yourself the IP address 192.168.178.10/24. Connect your
   Computer to one of the boxes LAN ports.

3. Connect Power to the Box. As soon as the LAN port of your computer
   shows link, load the U-Boot to the box using following command.

   > ./eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz7530.bin

4. The U-Boot will now start. Now assign yourself the IP address
   192.168.1.70/24. Copy the OpenWRT initramfs (!) image to a TFTP
   server root directory and rename it to 'FRITZ7530.bin'.

5. The Box will now boot OpenWRT from RAM. This can take up to two
   minutes.

6. Copy the U-Boot and the OpenWRT sysupgrade (!) image to the Box using
   scp. SSH into the Box and first write the Bootloader to both previous
   kernel partitions.

   > mtd write /path/to/uboot-fritz7530.bin uboot0
   > mtd write /path/to/uboot-fritz7530.bin uboot1

7. Remove the AVM filesystem partitions to make room for our kernel +
   rootfs + overlayfs.

   > ubirmvol /dev/ubi0 --name=avm_filesys_0
   > ubirmvol /dev/ubi0 --name=avm_filesys_1

8. Flash OpenWRT peristently using sysupgrade.

   > sysupgrade -n /path/to/openwrt-sysupgrade.bin

Signed-off-by: David Bauer <mail@david-bauer.net>
[removed pcie-dts range node, refreshed on top of AP120-AC/E2600AC]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
  • Loading branch information
blocktrron authored and chunkeey committed Feb 28, 2019
1 parent 93b02ad commit 95b0c07
Show file tree
Hide file tree
Showing 12 changed files with 642 additions and 7 deletions.
7 changes: 6 additions & 1 deletion package/boot/uboot-fritz4040/Makefile
Expand Up @@ -30,6 +30,11 @@ define U-Boot/fritz4040
BUILD_DEVICES:=avm_fritzbox-4040
endef

define U-Boot/fritz7530
NAME:=FritzBox 7530
BUILD_DEVICES:=avm_fritzbox-7530
endef

UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
UBOOT_MAKE_FLAGS = USE_PRIVATE_LIBGCC=yes
export DTC
Expand All @@ -56,6 +61,6 @@ define Package/u-boot/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/upload-to-f4040.sh $(1)/
endef

UBOOT_TARGETS := fritz4040
UBOOT_TARGETS := fritz4040 fritz7530

$(eval $(call BuildPackage/U-Boot))
3 changes: 2 additions & 1 deletion package/firmware/ipq-wifi/Makefile
Expand Up @@ -18,7 +18,7 @@ endef
# Please send a mail with your device-specific board files upstream.
# You can find instructions and examples on the linux-wireless wiki:
# <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
ALLWIFIBOARDS:=alfa-network_ap120c-ac asus_map-ac2200 engenius_eap1300 linksys_ea6350v3 qxwlan_e2600ac
ALLWIFIBOARDS:=alfa-network_ap120c-ac asus_map-ac2200 avm_fritzbox-7530 engenius_eap1300 linksys_ea6350v3 qxwlan_e2600ac
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))

define Package/ipq-wifi-default
Expand Down Expand Up @@ -56,6 +56,7 @@ endef
$(eval $(call generate-ipq-wifi-package,alfa-network_ap120c-ac,board-alfa-network_ap120c-ac.bin,ALFA Network AP120C-AC))
$(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
$(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
$(eval $(call generate-ipq-wifi-package,avm_fritzbox-7530,board-avm_fritzbox-7530.bin,AVM FRITZ!Box 7530))
$(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,board-qxwlan-e2600ac.bin,Qxwlan E2600AC))

Expand Down
Binary file not shown.
7 changes: 4 additions & 3 deletions target/linux/ipq40xx/base-files/etc/board.d/01_leds
Expand Up @@ -25,15 +25,16 @@ avm,fritzbox-4040)
ucidef_set_led_netdev "wan" "WAN" "fritz4040:green:wan" "eth1"
ucidef_set_led_switch "lan" "LAN" "fritz4040:green:lan" "switch0" "0x1e"
;;
avm,fritzbox-7530 |\
glinet,gl-b1300)
ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
;;
engenius,eap1300)
ucidef_set_led_netdev "lan" "LAN" "${boardname}:blue:lan" "eth0"
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2g" "phy0tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
;;
glinet,gl-b1300)
ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
;;
netgear,ex6100v2 |\
netgear,ex6150v2)
ucidef_set_led_wlan "wlan2g" "WLAN2G" "ex61x0v2:green:router" "phy0tpt"
Expand Down
4 changes: 4 additions & 0 deletions target/linux/ipq40xx/base-files/etc/board.d/02_network
Expand Up @@ -33,6 +33,10 @@ ipq40xx_setup_interfaces()
ucidef_add_switch "switch0" \
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
;;
avm,fritzbox-7530)
ucidef_add_switch "switch0" \
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
;;
compex,wpj428)
ucidef_set_interface_lan "eth0 eth1"
;;
Expand Down
Expand Up @@ -135,6 +135,10 @@ case "$FIRMWARE" in
avm,fritzbox-4040)
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
;;
avm,fritzbox-7530)
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
;;
compex,wpj428 |\
engenius,eap1300 |\
openmesh,a42 |\
Expand Down Expand Up @@ -179,6 +183,10 @@ case "$FIRMWARE" in
avm,fritzbox-4040)
/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
;;
avm,fritzbox-7530)
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
;;
compex,wpj428 |\
engenius,eap1300 |\
openmesh,a42 |\
Expand Down
1 change: 1 addition & 0 deletions target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
Expand Up @@ -48,6 +48,7 @@ platform_do_upgrade() {
case "$(board_name)" in
8dev,jalapeno |\
alfa-network,ap120c-ac |\
avm,fritzbox-7530 |\
qxwlan,e2600ac-c2)
nand_do_upgrade "$ARGV"
;;
Expand Down
@@ -0,0 +1,300 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include "qcom-ipq4019.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/soc/qcom,tcsr.h>

/ {
model = "AVM FRITZ!Box 7530";
compatible = "avm,fritzbox-7530";

aliases {
led-boot = &power_green;
led-failsafe = &info_red;
led-running = &power_green;
led-upgrade = &info_green;
};

soc {
mdio@90000 {
status = "okay";
};

ess-psgmii@98000 {
status = "okay";
};

tcsr@1949000 {
compatible = "qcom,tcsr";
reg = <0x1949000 0x100>;
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
};

tcsr@194b000 {
compatible = "qcom,tcsr";
reg = <0x194b000 0x100>;
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
};

ess_tcsr@1953000 {
compatible = "qcom,tcsr";
reg = <0x1953000 0x1000>;
qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
};

tcsr@1957000 {
compatible = "qcom,tcsr";
reg = <0x1957000 0x100>;
qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
};

usb3@8af8800 {
status = "okay";
};

crypto@8e3a000 {
status = "okay";
};

watchdog@b017000 {
status = "okay";
};

ess-switch@c000000 {
status = "okay";
};

edma@c080000 {
status = "okay";
qcom,num_gmac = <1>;
};
};

keys {
compatible = "gpio-keys";

wlan {
label = "wlan";
gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RFKILL>;
};

wps {
label = "wps";
gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};

dect {
label = "dect";
gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
linux,code = <KEY_PHONE>;
};
};

leds {
compatible = "gpio-leds";

info_red: info_red {
label = "fritzbox-7530:red:info";
gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
};

info_green: info {
label = "fritzbox-7530:green:info";
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
};

wlan {
label = "fritzbox-7530:green:wlan";
gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
};

fon {
label = "fritzbox-7530:green:fon";
gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
};

power_green: power {
label = "fritzbox-7530:green:power";
gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
};

wps {
label = "fritzbox-7530:green:wps";
gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
};
};
};

&tlmm {
serial_0_pins: serial_pinmux {
mux {
pins = "gpio16", "gpio17";
function = "blsp_uart0";
bias-disable;
};
};

nand_pins: nand_pins {
pullups {
pins = "gpio53", "gpio58", "gpio59";
function = "qpic";
bias-pull-up;
};

pulldowns {
pins = "gpio54", "gpio55", "gpio56",
"gpio57", "gpio60", "gpio61",
"gpio62", "gpio63", "gpio64",
"gpio65", "gpio66", "gpio67",
"gpio68", "gpio69";
function = "qpic";
bias-pull-down;
};
};

usb-power {
line-name = "enable USB3 power";
gpios = <49 GPIO_ACTIVE_HIGH>;
gpio-hog;
output-high;
};
};

&nand {
pinctrl-0 = <&nand_pins>;
pinctrl-names = "default";
status = "okay";
cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;

nand@0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "SBL1";
reg = <0x000000 0x80000>;
read-only;
};

partition@80000 {
label = "MIBIB";
reg = <0x080000 0x80000>;
read-only;
};

partition@100000 {
label = "QSEE";
reg = <0x100000 0x80000>;
read-only;
};

partition@180000 {
label = "CDT";
reg = <0x180000 0x40000>;
read-only;
};

partition@1c0000 {
label = "QSEE_B";
reg = <0x1c0000 0x80000>;
read-only;
};

partition@240000 {
label = "urlader0";
reg = <0x240000 0x40000>;
read-only;
};

partition@280000 {
label = "urlader1";
reg = <0x280000 0x40000>;
read-only;
};

partition@2c0000 {
label = "nand-tffs";
reg = <0x2c0000 0x840000>;
read-only;
};

partition@b00000 {
/* 'kernel1' in AVM firmware */
label = "uboot0";
reg = <0xb00000 0x400000>;
};

partition@f00000 {
/* 'kernel2' in AVM firmware */
label = "uboot1";
reg = <0xf00000 0x400000>;
};

partition@1300000 {
label = "ubi";
reg = <0x1300000 0x6d00000>;
};
};
};
};

&cryptobam {
status = "okay";
};

&blsp_dma {
status = "okay";
};

&blsp1_uart1 {
pinctrl-0 = <&serial_0_pins>;
pinctrl-names = "default";
status = "okay";
};

&usb3_ss_phy {
status = "okay";
};

&usb3_hs_phy {
status = "okay";
};

&qpic_bam {
status = "okay";
};

&wifi0 {
status = "okay";
qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
};

&wifi1 {
status = "okay";
qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
};

&pcie0 {
status = "okay";

perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;

bridge@0,0 {
reg = <0x00000000 0 0 0 0>;
#address-cells = <3>;
#size-cells = <2>;
ranges;

dsl@1,0 {
compatible = "intel,vrx518";
status = "okay";
reg = <0x00010000 0 0 0 0>;
};
};
};

0 comments on commit 95b0c07

Please sign in to comment.