ar71xx: add support for csac router

csac
MR 2020-01-30 14:39:35 +08:00
parent d1734d7e96
commit 16dda3ab84
15 changed files with 182 additions and 1 deletions

View File

@ -270,6 +270,11 @@ cr5000)
ucidef_set_led_wlan "wlan" "WLAN" "pcs:blue:wlan" "phy0tpt"
ucidef_set_led_usbdev "usb" "USB" "pcs:white:wps" "1-1"
;;
csac)
ucidef_set_led_switch "status" "STATUS" "csac:green:status" "switch0" "0x10"
ucidef_set_led_wlan "wlan2g" "WLAN2G" "csac:green:wlan2g" "phy1tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "csac:green:wlan5g" "phy0tpt"
;;
db120)
ucidef_set_led_usbdev "usb" "USB" "$board:green:usb" "1-1"
;;

View File

@ -279,6 +279,10 @@ ar71xx_setup_interfaces()
ucidef_add_switch "switch0" \
"0@eth0" "3:wan" "4:lan"
;;
csac)
ucidef_add_switch "switch0" \
"0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan"
;;
rme-eg200)
ucidef_set_interface_lan "eth0" "dhcp"
;;

View File

@ -170,6 +170,9 @@ get_status_led() {
cr5000)
status_led="pcs:amber:power"
;;
csac)
status_led="csac:green:status"
;;
dap-1330-a1|\
dgl-5500-a1|\
dhp-1565-a1|\

View File

@ -223,13 +223,18 @@ case "$FIRMWARE" in
cf-e385ac)
ath10kcal_extract "art" 20480 12064
;;
csac)
ath10kcal_extract "art" 20480 12064
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
;;
k2t)
ath10kcal_extract "art" 20480 12064
ath10kcal_patch_mac_crc $(macaddr_add $(cat /sys/class/net/eth0/address) +2)
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
;;
tl-wdr6500-v6)
tl-wdr6500-v6)
ath10kcal_extract "art" 8192 12064
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin

View File

@ -609,6 +609,9 @@ ar71xx_board_detect() {
*"CR5000")
name="cr5000"
;;
*"CSAC III")
name="csac"
;;
*"DAP-1330 Rev. A1")
name="dap-1330-a1"
;;

View File

@ -348,6 +348,7 @@ platform_check_image() {
arduino-yun|\
bhr-4grv2|\
bxu2000n-2-a1|\
csac|\
db120|\
dr344|\
dw33d|\

View File

@ -80,6 +80,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_CPE870 is not set
# CONFIG_ATH79_MACH_CR3000 is not set
# CONFIG_ATH79_MACH_CR5000 is not set
# CONFIG_ATH79_MACH_CSAC is not set
# CONFIG_ATH79_MACH_DAP_1330_A1 is not set
# CONFIG_ATH79_MACH_DAP_2695_A1 is not set
# CONFIG_ATH79_MACH_DB120 is not set

View File

@ -81,6 +81,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_CPE870 is not set
# CONFIG_ATH79_MACH_CR3000 is not set
# CONFIG_ATH79_MACH_CR5000 is not set
# CONFIG_ATH79_MACH_CSAC is not set
# CONFIG_ATH79_MACH_DAP_1330_A1 is not set
# CONFIG_ATH79_MACH_DAP_2695_A1 is not set
# CONFIG_ATH79_MACH_DB120 is not set

View File

@ -215,6 +215,16 @@ config ATH79_MACH_AP152
select ATH79_DEV_WMAC
select ATH79_DEV_AP9X_PCI if PCI
config ATH79_MACH_CSAC
bool "CSAC III support"
select SOC_QCA956X
select ATH79_DEV_GPIO_BUTTONS
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
select ATH79_DEV_USB
select ATH79_DEV_WMAC
select ATH79_DEV_AP9X_PCI if PCI
config ATH79_MACH_AP531B0
bool "Rockeetech AP531B0 support"
select SOC_QCA953X

View File

@ -91,6 +91,7 @@ obj-$(CONFIG_ATH79_MACH_CPE830) += mach-ap90q.o
obj-$(CONFIG_ATH79_MACH_CPE870) += mach-cpe870.o
obj-$(CONFIG_ATH79_MACH_CR3000) += mach-cr3000.o
obj-$(CONFIG_ATH79_MACH_CR5000) += mach-cr5000.o
obj-$(CONFIG_ATH79_MACH_CSAC) += mach-csac.o
obj-$(CONFIG_ATH79_MACH_DAP_1330_A1) += mach-dap-1330-a1.o
obj-$(CONFIG_ATH79_MACH_DAP_2695_A1) += mach-dap-2695-a1.o
obj-$(CONFIG_ATH79_MACH_DB120) += mach-db120.o

View File

@ -0,0 +1,137 @@
/*
* Qualcomm Atheros csac reference board support
*
* Copyright (c) 2015 Qualcomm Atheros
* 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 <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 CSAC_GPIO_LED_STATUS 7
#define CSAC_GPIO_LED_WLAN2G 8
#define CSAC_GPIO_LED_WLAN5G 9
#define CSAC_GPIO_BTN_RESET 2
#define CSAC_KEYS_POLL_INTERVAL 20 /* msecs */
#define CSAC_KEYS_DEBOUNCE_INTERVAL (3 * CSAC_KEYS_POLL_INTERVAL)
#define CSAC_MAC0_OFFSET 0
#define CSAC_WMAC_CALDATA_OFFSET 0x1000
static struct gpio_led csac_leds_gpio[] __initdata = {
{
.name = "csac:green:status",
.gpio = CSAC_GPIO_LED_STATUS,
.active_low = 1,
},
{
.name = "csac:green:wlan2g",
.gpio = CSAC_GPIO_LED_WLAN2G,
.active_low = 1,
},
{
.name = "csac:green:wlan5g",
.gpio = CSAC_GPIO_LED_WLAN5G,
.active_low = 1,
},
};
static struct gpio_keys_button csac_gpio_keys[] __initdata = {
{
.desc = "Reset button",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = CSAC_KEYS_DEBOUNCE_INTERVAL,
.gpio = CSAC_GPIO_BTN_RESET,
.active_low = 1,
},
};
static struct ar8327_pad_cfg csac_ar8337_pad0_cfg = {
.mode = AR8327_PAD_MAC_SGMII,
.sgmii_delay_en = true,
};
static struct ar8327_platform_data csac_ar8337_data = {
.pad0_cfg = &csac_ar8337_pad0_cfg,
.port0_cfg = {
.force_link = 1,
.speed = AR8327_PORT_SPEED_1000,
.duplex = 1,
.txpause = 1,
.rxpause = 1,
},
};
static struct mdio_board_info csac_mdio0_info[] = {
{
.bus_id = "ag71xx-mdio.0",
.mdio_addr = 0,
.platform_data = &csac_ar8337_data,
},
};
static void __init csac_setup(void)
{
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
ath79_register_m25p80(NULL);
ath79_register_leds_gpio(-1, ARRAY_SIZE(csac_leds_gpio),
csac_leds_gpio);
ath79_register_gpio_keys_polled(-1, CSAC_KEYS_POLL_INTERVAL,
ARRAY_SIZE(csac_gpio_keys),
csac_gpio_keys);
ath79_register_usb();
platform_device_register(&ath79_mdio0_device);
mdiobus_register_board_info(csac_mdio0_info,
ARRAY_SIZE(csac_mdio0_info));
ath79_register_wmac(art + CSAC_WMAC_CALDATA_OFFSET, NULL);
ath79_register_pci();
ath79_init_mac(ath79_eth0_data.mac_addr, art + CSAC_MAC0_OFFSET, 0);
/* GMAC0 is connected to an AR8337 switch */
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_CSAC, "CSAC", "CSAC III",
csac_setup);

View File

@ -82,6 +82,7 @@ enum ath79_mach_type {
ATH79_MACH_CPE870, /* YunCore CPE870 */
ATH79_MACH_CR3000, /* PowerCloud Systems CR3000 */
ATH79_MACH_CR5000, /* PowerCloud Systems CR5000 */
ATH79_MACH_CSAC, /* CSAC III */
ATH79_MACH_DAP_1330_A1, /* D-Link DAP-1330 rev. A1 */
ATH79_MACH_DAP_2695_A1, /* D-Link DAP-2695 rev. A1 */
ATH79_MACH_DB120, /* Atheros DB120 reference board */

View File

@ -55,6 +55,7 @@ CONFIG_ATH79_MACH_CPE830=y
CONFIG_ATH79_MACH_CPE870=y
CONFIG_ATH79_MACH_CR3000=y
CONFIG_ATH79_MACH_CR5000=y
CONFIG_ATH79_MACH_CSAC=y
CONFIG_ATH79_MACH_DAP_1330_A1=y
CONFIG_ATH79_MACH_DAP_2695_A1=y
CONFIG_ATH79_MACH_DB120=y

View File

@ -132,6 +132,12 @@ define LegacyDevice/CAP4200AG
endef
LEGACY_DEVICES += CAP4200AG
define LegacyDevice/CSAC
DEVICE_TITLE := CSAC III
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += CSAC
define LegacyDevice/DB120
DEVICE_TITLE := Atheros DB120 reference board
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage

View File

@ -247,6 +247,7 @@ cameo_ap123_mtdlayout_4M=mtdparts=spi0.0:64k(u-boot)ro,64k(nvram)ro,3712k(firmwa
cameo_db120_mtdlayout=mtdparts=spi0.0:64k(uboot)ro,64k(nvram)ro,15936k(firmware),192k(lang)ro,64k(mac)ro,64k(art)ro
cameo_db120_mtdlayout_8M=mtdparts=spi0.0:64k(uboot)ro,64k(nvram)ro,7872k(firmware),128k(lang)ro,64k(art)ro
cap4200ag_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),320k(custom)ro,1536k(kernel),12096k(rootfs),2048k(failsafe),64k(art)ro,13632k@0xa0000(firmware)
csac_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
eap300v2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),320k(custom),13632k(firmware),2048k(failsafe),64k(art)ro
db120_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
dgl_5500_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,15296k(firmware),192k(lang)ro,512k(my-dlink)ro,64k(mac)ro,64k(art)ro
@ -892,6 +893,7 @@ $(eval $(call SingleProfile,AthLzma,64k,AP143_8M,ap143-8M,AP143,ttyS0,115200,$$(
$(eval $(call SingleProfile,AthLzma,64k,AP143_16M,ap143-16M,AP143,ttyS0,115200,$$(ap143_mtdlayout_16M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP147_010,ap147-010,AP147-010,ttyS0,115200,$$(ap147_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP152_16M,ap152-16M,AP152,ttyS0,115200,$$(ap152_mtdlayout_16M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,CSAC,csac,CSAC,ttyS0,115200,$$(csac_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,BXU2000N2,bxu2000n-2-a1,BXU2000n-2-A1,ttyS0,115200,$$(bxu2000n2_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,CAP4200AG,cap4200ag,CAP4200AG,ttyS0,115200,$$(cap4200ag_mtdlayout),KRuImage))
$(eval $(call SingleProfile,AthLzma,64k,DB120,db120,DB120,ttyS0,115200,$$(db120_mtdlayout),RKuImage))