From patchwork Tue Sep 22 17:07:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Lamparter X-Patchwork-Id: 521216 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id DD8A9140082 for ; Wed, 23 Sep 2015 03:09:38 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b=SyzIvswH; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 4BC1C28C713; Tue, 22 Sep 2015 19:07:26 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 67D2228C707 for ; Tue, 22 Sep 2015 19:07:00 +0200 (CEST) X-policyd-weight: using cached result; rate: -8.5 Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Tue, 22 Sep 2015 19:06:59 +0200 (CEST) Received: by wicfx3 with SMTP id fx3so33981916wic.0 for ; Tue, 22 Sep 2015 10:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:date:message-id:user-agent:mime-version :content-transfer-encoding:content-type; bh=UQSdFdcHBJoGVrr9H5vAfwGc8Np3MST6+rryORVPQxQ=; b=SyzIvswHPuCqTm5QWyEZFytJJGrmazEjlObzJUALhDzTR1Ik64gELNxtfuK3ag48Ts W6EIHr1+j/a3dtqezVK37JKPO2u2x57ksAQ3ZiqUtx4Gut9hc3PH40nMNYEIkZJtO297 QR/9UwED2AH2DbiN2eWS42ahDG3txaPjcj69hZw7hxGCBQY/XI5kbvkyDnXjZP4C28ys 7j7ICpknBVLzvYPe28ElbvLSVfpxEpbQwR5OQ4mbFqFZWLcZoQg27/qfgAT4t7ro2yXF 1kaLt8xJ/JVb/NMO0Z3Ur5NxQYg7hLE13SWab1Hyf1Wi2wIp6lthg2ANtudAauhqJL9i 9OKQ== X-Received: by 10.180.82.7 with SMTP id e7mr21220506wiy.19.1442941694825; Tue, 22 Sep 2015 10:08:14 -0700 (PDT) Received: from debian64.daheim (p5B2E6F71.dip0.t-ipconnect.de. [91.46.111.113]) by smtp.googlemail.com with ESMTPSA id wc12sm4110081wic.18.2015.09.22.10.08.12 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Sep 2015 10:08:13 -0700 (PDT) From: Chris R Blake X-Google-Original-From: Chris R Blake Received: from localhost.daheim ([127.0.0.1] helo=debian64.localnet) by debian64.daheim with esmtps (TLS1.0:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.86) (envelope-from ) id 1ZeR35-0006ma-Jv; Tue, 22 Sep 2015 19:08:11 +0200 To: openwrt-devel@lists.openwrt.org Date: Tue, 22 Sep 2015 19:07:21 +0200 Message-ID: <2422141.Sk6RCpvuRz@debian64> User-Agent: KMail/4.14.2 (Linux/4.3.0-rc2-wl+; KDE/4.14.12; x86_64; ; ) MIME-Version: 1.0 Subject: [OpenWrt-Devel] [PATCH v3 2/2] ar71xx: Add support for AirTight Networks C-55 X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" From: Chris R Blake This patch is to add support for the AirTight Networks C-55 Access Point Signed-off-by: Chris R Blake --- target/linux/ar71xx/base-files/etc/diag.sh | 3 + .../etc/hotplug.d/firmware/10-ath9k-eeprom | 8 ++ .../ar71xx/base-files/etc/uci-defaults/01_leds | 6 + .../ar71xx/base-files/etc/uci-defaults/02_network | 1 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + .../base-files/lib/preinit/05_set_iface_mac_ar71xx | 5 +- .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + target/linux/ar71xx/config-4.1 | 1 + .../linux/ar71xx/files/arch/mips/ath79/mach-c55.c | 132 +++++++++++++++++++++ target/linux/ar71xx/generic/profiles/airtight.mk | 17 +++ target/linux/ar71xx/image/Makefile | 2 + .../817-MIPS-ath79-add-at-c55-support.patch | 39 ++++++ 12 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-c55.c create mode 100644 target/linux/ar71xx/generic/profiles/airtight.mk create mode 100644 target/linux/ar71xx/patches-4.1/817-MIPS-ath79-add-at-c55-support.patch diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index cfba6b4..5773186 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -53,6 +53,9 @@ get_status_led() { bxu2000n-2-a1) status_led="bhu:green:status" ;; + c-55) + status_led="c-55:green:pwr" + ;; cap4200ag) status_led="senao:green:pwr" ;; diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index b5f0588..af94cae 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -38,6 +38,10 @@ board=$(ar71xx_board_name) case "$FIRMWARE" in "soc_wmac.eeprom") case $board in + c-55) + ath9k_eeprom_extract "art" 4096 2048 + ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +1) + ;; r6100 | \ wndr3700v4 | \ wndr4300) @@ -52,6 +56,10 @@ case "$FIRMWARE" in "pci_wmac0.eeprom") case $board in + c-55) + ath9k_eeprom_extract "art" 20480 2048 + ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +2) + ;; wndr3700v4 | \ wndr4300) ath9k_eeprom_extract "caldata" 20480 2048 diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds index fac4751..d9e45bd 100644 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds @@ -85,6 +85,12 @@ bxu2000n-2-a1) ucidef_set_led_wlan "wlan" "WLAN" "bhu:green:wlan" "phy0tpt" ;; +c-55) + ucidef_set_led_netdev "lan_green" "LAN_GREEN" "c-55:green:lan" "eth0" + ucidef_set_led_wlan "wlan_amber" "WLAN_AMBER" "c-55:amber:wlan" "phy0tpt" + ucidef_set_led_wlan "wlan_green" "WLAN_GREEN" "c-55:green:wlan" "phy1tpt" + ;; + cap4200ag) ucidef_set_led_default "lan_green" "LAN_GREEN" "senao:green:lan" "1" ucidef_set_led_wlan "wlan_amber" "WLAN_AMBER" "senao:amber:wlan" "phy0tpt" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network index 880953c..d0e1847 100644 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/02_network @@ -341,6 +341,7 @@ dlan-pro-1200-ac) all0305 |\ aw-nr580 |\ bullet-m |\ +c-55 |\ cap4200ag |\ eap300v2 |\ eap7660d |\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index efb3d16..1174995 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -398,6 +398,9 @@ ar71xx_board_detect() { *AW-NR580) name="aw-nr580" ;; + *C-55) + name="c-55" + ;; *CAP4200AG) name="cap4200ag" ;; diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx index 92b3765..1d501a8 100644 --- a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx +++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx @@ -22,6 +22,10 @@ fetch_mac_from_mtd() { preinit_set_mac_address() { case $(ar71xx_board_name) in + c-55) + mac_lan=$(mtd_get_mac_binary art 0) + [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan" + ;; dir-615-c1) fetch_mac_from_mtd config lan_mac wan_mac echo 1 > /sys/class/leds/dir-615-c1:green:wancpu/brightness @@ -45,4 +49,3 @@ preinit_set_mac_address() { } boot_hook_add preinit_main preinit_set_mac_address - diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index cad8b43..e6e3820 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -199,6 +199,7 @@ platform_check_image() { ap81 | \ ap83 | \ ap132 | \ + c-55 | \ cf-e316n-v2 | \ dgl-5500-a1 |\ dhp-1565-a1 |\ diff --git a/target/linux/ar71xx/config-4.1 b/target/linux/ar71xx/config-4.1 index 51f2f2f..9c499ca 100644 --- a/target/linux/ar71xx/config-4.1 +++ b/target/linux/ar71xx/config-4.1 @@ -49,6 +49,7 @@ CONFIG_ATH79_MACH_ARCHER_C7=y CONFIG_ATH79_MACH_AW_NR580=y CONFIG_ATH79_MACH_BHU_BXU2000N2_A=y CONFIG_ATH79_MACH_BSB=y +CONFIG_ATH79_MACH_C55=y CONFIG_ATH79_MACH_CAP4200AG=y CONFIG_ATH79_MACH_CARAMBOLA2=y CONFIG_ATH79_MACH_CF_E316N_V2=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-c55.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-c55.c new file mode 100644 index 0000000..cbee18e --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-c55.c @@ -0,0 +1,132 @@ +/* + * AirTight Networks C-55 board support + * + * Copyright (C) 2014-2015 Chris Blake + * + * Based on Senao CAP4200AG board support + * + * Copyright (C) 2012 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "common.h" +#include "pci.h" +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-spi.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define C55_GPIO_LED_PWR_GREEN 12 +#define C55_GPIO_LED_PWR_AMBER 13 +#define C55_GPIO_LED_LAN_GREEN 14 +#define C55_GPIO_LED_LAN_AMBER 15 +#define C55_GPIO_LED_WLAN_GREEN 18 +#define C55_GPIO_LED_WLAN_AMBER 19 + +#define C55_GPIO_BTN_RESET 17 + +#define C55_KEYS_POLL_INTERVAL 20 /* msecs */ +#define C55_KEYS_DEBOUNCE_INTERVAL (3 * C55_KEYS_POLL_INTERVAL) + +#define C55_MAC_OFFSET 0 +#define C55_WMAC_CALDATA_OFFSET 0x1000 +#define C55_PCIE_CALDATA_OFFSET 0x5000 + +static struct gpio_led c55_leds_gpio[] __initdata = { + { + .name = "c-55:green:pwr", + .gpio = C55_GPIO_LED_PWR_GREEN, + .active_low = 1, + }, + { + .name = "c-55:amber:pwr", + .gpio = C55_GPIO_LED_PWR_AMBER, + .active_low = 1, + }, + { + .name = "c-55:green:lan", + .gpio = C55_GPIO_LED_LAN_GREEN, + .active_low = 1, + }, + { + .name = "c-55:amber:lan", + .gpio = C55_GPIO_LED_LAN_AMBER, + .active_low = 1, + }, + { + .name = "c-55:green:wlan", + .gpio = C55_GPIO_LED_WLAN_GREEN, + .active_low = 1, + }, + { + .name = "c-55:amber:wlan", + .gpio = C55_GPIO_LED_WLAN_AMBER, + .active_low = 1, + }, +}; + +static struct gpio_keys_button c55_gpio_keys[] __initdata = { + { + .desc = "Reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = C55_KEYS_DEBOUNCE_INTERVAL, + .gpio = C55_GPIO_BTN_RESET, + .active_low = 1, + }, +}; + +static void __init c55_setup(void) +{ + /* SPI Storage*/ + ath79_register_m25p80_large(NULL); + + /* MDIO Interface */ + ath79_register_mdio(0, 0x0); + + /* AR8035-A Ethernet */ + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | + AR934X_ETH_CFG_SW_ONLY_MODE); + ath79_init_mac(ath79_eth0_data.mac_addr, NULL, 0); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = BIT(0); + ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; + ath79_eth0_pll_data.pll_1000 = 0x06000000; + ath79_register_eth(0); + + /* LEDs & GPIO */ + ath79_gpio_output_select(C55_GPIO_LED_LAN_GREEN, + AR934X_GPIO_OUT_GPIO); + ath79_gpio_output_select(C55_GPIO_LED_LAN_AMBER, + AR934X_GPIO_OUT_GPIO); + ath79_register_leds_gpio(-1, ARRAY_SIZE(c55_leds_gpio), + c55_leds_gpio); + ath79_register_gpio_keys_polled(-1, C55_KEYS_POLL_INTERVAL, + ARRAY_SIZE(c55_gpio_keys), + c55_gpio_keys); + + /* WiFi */ + ath79_wmac_disable_2ghz(); + ath79_register_wmac_simple(); + ap91_pci_init_simple(); + +} +MIPS_MACHINE(ATH79_MACH_C55, "C-55", "AirTight Networks C-55", + c55_setup); diff --git a/target/linux/ar71xx/generic/profiles/airtight.mk b/target/linux/ar71xx/generic/profiles/airtight.mk new file mode 100644 index 0000000..00f9ce4 --- /dev/null +++ b/target/linux/ar71xx/generic/profiles/airtight.mk @@ -0,0 +1,17 @@ +# +# Copyright (C) 2015 Chris Blake (chrisrblake93@gmail.com) +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/C-55 + NAME:=AirTight Networks C-55 + PACKAGES:=kmod-ath9k +endef + +define Profile/C-55/Description + Package set optimized for the AirTight Networks C-55 AP. +endef + +$(eval $(call Profile,C-55)) diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index b00846f..57a9881 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1244,6 +1244,7 @@ ap143_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(root ap147_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art),16000k@0x50000(firmware) ap152_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware) bxu2000n2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),8448k(rootfs),6016k(user),64k(cfg),64k(oem),64k(art)ro +c55_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,2048k(kernel),13824k(rootfs),13824k(opt)ro,2624k(failsafe)ro,64k(art)ro,15872k@0x60000(firmware) cameo_ap81_mtdlayout=mtdparts=spi0.0:128k(u-boot)ro,64k(config)ro,3840k(firmware),64k(art)ro cameo_ap91_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,3712k(firmware),64k(mac)ro,64k(art)ro cameo_ap99_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,3520k(firmware),64k(mac)ro,192k(lp)ro,64k(art)ro @@ -2130,6 +2131,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,C-55,c-55,C-55,ttyS0,115200,$$(c55_mtdlayout),KRuImage)) $(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)) diff --git a/target/linux/ar71xx/patches-4.1/817-MIPS-ath79-add-at-c55-support.patch b/target/linux/ar71xx/patches-4.1/817-MIPS-ath79-add-at-c55-support.patch new file mode 100644 index 0000000..6addcdc --- /dev/null +++ b/target/linux/ar71xx/patches-4.1/817-MIPS-ath79-add-at-c55-support.patch @@ -0,0 +1,39 @@ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -239,6 +239,16 @@ config ATH79_MACH_PB92 + select ATH79_DEV_PB9X_PCI if PCI + select ATH79_DEV_USB + ++config ATH79_MACH_C55 ++ bool "AirTight Networks C-55 support" ++ select SOC_AR934X ++ select ATH79_DEV_AP9X_PCI if PCI ++ select ATH79_DEV_ETH ++ select ATH79_DEV_GPIO_BUTTONS ++ select ATH79_DEV_LEDS_GPIO ++ select ATH79_DEV_M25P80 ++ select ATH79_DEV_WMAC ++ + config ATH79_MACH_AW_NR580 + bool "AzureWave AW-NR580 board support" + select SOC_AR71XX +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -36,6 +36,7 @@ enum ath79_mach_type { + ATH79_MACH_AP81, /* Atheros AP81 reference board */ + ATH79_MACH_AP83, /* Atheros AP83 */ + ATH79_MACH_AP96, /* Atheros AP96 */ ++ ATH79_MACH_C55, /* AirTight Networks C-55 */ + ATH79_MACH_ARCHER_C5, /* TP-LINK Archer C5 board */ + ATH79_MACH_ARCHER_C7, /* TP-LINK Archer C7 board */ + ATH79_MACH_AW_NR580, /* AzureWave AW-NR580 */ +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -54,6 +54,7 @@ obj-$(CONFIG_ATH79_MACH_AP152) += mach- + obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o + obj-$(CONFIG_ATH79_MACH_AP83) += mach-ap83.o + obj-$(CONFIG_ATH79_MACH_AP96) += mach-ap96.o ++obj-$(CONFIG_ATH79_MACH_C55) += mach-c55.o + obj-$(CONFIG_ATH79_MACH_ARCHER_C7) += mach-archer-c7.o + obj-$(CONFIG_ATH79_MACH_AW_NR580) += mach-aw-nr580.o + obj-$(CONFIG_ATH79_MACH_BHU_BXU2000N2_A)+= mach-bhu-bxu2000n2-a.o