Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2023-06-26 00:34:16 +08:00
commit c3c09cd994
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
72 changed files with 1935 additions and 110 deletions

View File

@ -399,6 +399,15 @@ define Build/lzma-no-dict
@mv $@.new $@
endef
define Build/moxa-encode-fw
$(TOPDIR)/scripts/moxa-encode-fw.py \
--input $@ \
--output $@ \
--magic $(MOXA_MAGIC) \
--hwid $(MOXA_HWID) \
--buildid 00000000
endef
define Build/netgear-chk
$(STAGING_DIR_HOST)/bin/mkchkimg \
-o $@.new \

View File

@ -19,7 +19,7 @@ include $(INCLUDE_DIR)/package.mk
include ./atf-version.mk
define Trusted-Firmware-A/Default
NAME:=Rockchip $(1)
NAME:=Rockchip $(1) SoCs
BUILD_TARGET:=rockchip
endef

View File

@ -47,6 +47,7 @@ etactica,eg200|\
glinet,gl-ar750s-nor|\
glinet,gl-ar750s-nor-nand|\
librerouter,librerouter-v1|\
moxa,awk-1137c|\
netgear,ex7300|\
netgear,ex7300-v2|\
netgear,wndr4300-v2|\

View File

@ -16,6 +16,9 @@ case "$board" in
traverse,ls1043s)
ubootenv_add_uci_config "/dev/mtd1" "0x40000" "0x2000" "0x20000"
;;
traverse,ten64)
ubootenv_add_uci_config "/dev/mtd3" "0x0000" "0x80000" "0x80000"
;;
esac
config_load ubootenv

View File

@ -45,6 +45,10 @@ livinet,zr-3020-ubootmod|\
qihoo,360t7-ubootmod)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" "1"
;;
mercusys,mr90x-v1)
local envdev=/dev/mtd$(find_mtd_index "u-boot-env")
ubootenv_add_uci_config "$envdev" "0x0" "0x20000" "0x20000" "1"
;;
netgear,wax220)
ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x20000" "0x20000"
;;

View File

@ -24,7 +24,8 @@ sitecom,wlr-4100-v1-002|\
zyxel,keenetic-lite-iii-a)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000"
;;
arcadyan,we420223-99)
arcadyan,we420223-99|\
dlink,dir-806a-b1)
ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x1000" "0x1000"
;;
allnet,all0256n-4m|\

View File

@ -41,6 +41,7 @@ ALLWIFIBOARDS:= \
xiaomi_ax3600 \
xiaomi_ax9000 \
zte_mf269 \
zte_mf287plus \
zyxel_nbg7815
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
@ -128,6 +129,7 @@ $(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9))
$(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600))
$(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000))
$(eval $(call generate-ipq-wifi-package,zte_mf269,ZTE MF269))
$(eval $(call generate-ipq-wifi-package,zte_mf287plus,ZTE MF287Plus))
$(eval $(call generate-ipq-wifi-package,zyxel_nbg7815,Zyxel NBG7815))
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))

View File

@ -12,9 +12,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
PKG_MIRROR_HASH:=c2851b577d1ee632c902eca1864444fa22cad98956bfa852019e6d621c0f8d2a
PKG_SOURCE_DATE:=2023-04-05
PKG_SOURCE_VERSION:=40ab806bf4c8698ac925d094ce11ce1d57ae2e46
PKG_MIRROR_HASH:=e2e00e2bb6b7bacda5dcb713e4f9a4b1e316d75b140a4aa77145471bf6fe5c17
PKG_SOURCE_DATE:=2023-06-24
PKG_SOURCE_VERSION:=52112643308bb02a3b4fa2894dd7d4340ba4a237
PKG_MAINTAINER:=Hans Dedecker <dedeckeh@gmail.com>
PKG_LICENSE:=GPL-2.0

109
scripts/moxa-encode-fw.py Executable file
View File

@ -0,0 +1,109 @@
#! /usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0-or-later
import argparse
import struct
from binascii import crc32
from dataclasses import dataclass
from itertools import cycle
from typing import List
def xor(data: bytes) -> bytes:
passphrase = "Seek AGREEMENT for the date of completion.\0"
pw = cycle(bytearray(passphrase.encode('ascii')))
return bytearray(b ^ next(pw) for b in data)
def add_fw_header(data: bytes, magic: int, hwid: int, build_id: int,
offsets: List[int]) -> bytes:
unknown_1 = 0x01
unknown_2 = 0x0000
unknown_3 = 0x00000000
unknown_4 = 0x01000000
file_crc = crc(data, 0)
header_struct = struct.Struct('>QIBBHIIIIII' + 'I' * len(offsets))
header_size = header_struct.size
file_size = header_size + len(data)
header_offsets = map(lambda x: x + header_size, offsets)
header_data = header_struct.pack(magic, file_size, unknown_1, len(offsets),
unknown_2, hwid, build_id, unknown_3,
build_id, unknown_4, *header_offsets,
file_crc)
return header_data + data
def add_file_header(data: bytes, filename: str, build_id: int) -> bytes:
unknown1 = 0x01000000
unknown2 = 0x00000000
file_crc = crc(data, 0)
header_struct = struct.Struct(">16sIIIII")
file_size = header_struct.size + len(data)
header_data = header_struct.pack(filename.encode('ascii'), file_size,
unknown1, build_id, unknown2, file_crc)
return header_data + data
def crc(data: bytes, init_val: int) -> int:
return 0xffffffff ^ (crc32(data, 0xffffffff ^ init_val))
@dataclass
class Partition:
name: str
size: int
def main():
partitions = [
Partition(name='kernel', size=2048 * 1024),
Partition(name='root', size=9216 * 1024),
Partition(name='userdisk', size=3076 * 1024),
]
parser = argparse.ArgumentParser(prog='moxa-encode-fw',
description='MOXA IW firmware encoder')
parser.add_argument('-i', '--input', required=True, type=str, help='Firmware file')
parser.add_argument('-o', '--output', required=True, type=str, help="Output path for encoded firmware file")
parser.add_argument('-m', '--magic', required=True, type=lambda x: int(x,0), help="Magic for firmware header")
parser.add_argument('-d', '--hwid', required=True, type=lambda x: int(x,0), help="Hardware id of device")
parser.add_argument('-b', '--buildid', required=True, type=lambda x: int(x,0), help="Build id of firmware")
args = parser.parse_args()
with open(args.input, 'rb') as input_file:
firmware = bytearray(input_file.read())
offsets = []
pos_input = 0
pos_output = 0
firmware_seg = bytearray()
for partition in partitions:
part_data = firmware[pos_input:pos_input + partition.size]
# just to make sure that no partition is empty
if len(part_data) == 0:
part_data = bytearray([0x00])
header = add_file_header(part_data, partition.name, args.buildid)
firmware_seg += header
offsets.append(pos_output)
pos_input += partition.size
pos_output += len(header)
moxa_firmware = add_fw_header(firmware_seg, args.magic, args.hwid, args.buildid, offsets)
encrypted = xor(moxa_firmware)
with open(args.output, 'wb') as output_file:
output_file.write(encrypted)
if __name__ == '__main__':
main()

View File

@ -10,7 +10,6 @@ CONFIG_APM821xx=y
# CONFIG_ARCHES is not set
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y

View File

@ -39,7 +39,6 @@ CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_TINY_POWER_BUTTON is not set
# CONFIG_ALIBABA_UNCORE_DRW_PMU is not set
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y

View File

@ -0,0 +1,58 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar9344_mikrotik_routerboard-951x-2hnd.dtsi"
/ {
compatible = "mikrotik,routerboard-951g-2hnd", "qca,ar9344";
model = "Mikrotik RouterBOARD 951G-2HnD";
/delete-node/ aliases;
/delete-node/ leds;
gpio-export {
compatible = "gpio-export";
gpio_usb_power {
gpio-export,name = "rb951g-2hnd:power:usb";
gpio-export,output = <1>;
gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
};
};
};
&ref {
clock-frequency = <25000000>;
};
&mdio0 {
status = "okay";
phy0: ethernet-phy@0 {
reg = <0>;
qca,ar8327-initvals = <
0x04 0x07600000 /* PAD0_MODE */
0x7c 0x0000007e /* PORT0_STATUS */
>;
};
};
&eth0 {
status = "okay";
pll-data = <0x6f000000 0x00000101 0x00001616>;
phy-mode = "rgmii";
phy-handle = <&phy0>;
gmac-config {
device = <&gmac>;
rgmii-gmac0 = <1>;
rxd-delay = <1>;
switch-only-mode = <1>;
};
};
&eth1 {
status = "disabled";
};

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar9344_mikrotik_routerboard.dtsi"
#include "ar9344_mikrotik_routerboard-951x-2hnd.dtsi"
/ {
compatible = "mikrotik,routerboard-951ui-2hnd", "qca,ar9344";
@ -59,77 +59,6 @@
};
};
&gpio {
nand_power {
gpio-hog;
gpios = <14 GPIO_ACTIVE_LOW>;
output-high;
};
};
&nand {
status = "okay";
nand-ecc-mode = "soft";
qca,nand-swap-dma;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "booter";
reg = <0x0000000 0x0040000>;
read-only;
};
partition@40000 {
label = "kernel";
reg = <0x0040000 0x03c0000>;
};
partition@400000 {
label = "ubi";
reg = <0x0400000 0x7c00000>;
};
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
partitions {
compatible = "mikrotik,routerboot-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "routerboot";
reg = <0x0 0x0>;
read-only;
};
hard_config: hard_config {
read-only;
};
bios {
size = <0x1000>;
read-only;
};
soft_config {
};
};
};
};
&eth0 {
phy-handle = <&swphy4>;
@ -143,11 +72,3 @@
&wmac {
qca,led-pin = /bits/ 8 <11>;
};
&usb {
status = "okay";
};
&usb_phy {
status = "okay";
};

View File

@ -0,0 +1,82 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar9344_mikrotik_routerboard.dtsi"
&gpio {
nand_power {
gpio-hog;
gpios = <14 GPIO_ACTIVE_LOW>;
output-high;
};
};
&nand {
status = "okay";
nand-ecc-mode = "soft";
qca,nand-swap-dma;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "booter";
reg = <0x0000000 0x0040000>;
read-only;
};
partition@40000 {
label = "kernel";
reg = <0x0040000 0x03c0000>;
};
partition@400000 {
label = "ubi";
reg = <0x0400000 0x7c00000>;
};
};
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
partitions {
compatible = "mikrotik,routerboot-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "routerboot";
reg = <0x0 0x0>;
read-only;
};
hard_config: hard_config {
read-only;
};
bios {
size = <0x1000>;
read-only;
};
soft_config {
};
};
};
};
&usb {
status = "okay";
};
&usb_phy {
status = "okay";
};

View File

@ -0,0 +1,184 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "ar9344.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
compatible = "moxa,awk-1137c", "qca,ar9344";
model = "MOXA AWK-1137C";
aliases {
led-boot = &led_status_red;
led-failsafe = &led_status_red;
led-running = &led_status_green;
led-upgrade = &led_status_red;
label-mac-device = &eth1;
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
};
};
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
led_status_green: led-0 {
label = "green:status";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
function-enumerator = <0>;
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
};
led_status_red: led-1 {
label = "red:status";
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_STATUS;
function-enumerator = <1>;
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
led-2 {
label = "green:wifi";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
function-enumerator = <0>;
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
led-3 {
label = "green:lan1";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WAN;
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
};
led-4 {
label = "green:lan2";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
};
led-5 {
label = "yellow:wifi";
color = <LED_COLOR_ID_YELLOW>;
function = LED_FUNCTION_WLAN;
function-enumerator = <1>;
gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0assoc";
};
};
};
&ref {
clock-frequency = <40000000>;
};
&spi {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x040000>;
read-only;
};
partition@40000 {
label = "u-boot-env";
reg = <0x040000 0x010000>;
};
partition@50000 {
label = "firmware";
reg = <0x050000 0xe00000>;
compatible = "denx,uimage";
};
partition@e50000 {
label = "log1";
reg = <0xe50000 0x020000>;
read-only;
};
partition@e70000 {
label = "log2";
reg = <0xe70000 0x020000>;
read-only;
};
partition@e90000 {
label = "version";
reg = <0xe90000 0x020000>;
read-only;
};
partition@eb0000 {
label = "config1";
reg = <0xeb0000 0x020000>;
read-only;
};
partition@ed0000 {
label = "config2";
reg = <0xed0000 0x020000>;
read-only;
};
partition@ef0000 {
label = "config-data";
reg = <0xef0000 0x0c0000>;
read-only;
};
partition@fb0000 {
label = "mib0";
reg = <0xfb0000 0x030000>;
read-only;
};
art: partition@fe0000 {
label = "art";
reg = <0xfe0000 0x010000>;
read-only;
};
partition@ff0000 {
label = "fis";
reg = <0xff0000 0x010000>;
read-only;
};
};
};
};
&eth1 {
status = "okay";
};
&wmac {
status = "okay";
qca,no-eeprom;
};

View File

@ -302,6 +302,10 @@ tplink,cpe210-v3)
meraki,mr16)
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
;;
moxa,awk-1137c)
ucidef_set_led_switch "wan" "LAN1" "green:lan1" "switch0" "0x02"
ucidef_set_led_switch "lan" "LAN2" "green:lan2" "switch0" "0x04"
;;
netgear,wnr2200-8m|\
netgear,wnr2200-16m)
ucidef_set_led_netdev "wan-amber" "WAN (amber)" "amber:wan" "eth0"

View File

@ -240,7 +240,8 @@ ath79_setup_interfaces()
ubnt,routerstation)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
;;
comfast,cf-e375ac)
comfast,cf-e375ac|\
moxa,awk-1137c)
ucidef_add_switch "switch0" \
"0@eth0" "1:wan" "2:lan"
;;
@ -731,6 +732,11 @@ ath79_setup_macs()
lan_mac=$(mtd_get_mac_encrypted_deco $(find_mtd_part config))
label_mac=$lan_mac
;;
moxa,awk-1137c)
lan_mac=$(mtd_get_mac_ascii u-boot-env mac_addr)
wan_mac=$(mtd_get_mac_ascii u-boot-env mac_addr)
label_mac=$lan_mac
;;
nec,wf1200cr|\
nec,wg1200cr)
lan_mac=$(mtd_get_mac_ascii devdata "lanmac")

View File

@ -62,6 +62,10 @@ case "$FIRMWARE" in
caldata_extract "art" 0x1000 0x440
ath9k_patch_mac $(mtd_get_mac_ascii u-boot-env ethaddr)
;;
moxa,awk-1137c)
caldata_extract "art" 0x1000 0x440
ath9k_patch_mac $(mtd_get_mac_ascii u-boot-env mac_addr)
;;
nec,wg800hp)
caldata_extract "art" 0x1000 0x440
ath9k_patch_mac $(mtd_get_mac_text board_data 0x680)

View File

@ -8,6 +8,9 @@ boot() {
adtran,bsap1840)
fconfig -s -w -d $(find_mtd_part "RedBoot config") -n boot_cntb -x 0
;;
moxa,awk-1137c)
fw_setenv fwr_verify 0
;;
qihoo,c301)
local n=$(fw_printenv activeregion | cut -d = -f 2)
fw_setenv "image${n}trynum" 0

View File

@ -28,6 +28,9 @@ preinit_set_mac_address() {
fortinet,fap-221-b)
ip link set dev eth0 address $(mtd_get_mac_text u-boot 0x3ff80 12)
;;
moxa,awk-1137c)
ip link set dev eth0 address $(mtd_get_mac_ascii u-boot-env mac_addr)
;;
tplink,deco-s4-v2)
base_mac=$(mtd_get_mac_encrypted_deco $(find_mtd_part config))
ip link set dev eth0 address $base_mac

View File

@ -9,6 +9,7 @@ DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DAP_SIGNATURE
DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL
DEVICE_VARS += MOXA_MAGIC MOXA_HWID
DEVICE_VARS += OPENMESH_CE_TYPE ZYXEL_MODEL_STRING
DEVICE_VARS += SUPPORTED_TELTONIKA_DEVICES
@ -1820,6 +1821,19 @@ define Device/mercury_mw4530r-v1
endef
TARGET_DEVICES += mercury_mw4530r-v1
define Device/moxa_awk-1137c
SOC := ar9344
DEVICE_MODEL := AWK-1137C
DEVICE_VENDOR := MOXA
MOXA_MAGIC := 0x8919123028877702
MOXA_HWID := 0x01080000
IMAGE_SIZE := 14336k
DEVICE_PACKAGES := uboot-envtools
IMAGES += factory.rom
IMAGE/factory.rom := $$(IMAGE/sysupgrade.bin) | moxa-encode-fw
endef
TARGET_DEVICES += moxa_awk-1137c
define Device/nec_wx1200cr
DEVICE_VENDOR := NEC
IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs

View File

@ -48,6 +48,15 @@ define Device/mikrotik_routerboard-922uags-5hpacd
endef
TARGET_DEVICES += mikrotik_routerboard-922uags-5hpacd
define Device/mikrotik_routerboard-951g-2hnd
$(Device/mikrotik_nand)
SOC := ar9344
DEVICE_MODEL := RouterBOARD 951G-2HnD
DEVICE_PACKAGES += kmod-usb-ohci kmod-usb2
SUPPORTED_DEVICES += rb-951g-2hnd
endef
TARGET_DEVICES += mikrotik_routerboard-951g-2hnd
define Device/mikrotik_routerboard-951ui-2hnd
$(Device/mikrotik_nand)
SOC := ar9344

View File

@ -35,6 +35,7 @@ ath79_setup_interfaces()
mikrotik,routerboard-map-2nd)
ucidef_set_interface_lan "eth0 eth1"
;;
mikrotik,routerboard-951g-2hnd|\
mikrotik,routerboard-962uigs-5hact2hnt)
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"

View File

@ -46,6 +46,7 @@ case "$FIRMWARE" in
mikrotik,routerboard-962uigs-5hact2hnt)
caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" 7)
;;
mikrotik,routerboard-951g-2hnd|\
mikrotik,routerboard-951ui-2hnd)
caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" +11)
;;

View File

@ -33,6 +33,7 @@ platform_do_upgrade() {
mikrotik,routerboard-912uag-2hpnd|\
mikrotik,routerboard-921gs-5hpacd-15s|\
mikrotik,routerboard-922uags-5hpacd|\
mikrotik,routerboard-951g-2hnd|\
mikrotik,routerboard-951ui-2hnd|\
mikrotik,routerboard-sxt-5nd-r2)
platform_do_upgrade_mikrotik_nand "$1"

View File

@ -0,0 +1,26 @@
From: Luiz Angelo Daros de Luca <luizluca@gmail.com>
Subject: [PATCH] ath79: export ath79_pll_base
This symbol is declared as extern but nobody exported it.
Any module including arch/mips/include/asm/mach-ath79/ath79.h
will not build. Without this export, ag71xx.ko will not build
as a module and the build will fail like this:
ERROR: modpost: "ath79_pll_base" [drivers/net/ethernet/atheros/ag71xx/ag71xx.ko] undefined!
The ath79_pll_base symbol is accessed in the ath79_pll_wr() inline function.
---
arch/mips/ath79/common.c | 1 +
1 file changed, 1 insertions(+)
--- a/arch/mips/ath79/common.c
+++ b/arch/mips/ath79/common.c
@@ -34,6 +34,7 @@ unsigned int ath79_soc_rev;
EXPORT_SYMBOL_GPL(ath79_soc_rev);
void __iomem *ath79_pll_base;
+EXPORT_SYMBOL_GPL(ath79_pll_base);
void __iomem *ath79_reset_base;
EXPORT_SYMBOL_GPL(ath79_reset_base);
void __iomem *ath79_ddr_base;

View File

@ -4,7 +4,6 @@ CONFIG_APERTURE_HELPERS=y
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_BCM=y
CONFIG_ARCH_BCM2835=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y

View File

@ -5,7 +5,6 @@ CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_BCM=y
CONFIG_ARCH_BCM2835=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y

View File

@ -6,7 +6,6 @@ CONFIG_ARCH_BCM2835=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y

View File

@ -6,7 +6,6 @@ CONFIG_ARCH_BCM2835=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y

View File

@ -461,6 +461,10 @@ TARGET_DEVICES += smartrg_sr400ac
define Device/phicomm_k3
DEVICE_VENDOR := PHICOMM
DEVICE_MODEL := K3
DEVICE_ALT0_VENDOR := Wavlink
DEVICE_ALT0_MODEL := QUANTUM DAX
DEVICE_ALT1_VENDOR := Wavlink
DEVICE_ALT1_MODEL := WL-WN538A8
DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES) \
-brcmfmac-firmware-4366c0-pcie brcmfmac-firmware-4366c0-pcie-k3
IMAGES := trx

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MMAP_RND_BITS_MAX=15

View File

@ -1,7 +1,6 @@
CONFIG_ALIGNMENT_TRAP=y
CONFIG_AMBA_PL08X=y
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_GEMINI=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y

View File

@ -239,6 +239,7 @@ CONFIG_ARCH_BINFMT_ELF_STATE=y
# CONFIG_ARCH_EXYNOS is not set
CONFIG_ARCH_FLATMEM_ENABLE=y
# CONFIG_ARCH_FOOTBRIDGE is not set
CONFIG_ARCH_FORCE_MAX_ORDER=11
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_HI3xxx is not set
# CONFIG_ARCH_HIGHBANK is not set
@ -2160,7 +2161,6 @@ CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_FONT_6x8 is not set
# CONFIG_FONT_TER16x32 is not set
# CONFIG_FORCEDETH is not set
CONFIG_FORCE_MAX_ZONEORDER=11
# CONFIG_FORCE_NR_CPUS is not set
CONFIG_FORTIFY_SOURCE=y
# CONFIG_FPGA is not set

View File

@ -107,6 +107,10 @@ ipq40xx_setup_interfaces()
zte,mf286d)
ucidef_set_interfaces_lan_wan "lan2 lan3 lan4" "wan"
;;
zte,mf287plus)
ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
ucidef_set_interface "wan" device "/dev/cdc-wdm0" protocol "qmi"
;;
*)
echo "Unsupported hardware. Network interfaces not initialized"
;;

View File

@ -27,6 +27,7 @@ EOF
;;
zte,mf18a |\
zte,mf286d |\
zte,mf287plus |\
zte,mf289f)
CI_UBIPART="rootfs"
local mtdnum="$( find_mtd_index $CI_UBIPART )"
@ -208,6 +209,7 @@ platform_do_upgrade() {
teltonika,rutx10 |\
zte,mf18a |\
zte,mf286d |\
zte,mf287plus |\
zte,mf289f)
CI_UBIPART="rootfs"
nand_do_upgrade "$1"

View File

@ -376,6 +376,7 @@ CONFIG_PINCTRL_MSM=y
# CONFIG_PINCTRL_SM8250 is not set
CONFIG_PM_OPP=y
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_GPIO_RESTART=y
CONFIG_POWER_RESET_MSM=y
CONFIG_POWER_SUPPLY=y
CONFIG_PPS=y

View File

@ -0,0 +1,384 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
// Copyright (c) 2022, Pawel Dembicki <paweldembicki@gmail.com>.
// Copyright (c) 2022, Giammarco Marzano <stich86@gmail.com>.
// Copyright (c) 2023, Andreas Böhler <dev@aboehler.at>
#include "qcom-ipq4019.dtsi"
#include <dt-bindings/soc/qcom,tcsr.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
model = "ZTE MF287Plus";
compatible = "zte,mf287plus";
aliases {
led-boot = &led_status;
led-failsafe = &led_status;
led-running = &led_status;
led-upgrade = &led_status;
};
chosen {
/*
* bootargs forced by u-boot bootipq command:
* 'ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait'
*/
bootargs-append = " root=/dev/ubiblock0_1";
};
/*
* This node is used to restart modem module to avoid anomalous
* behaviours on initial communication.
*/
gpio-restart {
compatible = "gpio-restart";
gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
};
leds {
compatible = "gpio-leds";
led_status: led-0 {
label = "blue:power";
function = LED_FUNCTION_POWER;
color = <LED_COLOR_ID_BLUE>;
gpios = <&tlmm 0 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
key-reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
};
key-wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
};
};
soc {
rng@22000 {
status = "okay";
};
tcsr@1949000 {
compatible = "qcom,tcsr";
reg = <0x1949000 0x100>;
qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
};
tcsr@194b000 {
/* select hostmode */
compatible = "qcom,tcsr";
reg = <0x194b000 0x100>;
qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
status = "okay";
};
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>;
};
};
};
&mdio {
status = "okay";
};
&watchdog {
status = "okay";
};
&blsp_dma {
status = "okay";
};
&usb2 {
status = "okay";
};
&usb3 {
status = "okay";
};
&blsp1_spi1 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
status = "okay";
cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>,
<&tlmm 59 GPIO_ACTIVE_HIGH>,
<&tlmm 1 GPIO_ACTIVE_HIGH>;
flash@0 {
compatible = "jedec,spi-nor";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <24000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "0:SBL1";
reg = <0x0 0x40000>;
read-only;
};
partition@40000 {
label = "0:MIBIB";
reg = <0x40000 0x20000>;
read-only;
};
partition@60000 {
label = "0:QSEE";
reg = <0x60000 0x60000>;
read-only;
};
partition@c0000 {
label = "0:CDT";
reg = <0xc0000 0x10000>;
read-only;
};
partition@d0000 {
label = "0:DDRPARAMS";
reg = <0xd0000 0x10000>;
read-only;
};
partition@e0000 {
label = "0:APPSBLENV";
reg = <0xe0000 0x10000>;
read-only;
};
partition@f0000 {
label = "0:APPSBL";
reg = <0xf0000 0xc0000>;
read-only;
};
partition@1b0000 {
label = "0:reserved1";
reg = <0x1b0000 0x50000>;
read-only;
};
};
};
spi-nand@1 { /* flash@1 ? */
compatible = "spi-nand";
reg = <1>;
spi-max-frequency = <24000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "fota-flag";
reg = <0x0 0x140000>;
read-only;
};
partition@140000 {
label = "ART";
reg = <0x140000 0x140000>;
read-only;
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
precal_art_1000: precal@1000 {
reg = <0x1000 0x2f20>;
};
precal_art_5000: precal@5000 {
reg = <0x5000 0x2f20>;
};
};
partition@280000 {
label = "mac";
reg = <0x280000 0x140000>;
read-only;
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_mac_0: macaddr@0 {
reg = <0x0 0x6>;
};
};
partition@3c0000 {
label = "cfg-param";
reg = <0x3c0000 0x600000>;
read-only;
};
partition@9c0000 {
label = "oops";
reg = <0x9c0000 0x140000>;
};
partition@b00000 {
label = "web";
reg = <0xb00000 0x800000>;
};
partition@1300000 {
label = "rootfs";
reg = <0x1300000 0x2200000>;
};
partition@3500000 {
label = "data";
reg = <0x3500000 0x1900000>;
};
partition@4e00000 {
label = "fota";
reg = <0x4e00000 0x3200000>;
};
};
};
zigbee@2 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "silabs,em3581";
reg = <2>;
spi-max-frequency = <12000000>;
};
};
&blsp1_uart1 {
pinctrl-0 = <&serial_pins>;
pinctrl-names = "default";
status = "okay";
};
&crypto {
status = "okay";
};
&cryptobam {
status = "okay";
};
&gmac {
status = "okay";
nvmem-cell-names = "mac-address";
nvmem-cells = <&macaddr_mac_0>;
mac-address-increment = <2>;
};
&switch {
status = "okay";
};
&swport2 {
status = "okay";
label = "lan1";
};
&swport3 {
status = "okay";
label = "lan2";
};
&swport4 {
status = "okay";
label = "lan3";
};
&swport5 {
status = "okay";
label = "lan4";
};
&qpic_bam {
status = "okay";
};
&tlmm {
serial_pins: serial_pinmux {
mux {
pins = "gpio60", "gpio61";
function = "blsp_uart0";
bias-disable;
};
};
spi_0_pins: spi_0_pinmux {
pinmux {
function = "blsp_spi0";
pins = "gpio55", "gpio56", "gpio57";
drive-strength = <12>;
bias-disable;
};
pinmux_cs {
function = "gpio";
pins = "gpio54", "gpio59", "gpio1";
drive-strength = <2>;
bias-disable;
output-high;
};
};
};
&usb2_hs_phy {
status = "okay";
};
&usb3_ss_phy {
status = "okay";
};
&usb3_hs_phy {
status = "okay";
};
&wifi0 {
status = "okay";
nvmem-cell-names = "pre-calibration", "mac-address";
nvmem-cells = <&precal_art_1000>, <&macaddr_mac_0>;
qcom,ath10k-calibration-variant = "zte,mf287plus";
};
&wifi1 {
status = "okay";
nvmem-cell-names = "pre-calibration", "mac-address";
nvmem-cells = <&precal_art_5000>, <&macaddr_mac_0>;
mac-address-increment = <1>;
qcom,ath10k-calibration-variant = "zte,mf287plus";
};

View File

@ -764,6 +764,7 @@ define Device/meraki_mr33
BLOCKSIZE := 128k
PAGESIZE := 2048
DEVICE_PACKAGES := -swconfig ath10k-firmware-qca9887-ct
DEFAULT := n
endef
TARGET_DEVICES += meraki_mr33
@ -776,6 +777,7 @@ define Device/meraki_mr74
PAGESIZE := 2048
DEVICE_PACKAGES := -swconfig ath10k-firmware-qca9887-ct
DEVICE_DTS_CONFIG := config@3
DEFAULT := n
endef
TARGET_DEVICES += meraki_mr74
@ -1146,6 +1148,24 @@ define Device/zte_mf286d
endef
TARGET_DEVICES += zte_mf286d
define Device/zte_mf287plus
$(call Device/zte_mf28x_common)
DEVICE_DTS_CONFIG := config@ap.dk01.1-c2
DEVICE_MODEL := MF287Plus
DEVICE_ALT0_VENDOR := ZTE
DEVICE_ALT0_MODEL := MF287
DEVICE_PACKAGES += ipq-wifi-zte_mf287plus
SOC := qcom-ipq4018
# The recovery image is used to return back to stock (an initramfs-based image
# that can be flashed to the device via sysupgrade
# The factory image is used to install from the stock firmware by using an
# exploit for the web interface
IMAGES += factory.bin recovery.bin
IMAGE/factory.bin := append-ubi
IMAGE/recovery.bin := append-squashfs4-fakeroot | sysupgrade-tar kernel=$$$$(BIN_DIR)/openwrt-$$(BOARD)$$(if $$(SUBTARGET),-$$(SUBTARGET))-$$(DEVICE_NAME)-initramfs-zImage.itb rootfs=$$$$@ | append-metadata
endef
TARGET_DEVICES += zte_mf287plus
define Device/zte_mf289f
$(call Device/zte_mf28x_common)
DEVICE_MODEL := MF289F

View File

@ -3,7 +3,6 @@ CONFIG_ALIGNMENT_TRAP=y
# CONFIG_APQ_MMCC_8084 is not set
CONFIG_AR8216_PHY=y
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
# CONFIG_ARCH_IPQ40XX is not set
CONFIG_ARCH_IPQ806X=y

View File

@ -508,6 +508,7 @@ CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_FSL_IFC=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_SPLIT_FIRMWARE=y
@ -515,7 +516,7 @@ CONFIG_MTD_SPLIT_FIT_FW=y
CONFIG_MTD_SST25L=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
# CONFIG_MTD_UBI_BLOCK is not set
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MULTIPLEXER=y
CONFIG_MUTEX_SPIN_ON_OWNER=y

View File

@ -17,6 +17,10 @@ traverse,ls1043s)
ucidef_set_led_netdev "xgact" "10G Activity" "ls1043s:yellow:10gact" "eth6"
ucidef_set_led_netdev "xglink" "10G Link" "ls1043s:green:10glink" "eth6"
;;
traverse,ten64)
ucidef_set_led_netdev "sfp1" "SFP 1" "ten64:green:sfp1:down" "eth8" "link tx rx"
ucidef_set_led_netdev "sfp2" "SFP 2" "ten64:green:sfp2:up" "eth9" "link tx rx"
;;
esac
board_config_flush

View File

@ -17,6 +17,10 @@ case "$(board_name)" in
ucidef_set_interface_lan "eth0 eth1 eth2 eth3 eth6"
ucidef_set_interface_wan "eth4"
;;
traverse,ten64)
ucidef_set_interface_lan "eth0 eth1 eth2 eth3"
ucidef_set_interface_wan "eth6"
;;
esac
board_config_flush

View File

@ -20,6 +20,14 @@ traverse,ls1043s)
ucidef_add_gpio_switch "lte_disable" "LTE Airplane Mode" "394"
ucidef_add_gpio_switch "lte_power" "LTE Power" "395"
;;
traverse,ten64)
ucidef_add_gpio_switch "lte_reset" "Cell Modem Reset" "376"
ucidef_add_gpio_switch "lte_power" "Cell Modem Power" "377"
ucidef_add_gpio_switch "lte_disable" "Cell Modem Airplane mode" "378"
ucidef_add_gpio_switch "gnss_disable" "Cell Modem Disable GNSS receiver" "379"
ucidef_add_gpio_switch "lower_sfp_txidsable" "Lower SFP+ TX Disable" "369"
ucidef_add_gpio_switch "upper_sfp_txdisable" "Upper SFP+ TX Disable" "373"
;;
esac
board_config_flush

View File

@ -49,6 +49,26 @@ platform_do_upgrade_traverse_nandubi() {
nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
}
platform_do_upgrade_traverse_slotubi() {
part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
echo "Active boot slot: ${part}"
new_active_sys="b"
if [ ! -z "${part}" ]; then
if [ "${part}" = "ubia" ]; then
CI_UBIPART="ubib"
else
CI_UBIPART="ubia"
new_active_sys="a"
fi
fi
echo "Updating UBI part ${CI_UBIPART}"
fw_setenv "openwrt_active_sys" "${new_active_sys}"
nand_do_upgrade "$1"
return $?
}
platform_copy_config_sdboot() {
local diskdev partdev parttype=ext4
@ -90,6 +110,10 @@ platform_check_image() {
nand_do_platform_check "traverse-ls1043" $1
return $?
;;
traverse,ten64)
nand_do_platform_check "ten64-mtd" $1
return $?
;;
fsl,ls1012a-frdm | \
fsl,ls1012a-frwy-sdboot | \
fsl,ls1012a-rdb | \
@ -130,6 +154,9 @@ platform_do_upgrade() {
traverse,ls1043s)
platform_do_upgrade_traverse_nandubi "$1"
;;
traverse,ten64)
platform_do_upgrade_traverse_slotubi "${1}"
;;
fsl,ls1012a-frdm | \
fsl,ls1012a-rdb | \
fsl,ls1021a-twr | \

View File

@ -64,6 +64,19 @@ define Build/traverse-fit
@mv -f $@.new $@
endef
define Build/traverse-fit-ls1088
./mkits-multiple-config.sh -o $@.its -A $(LINUX_KARCH) \
-v $(LINUX_VERSION) -k $@ -a $(KERNEL_LOADADDR) \
-e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
-C gzip -c 1 -c 2 \
-d $(DTS_DIR)/freescale/fsl-ls1088a-ten64.dtb \
-D "TEN64" -n "ten64" -a $(FDT_LOADADDR) -c 1 \
-d $(DTS_DIR)/freescale/fsl-ls1088a-rdb.dtb \
-D "LS1088ARDB" -n "ls1088ardb" -a $(FDT_LOADADDR) -c 2
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
@mv -f $@.new $@
endef
define Device/fix-sysupgrade
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := DTB was added to sysupgrade. Image format is different. \

View File

@ -451,3 +451,35 @@ define Device/traverse_ls1043
SUPPORTED_DEVICES := traverse,ls1043s traverse,ls1043v
endef
TARGET_DEVICES += traverse_ls1043
define Device/traverse_ten64_mtd
DEVICE_VENDOR := Traverse
DEVICE_MODEL := Ten64 (NAND boot)
DEVICE_NAME := ten64-mtd
DEVICE_PACKAGES += \
uboot-envtools \
kmod-rtc-rx8025 \
kmod-sfp \
kmod-i2c-mux-pca954x \
restool
DEVICE_DESCRIPTION = \
Generate images for booting from NAND/ubifs on Traverse Ten64 (LS1088A) \
family boards. For disk (NVMe/USB/SD) boot, use the armvirt target instead.
FILESYSTEMS := squashfs
KERNEL_LOADADDR := 0x80000000
KERNEL_ENTRY_POINT := 0x80000000
FDT_LOADADDR := 0x90000000
KERNEL_SUFFIX := -kernel.itb
DEVICE_DTS := freescale/fsl-ls1088a-ten64
IMAGES := nand.ubi sysupgrade.bin
KERNEL := kernel-bin | gzip | traverse-fit-ls1088 gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb $$(FDT_LOADADDR)
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/nand.ubi := append-ubi
KERNEL_IN_UBI := 1
BLOCKSIZE := 128KiB
PAGESIZE := 2048
MKUBIFS_OPTS := -m $$(PAGESIZE) -e 124KiB -c 600
SUPPORTED_DEVICES = traverse,ten64
endef
TARGET_DEVICES += traverse_ten64_mtd

View File

@ -0,0 +1,34 @@
From c314138bd045e050432158ab021160de3ba51c5e Mon Sep 17 00:00:00 2001
From: Russell King <rmk+kernel@armlinux.org.uk>
Date: Thu, 30 Jan 2020 22:42:38 +0000
Subject: [PATCH 2/4] net: dpaa2-mac: add support for more 10G modes
Phylink documentation says:
* Note that the PHY may be able to transform from one connection
* technology to another, so, eg, don't clear 1000BaseX just
* because the MAC is unable to BaseX mode. This is more about
* clearing unsupported speeds and duplex settings. The port modes
* should not be cleared; phylink_set_port_modes() will help with this.
So add the missing 10G modes.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
@@ -140,6 +140,12 @@ static void dpaa2_mac_validate(struct ph
case PHY_INTERFACE_MODE_10GBASER:
case PHY_INTERFACE_MODE_USXGMII:
phylink_set(mask, 10000baseT_Full);
+ phylink_set(mask, 10000baseKR_Full);
+ phylink_set(mask, 10000baseCR_Full);
+ phylink_set(mask, 10000baseSR_Full);
+ phylink_set(mask, 10000baseLR_Full);
+ phylink_set(mask, 10000baseLRM_Full);
+ phylink_set(mask, 10000baseER_Full);
if (state->interface == PHY_INTERFACE_MODE_10GBASER)
break;
phylink_set(mask, 5000baseT_Full);

View File

@ -0,0 +1,74 @@
From d5af37ae22f0364be9ded773d737dd6e5b207b10 Mon Sep 17 00:00:00 2001
From: Ioana Ciornei <ioana.ciornei@nxp.com>
Date: Thu, 21 Nov 2019 21:15:25 +0200
Subject: [PATCH 3/4] dpaa2-eth: do not hold rtnl_lock on phylink_create() or
_destroy()
The rtnl_lock should not be held when calling phylink_create() or
phylink_destroy() since it leads to the deadlock listed below:
[ 18.656576] rtnl_lock+0x18/0x20
[ 18.659798] sfp_bus_add_upstream+0x28/0x90
[ 18.663974] phylink_create+0x2cc/0x828
[ 18.667803] dpaa2_mac_connect+0x14c/0x2a8
[ 18.671890] dpaa2_eth_connect_mac+0x94/0xd8
Fix this by moving the _lock() and _unlock() calls just outside of
phylink_of_phy_connect() and phylink_disconnect_phy().
Fixes: 719479230893 ("dpaa2-eth: add MAC/PHY support through phylink")
Reported-by: Russell King <linux@armlinux.org.uk>
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 4 ----
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c | 4 ++++
2 files changed, 4 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -4217,12 +4217,10 @@ static irqreturn_t dpni_irq0_handler_thr
dpaa2_eth_set_mac_addr(netdev_priv(net_dev));
dpaa2_eth_update_tx_fqids(priv);
- rtnl_lock();
if (dpaa2_eth_has_mac(priv))
dpaa2_eth_disconnect_mac(priv);
else
dpaa2_eth_connect_mac(priv);
- rtnl_unlock();
}
return IRQ_HANDLED;
@@ -4516,9 +4514,7 @@ static int dpaa2_eth_remove(struct fsl_m
#endif
unregister_netdev(net_dev);
- rtnl_lock();
dpaa2_eth_disconnect_mac(priv);
- rtnl_unlock();
dpaa2_eth_dl_port_del(priv);
dpaa2_eth_dl_traps_unregister(priv);
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
@@ -357,7 +357,9 @@ int dpaa2_mac_connect(struct dpaa2_mac *
if (mac->pcs)
phylink_set_pcs(mac->phylink, &mac->pcs->pcs);
+ rtnl_lock();
err = phylink_fwnode_phy_connect(mac->phylink, dpmac_node, 0);
+ rtnl_unlock();
if (err) {
netdev_err(net_dev, "phylink_fwnode_phy_connect() = %d\n", err);
goto err_phylink_destroy;
@@ -378,7 +380,9 @@ void dpaa2_mac_disconnect(struct dpaa2_m
if (!mac->phylink)
return;
+ rtnl_lock();
phylink_disconnect_phy(mac->phylink);
+ rtnl_unlock();
phylink_destroy(mac->phylink);
dpaa2_pcs_destroy(mac);
}

View File

@ -1,5 +1,4 @@
CONFIG_ARCH_32BIT_OFF_T=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y

View File

@ -0,0 +1,276 @@
// SPDX-License-Identifier: (GL-2.0 OR MIT)
/dts-v1/;
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include "mt7986b.dtsi"
/ {
compatible = "mercusys,mr90x-v1", "mediatek,mt7986b";
model = "Mercusys MR90X v1";
aliases {
serial0 = &uart0;
led-boot = &led_status_green;
led-failsafe = &led_status_green;
led-running = &led_status_green;
led-upgrade = &led_status_green;
};
chosen {
stdout-path = "serial0:115200n8";
};
memory {
reg = <0 0x40000000 0 0x20000000>;
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&pio 10 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};
leds {
compatible = "gpio-leds";
led-0 {
label = "green:lan2";
gpios = <&pio 7 GPIO_ACTIVE_LOW>;
};
led-1 {
label = "green:lan1";
gpios = <&pio 9 GPIO_ACTIVE_LOW>;
};
led-2 {
label = "green:lan0";
gpios = <&pio 12 GPIO_ACTIVE_LOW>;
};
led-3 {
label = "green:wan";
gpios = <&pio 13 GPIO_ACTIVE_LOW>;
};
led-4 {
label = "orange:status";
gpios = <&pio 16 GPIO_ACTIVE_HIGH>;
};
led_status_green: led-5 {
label = "green:status";
gpios = <&pio 17 GPIO_ACTIVE_HIGH>;
panic-indicator;
};
};
};
&crypto {
status = "okay";
};
&eth {
status = "okay";
gmac0: mac@0 {
compatible = "mediatek,eth-mac";
reg = <0>;
phy-mode = "2500base-x";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
gmac1: mac@1 {
compatible = "mediatek,eth-mac";
reg = <1>;
phy-handle = <&phy6>;
phy-mode = "2500base-x";
};
mdio: mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
};
};
&mdio {
#address-cells = <1>;
#size-cells = <0>;
reset-gpios = <&pio 6 GPIO_ACTIVE_LOW>;
reset-delay-us = <1500000>;
reset-post-delay-us = <1000000>;
/* WAN/LAN 2.5Gbps phy
MaxLinear GPY211C0VC (SLNW8) */
phy6: phy@6 {
compatible = "ethernet-phy-ieee802.3-c45";
reg = <6>;
};
switch: switch@0 {
compatible = "mediatek,mt7531";
reg = <31>;
reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
};
};
&switch {
ports {
#address-cells = <1>;
#size-cells = <0>;
/* WAN/LAN 1Gbps port */
port@0 {
reg = <0>;
label = "lan0";
};
/* LAN1 port */
port@1 {
reg = <1>;
label = "lan1";
};
/* LAN2 port */
port@2 {
reg = <2>;
label = "lan2";
};
port@6 {
reg = <6>;
ethernet = <&gmac0>;
phy-mode = "2500base-x";
fixed-link {
speed = <2500>;
full-duplex;
pause;
};
};
};
};
&pio {
spi_flash_pins: spi-flash-pins-33-to-38 {
mux {
function = "spi";
groups = "spi0", "spi0_wp_hold";
};
conf-pu {
pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP";
drive-strength = <8>;
mediatek,pull-up-adv = <0>; /* bias-disable */
};
conf-pd {
pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO";
drive-strength = <8>;
mediatek,pull-down-adv = <0>; /* bias-disable */
};
};
wf_2g_5g_pins: wf_2g_5g-pins {
mux {
function = "wifi";
groups = "wf_2g", "wf_5g";
};
conf {
pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
"WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
"WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
"WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
"WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
"WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
"WF1_TOP_CLK", "WF1_TOP_DATA";
drive-strength = <4>;
};
};
};
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi_flash_pins>;
status = "okay";
spi_nand_flash: flash@0 {
compatible = "spi-nand";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <20000000>;
spi-tx-buswidth = <4>;
spi-rx-buswidth = <4>;
partitions: partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "boot";
reg = <0x0 0x200000>;
read-only;
};
partition@200000 {
label = "u-boot-env";
reg = <0x200000 0x100000>;
};
partition@300000 {
label = "ubi0";
reg = <0x300000 0x3200000>;
};
partition@3500000 {
label = "ubi1";
reg = <0x3500000 0x3200000>;
read-only;
};
partition@6700000 {
label = "userconfig";
reg = <0x6700000 0x800000>;
read-only;
};
partition@6f00000 {
label = "tp_data";
reg = <0x6f00000 0x400000>;
read-only;
};
};
};
};
&trng {
status = "okay";
};
&uart0 {
status = "okay";
};
&watchdog {
status = "okay";
};
&wifi {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&wf_2g_5g_pins>;
};

View File

@ -15,6 +15,12 @@ livinet,zr-3020-ubootmod)
ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2g" "phy0-ap0"
ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan5g" "phy1-ap0"
;;
mercusys,mr90x-v1)
ucidef_set_led_netdev "lan0" "lan0" "green:lan0" "lan0" "link tx rx"
ucidef_set_led_netdev "lan1" "lan2" "green:lan1" "lan1" "link tx rx"
ucidef_set_led_netdev "lan2" "lan2" "green:lan2" "lan2" "link tx rx"
ucidef_set_led_netdev "wan" "wan" "green:wan" "eth1" "link tx rx"
;;
netgear,wax220)
ucidef_set_led_netdev "eth0" "LAN" "green:lan" "eth0"
ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2g" "phy0-ap0"

View File

@ -36,6 +36,9 @@ mediatek_setup_interfaces()
mediatek,mt7988a-dsa-10g-spim-snand)
ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3" "eth1 eth2"
;;
mercusys,mr90x-v1)
ucidef_set_interfaces_lan_wan "lan0 lan1 lan2" eth1
;;
tplink,tl-xdr4288|\
tplink,tl-xdr6088)
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5" eth1
@ -71,6 +74,10 @@ mediatek_setup_macs()
bananapi,bpi-r3)
wan_mac=$(macaddr_add $(cat /sys/class/net/eth0/address) 1)
;;
mercusys,mr90x-v1)
label_mac=$(get_mac_binary "/tmp/tp_data/default-mac" 0)
lan_mac=$label_mac
;;
netgear,wax220)
lan_mac=$(mtd_get_mac_ascii u-boot-env mac)
label_mac=$lan_mac

View File

@ -37,6 +37,11 @@ case "$board" in
addr=$(mtd_get_mac_ascii config2 wifi5gmac)
[ "$PHYNBR" = "1" ] && echo $macaddr > /sys${DEVPATH}/macaddress
;;
mercusys,mr90x-v1)
addr=$(get_mac_binary "/tmp/tp_data/default-mac" 0)
[ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && macaddr_add $addr -1 > /sys${DEVPATH}/macaddress
;;
netgear,wax220)
hw_mac_addr=$(mtd_get_mac_ascii u-boot-env mac)
[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress

View File

@ -0,0 +1,23 @@
. /lib/functions/system.sh
mount_ubi_part() {
local part_name="$1"
local mtd_num=$(grep $part_name /proc/mtd | cut -c4)
local ubi_num=$(ubiattach -m $mtd_num | \
awk -F',' '/UBI device number [0-9]{1,}/{print $1}' | \
awk '{print $4}')
mkdir /tmp/$part_name
mount -r -t ubifs ubi$ubi_num:$part_name /tmp/$part_name
}
preinit_mount_cfg_part() {
case $(board_name) in
mercusys,mr90x-v1)
mount_ubi_part "tp_data"
;;
*)
;;
esac
}
boot_hook_add preinit_main preinit_mount_cfg_part

View File

@ -8,6 +8,12 @@ preinit_set_mac_address() {
ip link set dev eth0 address "$addr"
ip link set dev eth1 address "$addr"
;;
mercusys,mr90x-v1)
addr=$(get_mac_binary "/tmp/tp_data/default-mac" 0)
ip link set dev eth1 address "$(macaddr_add $addr 1)"
;;
*)
;;
esac
}

View File

@ -0,0 +1,16 @@
. /lib/functions/system.sh
preinit_fix_eeprom() {
case $(board_name) in
mercusys,mr90x-v1)
eeprom="/lib/firmware/mediatek/mt7986_eeprom_mt7975_dual.bin"
oem="/tmp/tp_data/MT7986_EEPROM.bin"
[ ! -L $eeprom -a -e $oem ] && \
mv -f $eeprom $eeprom.bak && ln -s $oem $eeprom
;;
*)
;;
esac
}
boot_hook_add preinit_main preinit_fix_eeprom

View File

@ -70,6 +70,10 @@ platform_do_upgrade() {
cudy,wr3000-v1)
default_do_upgrade "$1"
;;
mercusys,mr90x-v1)
CI_UBIPART="ubi0"
nand_do_upgrade "$1"
;;
qihoo,360t7|\
tplink,tl-xdr4288|\
tplink,tl-xdr6086|\

View File

@ -284,6 +284,20 @@ define Device/mediatek_mt7988a-rfb-nand
endef
TARGET_DEVICES += mediatek_mt7988a-rfb-nand
define Device/mercusys_mr90x-v1
DEVICE_VENDOR := Mercusys
DEVICE_MODEL := MR90X v1
DEVICE_DTS := mt7986b-mercusys-mr90x-v1
DEVICE_DTS_DIR := ../dts
DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware
UBINIZE_OPTS := -E 5
BLOCKSIZE := 128k
PAGESIZE := 2048
IMAGE_SIZE := 51200k
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += mercusys_mr90x-v1
define Device/qihoo_360t7
DEVICE_VENDOR := Qihoo
DEVICE_MODEL := 360T7 (OpenWrt U-Boot layout)

View File

@ -4,7 +4,6 @@ CONFIG_64BIT=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y

View File

@ -0,0 +1,165 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7620a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
compatible = "dlink,dir-806a-b1", "ralink,mt7620a-soc";
model = "D-Link DIR-806A B1";
aliases {
led-boot = &wps_led;
led-failsafe = &wps_led;
led-running = &wps_led;
led-upgrade = &wps_led;
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; // #12
linux,code = <KEY_RESTART>;
};
};
leds {
compatible = "gpio-leds";
wifi_led: 2.4g {
label = "green:wlan";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; // #72
};
wps_led: wps {
label = "green:wps";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WPS;
gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; // #39
};
};
};
&gpio0 {
status = "okay";
};
&gpio1 {
status = "okay";
};
&gpio3 {
status = "okay";
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <48000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "ALL";
reg = <0x0 0x800000>;
read-only;
};
partition@0_1 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
};
factory: partition@40000 {
label = "Factory";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0x7b0000>;
};
};
};
};
&state_default {
gpio {
groups = "i2c", "uartf", "ephy";
function = "gpio";
};
};
&ethernet {
nvmem-cells = <&macaddr_factory_4>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-2)>;
};
&wmac {
pinctrl-names = "default", "pa_gpio";
pinctrl-0 = <&pa_pins>;
pinctrl-1 = <&pa_gpio_pins>;
ralink,mtd-eeprom = <&factory 0x0>;
nvmem-cells = <&macaddr_factory_4>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-1)>;
};
&pcie {
status = "okay";
};
&pcie0 {
wifi@0,0 {
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
nvmem-cells = <&macaddr_factory_8004>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-3)>;
led {
led-active-low;
};
};
};
&factory {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_4: macaddr@4 {
reg = <0x4 0x6>;
};
macaddr_factory_8004: macaddr@8004 {
reg = <0x8004 0x6>;
};
};

View File

@ -0,0 +1,217 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2023 Stefan Weil <sw@weilnetz.de>
*/
#include "mt7620a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/mtd/partitions/uimage.h>
/ {
compatible = "edimax,br-6208ac-v2", "ralink,mt7620a-soc";
model = "Edimax BR-6208AC v2";
aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_firmware;
};
keys {
compatible = "gpio-keys";
// Vendor firmware: /proc/RESET_BUTTON
reset_wps {
label = "reset_wps";
gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};
// Vendor firmware: /proc/driver/led
leds {
compatible = "gpio-leds";
led_power: power {
label = "green:power";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_POWER;
gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
};
// RALINK_REG_PIO3924DATA 39-24
led_internet: internet {
label = "green:internet";
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
};
// RALINK_REG_PIO7140DATA 44-40
led_wlan_2_4ghz: wlan_2_4ghz {
label = "green:wlan2g";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
gpios = <&gpio2 4 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy1tpt";
};
// RALINK_REG_PIO7140DATA 43-40
led_wlan_5ghz: wlan_5ghz {
label = "green:wlan5g";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_WLAN;
gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};
// RALINK_REG_PIO7140DATA 42-40
led_firmware: firmware {
label = "green:firmware";
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
// default-state = "keep";
};
// RALINK_REG_PIO7140DATA 41-40
led_vpn: vpn {
label = "green:vpn";
color = <LED_COLOR_ID_GREEN>;
gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
};
};
};
&gdma {
status = "okay";
};
// Vendor firmware: RALINK_REG_PIO7140 - gpio0: gpio@600
// Vendor firmware: RALINK_REG_PIO3924 - gpio1: gpio@638
// Vendor firmware: RALINK_REG_PIO7140 - gpio2: gpio@660
// Vendor firmware: RALINK_REG_PIO72 - gpio3: gpio@688
&gpio1 {
status = "okay";
};
&gpio2 {
status = "okay";
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <10000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
// Vendor partitions:
// 0x000000000000-0x000000030000 : "Bootloader"
// 0x000000030000-0x000000040000 : "Config"
// 0x000000040000-0x000000050000 : "Factory"
// 0x000000050000-0x000000070000 : "Cimage"
// 0x000000070000-0x000000fe0000 : "Uimage"
// 0x000000070000-0x000000190000 : "Kernel"
// 0x000000190000-0x000000fe0000 : "RootFS"
// 0x000000fe0000-0x000001000000 : "FreeSpace"
// Bootloader
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
// Config
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};
// Factory
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
// Cimage
partition@50000 {
label = "cimage";
reg = <0x50000 0x20000>;
read-only;
};
partition@70000 {
compatible = "openwrt,uimage", "denx,uimage";
openwrt,offset = <FW_EDIMAX_OFFSET>;
openwrt,partition-magic = <FW_MAGIC_EDIMAX>;
label = "firmware";
reg = <0x00070000 0x00f70000>;
};
// FreeSpace
partition@fe0000 {
label = "freespace";
reg = <0xfe0000 0x20000>;
read-only;
};
};
};
};
&state_default {
gpio {
// TODO: "spi refclk"?
groups = "i2c", "uartf", "rgmii1", "rgmii2", "ephy", "wled", "nd_sd";
function = "gpio";
};
};
&ethernet {
nvmem-cells = <&macaddr_factory_2e>;
nvmem-cell-names = "mac-address";
mediatek,portmap = "llllw";
};
&wmac {
ralink,mtd-eeprom = <&factory 0x0>;
};
&pcie {
status = "okay";
};
&pcie0 {
wifi@0,0 {
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
};
};
&factory {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_4: macaddr@4 {
reg = <0x4 0x6>;
};
macaddr_factory_2e: macaddr@2e {
reg = <0x2e 0x6>;
};
};

View File

@ -48,12 +48,12 @@
lan1 {
label = "green:lan1";
gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
};
lan2 {
label = "green:lan2";
gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
};
wan {

View File

@ -232,6 +232,19 @@ define Device/dlink_dir-510l
endef
TARGET_DEVICES += dlink_dir-510l
define Device/dlink_dir-806a-b1
SOC := mt7620a
IMAGE_SIZE := 7872k
DEVICE_VENDOR := D-Link
DEVICE_MODEL := DIR-806A
DEVICE_VARIANT := B1
DEVICE_PACKAGES += kmod-mt76x0e
IMAGES += factory.bin
IMAGE/factory.bin := append-kernel | append-rootfs | pad-rootfs | check-size | \
sign-dlink-ru cef285a2e29e40b2baab31277d44298b
endef
TARGET_DEVICES += dlink_dir-806a-b1
define Device/dlink_dir-810l
SOC := mt7620a
DEVICE_PACKAGES := kmod-mt76x0e
@ -389,6 +402,22 @@ define Device/dovado_tiny-ac
endef
TARGET_DEVICES += dovado_tiny-ac
define Device/edimax_br-6208ac-v2
SOC := mt7620a
DEVICE_VENDOR := Edimax
DEVICE_MODEL := BR-6208AC
DEVICE_VARIANT := V2
BLOCKSIZE := 64k
IMAGE_SIZE := 7744k
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | \
edimax-header -s CSYS -m RN71 -f 0x70000 -S 0x01100000 | pad-rootfs | \
check-size | append-metadata
DEVICE_PACKAGES := kmod-mt76x2 kmod-mt76x0e kmod-phy-realtek \
kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport \
uboot-envtools
endef
TARGET_DEVICES += edimax_br-6208ac-v2
define Device/edimax_br-6478ac-v2
SOC := mt7620a
DEVICE_VENDOR := Edimax

View File

@ -48,6 +48,9 @@ comfast,cf-wr800n)
ucidef_set_led_netdev "lan" "lan" "white:ethernet" eth0.1
ucidef_set_led_netdev "wifi_led" "wifi" "white:wifi" "wlan0"
;;
dlink,dir-806a-b1)
ucidef_set_led_netdev "wifi_led" "2.4g" "green:wlan" "phy1-ap0"
;;
dlink,dir-810l|\
trendnet,tew-810dr)
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10"
@ -102,6 +105,13 @@ domywifi,dw22d)
dovado,tiny-ac)
ucidef_set_led_netdev "wifi_led" "wifi" "orange:wifi" "wlan0"
;;
edimax,br-6208ac-v2)
ucidef_set_led_netdev "wan" "Internet" "green:internet" "eth0.2" "tx rx"
ucidef_set_led_netdev "wifi_led" "WLAN 2.4 GHz" "green:wlan2g" "wlan1"
ucidef_set_led_netdev "wifi_led" "WLAN 5 GHz" "green:wlan5g" "wlan1"
ucidef_set_led_netdev "wifi_led" "Firmware" "green:firmware" "wlan1"
ucidef_set_led_netdev "lan" "VPN" "green:vpn" "switch0" "0x20"
;;
edimax,br-6478ac-v2|\
edimax,ew-7478apc)
ucidef_set_led_netdev "wifi_led" "wifi" "blue:wlan" "wlan0"
@ -223,8 +233,8 @@ tplink,re200-v1)
ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0"
;;
wavlink,wl-wn535k1)
ucidef_set_led_switch "lan1" "lan2" "green:lan1" "switch0" "0x04"
ucidef_set_led_switch "lan2" "lan2" "green:lan2" "switch0" "0x20"
ucidef_set_led_switch "lan1" "lan1" "green:lan1" "switch0" "0x20"
ucidef_set_led_switch "lan2" "lan2" "green:lan2" "switch0" "0x04"
ucidef_set_led_switch "wan" "wan" "green:wan" "switch0" "0x10"
;;
wavlink,wl-wn579x3)

View File

@ -80,6 +80,7 @@ ramips_setup_interfaces()
asus,rt-ac54u|\
asus,rt-n14u|\
bdcom,wap2100-sk|\
dlink,dir-806a-b1|\
domywifi,dm202|\
domywifi,dm203|\
domywifi,dw22d|\
@ -143,6 +144,10 @@ ramips_setup_interfaces()
"5:lan" "6@eth0"
ucidef_add_switch_attr "switch1" "enable" "false"
;;
edimax,br-6208ac-v2)
ucidef_add_switch "switch0" \
"1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "6@eth0"
;;
edimax,br-6478ac-v2|\
lb-link,bl-w1200|\
tplink,archer-c2-v1)
@ -236,7 +241,7 @@ ramips_setup_interfaces()
;;
wavlink,wl-wn535k1)
ucidef_add_switch "switch0" \
"2:lan" "5:lan" "4:wan" "6@eth0"
"2:lan:2" "5:lan:1" "4:wan" "6@eth0"
;;
wavlink,wl-wn579x3)
ucidef_add_switch "switch0" \
@ -274,6 +279,7 @@ ramips_setup_macs()
asus,rt-n12p|\
asus,rt-n14u|\
bdcom,wap2100-sk|\
edimax,br-6208ac-v2|\
edimax,ew-7478apc|\
fon,fon2601|\
head-weblink,hdrm200|\

View File

@ -2,7 +2,6 @@ CONFIG_64BIT=y
CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FORCE_MAX_ORDER=11
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_KEEP_MEMBLOCK=y
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y