ipq806x: add support for NEC Aterm WG2600HP
NEC Aterm WG2600HP is a 2.4/5 GHz band 11ac router, based on Qualcomm IPQ8064. Specification: - IPQ8064 (384 - 1,400 MHz) - 512 MB of RAM - 32 MB of Flash (SPI) - 4T4R 2.4/5 GHz - 5x 10/100/1000 Mbps Ethernet - 12x LEDs, 4x keys - 1x USB 3.0 Type-A - UART header on PCB - RX, TX, NC, GND, Vcc from power connector side - baudrate: 115200 bps Flash instruction using initramfs image: 1. Connect serial cable to UART header 2. Connect power cable and turn on the router 3. When the "Press the [f] key and hit [enter] to enter failsafe mode" message is displayed on the console, press the "f" key and Enter key sequentially to enter the failsafe mode 4. create fw_env.config file with following contents on failsafe mode: /dev/mtd9 0x0 0x10000 0x10000 5. Execute following commands to add and change the environment variables of U-Boot fw_setenv ipaddr "192.168.0.1" fw_setenv serverip "192.168.0.2" fw_setenv autostart "yes" fw_setenv bootcmd "tftpboot 0x44000000 wg2600hp-initramfs.bin; bootipq" 6. Set the IP address of the computer to 192.168.0.2, connect to the LAN port of WG2600HP, and start the TFTP server on the computer 7. Rename OpenWrt initramfs image for WG2600HP to "wg2600hp-initramfs.bin" and place it in the TFTP directory 8. Remove power cable from WG2600HP, reconnect it and restart WG2600HP 9. WG2600HP downloads initramfs image from TFTP server on the computer, loads it and boot with initramfs image 10. On the initramfs image, execute "mtd erase firmware" to erase stock firmware and execute sysupgrade with the sysupgrade image 11. Wait ~180 seconds to complete flashing Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
This commit is contained in:
parent
4bb6ee465e
commit
4645a6d318
9 changed files with 484 additions and 7 deletions
|
@ -15,6 +15,11 @@ compex,wpq864)
|
|||
ucidef_set_led_usbport "usb" "USB" "wpq864:green:usb" "usb1-port1" "usb2-port1"
|
||||
ucidef_set_led_usbport "pcie-usb" "PCIe USB" "wpq864:green:usb-pcie" "usb3-port1"
|
||||
;;
|
||||
nec,wg2600hp)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy1tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "phy0tpt"
|
||||
ucidef_set_led_switch "wan" "WAN" "${boardname}:green:active" "switch0" "0x1e"
|
||||
;;
|
||||
netgear,d7800 |\
|
||||
netgear,r7500 |\
|
||||
netgear,r7500v2 |\
|
||||
|
|
|
@ -29,6 +29,10 @@ linksys,ea8500)
|
|||
ucidef_set_interface_macaddr "lan" "$hw_mac_addr"
|
||||
ucidef_set_interface_macaddr "wan" "$hw_mac_addr"
|
||||
;;
|
||||
nec,wg2600hp)
|
||||
ucidef_add_switch "switch0" \
|
||||
"2:lan" "3:lan" "4:lan" "5:lan" "6@eth1" "1:wan" "0@eth0"
|
||||
;;
|
||||
qcom,ipq8064-db149)
|
||||
ucidef_set_interface_lan "eth1 eth2 eth3"
|
||||
ucidef_add_switch "switch0" \
|
||||
|
|
|
@ -60,6 +60,7 @@ case "$FIRMWARE" in
|
|||
ath10kcal_extract "radio" 4096 12064
|
||||
# ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -1)
|
||||
;;
|
||||
nec,wg2600hp |\
|
||||
tplink,vr2600v)
|
||||
ath10kcal_extract "ART" 4096 12064
|
||||
;;
|
||||
|
@ -83,6 +84,7 @@ case "$FIRMWARE" in
|
|||
ath10kcal_extract "radio" 20480 12064
|
||||
# ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary default-mac 8) -2)
|
||||
;;
|
||||
nec,wg2600hp |\
|
||||
tplink,vr2600v)
|
||||
ath10kcal_extract "ART" 20480 12064
|
||||
;;
|
||||
|
|
|
@ -15,6 +15,9 @@ case "$board" in
|
|||
linksys,ea8500)
|
||||
echo $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) $(($PHYNBR + 1)) ) > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
nec,wg2600hp)
|
||||
echo $(macaddr_add $(mtd_get_mac_binary PRODUCTDATA 12) $((1 - $PHYNBR)) ) > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
netgear,d7800 |\
|
||||
netgear,r7500v2 |\
|
||||
netgear,r7800)
|
||||
|
|
|
@ -32,6 +32,7 @@ platform_do_upgrade() {
|
|||
MTD_CONFIG_ARGS="-s 0x200000"
|
||||
default_do_upgrade "$ARGV"
|
||||
;;
|
||||
nec,wg2600hp |\
|
||||
*)
|
||||
default_do_upgrade "$ARGV"
|
||||
;;
|
||||
|
|
|
@ -309,6 +309,7 @@ CONFIG_MTD_QCOM_SMEM_PARTS=y
|
|||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_MTD_SPLIT_FIRMWARE=y
|
||||
CONFIG_MTD_SPLIT_FIT_FW=y
|
||||
CONFIG_MTD_SPLIT_UIMAGE_FW=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_BEB_LIMIT=20
|
||||
CONFIG_MTD_UBI_BLOCK=y
|
||||
|
|
|
@ -0,0 +1,448 @@
|
|||
#include "qcom-ipq8064-v2.0.dtsi"
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
model = "NEC Aterm WG2600HP";
|
||||
compatible = "nec,wg2600hp", "qcom,ipq8064";
|
||||
|
||||
memory@0 {
|
||||
reg = <0x42000000 0x1e000000>;
|
||||
device_type = "memory";
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
rsvd@41200000 {
|
||||
reg = <0x41200000 0x300000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &gsbi4_serial;
|
||||
mdio-gpio0 = &mdio0;
|
||||
|
||||
led-boot = &power_green;
|
||||
led-failsafe = &power_green;
|
||||
led-running = &power_green;
|
||||
led-upgrade = &power_green;
|
||||
};
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
soc {
|
||||
pinmux@800000 {
|
||||
button_pins: button_pins {
|
||||
mux {
|
||||
pins = "gpio16", "gpio54", "gpio24", "gpio25";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
i2c4_pins: i2c4_pinmux {
|
||||
mux {
|
||||
pins = "gpio12", "gpio13";
|
||||
function = "gsbi4";
|
||||
drive-strength = <12>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
led_pins: led_pins {
|
||||
mux {
|
||||
pins = "gpio6", "gpio7", "gpio8", "gpio9", "gpio14",
|
||||
"gpio15", "gpio55", "gpio56", "gpio57", "gpio58",
|
||||
"gpio64", "gpio65";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
spi_pins: spi_pins {
|
||||
mux {
|
||||
pins = "gpio18", "gpio19", "gpio21";
|
||||
function = "gsbi5";
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
data {
|
||||
pins = "gpio18", "gpio19";
|
||||
drive-strength = <10>;
|
||||
};
|
||||
|
||||
cs {
|
||||
pins = "gpio20";
|
||||
drive-strength = <10>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
clk {
|
||||
pins = "gpio21";
|
||||
drive-strength = <12>;
|
||||
};
|
||||
};
|
||||
|
||||
mdio0_pins: mdio0_pins {
|
||||
mux {
|
||||
pins = "gpio0", "gpio1";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
rgmii2_pins: rgmii2_pins {
|
||||
mux {
|
||||
pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32",
|
||||
"gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ;
|
||||
function = "rgmii2";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
usb_pwr_en_pins: usb_pwr_en_pins {
|
||||
mux {
|
||||
pins = "gpio22";
|
||||
function = "gpio";
|
||||
drive-strength = <2>;
|
||||
bias-pull-down;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gsbi@16300000 {
|
||||
qcom,mode = <GSBI_PROT_I2C_UART>;
|
||||
status = "ok";
|
||||
serial@16340000 {
|
||||
status = "ok";
|
||||
};
|
||||
/*
|
||||
* The i2c device on gsbi4 should not be enabled.
|
||||
* On ipq806x designs gsbi4 i2c is meant for exclusive
|
||||
* RPM usage. Turning this on in kernel manifests as
|
||||
* i2c failure for the RPM.
|
||||
*/
|
||||
};
|
||||
|
||||
gsbi5: gsbi@1a200000 {
|
||||
qcom,mode = <GSBI_PROT_SPI>;
|
||||
status = "ok";
|
||||
|
||||
spi4: spi@1a280000 {
|
||||
status = "ok";
|
||||
|
||||
pinctrl-0 = <&spi_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
flash: m25p80@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
spi-max-frequency = <50000000>;
|
||||
reg = <0>;
|
||||
|
||||
SBL1@0 {
|
||||
label = "SBL1";
|
||||
reg = <0x0 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
MIBIB@20000 {
|
||||
label = "MIBIB";
|
||||
reg = <0x20000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
SBL2@40000 {
|
||||
label = "SBL2";
|
||||
reg = <0x40000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
SBL3@80000 {
|
||||
label = "SBL3";
|
||||
reg = <0x80000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
DDRCONFIG@100000 {
|
||||
label = "DDRCONFIG";
|
||||
reg = <0x100000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
SSD@110000 {
|
||||
label = "SSD";
|
||||
reg = <0x110000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
TZ@120000 {
|
||||
label = "TZ";
|
||||
reg = <0x120000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
RPM@1a0000 {
|
||||
label = "RPM";
|
||||
reg = <0x1a0000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
APPSBL@220000 {
|
||||
label = "APPSBL";
|
||||
reg = <0x220000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
APPSBLENV@2a0000 {
|
||||
label = "APPSBLENV";
|
||||
reg = <0x2a0000 0x10000>;
|
||||
};
|
||||
|
||||
PRODUCTDATA: PRODUCTDATA@2b0000 {
|
||||
label = "PRODUCTDATA";
|
||||
reg = <0x2b0000 0x30000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
ART@2e0000 {
|
||||
label = "ART";
|
||||
reg = <0x2e0000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
TP@320000 {
|
||||
label = "TP";
|
||||
reg = <0x320000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
TINY@360000 {
|
||||
label = "TINY";
|
||||
reg = <0x360000 0x500000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
firmware@860000 {
|
||||
label = "firmware";
|
||||
reg = <0x860000 0x17a0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
phy@100f8800 { /* USB3 port 1 HS phy */
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
phy@100f8830 { /* USB3 port 1 SS phy */
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
phy@110f8800 { /* USB3 port 0 HS phy */
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
phy@110f8830 { /* USB3 port 0 SS phy */
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
usb30@0 {
|
||||
status = "ok";
|
||||
|
||||
pinctrl-0 = <&usb_pwr_en_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
usb30@1 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
pcie0: pci@1b500000 {
|
||||
status = "ok";
|
||||
reset-gpio = <&qcom_pinmux 3 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&pcie0_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
pcie1: pci@1b700000 {
|
||||
status = "ok";
|
||||
reset-gpio = <&qcom_pinmux 48 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&pcie1_pins>;
|
||||
pinctrl-names = "default";
|
||||
force_gen1 = <1>;
|
||||
};
|
||||
|
||||
mdio0: mdio {
|
||||
compatible = "virtual,mdio-gpio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH &qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&mdio0_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
device_type = "ethernet-phy";
|
||||
reg = <0>;
|
||||
qca,ar8327-initvals = <
|
||||
0x00004 0x7600000 /* PAD0_MODE */
|
||||
0x00008 0x1000000 /* PAD5_MODE */
|
||||
0x0000c 0x80 /* PAD6_MODE */
|
||||
0x000e4 0x6a545 /* MAC_POWER_SEL */
|
||||
0x000e0 0xc74164de /* SGMII_CTRL */
|
||||
0x0007c 0x4e /* PORT0_STATUS */
|
||||
0x00094 0x4e /* PORT6_STATUS */
|
||||
>;
|
||||
};
|
||||
|
||||
phy4: ethernet-phy@4 {
|
||||
device_type = "ethernet-phy";
|
||||
reg = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
gmac1: ethernet@37200000 {
|
||||
status = "ok";
|
||||
phy-mode = "rgmii";
|
||||
qcom,id = <1>;
|
||||
|
||||
pinctrl-0 = <&rgmii2_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
mtd-mac-address = <&PRODUCTDATA 6>;
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
|
||||
gmac2: ethernet@37400000 {
|
||||
status = "ok";
|
||||
phy-mode = "sgmii";
|
||||
qcom,id = <2>;
|
||||
|
||||
mtd-mac-address = <&PRODUCTDATA 0>;
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&qcom_pinmux 16 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&qcom_pinmux 54 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
|
||||
bridge {
|
||||
label = "bridge";
|
||||
gpios = <&qcom_pinmux 24 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
linux,input-type = <EV_SW>;
|
||||
};
|
||||
|
||||
converter {
|
||||
label = "converter";
|
||||
gpios = <&qcom_pinmux 25 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <BTN_0>;
|
||||
linux,input-type = <EV_SW>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
converter_green {
|
||||
label = "wg2600hp:green:converter";
|
||||
gpios = <&qcom_pinmux 6 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_red {
|
||||
label = "wg2600hp:red:power";
|
||||
gpios = <&qcom_pinmux 7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
active_green {
|
||||
label = "wg2600hp:green:active";
|
||||
gpios = <&qcom_pinmux 8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
active_red {
|
||||
label = "wg2600hp:red:active";
|
||||
gpios = <&qcom_pinmux 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
power_green: power_green {
|
||||
label = "wg2600hp:green:power";
|
||||
gpios = <&qcom_pinmux 14 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
converter_red {
|
||||
label = "wg2600hp:red:converter";
|
||||
gpios = <&qcom_pinmux 15 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan2g_green {
|
||||
label = "wg2600hp:green:wlan2g";
|
||||
gpios = <&qcom_pinmux 55 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan2g_red {
|
||||
label = "wg2600hp:red:wlan2g";
|
||||
gpios = <&qcom_pinmux 56 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan5g_green {
|
||||
label = "wg2600hp:green:wlan5g";
|
||||
gpios = <&qcom_pinmux 57 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan5g_red {
|
||||
label = "wg2600hp:red:wlan5g";
|
||||
gpios = <&qcom_pinmux 58 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
tv_green {
|
||||
label = "wg2600hp:green:tv";
|
||||
gpios = <&qcom_pinmux 64 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
tv_red {
|
||||
label = "wg2600hp:red:tv";
|
||||
gpios = <&qcom_pinmux 65 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&adm_dma {
|
||||
status = "ok";
|
||||
};
|
|
@ -101,6 +101,18 @@ define Device/linksys_ea8500
|
|||
endef
|
||||
TARGET_DEVICES += linksys_ea8500
|
||||
|
||||
define Device/nec_wg2600hp
|
||||
$(call Device/LegacyImage)
|
||||
DEVICE_DTS := qcom-ipq8064-wg2600hp
|
||||
BLOCKSIZE := 64k
|
||||
BOARD_NAME := wg2600hp
|
||||
DEVICE_TITLE := NEC Aterm WG2600HP
|
||||
IMAGES := sysupgrade.bin
|
||||
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
|
||||
DEVICE_PACKAGES := ath10k-firmware-qca99x0
|
||||
endef
|
||||
TARGET_DEVICES += nec_wg2600hp
|
||||
|
||||
define Device/netgear_d7800
|
||||
$(call Device/DniImage)
|
||||
DEVICE_DTS := qcom-ipq8064-d7800
|
||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -699,6 +699,15 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
@@ -699,6 +699,16 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
qcom-apq8084-mtp.dtb \
|
||||
qcom-ipq4019-ap.dk01.1-c1.dtb \
|
||||
qcom-ipq8064-ap148.dtb \
|
||||
|
@ -20,6 +20,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|||
+ qcom-ipq8064-ea8500.dtb \
|
||||
+ qcom-ipq8064-r7500.dtb \
|
||||
+ qcom-ipq8064-r7500v2.dtb \
|
||||
+ qcom-ipq8064-wg2600hp.dtb \
|
||||
+ qcom-ipq8064-wpq864.dtb \
|
||||
+ qcom-ipq8065-nbg6817.dtb \
|
||||
+ qcom-ipq8065-r7800.dtb \
|
||||
|
|
Loading…
Reference in a new issue