fix DW33D kernel part too big in 4.9

This commit is contained in:
coolsnowwolf 2017-10-20 01:41:04 +08:00
parent ed5da5e6de
commit 521ca2dfd7
21 changed files with 649 additions and 10 deletions

View File

@ -58,7 +58,8 @@ sc1750|\
sc450) sc450)
ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt" ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
;; ;;
archer-c25-v1) archer-c25-v1|\
archer-c7-v4)
ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0" ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan2g" "phy1tpt" ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan2g" "phy1tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt" ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt"
@ -66,6 +67,12 @@ archer-c25-v1)
ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08" ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04" ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04"
ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02" ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
case "$board" in
archer-c7-v4)
ucidef_set_led_usbdev "usb1" "USB1" "$board:green:usb1" "1-1"
ucidef_set_led_usbdev "usb2" "USB2" "$board:green:usb2" "2-1"
;;
esac
;; ;;
archer-c58-v1|\ archer-c58-v1|\
archer-c59-v1|\ archer-c59-v1|\
@ -267,6 +274,7 @@ rb-750)
ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02" ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02"
;; ;;
rb-750-r2|\ rb-750-r2|\
rb-750p-pbr2|\
rb-750up-r2) rb-750up-r2)
ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000" ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000"
ucidef_set_led_netdev "port1" "port1" "rb:green:port1" "eth0" ucidef_set_led_netdev "port1" "port1" "rb:green:port1" "eth0"
@ -823,6 +831,12 @@ r6100)
ucidef_set_led_usbdev "usb" "USB" "netgear:blue:usb" "1-1" ucidef_set_led_usbdev "usb" "USB" "netgear:blue:usb" "1-1"
ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy1tpt" ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy1tpt"
;; ;;
wi2a-ac200i)
ucidef_set_led_default "power" "Power (green)" "nokia:green:power" "1"
ucidef_set_led_default "wan" "Ethernet LED (green)" "nokia:green:wan" "1"
ucidef_set_led_wlan "wlan5g" "WLAN" "nokia:green:wlan-5g" "phy0tpt"
ucidef_set_led_wlan "wlan2g" "WLAN" "nokia:green:wlan-2g" "phy1tpt"
;;
wndr3700v4|\ wndr3700v4|\
wndr4300) wndr4300)
ucidef_set_led_switch "wan-green" "WAN (green)" "netgear:green:wan" "switch0" "0x20" "0x08" ucidef_set_led_switch "wan-green" "WAN (green)" "netgear:green:wan" "switch0" "0x20" "0x08"

View File

@ -128,6 +128,7 @@ ar71xx_setup_interfaces()
tl-wr902ac-v1|\ tl-wr902ac-v1|\
tube2h|\ tube2h|\
unifiac-lite|\ unifiac-lite|\
wi2a-ac200i|\
wndap360|\ wndap360|\
wp543) wp543)
ucidef_set_interface_lan "eth0" ucidef_set_interface_lan "eth0"
@ -160,6 +161,7 @@ ar71xx_setup_interfaces()
ucidef_set_interfaces_lan_wan "eth1" "eth0" ucidef_set_interfaces_lan_wan "eth1" "eth0"
;; ;;
rb-750-r2|\ rb-750-r2|\
rb-750p-pbr2|\
rb-750up-r2) rb-750up-r2)
ucidef_set_interfaces_lan_wan "eth1.1" "eth0" ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
@ -426,6 +428,7 @@ ar71xx_setup_interfaces()
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
"0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3" "0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
;; ;;
archer-c7-v4|\
tl-wdr4300|\ tl-wdr4300|\
tl-wr1041n-v2) tl-wr1041n-v2)
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \

View File

@ -32,6 +32,9 @@ rb-952ui-5ac2nd)
ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "45" "1" ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "45" "1"
ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14" ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14"
;; ;;
rb-750p-pbr2)
ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14"
;;
esac esac
board_config_flush board_config_flush

View File

@ -58,6 +58,7 @@ get_status_led() {
archer-c58-v1|\ archer-c58-v1|\
archer-c59-v1|\ archer-c59-v1|\
archer-c60-v1|\ archer-c60-v1|\
archer-c7-v4|\
fritz300e|\ fritz300e|\
gl-usb150|\ gl-usb150|\
mr12|\ mr12|\
@ -316,6 +317,7 @@ get_status_led() {
status_led="rb750:green:act" status_led="rb750:green:act"
;; ;;
rb-750-r2|\ rb-750-r2|\
rb-750p-pbr2|\
rb-750up-r2|\ rb-750up-r2|\
rb-911g-2hpnd|\ rb-911g-2hpnd|\
rb-911g-5hpacd|\ rb-911g-5hpacd|\
@ -458,6 +460,9 @@ get_status_led() {
airgatewaypro) airgatewaypro)
status_led="ubnt:white:status" status_led="ubnt:white:status"
;; ;;
wi2a-ac200i)
status_led="nokia:green:ctrl"
;;
whr-g301n|\ whr-g301n|\
whr-hp-g300n|\ whr-hp-g300n|\
whr-hp-gn|\ whr-hp-gn|\
@ -528,6 +533,9 @@ set_state() {
local n=$(fw_printenv activeregion | cut -d = -f 2) local n=$(fw_printenv activeregion | cut -d = -f 2)
fw_setenv "image${n}trynum" 0 fw_setenv "image${n}trynum" 0
;; ;;
wi2a-ac200i)
fw_setenv PKRstCnt 0
;;
esac esac
;; ;;
esac esac

View File

@ -54,6 +54,7 @@ case "$FIRMWARE" in
ath10kcal_extract "ART" 20480 2116 ath10kcal_extract "ART" 20480 2116
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
;; ;;
archer-c7-v4|\
archer-c25-v1|\ archer-c25-v1|\
archer-c59-v1|\ archer-c59-v1|\
archer-c60-v1|\ archer-c60-v1|\
@ -111,6 +112,9 @@ case "$FIRMWARE" in
unifiac-pro) unifiac-pro)
ath10kcal_extract "EEPROM" 20480 2116 ath10kcal_extract "EEPROM" 20480 2116
;; ;;
wi2a-ac200i)
ath10kcal_extract "ART" 20480 2116
;;
esac esac
;; ;;
"ath10k/cal-pci-0000:01:00.0.bin") "ath10k/cal-pci-0000:01:00.0.bin")

View File

@ -452,6 +452,9 @@ ar71xx_board_detect() {
*"Archer C5") *"Archer C5")
name="archer-c5" name="archer-c5"
;; ;;
*"Archer C7 v4")
name="archer-c7-v4"
;;
*"Archer C58 v1") *"Archer C58 v1")
name="archer-c58-v1" name="archer-c58-v1"
;; ;;
@ -911,6 +914,9 @@ ar71xx_board_detect() {
*"RouterBOARD 750GL") *"RouterBOARD 750GL")
name="rb-750gl" name="rb-750gl"
;; ;;
*"RouterBOARD 750P r2")
name="rb-750p-pbr2"
;;
*"RouterBOARD 750UP r2") *"RouterBOARD 750UP r2")
name="rb-750up-r2" name="rb-750up-r2"
;; ;;
@ -1228,6 +1234,9 @@ ar71xx_board_detect() {
"WeIO"*) "WeIO"*)
name="weio" name="weio"
;; ;;
*"WI2A-AC200i")
name="wi2a-ac200i"
;;
*"WHR-G301N") *"WHR-G301N")
name="whr-g301n" name="whr-g301n"
;; ;;

View File

@ -211,6 +211,7 @@ platform_check_image() {
archer-c58-v1|\ archer-c58-v1|\
archer-c59-v1|\ archer-c59-v1|\
archer-c60-v1|\ archer-c60-v1|\
archer-c7-v4|\
bullet-m|\ bullet-m|\
c-55|\ c-55|\
carambola2|\ carambola2|\
@ -534,6 +535,7 @@ platform_check_image() {
nbg6716|\ nbg6716|\
r6100|\ r6100|\
rambutan|\ rambutan|\
wi2a-ac200i|\
wndr3700v4|\ wndr3700v4|\
wndr4300) wndr4300)
nand_do_platform_check $board $1 nand_do_platform_check $board $1
@ -655,6 +657,7 @@ platform_check_image() {
# these boards use metadata images # these boards use metadata images
fritz300e|\ fritz300e|\
rb-750-r2|\ rb-750-r2|\
rb-750p-pbr2|\
rb-750up-r2|\ rb-750up-r2|\
rb-941-2nd|\ rb-941-2nd|\
rb-951ui-2nd|\ rb-951ui-2nd|\
@ -707,11 +710,13 @@ platform_pre_upgrade() {
rb-2011uias-2hnd|\ rb-2011uias-2hnd|\
rb-sxt2n|\ rb-sxt2n|\
rb-sxt5n|\ rb-sxt5n|\
wi2a-ac200i|\
wndr3700v4|\ wndr3700v4|\
wndr4300) wndr4300)
nand_do_upgrade "$1" nand_do_upgrade "$1"
;; ;;
rb-750-r2|\ rb-750-r2|\
rb-750p-pbr2|\
rb-750up-r2|\ rb-750up-r2|\
rb-941-2nd|\ rb-941-2nd|\
rb-951ui-2nd|\ rb-951ui-2nd|\
@ -741,6 +746,23 @@ platform_nand_pre_upgrade() {
mtd erase kernel mtd erase kernel
tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" - tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" -
;; ;;
wi2a-ac200i)
case "$(fw_printenv -n dualPartition)" in
imgA)
fw_setenv dualPartition imgB
fw_setenv ActImg NokiaImageB
;;
imgB)
fw_setenv dualPartition imgA
fw_setenv ActImg NokiaImageA
;;
esac
ubiblock -r /dev/ubiblock0_0 2>/dev/null >/dev/null
rm -f /dev/ubiblock0_0
ubidetach -d 0 2>/dev/null >/dev/null
CI_UBIPART=ubi_alt
CI_KERNPART=kernel_alt
;;
esac esac
} }

View File

@ -223,6 +223,7 @@ CONFIG_ATH79_MACH_UBNT=y
CONFIG_ATH79_MACH_UBNT_UNIFIAC=y CONFIG_ATH79_MACH_UBNT_UNIFIAC=y
CONFIG_ATH79_MACH_UBNT_XM=y CONFIG_ATH79_MACH_UBNT_XM=y
CONFIG_ATH79_MACH_WEIO=y CONFIG_ATH79_MACH_WEIO=y
# CONFIG_ATH79_MACH_WI2A_AC200I is not set
CONFIG_ATH79_MACH_WHR_HP_G300N=y CONFIG_ATH79_MACH_WHR_HP_G300N=y
CONFIG_ATH79_MACH_WLAE_AG300N=y CONFIG_ATH79_MACH_WLAE_AG300N=y
CONFIG_ATH79_MACH_WLR8100=y CONFIG_ATH79_MACH_WLR8100=y

View File

@ -221,6 +221,7 @@ CONFIG_ATH79_MACH_UBNT=y
CONFIG_ATH79_MACH_UBNT_UNIFIAC=y CONFIG_ATH79_MACH_UBNT_UNIFIAC=y
CONFIG_ATH79_MACH_UBNT_XM=y CONFIG_ATH79_MACH_UBNT_XM=y
CONFIG_ATH79_MACH_WEIO=y CONFIG_ATH79_MACH_WEIO=y
# CONFIG_ATH79_MACH_WI2A_AC200I is not set
CONFIG_ATH79_MACH_WHR_HP_G300N=y CONFIG_ATH79_MACH_WHR_HP_G300N=y
CONFIG_ATH79_MACH_WLAE_AG300N=y CONFIG_ATH79_MACH_WLAE_AG300N=y
CONFIG_ATH79_MACH_WLR8100=y CONFIG_ATH79_MACH_WLR8100=y
@ -378,7 +379,6 @@ CONFIG_MIPS_CLOCK_VSYSCALL=y
CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
# CONFIG_MIPS_CMDLINE_FROM_DTB is not set # CONFIG_MIPS_CMDLINE_FROM_DTB is not set
# CONFIG_MIPS_ELF_APPENDED_DTB is not set # CONFIG_MIPS_ELF_APPENDED_DTB is not set
CONFIG_MIPS_FPU_EMULATOR=y
# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set # CONFIG_MIPS_HUGE_TLB_SUPPORT is not set
CONFIG_MIPS_L1_CACHE_SHIFT=5 CONFIG_MIPS_L1_CACHE_SHIFT=5
CONFIG_MIPS_MACHINE=y CONFIG_MIPS_MACHINE=y

View File

@ -8,6 +8,17 @@ config ATH79_MACH_A60
select ATH79_DEV_WMAC select ATH79_DEV_WMAC
select ATH79_DEV_USB select ATH79_DEV_USB
config ATH79_MACH_WI2A_AC200I
bool "Nokia WI2A-AC200i support"
select SOC_QCA955X
select ATH79_DEV_ETH
select ATH79_DEV_GPIO_BUTTONS
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
select ATH79_DEV_NFC
select ATH79_DEV_WMAC
select ATH79_DEV_USB
config ATH79_MACH_ALFA_AP120C config ATH79_MACH_ALFA_AP120C
bool "ALFA Network AP120C board support" bool "ALFA Network AP120C board support"
select ATH79_DEV_AP9X_PCI if PCI select ATH79_DEV_AP9X_PCI if PCI
@ -1008,6 +1019,7 @@ config ATH79_MACH_RBSPI
MikroTik RouterBOARD hAP ac lite MikroTik RouterBOARD hAP ac lite
MikroTik RouterBOARD hEX PoE lite MikroTik RouterBOARD hEX PoE lite
MikroTik RouterBOARD hEX lite MikroTik RouterBOARD hEX lite
MikroTik RouterBOARD Powerbox
MikroTik RouterBOARD LHG 5 MikroTik RouterBOARD LHG 5
MikroTik RouterBOARD cAP (EXPERIMENTAL) MikroTik RouterBOARD cAP (EXPERIMENTAL)
MikroTik RouterBOARD mAP (EXPERIMENTAL) MikroTik RouterBOARD mAP (EXPERIMENTAL)
@ -1381,6 +1393,7 @@ config ATH79_MACH_ARCHER_C60_V1
config ATH79_MACH_ARCHER_C7 config ATH79_MACH_ARCHER_C7
bool "TP-LINK Archer C5/C7/TL-WDR4900 v2 board support" bool "TP-LINK Archer C5/C7/TL-WDR4900 v2 board support"
select SOC_QCA955X select SOC_QCA955X
select SOC_QCA956X
select ATH79_DEV_AP9X_PCI if PCI select ATH79_DEV_AP9X_PCI if PCI
select ATH79_DEV_ETH select ATH79_DEV_ETH
select ATH79_DEV_GPIO_BUTTONS select ATH79_DEV_GPIO_BUTTONS

View File

@ -39,6 +39,7 @@ obj-$(CONFIG_ATH79_ROUTERBOOT) += routerboot.o
# Machines # Machines
# #
obj-$(CONFIG_ATH79_MACH_A60) += mach-a60.o obj-$(CONFIG_ATH79_MACH_A60) += mach-a60.o
obj-$(CONFIG_ATH79_MACH_WI2A_AC200I) += mach-wi2a-ac200i.o
obj-$(CONFIG_ATH79_MACH_ALFA_AP120C) += mach-alfa-ap120c.o obj-$(CONFIG_ATH79_MACH_ALFA_AP120C) += mach-alfa-ap120c.o
obj-$(CONFIG_ATH79_MACH_ALFA_AP96) += mach-alfa-ap96.o obj-$(CONFIG_ATH79_MACH_ALFA_AP96) += mach-alfa-ap96.o
obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o
@ -62,6 +63,7 @@ obj-$(CONFIG_ATH79_MACH_ARCHER_C58_V1) += mach-archer-c59-v1.o
obj-$(CONFIG_ATH79_MACH_ARCHER_C59_V1) += mach-archer-c59-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C59_V1) += mach-archer-c59-v1.o
obj-$(CONFIG_ATH79_MACH_ARCHER_C60_V1) += mach-archer-c60-v1.o obj-$(CONFIG_ATH79_MACH_ARCHER_C60_V1) += mach-archer-c60-v1.o
obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o
obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7-v4.o
obj-$(CONFIG_ATH79_MACH_ARDUINO_YUN) += mach-arduino-yun.o obj-$(CONFIG_ATH79_MACH_ARDUINO_YUN) += mach-arduino-yun.o
obj-$(CONFIG_ATH79_MACH_AW_NR580) += mach-aw-nr580.o obj-$(CONFIG_ATH79_MACH_AW_NR580) += mach-aw-nr580.o
obj-$(CONFIG_ATH79_MACH_BHR_4GRV2) += mach-bhr-4grv2.o obj-$(CONFIG_ATH79_MACH_BHR_4GRV2) += mach-bhr-4grv2.o

View File

@ -0,0 +1,260 @@
/*
* Atheros ARCHER_C7 reference board support
*
* Copyright (c) 2017 Felix Fietkau <nbd@nbd.name>
* Copyright (c) 2014 The Linux Foundation. All rights reserved.
* Copyright (c) 2012 Gabor Juhos <juhosg@openwrt.org>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
#include <linux/platform_device.h>
#include <linux/ath9k_platform.h>
#include <linux/ar8216_platform.h>
#include <linux/proc_fs.h>
#include <linux/gpio.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/74x164.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include "common.h"
#include "dev-m25p80.h"
#include "machtypes.h"
#include "pci.h"
#include "dev-eth.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-spi.h"
#include "dev-usb.h"
#include "dev-wmac.h"
#define ARCHER_C7_GPIO_SHIFT_OE 1
#define ARCHER_C7_GPIO_SHIFT_SER 14
#define ARCHER_C7_GPIO_SHIFT_SRCLK 15
#define ARCHER_C7_GPIO_SHIFT_RCLK 16
#define ARCHER_C7_GPIO_SHIFT_SRCLR 21
#define ARCHER_C7_GPIO_BTN_RESET 5
#define ARCHER_C7_GPIO_BTN_WPS_WIFI 2
#define ARCHER_C7_GPIO_LED_WLAN5 9
#define ARCHER_C7_GPIO_LED_POWER 6
#define ARCHER_C7_GPIO_LED_USB1 7
#define ARCHER_C7_GPIO_LED_USB2 8
#define ARCHER_C7_74HC_GPIO_BASE QCA956X_GPIO_COUNT
#define ARCHER_C7_GPIO_LED_WPS (ARCHER_C7_74HC_GPIO_BASE + 0)
#define ARCHER_C7_GPIO_LED_LAN1 (ARCHER_C7_74HC_GPIO_BASE + 1)
#define ARCHER_C7_GPIO_LED_LAN2 (ARCHER_C7_74HC_GPIO_BASE + 2)
#define ARCHER_C7_GPIO_LED_LAN3 (ARCHER_C7_74HC_GPIO_BASE + 3)
#define ARCHER_C7_GPIO_LED_LAN4 (ARCHER_C7_74HC_GPIO_BASE + 4)
#define ARCHER_C7_GPIO_LED_WAN_GREEN (ARCHER_C7_74HC_GPIO_BASE + 5)
#define ARCHER_C7_GPIO_LED_WAN_AMBER (ARCHER_C7_74HC_GPIO_BASE + 6)
#define ARCHER_C7_GPIO_LED_WLAN2 (ARCHER_C7_74HC_GPIO_BASE + 7)
#define ARCHER_C7_KEYS_POLL_INTERVAL 20 /* msecs */
#define ARCHER_C7_KEYS_DEBOUNCE_INTERVAL (3 * ARCHER_C7_KEYS_POLL_INTERVAL)
#define ARCHER_C7_MAC0_OFFSET 0
#define ARCHER_C7_MAC1_OFFSET 6
#define ARCHER_C7_WMAC_CALDATA_OFFSET 0x1000
#define ARCHER_C7_GPIO_MDC 3
#define ARCHER_C7_GPIO_MDIO 4
static struct spi_gpio_platform_data archer_c7_v4_spi_data = {
.sck = ARCHER_C7_GPIO_SHIFT_SRCLK,
.miso = SPI_GPIO_NO_MISO,
.mosi = ARCHER_C7_GPIO_SHIFT_SER,
.num_chipselect = 1,
};
static u8 archer_c7_v4_ssr_initdata __initdata = 0xff;
static struct gen_74x164_chip_platform_data archer_c7_v4_ssr_data = {
.base = ARCHER_C7_74HC_GPIO_BASE,
.num_registers = 1,
.init_data = &archer_c7_v4_ssr_initdata,
};
static struct platform_device archer_c7_v4_spi_device = {
.name = "spi_gpio",
.id = 1,
.dev = {
.platform_data = &archer_c7_v4_spi_data,
},
};
static struct spi_board_info archer_c7_v4_spi_info[] = {
{
.bus_num = 1,
.chip_select = 0,
.max_speed_hz = 10000000,
.modalias = "74x164",
.platform_data = &archer_c7_v4_ssr_data,
.controller_data = (void *) ARCHER_C7_GPIO_SHIFT_RCLK,
},
};
static struct gpio_led archer_c7_v4_leds_gpio[] __initdata = {
{
.name = "archer-c7-v4:green:power",
.gpio = ARCHER_C7_GPIO_LED_POWER,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:wps",
.gpio = ARCHER_C7_GPIO_LED_WPS,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:wlan2g",
.gpio = ARCHER_C7_GPIO_LED_WLAN2,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:wlan5g",
.gpio = ARCHER_C7_GPIO_LED_WLAN5,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:lan1",
.gpio = ARCHER_C7_GPIO_LED_LAN1,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:lan2",
.gpio = ARCHER_C7_GPIO_LED_LAN2,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:lan3",
.gpio = ARCHER_C7_GPIO_LED_LAN3,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:lan4",
.gpio = ARCHER_C7_GPIO_LED_LAN4,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:wan",
.gpio = ARCHER_C7_GPIO_LED_WAN_GREEN,
.active_low = 1,
}, {
.name = "archer-c7-v4:amber:wan",
.gpio = ARCHER_C7_GPIO_LED_WAN_AMBER,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:usb1",
.gpio = ARCHER_C7_GPIO_LED_USB1,
.active_low = 1,
}, {
.name = "archer-c7-v4:green:usb2",
.gpio = ARCHER_C7_GPIO_LED_USB2,
.active_low = 1,
},
};
static struct gpio_keys_button archer_c7_v4_gpio_keys[] __initdata = {
{
.desc = "WPS and WIFI button",
.type = EV_KEY,
.code = KEY_WPS_BUTTON,
.debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
.gpio = ARCHER_C7_GPIO_BTN_WPS_WIFI,
.active_low = 1,
},
{
.desc = "Reset button",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
.gpio = ARCHER_C7_GPIO_BTN_RESET,
.active_low = 1,
},
};
static struct ar8327_pad_cfg archer_c7_v4_ar8337_pad0_cfg = {
.mode = AR8327_PAD_MAC_SGMII,
.sgmii_delay_en = true,
};
static struct ar8327_platform_data archer_c7_v4_ar8337_data = {
.pad0_cfg = &archer_c7_v4_ar8337_pad0_cfg,
.port0_cfg = {
.force_link = 1,
.speed = AR8327_PORT_SPEED_1000,
.duplex = 1,
.txpause = 1,
.rxpause = 1,
},
};
static struct mdio_board_info archer_c7_v4_mdio0_info[] = {
{
.bus_id = "ag71xx-mdio.0",
.phy_addr = 0,
.platform_data = &archer_c7_v4_ar8337_data,
},
};
static void __init archer_c7_v4_setup(void)
{
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
u8 *mac = (u8 *) KSEG1ADDR(0x1ff00008);
ath79_register_m25p80(NULL);
spi_register_board_info(archer_c7_v4_spi_info,
ARRAY_SIZE(archer_c7_v4_spi_info));
platform_device_register(&archer_c7_v4_spi_device);
gpio_request_one(ARCHER_C7_GPIO_SHIFT_OE,
GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
"LED control");
gpio_request_one(ARCHER_C7_GPIO_SHIFT_SRCLR,
GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
"LED reset");
ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_v4_leds_gpio),
archer_c7_v4_leds_gpio);
ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
ARRAY_SIZE(archer_c7_v4_gpio_keys),
archer_c7_v4_gpio_keys);
ath79_register_usb();
ath79_gpio_output_select(ARCHER_C7_GPIO_MDC, QCA956X_GPIO_OUT_MUX_GE0_MDC);
ath79_gpio_output_select(ARCHER_C7_GPIO_MDIO, QCA956X_GPIO_OUT_MUX_GE0_MDO);
ath79_register_mdio(0, 0x0);
mdiobus_register_board_info(archer_c7_v4_mdio0_info,
ARRAY_SIZE(archer_c7_v4_mdio0_info));
ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, mac);
ath79_register_pci();
/* GMAC0 is connected to an AR8337 switch */
ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
ath79_eth0_data.speed = SPEED_1000;
ath79_eth0_data.duplex = DUPLEX_FULL;
ath79_eth0_data.phy_mask = BIT(0);
ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
ath79_register_eth(0);
}
MIPS_MACHINE(ATH79_MACH_ARCHER_C7_V4, "ARCHER-C7-V4", "TP-LINK Archer C7 v4",
archer_c7_v4_setup);

View File

@ -7,6 +7,7 @@
* - MikroTik RouterBOARD 952Ui-5ac2nD * - MikroTik RouterBOARD 952Ui-5ac2nD
* - MikroTik RouterBOARD 962UiGS-5HacT2HnT * - MikroTik RouterBOARD 962UiGS-5HacT2HnT
* - MikroTik RouterBOARD 750UP r2 * - MikroTik RouterBOARD 750UP r2
* - MikroTik RouterBOARD 750P-PBr2
* - MikroTik RouterBOARD 750 r2 * - MikroTik RouterBOARD 750 r2
* - MikroTik RouterBOARD LHG 5nD * - MikroTik RouterBOARD LHG 5nD
* *
@ -763,7 +764,8 @@ static void __init rb952_setup(void)
* Init the hEX (PoE) lite hardware (QCA953x). * Init the hEX (PoE) lite hardware (QCA953x).
* The 750UP r2 (hEX PoE lite) is nearly identical to the hAP, only without * The 750UP r2 (hEX PoE lite) is nearly identical to the hAP, only without
* WLAN. The 750 r2 (hEX lite) is nearly identical to the 750UP r2, only * WLAN. The 750 r2 (hEX lite) is nearly identical to the 750UP r2, only
* without USB and POE. It shares the same bootloader board identifier. * without USB and POE. The 750P Pbr2 (Powerbox) is nearly identical to hEX PoE
* lite, only without USB. It shares the same bootloader board identifier.
*/ */
static void __init rb750upr2_setup(void) static void __init rb750upr2_setup(void)
{ {
@ -776,6 +778,10 @@ static void __init rb750upr2_setup(void)
if (strstr(mips_get_machine_name(), "750UP r2")) if (strstr(mips_get_machine_name(), "750UP r2"))
flags |= RBSPI_HAS_USB | RBSPI_HAS_POE; flags |= RBSPI_HAS_USB | RBSPI_HAS_POE;
/* differentiate the Powerbox from the hEX lite */
else if (strstr(mips_get_machine_name(), "750P r2"))
flags |= RBSPI_HAS_POE;
rbspi_952_750r2_setup(flags); rbspi_952_750r2_setup(flags);
} }

View File

@ -0,0 +1,217 @@
/*
* Nokia WI2A-AC200i support
*
* Copyright (c) 2012 Qualcomm Atheros
* Copyright (c) 2012-2013 Gabor Juhos <juhosg@openwrt.org>
* Copyright (c) 2017 Felix Fietkau <nbd@nbd.name>
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/platform/ar934x_nfc.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include <asm/fw/fw.h>
#include "common.h"
#include "pci.h"
#include "dev-ap9x-pci.h"
#include "dev-gpio-buttons.h"
#include "dev-eth.h"
#include "dev-leds-gpio.h"
#include "dev-m25p80.h"
#include "dev-nfc.h"
#include "dev-usb.h"
#include "dev-wmac.h"
#include "machtypes.h"
#define AC200I_GPIO_BTN_RESET 17
#define AC200I_KEYS_POLL_INTERVAL 20 /* msecs */
#define AC200I_KEYS_DEBOUNCE_INTERVAL (3 * AC200I_KEYS_POLL_INTERVAL)
#define AC200I_MAC_ADDR 0x1f040249
#define AC200I_MAC1_OFFSET 6
#define AC200I_WMAC_CALDATA_ADDR 0x1f061000
static struct gpio_led ac200i_leds_gpio[] __initdata = {
{
.name = "nokia:red:wlan-2g",
.gpio = 0,
.active_low = 1,
},
{
.name = "nokia:green:power",
.gpio = 1,
.active_low = 1,
},
{
.name = "nokia:green:wlan-2g",
.gpio = 2,
.active_low = 1,
},
{
.name = "nokia:green:ctrl",
.gpio = 3,
.active_low = 1,
},
{
.name = "nokia:green:eth",
.gpio = 4,
.active_low = 1,
},
{
.name = "nokia:red:power",
.gpio = 13,
.active_low = 1,
},
{
.name = "nokia:red:eth",
.gpio = 14,
.active_low = 1,
},
{
.name = "nokia:red:wlan-5g",
.gpio = 18,
.active_low = 1,
},
{
.name = "nokia:green:wlan-5g",
.gpio = 19,
.active_low = 1,
},
{
.name = "nokia:red:ctrl",
.gpio = 20,
.active_low = 1,
},
};
static struct gpio_keys_button ac200i_gpio_keys[] __initdata = {
{
.desc = "Reset button",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = AC200I_KEYS_DEBOUNCE_INTERVAL,
.gpio = AC200I_GPIO_BTN_RESET,
.active_low = 1,
},
};
static struct mtd_partition ac200i_nand_partitions[] = {
{
.name = "cfg",
.offset = 0x0100000,
.size = 0x1800000,
.mask_flags = MTD_WRITEABLE,
},
{
.name = "kernel",
.offset = 0x2000000,
.size = 0x0400000,
},
{
.name = "ubi",
.offset = 0x2400000,
.size = 0x2000000,
},
{
.name = "kernel",
.offset = 0x5000000,
.size = 0x0400000,
},
{
.name = "ubi",
.offset = 0x5400000,
.size = 0x2000000,
},
};
static const char *boot_getenv(const char *key)
{
const char *start = (const char *) KSEG1ADDR(0x1f070000);
const char *end = start + 0x20000;
const char *addr;
for (addr = start + 4;
*addr && *addr != 0xff && addr < end &&
strnlen(addr, end - addr) < end - addr;
addr += strnlen(addr, end - addr) + 1) {
const char *val;
val = strchr(addr, '=');
if (!val)
continue;
if (strncmp(addr, key, val - addr))
continue;
return val + 1;
}
return NULL;
}
static void __init ac200i_setup(void)
{
const char *img;
u8 *wmac = (u8 *) KSEG1ADDR(AC200I_WMAC_CALDATA_ADDR);
u8 *mac_addr = (u8 *) KSEG1ADDR(AC200I_MAC_ADDR);
ath79_register_m25p80(NULL);
ath79_register_leds_gpio(-1, ARRAY_SIZE(ac200i_leds_gpio),
ac200i_leds_gpio);
ath79_register_gpio_keys_polled(-1, AC200I_KEYS_POLL_INTERVAL,
ARRAY_SIZE(ac200i_gpio_keys),
ac200i_gpio_keys);
ath79_register_usb();
ath79_nfc_set_parts(ac200i_nand_partitions,
ARRAY_SIZE(ac200i_nand_partitions));
ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
ath79_register_nfc();
ath79_register_wmac(wmac, NULL);
ath79_register_mdio(0, 0x0);
ath79_init_mac(ath79_eth0_data.mac_addr, mac_addr, 0);
/* GMAC0 is connected to the SGMII interface */
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
ath79_eth0_data.phy_mask = BIT(4);
ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
ath79_eth0_pll_data.pll_1000 = 0x03000101;
ath79_eth0_pll_data.pll_100 = 0x80000101;
ath79_eth0_pll_data.pll_10 = 0x80001313;
img = boot_getenv("dualPartition");
if (img && !strcmp(img, "imgA")) {
ac200i_nand_partitions[3].name = "kernel_alt";
ac200i_nand_partitions[4].name = "ubi_alt";
} else {
ac200i_nand_partitions[1].name = "kernel_alt";
ac200i_nand_partitions[2].name = "ubi_alt";
}
ath79_register_eth(0);
ath79_register_pci();
}
MIPS_MACHINE(ATH79_MACH_WI2A_AC200I, "WI2A-AC200i",
"Nokia WI2A-AC200i",
ac200i_setup);

View File

@ -19,6 +19,7 @@ enum ath79_mach_type {
ATH79_MACH_GENERIC = 0, ATH79_MACH_GENERIC = 0,
ATH79_MACH_A40, /* OpenMesh A40 */ ATH79_MACH_A40, /* OpenMesh A40 */
ATH79_MACH_A60, /* OpenMesh A60 */ ATH79_MACH_A60, /* OpenMesh A60 */
ATH79_MACH_WI2A_AC200I, /* Nokia WI2A-AC200i */
ATH79_MACH_ALFA_AP120C, /* ALFA Network AP120C board */ ATH79_MACH_ALFA_AP120C, /* ALFA Network AP120C board */
ATH79_MACH_ALFA_AP96, /* ALFA Network AP96 board */ ATH79_MACH_ALFA_AP96, /* ALFA Network AP96 board */
ATH79_MACH_ALFA_NX, /* ALFA Network N2/N5 board */ ATH79_MACH_ALFA_NX, /* ALFA Network N2/N5 board */
@ -48,6 +49,7 @@ enum ath79_mach_type {
ATH79_MACH_ARCHER_C60_V1, /* TP-LINK Archer C60 V1 board */ ATH79_MACH_ARCHER_C60_V1, /* TP-LINK Archer C60 V1 board */
ATH79_MACH_ARCHER_C7, /* TP-LINK Archer C7 board */ ATH79_MACH_ARCHER_C7, /* TP-LINK Archer C7 board */
ATH79_MACH_ARCHER_C7_V2, /* TP-LINK Archer C7 V2 board */ ATH79_MACH_ARCHER_C7_V2, /* TP-LINK Archer C7 V2 board */
ATH79_MACH_ARCHER_C7_V4, /* TP-LINK Archer C7 V4 board */
ATH79_MACH_ARDUINO_YUN, /* Yun */ ATH79_MACH_ARDUINO_YUN, /* Yun */
ATH79_MACH_AW_NR580, /* AzureWave AW-NR580 */ ATH79_MACH_AW_NR580, /* AzureWave AW-NR580 */
ATH79_MACH_BHR_4GRV2, /* Buffalo BHR-4GRV2 */ ATH79_MACH_BHR_4GRV2, /* Buffalo BHR-4GRV2 */

View File

@ -1089,7 +1089,7 @@ next:
while ((skb = __skb_dequeue(&queue)) != NULL) { while ((skb = __skb_dequeue(&queue)) != NULL) {
skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, dev);
napi_gro_receive(&ag->napi, skb); netif_receive_skb(skb);
} }
DBG("%s: rx finish, curr=%u, dirty=%u, done=%d\n", DBG("%s: rx finish, curr=%u, dirty=%u, done=%d\n",
@ -1141,7 +1141,7 @@ static int ag71xx_poll(struct napi_struct *napi, int limit)
DBG("%s: disable polling mode, rx=%d, tx=%d,limit=%d\n", DBG("%s: disable polling mode, rx=%d, tx=%d,limit=%d\n",
dev->name, rx_done, tx_done, limit); dev->name, rx_done, tx_done, limit);
napi_complete_done(napi, rx_done); napi_complete(napi);
/* enable interrupts */ /* enable interrupts */
spin_lock_irqsave(&ag->lock, flags); spin_lock_irqsave(&ag->lock, flags);
@ -1160,7 +1160,7 @@ oom:
pr_info("%s: out of memory\n", dev->name); pr_info("%s: out of memory\n", dev->name);
mod_timer(&ag->oom_timer, jiffies + AG71XX_OOM_REFILL); mod_timer(&ag->oom_timer, jiffies + AG71XX_OOM_REFILL);
napi_complete_done(napi, rx_done); napi_complete(napi);
return 0; return 0;
} }

View File

@ -30,7 +30,7 @@ define Device/rb-nor-flash-16M
LOADER_TYPE := elf LOADER_TYPE := elf
KERNEL_INSTALL := 1 KERNEL_INSTALL := 1
KERNEL := kernel-bin | lzma | loader-kernel KERNEL := kernel-bin | lzma | loader-kernel
SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-mapl-2nd SUPPORTED_DEVICES := rb-750-r2 rb-750up-r2 rb-750p-pbr2 rb-941-2nd rb-951ui-2nd rb-952ui-5ac2nd rb-962uigs-5hact2hnt rb-lhg-5nd rb-mapl-2nd
IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \ IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | pad-to $$$$(BLOCKSIZE) | \
append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE) append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
endef endef

View File

@ -34,8 +34,8 @@ define Device/domywifi-dw33d
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-usb-ledtrig-usbport kmod-ath10k ath10k-firmware-qca988x
BOARDNAME := DW33D BOARDNAME := DW33D
IMAGE_SIZE := 16000k IMAGE_SIZE := 16000k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware);ar934x-nfc:96m(rootfs_data),32m(backup)ro MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,13952k(rootfs),2048k(kernel),64k(art)ro,16000k@0x50000(firmware);ar934x-nfc:96m(rootfs_data),32m(backup)ro
IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 14528k | append-kernel IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to 13952k | append-kernel | check-size $$$$(IMAGE_SIZE)
endef endef
TARGET_DEVICES += domywifi-dw33d TARGET_DEVICES += domywifi-dw33d
@ -84,6 +84,21 @@ define Device/rambutan
endef endef
TARGET_DEVICES += rambutan TARGET_DEVICES += rambutan
define Device/wi2a-ac200i
SUPPORTED_DEVICES = $(1)
DEVICE_TITLE := Nokia WI2A-AC200i
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath9k kmod-ath10k ath10k-firmware-qca988x
BOARDNAME := WI2A-AC200i
BLOCKSIZE := 64k
KERNEL_SIZE := 3648k
IMAGE_SIZE := 32m
IMAGES := sysupgrade.tar
MTDPARTS := spi0.0:256k(u-boot)ro,64k(envFacA)ro,64k(envFacB)ro,64k(ART)ro,128k(u-boot-env)
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += wi2a-ac200i
define Device/z1 define Device/z1
DEVICE_TITLE := Meraki Z1 DEVICE_TITLE := Meraki Z1
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-spi-gpio kmod-ath9k kmod-owl-loader DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-spi-gpio kmod-ath9k kmod-owl-loader

View File

@ -200,7 +200,20 @@ define Device/tl-wdr7500-v3
DEVICE_PROFILE := ARCHERC7 DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0x75000003 TPLINK_HWID := 0x75000003
endef endef
TARGET_DEVICES += archer-c5-v1 archer-c7-v1 archer-c7-v2 archer-c7-v2-il tl-wdr7500-v3
define Device/archer-c7-v4
$(Device/archer-cxx)
DEVICE_TITLE := TP-LINK Archer C7 v4
DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca988x
BOARDNAME := ARCHER-C7-V4
TPLINK_BOARD_ID := ARCHER-C7-V4
IMAGE_SIZE := 15104k
LOADER_TYPE := elf
MTDPARTS := spi0.0:128k(factory-uboot)ro,128k(u-boot)ro,1536k(kernel),13568k(rootfs),960k(config)ro,64k(art)ro,15104k@0x40000(firmware)
SUPPORTED_DEVICES := archer-c7-v4
endef
TARGET_DEVICES += archer-c5-v1 archer-c7-v1 archer-c7-v2 archer-c7-v2-il tl-wdr7500-v3 archer-c7-v4
define Device/cpe510-520-v1 define Device/cpe510-520-v1
DEVICE_TITLE := TP-LINK CPE510/520 v1 DEVICE_TITLE := TP-LINK CPE510/520 v1

View File

@ -180,6 +180,7 @@ CONFIG_ATH79_MACH_RAMBUTAN=y
# CONFIG_ATH79_MACH_UBNT_XM is not set # CONFIG_ATH79_MACH_UBNT_XM is not set
# CONFIG_ATH79_MACH_WEIO is not set # CONFIG_ATH79_MACH_WEIO is not set
# CONFIG_ATH79_MACH_WHR_HP_G300N is not set # CONFIG_ATH79_MACH_WHR_HP_G300N is not set
CONFIG_ATH79_MACH_WI2A_AC200I=y
# CONFIG_ATH79_MACH_WLAE_AG300N is not set # CONFIG_ATH79_MACH_WLAE_AG300N is not set
# CONFIG_ATH79_MACH_WLR8100 is not set # CONFIG_ATH79_MACH_WLR8100 is not set
# CONFIG_ATH79_MACH_WNDAP360 is not set # CONFIG_ATH79_MACH_WNDAP360 is not set

View File

@ -485,6 +485,49 @@ static struct device_info boards[] = {
.last_sysupgrade_partition = "file-system" .last_sysupgrade_partition = "file-system"
}, },
/** Firmware layout for the C7 */
{
.id = "ARCHER-C7-V4",
.support_list =
"SupportList:\n"
"{product_name:Archer C7,product_ver:4.0.0,special_id:45550000}\n"
"{product_name:Archer C7,product_ver:4.0.0,special_id:55530000}\n"
"{product_name:Archer C7,product_ver:4.0.0,special_id:43410000}\n",
.support_trail = '\x00',
.soft_ver = "soft_ver:1.0.0\n",
/**
We use a bigger os-image partition than the stock images (and thus
smaller file-system), as our kernel doesn't fit in the stock firmware's
1MB os-image.
*/
.partitions = {
{"factory-boot", 0x00000, 0x20000},
{"fs-uboot", 0x20000, 0x20000},
{"os-image", 0x40000, 0x180000}, /* Stock: base 0x40000 size 0x120000 */
{"file-system", 0x1c0000, 0xd40000}, /* Stock: base 0x160000 size 0xda0000 */
{"default-mac", 0xf00000, 0x00200},
{"pin", 0xf00200, 0x00200},
{"device-id", 0xf00400, 0x00100},
{"product-info", 0xf00500, 0x0fb00},
{"soft-version", 0xf10000, 0x00100},
{"extra-para", 0xf11000, 0x01000},
{"support-list", 0xf12000, 0x0a000},
{"profile", 0xf1c000, 0x04000},
{"default-config", 0xf20000, 0x10000},
{"user-config", 0xf30000, 0x40000},
{"qos-db", 0xf70000, 0x40000},
{"certificate", 0xfb0000, 0x10000},
{"partition-table", 0xfc0000, 0x10000},
{"log", 0xfd0000, 0x20000},
{"radio", 0xff0000, 0x10000},
{NULL, 0, 0}
},
.first_sysupgrade_partition = "os-image",
.last_sysupgrade_partition = "file-system",
},
/** Firmware layout for the C9 */ /** Firmware layout for the C9 */
{ {
.id = "ARCHERC9", .id = "ARCHERC9",
@ -1214,6 +1257,9 @@ static void build_image(const char *output,
if (strcasecmp(info->id, "ARCHER-C25-V1") == 0) { if (strcasecmp(info->id, "ARCHER-C25-V1") == 0) {
const char mdat[11] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; const char mdat[11] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
parts[5] = put_data("extra-para", mdat, 11); parts[5] = put_data("extra-para", mdat, 11);
} else if (strcasecmp(info->id, "ARCHER-C7-V4") == 0) {
const char mdat[11] = {0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0xca, 0x00, 0x01, 0x00, 0x00};
parts[5] = put_data("extra-para", mdat, 11);
} }
size_t len; size_t len;