choice
prompt "Compression"
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_apm821xx
- default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ath79_mikrotik
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_lantiq
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx
+++ /dev/null
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_VERSION:=2010.03
-PKG_RELEASE:=1
-
-PKG_HASH:=902d1b2c15787df55186fae4033685fb0c5a5a12755a08383e97c4a3e255925b
-
-include $(INCLUDE_DIR)/u-boot.mk
-include $(INCLUDE_DIR)/package.mk
-
-define U-Boot/Default
- BUILD_TARGET:=ar71xx
- BUILD_SUBTARGET:=generic
-endef
-
-define U-Boot/nbg460n_550n_550nh
- TITLE:=NBG460N/550N/550NH routers
- BUILD_DEVICES:=NBG_460N_550N_550NH
- HIDDEN:=y
-endef
-
-UBOOT_MAKE_FLAGS :=
-
-UBOOT_TARGETS:=nbg460n_550n_550nh
-
-$(eval $(call BuildPackage/U-Boot))
+++ /dev/null
-From f3f431a712729a1af94d01bd1bfde17a252ff02c Mon Sep 17 00:00:00 2001
-From: Paul Kocialkowski <contact@paulk.fr>
-Date: Sun, 26 Jul 2015 18:48:15 +0200
-Subject: [PATCH] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH
-
-In order to achieve reproducible builds in U-Boot, timestamps that are defined
-at build-time have to be somewhat eliminated. The SOURCE_DATE_EPOCH environment
-variable allows setting a fixed value for those timestamps.
-
-Simply by setting SOURCE_DATE_EPOCH to a fixed value, a number of targets can be
-built reproducibly. This is the case for e.g. sunxi devices.
-
-However, some other devices might need some more tweaks, especially regarding
-the image generation tools.
-
-Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
----
- Makefile | 7 ++++---
- README | 12 ++++++++++++
- tools/default_image.c | 21 ++++++++++++++++++++-
- 3 files changed, 36 insertions(+), 4 deletions(-)
-
---- a/README
-+++ b/README
-@@ -2785,6 +2785,18 @@ Low Level (hardware related) configurati
- that is executed before the actual U-Boot. E.g. when
- compiling a NAND SPL.
-
-+Reproducible builds
-+-------------------
-+
-+In order to achieve reproducible builds, timestamps used in the U-Boot build
-+process have to be set to a fixed value.
-+
-+This is done using the SOURCE_DATE_EPOCH environment variable.
-+SOURCE_DATE_EPOCH is to be set on the build host's shell, not as a configuration
-+option for U-Boot or an environment variable in U-Boot.
-+
-+SOURCE_DATE_EPOCH should be set to a number of seconds since the epoch, in UTC.
-+
- Building the Software:
- ======================
-
---- a/tools/default_image.c
-+++ b/tools/default_image.c
-@@ -101,6 +101,9 @@ static void image_set_header (void *ptr,
- struct mkimage_params *params)
- {
- uint32_t checksum;
-+ char *source_date_epoch;
-+ struct tm *time_universal;
-+ time_t time;
-
- image_header_t * hdr = (image_header_t *)ptr;
-
-@@ -109,9 +112,25 @@ static void image_set_header (void *ptr,
- sizeof(image_header_t)),
- sbuf->st_size - sizeof(image_header_t));
-
-+source_date_epoch = getenv("SOURCE_DATE_EPOCH");
-+ if (source_date_epoch != NULL) {
-+ time = (time_t) strtol(source_date_epoch, NULL, 10);
-+
-+ time_universal = gmtime(&time);
-+ if (time_universal == NULL) {
-+ fprintf(stderr, "%s: SOURCE_DATE_EPOCH is not valid\n",
-+ __func__);
-+ time = 0;
-+ } else {
-+ time = mktime(time_universal);
-+ }
-+ } else {
-+ time = sbuf->st_mtime;
-+ }
-+
- /* Build new header */
- image_set_magic (hdr, IH_MAGIC);
-- image_set_time (hdr, sbuf->st_mtime);
-+ image_set_time(hdr, time);
- image_set_size (hdr, sbuf->st_size - sizeof(image_header_t));
- image_set_load (hdr, params->addr);
- image_set_ep (hdr, params->ep);
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -389,8 +389,26 @@ $(VERSION_FILE):
- @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
-
- $(TIMESTAMP_FILE):
-- @date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
-- @date +'#define U_BOOT_TIME "%T"' >> $@
-+ (if test -n "$${SOURCE_DATE_EPOCH}"; then \
-+ SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \
-+ DATE=""; \
-+ for date in gdate date.gnu date; do \
-+ $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \
-+ done; \
-+ if test -n "$${DATE}"; then \
-+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"' > $@; \
-+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"' >> $@; \
-+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"' >> $@; \
-+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"' >> $@; \
-+ else \
-+ return 42; \
-+ fi; \
-+ else \
-+ LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
-+ LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
-+ LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \
-+ LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
-+ fi)
-
- gdbtools:
- $(MAKE) -C tools/gdb all || exit 1
+++ /dev/null
---- a/cpu/mips/Makefile
-+++ b/cpu/mips/Makefile
-@@ -33,6 +33,7 @@ SOBJS-$(CONFIG_INCA_IP) += incaip_wdt.o
- COBJS-$(CONFIG_INCA_IP) += asc_serial.o incaip_clock.o
- COBJS-$(CONFIG_PURPLE) += asc_serial.o
- COBJS-$(CONFIG_SOC_AU1X00) += au1x00_eth.o au1x00_serial.o au1x00_usb_ohci.o
-+COBJS-$(CONFIG_AR71XX) += ar71xx_serial.o
-
- SRCS := $(START:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
- OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
---- a/Makefile
-+++ b/Makefile
-@@ -3474,6 +3474,13 @@ qemu_mips_config : unconfig
- @$(MKCONFIG) -a qemu-mips mips mips qemu-mips
-
- #########################################################################
-+## MIPS32 AR71XX (24K)
-+#########################################################################
-+
-+nbg460n_550n_550nh_config : unconfig
-+ @$(MKCONFIG) -a nbg460n mips mips nbg460n zyxel
-+
-+#########################################################################
- ## MIPS64 5Kc
- #########################################################################
-
+++ /dev/null
-diff -ur u-boot-2010.03/drivers/spi/Makefile u-boot-nbg/drivers/spi/Makefile
---- u-boot-2010.03/drivers/spi/Makefile 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-nbg/drivers/spi/Makefile 2010-04-15 19:31:27.000000000 +0200
-@@ -25,6 +25,7 @@
-
- LIB := $(obj)libspi.a
-
-+COBJS-$(CONFIG_AR71XX_SPI) += ar71xx_spi.o
- COBJS-$(CONFIG_ATMEL_DATAFLASH_SPI) += atmel_dataflash_spi.o
- COBJS-$(CONFIG_ATMEL_SPI) += atmel_spi.o
- COBJS-$(CONFIG_BFIN_SPI) += bfin_spi.o
+++ /dev/null
-diff -ur u-boot-2010.03/drivers/net/Makefile u-boot-nbg/drivers/net/Makefile
---- u-boot-2010.03/drivers/net/Makefile 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-nbg/drivers/net/Makefile 2010-04-19 23:30:01.000000000 +0200
-@@ -27,6 +27,7 @@
-
- COBJS-$(CONFIG_DRIVER_3C589) += 3c589.o
- COBJS-$(CONFIG_PPC4xx_EMAC) += 4xx_enet.o
-+COBJS-$(CONFIG_AG71XX) += ag71xx.o
- COBJS-$(CONFIG_DRIVER_AT91EMAC) += at91_emac.o
- COBJS-$(CONFIG_DRIVER_AX88180) += ax88180.o
- COBJS-$(CONFIG_BCM570x) += bcm570x.o bcm570x_autoneg.o 5701rls.o
-diff -ur u-boot-2010.03/include/netdev.h u-boot-nbg/include/netdev.h
---- u-boot-2010.03/include/netdev.h 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-nbg/include/netdev.h 2010-05-02 11:30:58.000000000 +0200
-@@ -42,6 +42,7 @@
-
- /* Driver initialization prototypes */
- int au1x00_enet_initialize(bd_t*);
-+int ag71xx_register(bd_t * bis, char *phyname[], u16 phyid[], u16 phyfixed[]);
- int at91emac_register(bd_t *bis, unsigned long iobase);
- int bfin_EMAC_initialize(bd_t *bis);
- int cs8900_initialize(u8 dev_num, int base_addr);
+++ /dev/null
-diff -ur u-boot-2010.03/drivers/net/Makefile u-boot-nbg/drivers/net/Makefile
---- u-boot-2010.03/drivers/net/Makefile 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-nbg/drivers/net/Makefile 2010-04-19 23:30:01.000000000 +0200
-@@ -65,6 +65,7 @@
- COBJS-$(CONFIG_DRIVER_RTL8019) += rtl8019.o
- COBJS-$(CONFIG_RTL8139) += rtl8139.o
- COBJS-$(CONFIG_RTL8169) += rtl8169.o
-+COBJS-$(CONFIG_RTL8366_MII) += phy/rtl8366_mii.o
- COBJS-$(CONFIG_DRIVER_S3C4510_ETH) += s3c4510b_eth.o
- COBJS-$(CONFIG_SH_ETHER) += sh_eth.o
- COBJS-$(CONFIG_SMC91111) += smc91111.o
-diff -ur u-boot-2010.03/include/netdev.h u-boot-nbg/include/netdev.h
---- u-boot-2010.03/include/netdev.h 2010-03-31 23:54:39.000000000 +0200
-+++ u-boot-nbg/include/netdev.h 2010-05-02 11:30:58.000000000 +0200
-@@ -175,5 +175,13 @@
-
- int mv88e61xx_switch_initialize(struct mv88e61xx_config *swconfig);
- #endif /* CONFIG_MV88E61XX_SWITCH */
-+
-+#if defined(CONFIG_RTL8366_MII)
-+#define RTL8366_DEVNAME "rtl8366"
-+#define RTL8366_WANPHY_ID 4
-+#define RTL8366_LANPHY_ID -1
-+int rtl8366_mii_register(bd_t *bis);
-+int rtl8366s_initialize(void);
-+#endif
-
- #endif /* _NETDEV_H_ */
+++ /dev/null
---- a/include/compiler.h
-+++ b/include/compiler.h
-@@ -46,7 +46,7 @@ extern int errno;
- #ifdef __linux__
- # include <endian.h>
- # include <byteswap.h>
--#elif defined(__MACH__)
-+#elif defined(__MACH__) || defined(__FreeBSD__)
- # include <machine/endian.h>
- typedef unsigned long ulong;
- typedef unsigned int uint;
+++ /dev/null
---- a/config.mk
-+++ b/config.mk
-@@ -64,9 +64,17 @@ HOSTSTRIP = strip
- #
-
- ifeq ($(HOSTOS),darwin)
--HOSTCC = cc
--HOSTCFLAGS += -traditional-cpp
--HOSTLDFLAGS += -multiply_defined suppress
-+#get the major and minor product version (e.g. '10' and '6' for Snow Leopard)
-+DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.')
-+DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.')
-+
-+before-snow-leopard = $(shell if [ $(DARWIN_MAJOR_VERSION) -le 10 -a \
-+ $(DARWIN_MINOR_VERSION) -le 5 ] ; then echo "$(1)"; else echo "$(2)"; fi ;)
-+
-+# Snow Leopards build environment has no longer restrictions as described above
-+HOSTCC = $(call before-snow-leopard, "cc", "gcc")
-+HOSTCFLAGS += $(call before-snow-leopard, "-traditional-cpp")
-+HOSTLDFLAGS += $(call before-snow-leopard, "-multiply_defined suppress")
- else
- HOSTCC = gcc
- endif
+++ /dev/null
---- a/tools/os_support.c
-+++ b/tools/os_support.c
-@@ -23,6 +23,6 @@
- #ifdef __MINGW32__
- #include "mingw_support.c"
- #endif
--#ifdef __APPLE__
-+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
- #include "getline.c"
- #endif
---- a/tools/os_support.h
-+++ b/tools/os_support.h
-@@ -28,7 +28,7 @@
- #include "mingw_support.h"
- #endif
-
--#ifdef __APPLE__
-+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
- #include "getline.h"
- #endif
-
+++ /dev/null
---- a/include/compiler.h 2018-08-29
-+++ b/include/compiler.h 2018-08-29
-@@ -46,6 +46,10 @@ extern int errno;
- #ifdef __linux__
- # include <endian.h>
- # include <byteswap.h>
-+#ifndef __GLIBC__
-+typedef unsigned long ulong;
-+typedef unsigned int uint;
-+#endif
- #elif defined(__MACH__) || defined(__FreeBSD__)
- # include <machine/endian.h>
- typedef unsigned long ulong;
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -139,9 +139,7 @@ endif
-
- # The "tools" are needed early, so put this first
- # Don't include stuff already done in $(LIBS)
--SUBDIRS = tools \
-- examples/standalone \
-- examples/api
-+SUBDIRS = tools
-
- .PHONY : $(SUBDIRS)
-
+++ /dev/null
---- a/include/asm-mips/io.h
-+++ b/include/asm-mips/io.h
-@@ -118,12 +118,12 @@ static inline void set_io_port_base(unsi
- * Change virtual addresses to physical addresses and vv.
- * These are trivial on the 1:1 Linux/MIPS mapping
- */
--extern inline phys_addr_t virt_to_phys(volatile void * address)
-+static inline phys_addr_t virt_to_phys(volatile void * address)
- {
- return CPHYSADDR(address);
- }
-
--extern inline void * phys_to_virt(unsigned long address)
-+static inline void * phys_to_virt(unsigned long address)
- {
- return (void *)KSEG0ADDR(address);
- }
-@@ -131,12 +131,12 @@ extern inline void * phys_to_virt(unsign
- /*
- * IO bus memory addresses are also 1:1 with the physical address
- */
--extern inline unsigned long virt_to_bus(volatile void * address)
-+static inline unsigned long virt_to_bus(volatile void * address)
- {
- return CPHYSADDR(address);
- }
-
--extern inline void * bus_to_virt(unsigned long address)
-+static inline void * bus_to_virt(unsigned long address)
- {
- return (void *)KSEG0ADDR(address);
- }
-@@ -150,12 +150,12 @@ extern unsigned long isa_slot_offset;
- extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
-
- #if 0
--extern inline void *ioremap(unsigned long offset, unsigned long size)
-+static inline void *ioremap(unsigned long offset, unsigned long size)
- {
- return __ioremap(offset, size, _CACHE_UNCACHED);
- }
-
--extern inline void *ioremap_nocache(unsigned long offset, unsigned long size)
-+static inline void *ioremap_nocache(unsigned long offset, unsigned long size)
- {
- return __ioremap(offset, size, _CACHE_UNCACHED);
- }
-@@ -238,7 +238,7 @@ out:
- */
-
- #define __OUT1(s) \
--extern inline void __out##s(unsigned int value, unsigned int port) {
-+static inline void __out##s(unsigned int value, unsigned int port) {
-
- #define __OUT2(m) \
- __asm__ __volatile__ ("s" #m "\t%0,%1(%2)"
-@@ -252,7 +252,7 @@ __OUT1(s##c_p) __OUT2(m) : : "r" (__iosw
- SLOW_DOWN_IO; }
-
- #define __IN1(t,s) \
--extern __inline__ t __in##s(unsigned int port) { t _v;
-+static inline t __in##s(unsigned int port) { t _v;
-
- /*
- * Required nops will be inserted by the assembler
-@@ -267,7 +267,7 @@ __IN1(t,s##_p) __IN2(m) : "=r" (_v) : "i
- __IN1(t,s##c_p) __IN2(m) : "=r" (_v) : "ir" (port), "r" (mips_io_port_base)); SLOW_DOWN_IO; return __ioswab##w(_v); }
-
- #define __INS1(s) \
--extern inline void __ins##s(unsigned int port, void * addr, unsigned long count) {
-+static inline void __ins##s(unsigned int port, void * addr, unsigned long count) {
-
- #define __INS2(m) \
- if (count) \
-@@ -295,7 +295,7 @@ __INS1(s##c) __INS2(m) \
- : "$1");}
-
- #define __OUTS1(s) \
--extern inline void __outs##s(unsigned int port, const void * addr, unsigned long count) {
-+static inline void __outs##s(unsigned int port, const void * addr, unsigned long count) {
-
- #define __OUTS2(m) \
- if (count) \
---- a/include/asm-mips/system.h
-+++ b/include/asm-mips/system.h
-@@ -23,7 +23,7 @@
- #include <linux/kernel.h>
- #endif
-
--extern __inline__ void
-+static inline void
- __sti(void)
- {
- __asm__ __volatile__(
-@@ -47,7 +47,7 @@ __sti(void)
- * R4000/R4400 need three nops, the R4600 two nops and the R10000 needs
- * no nops at all.
- */
--extern __inline__ void
-+static inline void
- __cli(void)
- {
- __asm__ __volatile__(
-@@ -208,7 +208,7 @@ do { \
- * For 32 and 64 bit operands we can take advantage of ll and sc.
- * FIXME: This doesn't work for R3000 machines.
- */
--extern __inline__ unsigned long xchg_u32(volatile int * m, unsigned long val)
-+static inline unsigned long xchg_u32(volatile int * m, unsigned long val)
- {
- #ifdef CONFIG_CPU_HAS_LLSC
- unsigned long dummy;
+++ /dev/null
---- a/common/main.c
-+++ b/common/main.c
-@@ -47,8 +47,7 @@ DECLARE_GLOBAL_DATA_PTR;
- /*
- * Board-specific Platform code can reimplement show_boot_progress () if needed
- */
--void inline __show_boot_progress (int val) {}
--void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
-+void __attribute__((weak)) show_boot_progress(int val) {}
-
- #if defined(CONFIG_BOOT_RETRY_TIME) && defined(CONFIG_RESET_TO_RETRY)
- extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /* for do_reset() prototype */
+++ /dev/null
-#
-# (C) Copyright 2003-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# See file CREDITS for list of people who contributed to this
-# project.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-# MA 02111-1307 USA
-#
-
-include $(TOPDIR)/config.mk
-
-LIB = $(obj)lib$(BOARD).a
-
-COBJS-y += $(BOARD).o
-SOBJS-y += lowlevel_init.o
-
-SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
-OBJS := $(addprefix $(obj),$(COBJS-y))
-SOBJS := $(addprefix $(obj),$(SOBJS-y))
-
-$(LIB): $(obj).depend $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
-
-
-#########################################################################
-
-# defines $(obj).depend target
-include $(SRCTREE)/rules.mk
-
-sinclude $(obj).depend
-
-#########################################################################
+++ /dev/null
-TEXT_BASE = 0x81E00000
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <config.h>
-#include <version.h>
-#include <asm/regdef.h>
-#include <asm/mipsregs.h>
-#include <asm/addrspace.h>
-
-
-
-.globl lowlevel_init
-/*
- All done by Bootbase, nothing to do
-*/
-lowlevel_init:
- jr ra
- nop
-
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/mipsregs.h>
-#include <asm/addrspace.h>
-#include <asm/reboot.h>
-#include <asm/ar71xx.h>
-#include <asm/ar71xx_gpio.h>
-
-#define NBG460N_WAN_LED 19
-
-phys_size_t initdram(int board_type)
-{
- return (32*1024*1024);
-}
-
-int checkboard(void)
-{
- // Set pin 19 to 1, to stop WAN LED blinking
- ar71xx_setpindir(NBG460N_WAN_LED, 1);
- ar71xx_setpin(NBG460N_WAN_LED, 1);
-
- printf("U-boot on Zyxel NBG460N\n");
- return 0;
-}
-
-void _machine_restart(void)
-{
- for (;;) {
- writel((RESET_MODULE_FULL_CHIP | RESET_MODULE_DDR),
- KSEG1ADDR(AR71XX_RESET_BASE + AR91XX_RESET_REG_RESET_MODULE));
- readl(KSEG1ADDR(AR71XX_RESET_BASE + AR91XX_RESET_REG_RESET_MODULE));
- }
-}
-
-int board_eth_init(bd_t *bis)
-{
- char *phynames[] = {RTL8366_DEVNAME, RTL8366_DEVNAME};
- u16 phyids[] = {RTL8366_LANPHY_ID, RTL8366_WANPHY_ID};
- u16 phyfixed[] = {1, 0};
-
- if (ag71xx_register(bis, phynames, phyids, phyfixed) <= 0)
- return -1;
-
- if (rtl8366s_initialize())
- return -1;
-
- if (rtl8366_mii_register(bis))
- return -1;
-
- return 0;
-}
-
-int misc_init_r(void) {
- uint8_t macaddr[6];
- uint8_t enetaddr[6];
-
- debug("Testing mac addresses\n");
-
- memcpy(macaddr, (uint8_t *) CONFIG_ETHADDR_ADDR, 6);
-
- if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
- debug("Setting eth0 mac addr to %pM\n", macaddr);
- eth_setenv_enetaddr("ethaddr", macaddr);
- }
-
- if (!eth_getenv_enetaddr("eth1addr", enetaddr)) {
- macaddr[5] += 1;
- debug("Setting eth1 mac addr to %pM\n", macaddr);
- eth_setenv_enetaddr("eth1addr", macaddr);
- }
-
- return 0;
-}
+++ /dev/null
-OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
-OUTPUT_ARCH(mips)
-ENTRY(_start)
-SECTIONS
-{
- . = 0x00000000;
-
- . = ALIGN(4);
- .text :
- {
- *(.text)
- }
-
- . = ALIGN(4);
- .rodata : { *(.rodata) }
-
- . = ALIGN(4);
- .data : { *(.data) }
-
- . = ALIGN(4);
- .sdata : { *(.sdata) }
-
- _gp = ALIGN(16);
-
- __got_start = .;
- .got : { *(.got) }
- __got_end = .;
-
- .sdata : { *(.sdata) }
-
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
-
- uboot_end_data = .;
- num_got_entries = (__got_end - __got_start) >> 2;
-
- . = ALIGN(4);
- .sbss : { *(.sbss) }
- .bss : { *(.bss) }
- uboot_end = .;
-}
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <asm/addrspace.h>
-#include <asm/types.h>
-#include <config.h>
-#include <asm/ar71xx.h>
-
-#define REG_SIZE 4
-
-/* === END OF CONFIG === */
-
-/* register offset */
-#define OFS_RCV_BUFFER (0*REG_SIZE)
-#define OFS_TRANS_HOLD (0*REG_SIZE)
-#define OFS_SEND_BUFFER (0*REG_SIZE)
-#define OFS_INTR_ENABLE (1*REG_SIZE)
-#define OFS_INTR_ID (2*REG_SIZE)
-#define OFS_DATA_FORMAT (3*REG_SIZE)
-#define OFS_LINE_CONTROL (3*REG_SIZE)
-#define OFS_MODEM_CONTROL (4*REG_SIZE)
-#define OFS_RS232_OUTPUT (4*REG_SIZE)
-#define OFS_LINE_STATUS (5*REG_SIZE)
-#define OFS_MODEM_STATUS (6*REG_SIZE)
-#define OFS_RS232_INPUT (6*REG_SIZE)
-#define OFS_SCRATCH_PAD (7*REG_SIZE)
-
-#define OFS_DIVISOR_LSB (0*REG_SIZE)
-#define OFS_DIVISOR_MSB (1*REG_SIZE)
-
-#define UART16550_READ(y) readl(KSEG1ADDR(AR71XX_UART_BASE+y))
-#define UART16550_WRITE(x, z) writel(z, KSEG1ADDR((AR71XX_UART_BASE+x)))
-
-void
-ar71xx_sys_frequency(u32 *cpu_freq, u32 *ddr_freq, u32 *ahb_freq)
-{
-#ifndef CONFIG_AR91XX
- u32 pll, pll_div, cpu_div, ahb_div, ddr_div, freq;
-
- pll = readl(KSEG1ADDR(AR71XX_PLL_REG_CPU_CONFIG + AR71XX_PLL_BASE));
-
- pll_div =
- ((pll & AR71XX_PLL_DIV_MASK) >> AR71XX_PLL_DIV_SHIFT) + 1;
-
- cpu_div =
- ((pll & AR71XX_CPU_DIV_MASK) >> AR71XX_CPU_DIV_SHIFT) + 1;
-
- ddr_div =
- ((pll & AR71XX_DDR_DIV_MASK) >> AR71XX_DDR_DIV_SHIFT) + 1;
-
- ahb_div =
- (((pll & AR71XX_AHB_DIV_MASK) >> AR71XX_AHB_DIV_SHIFT) + 1)*2;
-
- freq = pll_div * 40000000;
-
- if (cpu_freq)
- *cpu_freq = freq/cpu_div;
-
- if (ddr_freq)
- *ddr_freq = freq/ddr_div;
-
- if (ahb_freq)
- *ahb_freq = (freq/cpu_div)/ahb_div;
-
-#else
- u32 pll, pll_div, ahb_div, ddr_div, freq;
-
- pll = readl(KSEG1ADDR(AR91XX_PLL_REG_CPU_CONFIG + AR71XX_PLL_BASE));
-
- pll_div =
- ((pll & AR91XX_PLL_DIV_MASK) >> AR91XX_PLL_DIV_SHIFT);
-
- ddr_div =
- ((pll & AR91XX_DDR_DIV_MASK) >> AR91XX_DDR_DIV_SHIFT) + 1;
-
- ahb_div =
- (((pll & AR91XX_AHB_DIV_MASK) >> AR91XX_AHB_DIV_SHIFT) + 1)*2;
-
- freq = pll_div * 5000000;
-
- if (cpu_freq)
- *cpu_freq = freq;
-
- if (ddr_freq)
- *ddr_freq = freq/ddr_div;
-
- if (ahb_freq)
- *ahb_freq = freq/ahb_div;
-#endif
-}
-
-
-int serial_init(void)
-{
- u32 div;
- u32 ahb_freq = 100000000;
-
- ar71xx_sys_frequency (0, 0, &ahb_freq);
- div = ahb_freq/(16 * CONFIG_BAUDRATE);
-
- // enable uart pins
-#ifndef CONFIG_AR91XX
- writel(AR71XX_GPIO_FUNC_UART_EN, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_FUNC));
-#else
- writel(AR91XX_GPIO_FUNC_UART_EN, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_FUNC));
-#endif
-
- /* set DIAB bit */
- UART16550_WRITE(OFS_LINE_CONTROL, 0x80);
-
- /* set divisor */
- UART16550_WRITE(OFS_DIVISOR_LSB, (div & 0xff));
- UART16550_WRITE(OFS_DIVISOR_MSB, ((div >> 8) & 0xff));
-
- /* clear DIAB bit*/
- UART16550_WRITE(OFS_LINE_CONTROL, 0x00);
-
- /* set data format */
- UART16550_WRITE(OFS_DATA_FORMAT, 0x3);
-
- UART16550_WRITE(OFS_INTR_ENABLE, 0);
-
- return 0;
-}
-
-int serial_tstc (void)
-{
- return(UART16550_READ(OFS_LINE_STATUS) & 0x1);
-}
-
-int serial_getc(void)
-{
- while(!serial_tstc());
-
- return UART16550_READ(OFS_RCV_BUFFER);
-}
-
-
-void serial_putc(const char byte)
-{
- if (byte == '\n') serial_putc ('\r');
-
- while (((UART16550_READ(OFS_LINE_STATUS)) & 0x20) == 0x0);
- UART16550_WRITE(OFS_SEND_BUFFER, byte);
-}
-
-void serial_setbrg (void)
-{
-}
-
-void serial_puts (const char *s)
-{
- while (*s)
- {
- serial_putc (*s++);
- }
-}
+++ /dev/null
-/*
- * Atheros AR71xx built-in ethernet mac driver
- *
- * Copyright (C) 2010 Michael Kurz <michi.kurz@googlemail.com>
- * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * Based on Atheros' AG7100 driver
- *
- * 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 <common.h>
-#include <malloc.h>
-#include <net.h>
-#include <miiphy.h>
-
-#include <asm/ar71xx.h>
-
-#include "ag71xx.h"
-
-#ifdef AG71XX_DEBUG
-#define DBG(fmt,args...) printf(fmt ,##args)
-#else
-#define DBG(fmt,args...)
-#endif
-
-
-static struct ag71xx agtable[] = {
- {
- .mac_base = KSEG1ADDR(AR71XX_GE0_BASE),
- .mii_ctrl = KSEG1ADDR(AR71XX_MII_BASE + MII_REG_MII0_CTRL),
- .mii_if = CONFIG_AG71XX_MII0_IIF,
- } , {
- .mac_base = KSEG1ADDR(AR71XX_GE1_BASE),
- .mii_ctrl = KSEG1ADDR(AR71XX_MII_BASE + MII_REG_MII1_CTRL),
- .mii_if = CONFIG_AG71XX_MII1_IIF,
- }
-};
-
-static int ag71xx_ring_alloc(struct ag71xx_ring *ring, unsigned int size)
-{
- int err;
- int i;
- int rsize;
-
- ring->desc_size = sizeof(struct ag71xx_desc);
- if (ring->desc_size % (CONFIG_SYS_CACHELINE_SIZE)) {
- rsize = roundup(ring->desc_size, CONFIG_SYS_CACHELINE_SIZE);
- DBG("ag71xx: ring %p, desc size %u rounded to %u\n",
- ring, ring->desc_size,
- rsize);
- ring->desc_size = rsize;
- }
-
- ring->descs_cpu = (u8 *) malloc((size * ring->desc_size)
- + CONFIG_SYS_CACHELINE_SIZE - 1);
- if (!ring->descs_cpu) {
- err = -1;
- goto err;
- }
- ring->descs_cpu = (u8 *) UNCACHED_SDRAM((((u32) ring->descs_cpu +
- CONFIG_SYS_CACHELINE_SIZE - 1) & ~(CONFIG_SYS_CACHELINE_SIZE - 1)));
- ring->descs_dma = (u8 *) virt_to_phys(ring->descs_cpu);
-
- ring->size = size;
-
- ring->buf = malloc(size * sizeof(*ring->buf));
- if (!ring->buf) {
- err = -1;
- goto err;
- }
- memset(ring->buf, 0, size * sizeof(*ring->buf));
-
- for (i = 0; i < size; i++) {
- ring->buf[i].desc =
- (struct ag71xx_desc *)&ring->descs_cpu[i * ring->desc_size];
- DBG("ag71xx: ring %p, desc %d at %p\n",
- ring, i, ring->buf[i].desc);
- }
-
- flush_cache( (u32) ring->buf, size * sizeof(*ring->buf));
-
- return 0;
-
- err:
- return err;
-}
-
-static void ag71xx_ring_tx_init(struct ag71xx *ag)
-{
- struct ag71xx_ring *ring = &ag->tx_ring;
- int i;
-
- for (i = 0; i < AG71XX_TX_RING_SIZE; i++) {
- ring->buf[i].desc->next = (u32) virt_to_phys((ring->descs_dma +
- ring->desc_size * ((i + 1) % AG71XX_TX_RING_SIZE)));
-
- ring->buf[i].desc->ctrl = DESC_EMPTY;
- ring->buf[i].skb = NULL;
- }
-
- ring->curr = 0;
-}
-
-static void ag71xx_ring_rx_clean(struct ag71xx *ag)
-{
- struct ag71xx_ring *ring = &ag->rx_ring;
- int i;
-
- if (!ring->buf)
- return;
-
- for (i = 0; i < AG71XX_RX_RING_SIZE; i++) {
- ring->buf[i].desc->data = (u32) virt_to_phys(NetRxPackets[i]);
- flush_cache((u32) NetRxPackets[i], PKTSIZE_ALIGN);
- ring->buf[i].desc->ctrl = DESC_EMPTY;
- }
-
- ring->curr = 0;
-}
-
-static int ag71xx_ring_rx_init(struct ag71xx *ag)
-{
- struct ag71xx_ring *ring = &ag->rx_ring;
- unsigned int i;
-
- for (i = 0; i < AG71XX_RX_RING_SIZE; i++) {
- ring->buf[i].desc->next = (u32) virt_to_phys((ring->descs_dma +
- ring->desc_size * ((i + 1) % AG71XX_RX_RING_SIZE)));
-
- DBG("ag71xx: RX desc at %p, next is %08x\n",
- ring->buf[i].desc,
- ring->buf[i].desc->next);
- }
-
- for (i = 0; i < AG71XX_RX_RING_SIZE; i++) {
- ring->buf[i].desc->data = (u32) virt_to_phys(NetRxPackets[i]);
- ring->buf[i].desc->ctrl = DESC_EMPTY;
- }
-
- ring->curr = 0;
-
- return 0;
-}
-
-static int ag71xx_rings_init(struct ag71xx *ag)
-{
- int ret;
-
- ret = ag71xx_ring_alloc(&ag->tx_ring, AG71XX_TX_RING_SIZE);
- if (ret)
- return ret;
-
- ag71xx_ring_tx_init(ag);
-
- ret = ag71xx_ring_alloc(&ag->rx_ring, AG71XX_RX_RING_SIZE);
- if (ret)
- return ret;
-
- ret = ag71xx_ring_rx_init(ag);
- return ret;
-}
-
-static void ar71xx_set_pll(u32 cfg_reg, u32 pll_reg, u32 pll_val, u32 shift)
-{
- uint32_t base = KSEG1ADDR(AR71XX_PLL_BASE);
- u32 t;
-
- t = readl(base + cfg_reg);
- t &= ~(3 << shift);
- t |= (2 << shift);
- writel(t, base + cfg_reg);
- udelay(100);
-
- writel(pll_val, base + pll_reg);
-
- t |= (3 << shift);
- writel(t, base + cfg_reg);
- udelay(100);
-
- t &= ~(3 << shift);
- writel(t, base + cfg_reg);
- udelay(100);
-
- debug("ar71xx: pll_reg %#x: %#x\n", (unsigned int)(base + pll_reg),
- readl(base + pll_reg));
-}
-
-static void ar91xx_set_pll_ge0(int speed)
-{
- //u32 val = ar71xx_get_eth_pll(0, speed);
- u32 pll_val;
-
- switch (speed) {
- case SPEED_10:
- pll_val = 0x00441099;
- break;
- case SPEED_100:
- pll_val = 0x13000a44;
- break;
- case SPEED_1000:
- pll_val = 0x1a000000;
- break;
- default:
- BUG();
- }
-
- ar71xx_set_pll(AR91XX_PLL_REG_ETH_CONFIG, AR91XX_PLL_REG_ETH0_INT_CLOCK,
- pll_val, AR91XX_ETH0_PLL_SHIFT);
-}
-
-static void ar91xx_set_pll_ge1(int speed)
-{
- //u32 val = ar71xx_get_eth_pll(1, speed);
- u32 pll_val;
-
- switch (speed) {
- case SPEED_10:
- pll_val = 0x00441099;
- break;
- case SPEED_100:
- pll_val = 0x13000a44;
- break;
- case SPEED_1000:
- pll_val = 0x1a000000;
- break;
- default:
- BUG();
- }
-
- ar71xx_set_pll(AR91XX_PLL_REG_ETH_CONFIG, AR91XX_PLL_REG_ETH1_INT_CLOCK,
- pll_val, AR91XX_ETH1_PLL_SHIFT);
-}
-
-static void ag71xx_hw_set_macaddr(struct ag71xx *ag, unsigned char *mac)
-{
- u32 t;
-
- t = (((u32) mac[5]) << 24) | (((u32) mac[4]) << 16)
- | (((u32) mac[3]) << 8) | ((u32) mac[2]);
-
- ag71xx_wr(ag, AG71XX_REG_MAC_ADDR1, t);
-
- t = (((u32) mac[1]) << 24) | (((u32) mac[0]) << 16);
- ag71xx_wr(ag, AG71XX_REG_MAC_ADDR2, t);
-}
-
-static void ag71xx_dma_reset(struct ag71xx *ag)
-{
- u32 val;
- int i;
-
- DBG("%s: txdesc reg: 0x%08x rxdesc reg: 0x%08x\n",
- ag->dev->name,
- ag71xx_rr(ag, AG71XX_REG_TX_DESC),
- ag71xx_rr(ag, AG71XX_REG_RX_DESC));
-
- /* stop RX and TX */
- ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0);
- ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0);
-
- /* clear descriptor addresses */
- ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0);
- ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0);
-
- /* clear pending RX/TX interrupts */
- for (i = 0; i < 256; i++) {
- ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_PR);
- ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_PS);
- }
-
- /* clear pending errors */
- ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_BE | RX_STATUS_OF);
- ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_BE | TX_STATUS_UR);
-
- val = ag71xx_rr(ag, AG71XX_REG_RX_STATUS);
- if (val)
- printf("%s: unable to clear DMA Rx status: %08x\n",
- ag->dev->name, val);
-
- val = ag71xx_rr(ag, AG71XX_REG_TX_STATUS);
-
- /* mask out reserved bits */
- val &= ~0xff000000;
-
- if (val)
- printf("%s: unable to clear DMA Tx status: %08x\n",
- ag->dev->name, val);
-}
-
-static void ag71xx_halt(struct eth_device *dev)
-{
- struct ag71xx *ag = (struct ag71xx *) dev->priv;
-
- /* stop RX engine */
- ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0);
-
- ag71xx_dma_reset(ag);
-}
-
-#define MAX_WAIT 1000
-
-static int ag71xx_send(struct eth_device *dev, volatile void *packet,
- int length)
-{
- struct ag71xx *ag = (struct ag71xx *) dev->priv;
- struct ag71xx_ring *ring = &ag->tx_ring;
- struct ag71xx_desc *desc;
- int i;
-
- i = ring->curr % AG71XX_TX_RING_SIZE;
- desc = ring->buf[i].desc;
-
- if (!ag71xx_desc_empty(desc)) {
- printf("%s: tx buffer full\n", ag->dev->name);
- return 1;
- }
-
- flush_cache((u32) packet, length);
- desc->data = (u32) virt_to_phys(packet);
- desc->ctrl = (length & DESC_PKTLEN_M);
-
- DBG("%s: sending %#08x length %#08x\n",
- ag->dev->name, desc->data, desc->ctrl);
-
- ring->curr++;
- if (ring->curr >= AG71XX_TX_RING_SIZE){
- ring->curr = 0;
- }
-
- /* enable TX engine */
- ag71xx_wr(ag, AG71XX_REG_TX_CTRL, TX_CTRL_TXE);
-
- for (i = 0; i < MAX_WAIT; i++)
- {
- if (ag71xx_desc_empty(desc))
- break;
- udelay(10);
- }
- if (i == MAX_WAIT) {
- printf("%s: tx timed out!\n", ag->dev->name);
- return -1;
- }
-
- /* disable TX engine */
- ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0);
- desc->data = 0;
- desc->ctrl = DESC_EMPTY;
-
- return 0;
-}
-
-static int ag71xx_recv(struct eth_device *dev)
-{
- struct ag71xx *ag = (struct ag71xx *) dev->priv;
- struct ag71xx_ring *ring = &ag->rx_ring;
-
- for (;;) {
- unsigned int i = ring->curr % AG71XX_RX_RING_SIZE;
- struct ag71xx_desc *desc = ring->buf[i].desc;
- int pktlen;
-
- if (ag71xx_desc_empty(desc))
- break;
-
- DBG("%s: rx packets, curr=%u\n", dev->name, ring->curr);
-
- pktlen = ag71xx_desc_pktlen(desc);
- pktlen -= ETH_FCS_LEN;
-
-
- NetReceive(NetRxPackets[i] , pktlen);
- flush_cache( (u32) NetRxPackets[i], PKTSIZE_ALIGN);
-
- ring->buf[i].desc->ctrl = DESC_EMPTY;
- ring->curr++;
- if (ring->curr >= AG71XX_RX_RING_SIZE){
- ring->curr = 0;
- }
-
- }
-
- if ((ag71xx_rr(ag, AG71XX_REG_RX_CTRL) & RX_CTRL_RXE) == 0) {
- /* start RX engine */
- ag71xx_wr(ag, AG71XX_REG_RX_CTRL, RX_CTRL_RXE);
- }
-
- return 0;
-}
-
-#ifdef AG71XX_DEBUG
-static char *ag71xx_speed_str(struct ag71xx *ag)
-{
- switch (ag->speed) {
- case SPEED_1000:
- return "1000";
- case SPEED_100:
- return "100";
- case SPEED_10:
- return "10";
- }
-
- return "?";
-}
-#endif
-
-void ag71xx_link_adjust(struct ag71xx *ag)
-{
- u32 cfg2;
- u32 ifctl;
- u32 fifo5;
- u32 mii_speed;
-
- if (!ag->link) {
- DBG("%s: link down\n", ag->dev->name);
- return;
- }
-
- cfg2 = ag71xx_rr(ag, AG71XX_REG_MAC_CFG2);
- cfg2 &= ~(MAC_CFG2_IF_1000 | MAC_CFG2_IF_10_100 | MAC_CFG2_FDX);
- cfg2 |= (ag->duplex) ? MAC_CFG2_FDX : 0;
-
- ifctl = ag71xx_rr(ag, AG71XX_REG_MAC_IFCTL);
- ifctl &= ~(MAC_IFCTL_SPEED);
-
- fifo5 = ag71xx_rr(ag, AG71XX_REG_FIFO_CFG5);
- fifo5 &= ~FIFO_CFG5_BM;
-
- switch (ag->speed) {
- case SPEED_1000:
- mii_speed = MII_CTRL_SPEED_1000;
- cfg2 |= MAC_CFG2_IF_1000;
- fifo5 |= FIFO_CFG5_BM;
- break;
- case SPEED_100:
- mii_speed = MII_CTRL_SPEED_100;
- cfg2 |= MAC_CFG2_IF_10_100;
- ifctl |= MAC_IFCTL_SPEED;
- break;
- case SPEED_10:
- mii_speed = MII_CTRL_SPEED_10;
- cfg2 |= MAC_CFG2_IF_10_100;
- break;
- default:
- BUG();
- return;
- }
-
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG3, 0x00780fff);
-
- if (ag->macNum == 0)
- ar91xx_set_pll_ge0(ag->speed);
- else
- ar91xx_set_pll_ge1(ag->speed);
-
- ag71xx_mii_ctrl_set_speed(ag, mii_speed);
-
- ag71xx_wr(ag, AG71XX_REG_MAC_CFG2, cfg2);
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, fifo5);
- ag71xx_wr(ag, AG71XX_REG_MAC_IFCTL, ifctl);
-
- DBG("%s: link up (%sMbps/%s duplex)\n",
- ag->dev->name,
- ag71xx_speed_str(ag),
- (1 == ag->duplex) ? "Full" : "Half");
-
- DBG("%s: fifo_cfg0=%#x, fifo_cfg1=%#x, fifo_cfg2=%#x\n",
- ag->dev->name,
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG0),
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG1),
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG2));
-
- DBG("%s: fifo_cfg3=%#x, fifo_cfg4=%#x, fifo_cfg5=%#x\n",
- ag->dev->name,
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG3),
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG4),
- ag71xx_rr(ag, AG71XX_REG_FIFO_CFG5));
-
- DBG("%s: mac_cfg2=%#x, mac_ifctl=%#x, mii_ctrl=%#x\n",
- ag->dev->name,
- ag71xx_rr(ag, AG71XX_REG_MAC_CFG2),
- ag71xx_rr(ag, AG71XX_REG_MAC_IFCTL),
- ag71xx_mii_ctrl_rr(ag));
-}
-
-#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
-static int ag71xx_getMiiSpeed(struct ag71xx *ag)
-{
- uint16_t phyreg, cap;
-
- if (miiphy_read(ag->phyname, ag->phyid,
- PHY_BMSR, &phyreg)) {
- puts("PHY_BMSR read failed, assuming no link\n");
- return -1;
- }
-
- if ((phyreg & PHY_BMSR_LS) == 0) {
- return -1;
- }
-
- if (miiphy_read(ag->phyname, ag->phyid,
- PHY_1000BTSR, &phyreg))
- return -1;
-
- if (phyreg & PHY_1000BTSR_1000FD) {
- ag->speed = SPEED_1000;
- ag->duplex = 1;
- } else if (phyreg & PHY_1000BTSR_1000HD) {
- ag->speed = SPEED_1000;
- ag->duplex = 0;
- } else {
- if (miiphy_read(ag->phyname, ag->phyid,
- PHY_ANAR, &cap))
- return -1;
-
- if (miiphy_read(ag->phyname, ag->phyid,
- PHY_ANLPAR, &phyreg))
- return -1;
-
- cap &= phyreg;
- if (cap & PHY_ANLPAR_TXFD) {
- ag->speed = SPEED_100;
- ag->duplex = 1;
- } else if (cap & PHY_ANLPAR_TX) {
- ag->speed = SPEED_100;
- ag->duplex = 0;
- } else if (cap & PHY_ANLPAR_10FD) {
- ag->speed = SPEED_10;
- ag->duplex = 1;
- } else {
- ag->speed = SPEED_10;
- ag->duplex = 0;
- }
- }
-
- ag->link = 1;
-
- return 0;
-}
-#endif
-
-static int ag71xx_hw_start(struct eth_device *dev, bd_t * bd)
-{
- struct ag71xx *ag = (struct ag71xx *) dev->priv;
-
- ag71xx_dma_reset(ag);
-
- ag71xx_ring_rx_clean(ag);
- ag71xx_ring_tx_init(ag);
-
- ag71xx_wr(ag, AG71XX_REG_TX_DESC,
- (u32) virt_to_phys(ag->tx_ring.descs_dma));
- ag71xx_wr(ag, AG71XX_REG_RX_DESC,
- (u32) virt_to_phys(ag->rx_ring.descs_dma));
-
- ag71xx_hw_set_macaddr(ag, ag->dev->enetaddr);
-
- if (ag->phyfixed) {
- ag->link = 1;
- ag->duplex = 1;
- ag->speed = SPEED_1000;
- } else {
-
-#if (defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
- if (ag71xx_getMiiSpeed(ag))
- return -1;
-#else
- /* only fixed, without mii */
- return -1;
-#endif
-
- }
- ag71xx_link_adjust(ag);
-
- DBG("%s: txdesc reg: %#08x rxdesc reg: %#08x\n",
- ag->dev->name,
- ag71xx_rr(ag, AG71XX_REG_TX_DESC),
- ag71xx_rr(ag, AG71XX_REG_RX_DESC));
-
- /* start RX engine */
- ag71xx_wr(ag, AG71XX_REG_RX_CTRL, RX_CTRL_RXE);
-
- return 0;
-}
-
-#define FIFO_CFG0_INIT (FIFO_CFG0_ALL << FIFO_CFG0_ENABLE_SHIFT)
-
-#define FIFO_CFG4_INIT (FIFO_CFG4_DE | FIFO_CFG4_DV | FIFO_CFG4_FC | \
- FIFO_CFG4_CE | FIFO_CFG4_CR | FIFO_CFG4_LM | \
- FIFO_CFG4_LO | FIFO_CFG4_OK | FIFO_CFG4_MC | \
- FIFO_CFG4_BC | FIFO_CFG4_DR | FIFO_CFG4_LE | \
- FIFO_CFG4_CF | FIFO_CFG4_PF | FIFO_CFG4_UO | \
- FIFO_CFG4_VT)
-
-#define FIFO_CFG5_INIT (FIFO_CFG5_DE | FIFO_CFG5_DV | FIFO_CFG5_FC | \
- FIFO_CFG5_CE | FIFO_CFG5_LO | FIFO_CFG5_OK | \
- FIFO_CFG5_MC | FIFO_CFG5_BC | FIFO_CFG5_DR | \
- FIFO_CFG5_CF | FIFO_CFG5_PF | FIFO_CFG5_VT | \
- FIFO_CFG5_LE | FIFO_CFG5_FT | FIFO_CFG5_16 | \
- FIFO_CFG5_17 | FIFO_CFG5_SF)
-
-static int ag71xx_hw_init(struct ag71xx *ag)
-{
- int ret = 0;
- uint32_t reg;
- uint32_t mask, mii_type;
-
- if (ag->macNum == 0) {
- mask = (RESET_MODULE_GE0_MAC | RESET_MODULE_GE0_PHY);
- mii_type = 0x13;
- } else {
- mask = (RESET_MODULE_GE1_MAC | RESET_MODULE_GE1_PHY);
- mii_type = 0x11;
- }
-
- // mac soft reset
- ag71xx_sb(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_SR);
- udelay(20);
-
- // device stop
- reg = ar71xx_reset_rr(AR91XX_RESET_REG_RESET_MODULE);
- ar71xx_reset_wr(AR91XX_RESET_REG_RESET_MODULE, reg | mask);
- udelay(100 * 1000);
-
- // device start
- reg = ar71xx_reset_rr(AR91XX_RESET_REG_RESET_MODULE);
- ar71xx_reset_wr(AR91XX_RESET_REG_RESET_MODULE, reg & ~mask);
- udelay(100 * 1000);
-
- /* setup MAC configuration registers */
- ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, (MAC_CFG1_RXE | MAC_CFG1_TXE));
-
- ag71xx_sb(ag, AG71XX_REG_MAC_CFG2,
- MAC_CFG2_PAD_CRC_EN | MAC_CFG2_LEN_CHECK);
-
- /* setup FIFO configuration register 0 */
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG0, FIFO_CFG0_INIT);
-
- /* setup MII interface type */
- ag71xx_mii_ctrl_set_if(ag, ag->mii_if);
-
- /* setup mdio clock divisor */
- ag71xx_wr(ag, AG71XX_REG_MII_CFG, MII_CFG_CLK_DIV_20);
-
- /* setup FIFO configuration registers */
- ag71xx_sb(ag, AG71XX_REG_FIFO_CFG4, FIFO_CFG4_INIT);
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG1, 0x0fff0000);
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG2, 0x00001fff);
- ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, FIFO_CFG5_INIT);
-
- ag71xx_dma_reset(ag);
-
- ret = ag71xx_rings_init(ag);
- if (ret)
- return -1;
-
- ag71xx_wr(ag, AG71XX_REG_TX_DESC,
- (u32) virt_to_phys(ag->tx_ring.descs_dma));
- ag71xx_wr(ag, AG71XX_REG_RX_DESC,
- (u32) virt_to_phys(ag->rx_ring.descs_dma));
-
- ag71xx_hw_set_macaddr(ag, ag->dev->enetaddr);
-
- return 0;
-}
-
-#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
-#define AG71XX_MDIO_RETRY 1000
-#define AG71XX_MDIO_DELAY 5
-
-static inline struct ag71xx *ag71xx_name2mac(char *devname)
-{
- if (strcmp(devname, agtable[0].dev->name) == 0)
- return &agtable[0];
- else if (strcmp(devname, agtable[1].dev->name) == 0)
- return &agtable[1];
- else
- return NULL;
-}
-
-static inline void ag71xx_mdio_wr(struct ag71xx *ag, unsigned reg,
- u32 value)
-{
- uint32_t r;
-
- r = ag->mac_base + reg;
- writel(value, r);
-
- /* flush write */
- (void) readl(r);
-}
-
-static inline u32 ag71xx_mdio_rr(struct ag71xx *ag, unsigned reg)
-{
- return readl(ag->mac_base + reg);
-}
-
-static int ag71xx_mdio_read(char *devname, unsigned char addr,
- unsigned char reg, unsigned short *val)
-{
- struct ag71xx *ag = ag71xx_name2mac(devname);
- uint16_t regData;
- int i;
-
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_WRITE);
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_ADDR,
- ((addr & 0xff) << MII_ADDR_SHIFT) | (reg & 0xff));
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_READ);
-
- i = AG71XX_MDIO_RETRY;
- while (ag71xx_mdio_rr(ag, AG71XX_REG_MII_IND) & MII_IND_BUSY) {
- if (i-- == 0) {
- printf("%s: mii_read timed out\n",
- ag->dev->name);
- return -1;
- }
- udelay(AG71XX_MDIO_DELAY);
- }
-
- regData = (uint16_t) ag71xx_mdio_rr(ag, AG71XX_REG_MII_STATUS) & 0xffff;
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_WRITE);
-
- DBG("mii_read: addr=%04x, reg=%04x, value=%04x\n", addr, reg, regData);
-
- if (val)
- *val = regData;
-
- return 0;
-}
-
-static int ag71xx_mdio_write(char *devname, unsigned char addr,
- unsigned char reg, unsigned short val)
-{
- struct ag71xx *ag = ag71xx_name2mac(devname);
- int i;
-
- if (ag == NULL)
- return 1;
-
- DBG("mii_write: addr=%04x, reg=%04x, value=%04x\n", addr, reg, val);
-
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_ADDR,
- ((addr & 0xff) << MII_ADDR_SHIFT) | (reg & 0xff));
- ag71xx_mdio_wr(ag, AG71XX_REG_MII_CTRL, val);
-
- i = AG71XX_MDIO_RETRY;
- while (ag71xx_mdio_rr(ag, AG71XX_REG_MII_IND) & MII_IND_BUSY) {
- if (i-- == 0) {
- printf("%s: mii_write timed out\n",
- ag->dev->name);
- break;
- }
- udelay(AG71XX_MDIO_DELAY);
- }
-
- return 0;
-}
-#endif
-
-int ag71xx_register(bd_t * bis, char *phyname[], uint16_t phyid[], uint16_t phyfixed[])
-{
- int i, num = 0;
- u8 used_ports[MAX_AG71XX_DEVS] = CONFIG_AG71XX_PORTS;
-
- for (i = 0; i < MAX_AG71XX_DEVS; i++) {
- /*skip if port is configured not to use */
- if (used_ports[i] == 0)
- continue;
-
- agtable[i].dev = malloc(sizeof(struct eth_device));
- if (agtable[i].dev == NULL) {
- puts("malloc failed\n");
- return 0;
- }
- memset(agtable[i].dev, 0, sizeof(struct eth_device));
- sprintf(agtable[i].dev->name, "eth%d", i);
-
- agtable[i].dev->iobase = 0;
- agtable[i].dev->init = ag71xx_hw_start;
- agtable[i].dev->halt = ag71xx_halt;
- agtable[i].dev->send = ag71xx_send;
- agtable[i].dev->recv = ag71xx_recv;
- agtable[i].dev->priv = (void *) (&agtable[i]);
- agtable[i].macNum = i;
- eth_register(agtable[i].dev);
-#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
-
- if ((phyname == NULL) || (phyid == NULL) || (phyfixed == NULL))
- return -1;
-
- agtable[i].phyname = strdup(phyname[i]);
- agtable[i].phyid = phyid[i];
- agtable[i].phyfixed = phyfixed[i];
-
- miiphy_register(agtable[i].dev->name, ag71xx_mdio_read,
- ag71xx_mdio_write);
-#endif
-
- if (ag71xx_hw_init(&agtable[i]))
- continue;
-
- num++;
- }
-
- return num;
-}
+++ /dev/null
-/*
- * Atheros AR71xx built-in ethernet mac driver
- *
- * Copyright (C) 2008-2010 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * Based on Atheros' AG7100 driver
- *
- * 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.
- */
-
-#ifndef __AG71XX_H
-#define __AG71XX_H
-
-#include <linux/types.h>
-#include <linux/bitops.h>
-
-#include <asm/ar71xx.h>
-
-// controller has 2 ports
-#define MAX_AG71XX_DEVS 2
-
-#define ETH_FCS_LEN 4
-
-#define SPEED_10 10
-#define SPEED_100 100
-#define SPEED_1000 1000
-
-
-#define AG71XX_INT_ERR (AG71XX_INT_RX_BE | AG71XX_INT_TX_BE)
-#define AG71XX_INT_TX (AG71XX_INT_TX_PS)
-#define AG71XX_INT_RX (AG71XX_INT_RX_PR | AG71XX_INT_RX_OF)
-
-#define AG71XX_INT_POLL (AG71XX_INT_RX | AG71XX_INT_TX)
-#define AG71XX_INT_INIT (AG71XX_INT_ERR | AG71XX_INT_POLL)
-
-#define AG71XX_TX_FIFO_LEN 2048
-#define AG71XX_TX_MTU_LEN 1536
-#define AG71XX_RX_PKT_RESERVE 64
-#define AG71XX_RX_PKT_SIZE \
- (AG71XX_RX_PKT_RESERVE + ETH_HLEN + ETH_FRAME_LEN + ETH_FCS_LEN)
-
-#ifndef CONFIG_SYS_RX_ETH_BUFFER
-#define AG71XX_TX_RING_SIZE 4
-#define AG71XX_RX_RING_SIZE 4
-#else
-#define AG71XX_TX_RING_SIZE CONFIG_SYS_RX_ETH_BUFFER
-#define AG71XX_RX_RING_SIZE CONFIG_SYS_RX_ETH_BUFFER
-#endif
-
-#define AG71XX_TX_THRES_STOP (AG71XX_TX_RING_SIZE - 4)
-#define AG71XX_TX_THRES_WAKEUP \
- (AG71XX_TX_RING_SIZE - (AG71XX_TX_RING_SIZE / 4))
-
-
-
-
-struct ag71xx_desc {
- u32 data;
- u32 ctrl;
-#define DESC_EMPTY BIT(31)
-#define DESC_MORE BIT(24)
-#define DESC_PKTLEN_M 0xfff
- u32 next;
- u32 pad;
-} __attribute__((aligned(4)));
-
-struct ag71xx_buf {
- struct sk_buff *skb;
- struct ag71xx_desc *desc;
- dma_addr_t dma_addr;
- u32 pad;
-};
-
-struct ag71xx_ring {
- struct ag71xx_buf *buf;
- u8 *descs_cpu;
- u8 *descs_dma;
- unsigned int desc_size;
- unsigned int curr;
- unsigned int size;
-};
-
-struct ag71xx {
- uint32_t mac_base;
- uint32_t mii_ctrl;
-
- struct eth_device *dev;
-
- struct ag71xx_ring rx_ring;
- struct ag71xx_ring tx_ring;
-
- char *phyname;
- u16 phyid;
- u16 phyfixed;
- uint32_t link;
- uint32_t speed;
- int32_t duplex;
- uint32_t macNum;
- uint32_t mii_if;
-};
-
-void ag71xx_link_adjust(struct ag71xx *ag);
-
-int ag71xx_phy_connect(struct ag71xx *ag);
-void ag71xx_phy_disconnect(struct ag71xx *ag);
-void ag71xx_phy_start(struct ag71xx *ag);
-void ag71xx_phy_stop(struct ag71xx *ag);
-
-static inline int ag71xx_desc_empty(struct ag71xx_desc *desc)
-{
- return ((desc->ctrl & DESC_EMPTY) != 0);
-}
-
-static inline int ag71xx_desc_pktlen(struct ag71xx_desc *desc)
-{
- return (desc->ctrl & DESC_PKTLEN_M);
-}
-
-/* Register offsets */
-#define AG71XX_REG_MAC_CFG1 0x0000
-#define AG71XX_REG_MAC_CFG2 0x0004
-#define AG71XX_REG_MAC_IPG 0x0008
-#define AG71XX_REG_MAC_HDX 0x000c
-#define AG71XX_REG_MAC_MFL 0x0010
-#define AG71XX_REG_MII_CFG 0x0020
-#define AG71XX_REG_MII_CMD 0x0024
-#define AG71XX_REG_MII_ADDR 0x0028
-#define AG71XX_REG_MII_CTRL 0x002c
-#define AG71XX_REG_MII_STATUS 0x0030
-#define AG71XX_REG_MII_IND 0x0034
-#define AG71XX_REG_MAC_IFCTL 0x0038
-#define AG71XX_REG_MAC_ADDR1 0x0040
-#define AG71XX_REG_MAC_ADDR2 0x0044
-#define AG71XX_REG_FIFO_CFG0 0x0048
-#define AG71XX_REG_FIFO_CFG1 0x004c
-#define AG71XX_REG_FIFO_CFG2 0x0050
-#define AG71XX_REG_FIFO_CFG3 0x0054
-#define AG71XX_REG_FIFO_CFG4 0x0058
-#define AG71XX_REG_FIFO_CFG5 0x005c
-#define AG71XX_REG_FIFO_RAM0 0x0060
-#define AG71XX_REG_FIFO_RAM1 0x0064
-#define AG71XX_REG_FIFO_RAM2 0x0068
-#define AG71XX_REG_FIFO_RAM3 0x006c
-#define AG71XX_REG_FIFO_RAM4 0x0070
-#define AG71XX_REG_FIFO_RAM5 0x0074
-#define AG71XX_REG_FIFO_RAM6 0x0078
-#define AG71XX_REG_FIFO_RAM7 0x007c
-
-#define AG71XX_REG_TX_CTRL 0x0180
-#define AG71XX_REG_TX_DESC 0x0184
-#define AG71XX_REG_TX_STATUS 0x0188
-#define AG71XX_REG_RX_CTRL 0x018c
-#define AG71XX_REG_RX_DESC 0x0190
-#define AG71XX_REG_RX_STATUS 0x0194
-#define AG71XX_REG_INT_ENABLE 0x0198
-#define AG71XX_REG_INT_STATUS 0x019c
-
-#define MAC_CFG1_TXE BIT(0) /* Tx Enable */
-#define MAC_CFG1_STX BIT(1) /* Synchronize Tx Enable */
-#define MAC_CFG1_RXE BIT(2) /* Rx Enable */
-#define MAC_CFG1_SRX BIT(3) /* Synchronize Rx Enable */
-#define MAC_CFG1_TFC BIT(4) /* Tx Flow Control Enable */
-#define MAC_CFG1_RFC BIT(5) /* Rx Flow Control Enable */
-#define MAC_CFG1_LB BIT(8) /* Loopback mode */
-#define MAC_CFG1_SR BIT(31) /* Soft Reset */
-
-#define MAC_CFG2_FDX BIT(0)
-#define MAC_CFG2_CRC_EN BIT(1)
-#define MAC_CFG2_PAD_CRC_EN BIT(2)
-#define MAC_CFG2_LEN_CHECK BIT(4)
-#define MAC_CFG2_HUGE_FRAME_EN BIT(5)
-#define MAC_CFG2_IF_1000 BIT(9)
-#define MAC_CFG2_IF_10_100 BIT(8)
-
-#define FIFO_CFG0_WTM BIT(0) /* Watermark Module */
-#define FIFO_CFG0_RXS BIT(1) /* Rx System Module */
-#define FIFO_CFG0_RXF BIT(2) /* Rx Fabric Module */
-#define FIFO_CFG0_TXS BIT(3) /* Tx System Module */
-#define FIFO_CFG0_TXF BIT(4) /* Tx Fabric Module */
-#define FIFO_CFG0_ALL (FIFO_CFG0_WTM | FIFO_CFG0_RXS | FIFO_CFG0_RXF \
- | FIFO_CFG0_TXS | FIFO_CFG0_TXF)
-
-#define FIFO_CFG0_ENABLE_SHIFT 8
-
-#define FIFO_CFG4_DE BIT(0) /* Drop Event */
-#define FIFO_CFG4_DV BIT(1) /* RX_DV Event */
-#define FIFO_CFG4_FC BIT(2) /* False Carrier */
-#define FIFO_CFG4_CE BIT(3) /* Code Error */
-#define FIFO_CFG4_CR BIT(4) /* CRC error */
-#define FIFO_CFG4_LM BIT(5) /* Length Mismatch */
-#define FIFO_CFG4_LO BIT(6) /* Length out of range */
-#define FIFO_CFG4_OK BIT(7) /* Packet is OK */
-#define FIFO_CFG4_MC BIT(8) /* Multicast Packet */
-#define FIFO_CFG4_BC BIT(9) /* Broadcast Packet */
-#define FIFO_CFG4_DR BIT(10) /* Dribble */
-#define FIFO_CFG4_LE BIT(11) /* Long Event */
-#define FIFO_CFG4_CF BIT(12) /* Control Frame */
-#define FIFO_CFG4_PF BIT(13) /* Pause Frame */
-#define FIFO_CFG4_UO BIT(14) /* Unsupported Opcode */
-#define FIFO_CFG4_VT BIT(15) /* VLAN tag detected */
-#define FIFO_CFG4_FT BIT(16) /* Frame Truncated */
-#define FIFO_CFG4_UC BIT(17) /* Unicast Packet */
-
-#define FIFO_CFG5_DE BIT(0) /* Drop Event */
-#define FIFO_CFG5_DV BIT(1) /* RX_DV Event */
-#define FIFO_CFG5_FC BIT(2) /* False Carrier */
-#define FIFO_CFG5_CE BIT(3) /* Code Error */
-#define FIFO_CFG5_LM BIT(4) /* Length Mismatch */
-#define FIFO_CFG5_LO BIT(5) /* Length Out of Range */
-#define FIFO_CFG5_OK BIT(6) /* Packet is OK */
-#define FIFO_CFG5_MC BIT(7) /* Multicast Packet */
-#define FIFO_CFG5_BC BIT(8) /* Broadcast Packet */
-#define FIFO_CFG5_DR BIT(9) /* Dribble */
-#define FIFO_CFG5_CF BIT(10) /* Control Frame */
-#define FIFO_CFG5_PF BIT(11) /* Pause Frame */
-#define FIFO_CFG5_UO BIT(12) /* Unsupported Opcode */
-#define FIFO_CFG5_VT BIT(13) /* VLAN tag detected */
-#define FIFO_CFG5_LE BIT(14) /* Long Event */
-#define FIFO_CFG5_FT BIT(15) /* Frame Truncated */
-#define FIFO_CFG5_16 BIT(16) /* unknown */
-#define FIFO_CFG5_17 BIT(17) /* unknown */
-#define FIFO_CFG5_SF BIT(18) /* Short Frame */
-#define FIFO_CFG5_BM BIT(19) /* Byte Mode */
-
-#define AG71XX_INT_TX_PS BIT(0)
-#define AG71XX_INT_TX_UR BIT(1)
-#define AG71XX_INT_TX_BE BIT(3)
-#define AG71XX_INT_RX_PR BIT(4)
-#define AG71XX_INT_RX_OF BIT(6)
-#define AG71XX_INT_RX_BE BIT(7)
-
-#define MAC_IFCTL_SPEED BIT(16)
-
-#define MII_CFG_CLK_DIV_4 0
-#define MII_CFG_CLK_DIV_6 2
-#define MII_CFG_CLK_DIV_8 3
-#define MII_CFG_CLK_DIV_10 4
-#define MII_CFG_CLK_DIV_14 5
-#define MII_CFG_CLK_DIV_20 6
-#define MII_CFG_CLK_DIV_28 7
-#define MII_CFG_RESET BIT(31)
-
-#define MII_CMD_WRITE 0x0
-#define MII_CMD_READ 0x1
-#define MII_ADDR_SHIFT 8
-#define MII_IND_BUSY BIT(0)
-#define MII_IND_INVALID BIT(2)
-
-#define TX_CTRL_TXE BIT(0) /* Tx Enable */
-
-#define TX_STATUS_PS BIT(0) /* Packet Sent */
-#define TX_STATUS_UR BIT(1) /* Tx Underrun */
-#define TX_STATUS_BE BIT(3) /* Bus Error */
-
-#define RX_CTRL_RXE BIT(0) /* Rx Enable */
-
-#define RX_STATUS_PR BIT(0) /* Packet Received */
-#define RX_STATUS_OF BIT(2) /* Rx Overflow */
-#define RX_STATUS_BE BIT(3) /* Bus Error */
-
-#define MII_CTRL_IF_MASK 3
-#define MII_CTRL_SPEED_SHIFT 4
-#define MII_CTRL_SPEED_MASK 3
-#define MII_CTRL_SPEED_10 0
-#define MII_CTRL_SPEED_100 1
-#define MII_CTRL_SPEED_1000 2
-
-static inline void ag71xx_wr(struct ag71xx *ag, unsigned reg, u32 value)
-{
- __raw_writel(value, ag->mac_base + reg);
- /* flush write */
- (void) __raw_readl(ag->mac_base + reg);
-}
-
-static inline u32 ag71xx_rr(struct ag71xx *ag, unsigned reg)
-{
- return __raw_readl(ag->mac_base + reg);
-}
-
-static inline void ag71xx_sb(struct ag71xx *ag, unsigned reg, u32 mask)
-{
- uint32_t r;
-
- r = ag->mac_base + reg;
- __raw_writel(__raw_readl(r) | mask, r);
- /* flush write */
- (void)__raw_readl(r);
-}
-
-static inline void ag71xx_cb(struct ag71xx *ag, unsigned reg, u32 mask)
-{
- uint32_t r;
-
- r = ag->mac_base + reg;
- __raw_writel(__raw_readl(r) & ~mask, r);
- /* flush write */
- (void) __raw_readl(r);
-}
-
-static inline void ag71xx_int_enable(struct ag71xx *ag, u32 ints)
-{
- ag71xx_sb(ag, AG71XX_REG_INT_ENABLE, ints);
-}
-
-static inline void ag71xx_int_disable(struct ag71xx *ag, u32 ints)
-{
- ag71xx_cb(ag, AG71XX_REG_INT_ENABLE, ints);
-}
-
-static inline void ag71xx_mii_ctrl_wr(struct ag71xx *ag, u32 value)
-{
- __raw_writel(value, ag->mii_ctrl);
-
- /* flush write */
- __raw_readl(ag->mii_ctrl);
-}
-
-static inline u32 ag71xx_mii_ctrl_rr(struct ag71xx *ag)
-{
- return __raw_readl(ag->mii_ctrl);
-}
-
-static void inline ag71xx_mii_ctrl_set_if(struct ag71xx *ag,
- unsigned int mii_if)
-{
- u32 t;
-
- t = ag71xx_mii_ctrl_rr(ag);
- t &= ~(MII_CTRL_IF_MASK);
- t |= (mii_if & MII_CTRL_IF_MASK);
- ag71xx_mii_ctrl_wr(ag, t);
-}
-
-static void inline ag71xx_mii_ctrl_set_speed(struct ag71xx *ag,
- unsigned int speed)
-{
- u32 t;
-
- t = ag71xx_mii_ctrl_rr(ag);
- t &= ~(MII_CTRL_SPEED_MASK << MII_CTRL_SPEED_SHIFT);
- t |= (speed & MII_CTRL_SPEED_MASK) << MII_CTRL_SPEED_SHIFT;
- ag71xx_mii_ctrl_wr(ag, t);
-}
-
-#ifdef CONFIG_AG71XX_AR8216_SUPPORT
-void ag71xx_add_ar8216_header(struct ag71xx *ag, struct sk_buff *skb);
-int ag71xx_remove_ar8216_header(struct ag71xx *ag, struct sk_buff *skb,
- int pktlen);
-static inline int ag71xx_has_ar8216(struct ag71xx *ag)
-{
- return ag71xx_get_pdata(ag)->has_ar8216;
-}
-#else
-static inline void ag71xx_add_ar8216_header(struct ag71xx *ag,
- struct sk_buff *skb)
-{
-}
-
-static inline int ag71xx_remove_ar8216_header(struct ag71xx *ag,
- struct sk_buff *skb,
- int pktlen)
-{
- return 0;
-}
-static inline int ag71xx_has_ar8216(struct ag71xx *ag)
-{
- return 0;
-}
-#endif
-
-#endif /* _AG71XX_H */
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef RTL8366_MII_H
-#define RTL8366_MII_H
-
-#define MII_CONTROL_REG 0
-#define MII_STATUS_REG 1
-#define MII_PHY_ID0 2
-#define MII_PHY_ID1 3
-#define MII_LOCAL_CAP 4
-#define MII_REMOTE_CAP 5
-#define MII_EXT_AUTONEG 6
-#define MII_LOCAL_NEXT_PAGE 7
-#define MII_REMOTE_NEXT_PAGE 8
-#define MII_GIGA_CONTROL 9
-#define MII_GIGA_STATUS 10
-#define MII_EXT_STATUS_REG 15
-
-/* Control register */
-#define MII_CONTROL_1000MBPS 6
-#define MII_CONTROL_COLL_TEST 7
-#define MII_CONTROL_FULLDUPLEX 8
-#define MII_CONTROL_RENEG 9
-#define MII_CONTROL_ISOLATE 10
-#define MII_CONTROL_POWERDOWN 11
-#define MII_CONTROL_AUTONEG 12
-#define MII_CONTROL_100MBPS 13
-#define MII_CONTROL_LOOPBACK 14
-#define MII_CONTROL_RESET 15
-
-/* Status/Extended status register */
-/* Basic status */
-#define MII_STATUS_CAPABILITY 0
-#define MII_STATUS_JABBER 1
-#define MII_STATUS_LINK_UP 2
-#define MII_STATUS_AUTONEG_ABLE 3
-#define MII_STATUS_REMOTE_FAULT 4
-#define MII_STATUS_AUTONEG_DONE 5
-#define MII_STATUS_NO_PREAMBLE 6
-#define MII_STATUS_RESERVED 7
-#define MII_STATUS_EXTENDED 8
-#define MII_STATUS_100_T2_HALF 9
-#define MII_STATUS_100_T2_FULL 10
-#define MII_STATUS_10_TX_HALF 11
-#define MII_STATUS_10_TX_FULL 12
-#define MII_STATUS_100_TX_HALF 13
-#define MII_STATUS_100_TX_FULL 14
-#define MII_STATUS_100_T4 15
-
-#define MII_GIGA_CONTROL_HALF 8
-#define MII_GIGA_CONTROL_FULL 9
-#define MII_GIGA_STATUS_HALF 10
-#define MII_GIGA_STATUS_FULL 11
-
-/* Extended status */
-#define MII_STATUS_1000_T_HALF 12
-#define MII_STATUS_1000_T_FULL 13
-#define MII_STATUS_1000_X_HALF 14
-#define MII_STATUS_1000_X_FULL 15
-
-/* Local/Remmote capability register */
-#define MII_CAP_10BASE_TX 5
-#define MII_CAP_10BASE_TX_FULL 6
-#define MII_CAP_100BASE_TX 7
-#define MII_CAP_100BASE_TX_FULL 8
-#define MII_CAP_100BASE_T4 9
-#define MII_CAP_SYMM_PAUSE 10
-#define MII_CAP_ASYMM_PAUSE 11
-#define MII_CAP_RESERVED 12
-#define MII_CAP_REMOTE_FAULT 13
-#define MII_CAP_ACKNOWLEDGE 14
-#define MII_CAP_NEXT_PAGE 15
-#define MII_CAP_IEEE_802_3 0x0001
-
-#define MII_LINK_MODE_MASK 0x1f
-
-#define REALTEK_RTL8366_CHIP_ID0 0x001C
-#define REALTEK_RTL8366_CHIP_ID1 0xC940
-#define REALTEK_RTL8366_CHIP_ID1_MP 0xC960
-
-#define REALTEK_MIN_PORT_ID 0
-#define REALTEK_MAX_PORT_ID 5
-#define REALTEK_MIN_PHY_ID REALTEK_MIN_PORT_ID
-#define REALTEK_MAX_PHY_ID 4
-#define REALTEK_CPU_PORT_ID REALTEK_MAX_PORT_ID
-#define REALTEK_PHY_PORT_MASK ((1<<(REALTEK_MAX_PHY_ID+1)) - (1<<REALTEK_MIN_PHY_ID))
-#define REALTEK_CPU_PORT_MASK (1<<REALTEK_CPU_PORT_ID)
-#define REALTEK_ALL_PORT_MASK (REALTEK_PHY_PORT_MASK | REALTEK_CPU_PORT_MASK)
-
-/* port ability */
-#define RTL8366S_PORT_ABILITY_BASE 0x0011
-
-/* port vlan control register */
-#define RTL8366S_PORT_VLAN_CTRL_BASE 0x0058
-
-/* port linking status */
-#define RTL8366S_PORT_LINK_STATUS_BASE 0x0060
-#define RTL8366S_PORT_STATUS_SPEED_BIT 0
-#define RTL8366S_PORT_STATUS_SPEED_MSK 0x0003
-#define RTL8366S_PORT_STATUS_DUPLEX_BIT 2
-#define RTL8366S_PORT_STATUS_DUPLEX_MSK 0x0004
-#define RTL8366S_PORT_STATUS_LINK_BIT 4
-#define RTL8366S_PORT_STATUS_LINK_MSK 0x0010
-#define RTL8366S_PORT_STATUS_TXPAUSE_BIT 5
-#define RTL8366S_PORT_STATUS_TXPAUSE_MSK 0x0020
-#define RTL8366S_PORT_STATUS_RXPAUSE_BIT 6
-#define RTL8366S_PORT_STATUS_RXPAUSE_MSK 0x0040
-#define RTL8366S_PORT_STATUS_AN_BIT 7
-#define RTL8366S_PORT_STATUS_AN_MSK 0x0080
-
-/* internal control */
-#define RTL8366S_RESET_CONTROL_REG 0x0100
-#define RTL8366S_RESET_QUEUE_BIT 2
-
-#define RTL8366S_CHIP_ID_REG 0x0105
-
-/* MAC control */
-#define RTL8366S_MAC_FORCE_CTRL0_REG 0x0F04
-#define RTL8366S_MAC_FORCE_CTRL1_REG 0x0F05
-
-
-/* PHY registers control */
-#define RTL8366S_PHY_ACCESS_CTRL_REG 0x8028
-#define RTL8366S_PHY_ACCESS_DATA_REG 0x8029
-
-#define RTL8366S_PHY_CTRL_READ 1
-#define RTL8366S_PHY_CTRL_WRITE 0
-
-#define RTL8366S_PHY_REG_MASK 0x1F
-#define RTL8366S_PHY_PAGE_OFFSET 5
-#define RTL8366S_PHY_PAGE_MASK (0x7<<5)
-#define RTL8366S_PHY_NO_OFFSET 9
-#define RTL8366S_PHY_NO_MASK (0x1F<<9)
-
-#define RTL8366S_PHY_NO_MAX 4
-#define RTL8366S_PHY_PAGE_MAX 7
-#define RTL8366S_PHY_ADDR_MAX 31
-
-/* cpu port control reg */
-#define RTL8366S_CPU_CTRL_REG 0x004F
-#define RTL8366S_CPU_DRP_BIT 14
-#define RTL8366S_CPU_DRP_MSK 0x4000
-#define RTL8366S_CPU_INSTAG_BIT 15
-#define RTL8366S_CPU_INSTAG_MSK 0x8000
-
-/* LED registers*/
-#define RTL8366S_LED_BLINK_REG 0x420
-#define RTL8366S_LED_BLINKRATE_BIT 0
-#define RTL8366S_LED_BLINKRATE_MSK 0x0007
-#define RTL8366S_LED_INDICATED_CONF_REG 0x421
-#define RTL8366S_LED_0_1_FORCE_REG 0x422
-#define RTL8366S_LED_2_3_FORCE_REG 0x423
-#define RTL8366S_LEDCONF_LEDFORCE 0x1F
-#define RTL8366S_LED_GROUP_MAX 4
-
-#define RTL8366S_GREEN_FEATURE_REG 0x000A
-#define RTL8366S_GREEN_FEATURE_TX_BIT 3
-#define RTL8366S_GREEN_FEATURE_TX_MSK 0x0008
-#define RTL8366S_GREEN_FEATURE_RX_BIT 4
-#define RTL8366S_GREEN_FEATURE_RX_MSK 0x0010
-
-#define RTL8366S_MODEL_ID_REG 0x5C
-#define RTL8366S_REV_ID_REG 0x5D
-#define RTL8366S_MODEL_8366SR 0x6027
-#define RTL8366S_MODEL_8366RB 0x5937
-
-#endif
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-
-#include <common.h>
-#include <net.h>
-#include <netdev.h>
-#include <miiphy.h>
-#include MII_GPIOINCLUDE
-
-#include "rtl8366.h"
-
-#ifdef DEBUG_RTL8366
- #define DBG(fmt,args...) printf (fmt ,##args)
-#else
- #define DBG(fmt,args...)
-#endif
-
-
-//-------------------------------------------------------------------
-// Soft SMI functions
-//-------------------------------------------------------------------
-
-#define DELAY 2
-
-static void smi_init(void)
-{
- MII_SDAINPUT;
- MII_SCKINPUT;
-
- MII_SETSDA(1);
- MII_SETSCK(1);
-
- udelay(20);
-}
-
-static void smi_start(void)
-{
-/*
- * rtl8366 chip needs a extra clock with
- * SDA high before start condition
- */
-
- /* set gpio pins output */
- MII_SDAOUTPUT;
- MII_SCKOUTPUT;
- udelay(DELAY);
-
- /* set initial state: SCK:0, SDA:1 */
- MII_SETSCK(0);
- MII_SETSDA(1);
- udelay(DELAY);
-
- /* toggle clock */
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSCK(0);
- udelay(DELAY);
-
- /* start condition */
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSDA(0);
- udelay(DELAY);
- MII_SETSCK(0);
- udelay(DELAY);
- MII_SETSDA(1);
-}
-
-static void smi_stop(void)
-{
-/*
- * rtl8366 chip needs a extra clock with
- * SDA high after stop condition
- */
-
- /* stop condition */
- udelay(DELAY);
- MII_SETSDA(0);
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSDA(1);
- udelay(DELAY);
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSCK(0);
- udelay(DELAY);
-
- /* toggle clock */
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSCK(0);
- udelay(DELAY);
- MII_SETSCK(1);
-
- /* set gpio pins input */
- MII_SDAINPUT;
- MII_SCKINPUT;
-}
-
-static void smi_writeBits(uint32_t data, uint8_t length)
-{
- uint8_t test;
-
- for( ; length > 0; length--) {
- udelay(DELAY);
-
- /* output data */
- test = (((data & (1 << (length - 1))) != 0) ? 1 : 0);
- MII_SETSDA(test);
- udelay(DELAY);
-
- /* toogle clock */
- MII_SETSCK(1);
- udelay(DELAY);
- MII_SETSCK(0);
- }
-}
-
-static uint32_t smi_readBits(uint8_t length)
-{
- uint32_t ret;
-
- MII_SDAINPUT;
-
- for(ret = 0 ; length > 0; length--) {
- udelay(DELAY);
-
- ret <<= 1;
-
- /* toogle clock */
- MII_SETSCK(1);
- udelay(DELAY);
- ret |= MII_GETSDA;
- MII_SETSCK(0);
- }
-
- MII_SDAOUTPUT;
-
- return ret;
-}
-
-static int smi_waitAck(void)
-{
- uint32_t retry = 0;
-
- while (smi_readBits(1)) {
- if (retry++ == 5)
- return -1;
- }
-
- return 0;
-
-}
-
-static int smi_read(uint32_t reg, uint32_t *data)
-{
- uint32_t rawData;
-
- /* send start condition */
- smi_start();
- /* send CTRL1 code: 0b1010*/
- smi_writeBits(0x0a, 4);
- /* send CTRL2 code: 0b100 */
- smi_writeBits(0x04, 3);
- /* send READ command */
- smi_writeBits(0x01, 1);
-
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
-
- /* send address low */
- smi_writeBits(reg & 0xFF, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
- /* send address high */
- smi_writeBits((reg & 0xFF00) >> 8, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
-
- /* read data low */
- rawData = (smi_readBits(8) & 0xFF);
- /* send ACK */
- smi_writeBits(0, 1);
- /* read data high */
- rawData |= (smi_readBits(8) & 0xFF) << 8;
- /* send NACK */
- smi_writeBits(1, 1);
-
- /* send stop condition */
- smi_stop();
-
- if (data)
- *data = rawData;
-
- return 0;
-}
-
-static int smi_write(uint32_t reg, uint32_t data)
-{
- /* send start condition */
- smi_start();
- /* send CTRL1 code: 0b1010*/
- smi_writeBits(0x0a, 4);
- /* send CTRL2 code: 0b100 */
- smi_writeBits(0x04, 3);
- /* send WRITE command */
- smi_writeBits(0x00, 1);
-
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
-
- /* send address low */
- smi_writeBits(reg & 0xFF, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
- /* send address high */
- smi_writeBits((reg & 0xFF00) >> 8, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
-
- /* send data low */
- smi_writeBits(data & 0xFF, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
- /* send data high */
- smi_writeBits((data & 0xFF00) >> 8, 8);
- /* wait for ACK */
- if (smi_waitAck())
- return -1;
-
- /* send stop condition */
- smi_stop();
-
- return 0;
-}
-
-
-//-------------------------------------------------------------------
-// Switch register read / write functions
-//-------------------------------------------------------------------
-static int rtl8366_readRegister(uint32_t reg, uint16_t *data)
-{
- uint32_t regData;
-
- DBG("rtl8366: read register=%#04x, data=", reg);
-
- if (smi_read(reg, ®Data)) {
- printf("\nrtl8366 smi read failed!\n");
- return -1;
- }
-
- if (data)
- *data = regData;
-
- DBG("%#04x\n", regData);
-
- return 0;
-}
-
-static int rtl8366_writeRegister(uint32_t reg, uint16_t data)
-{
- DBG("rtl8366: write register=%#04x, data=%#04x\n", reg, data);
-
- if (smi_write(reg, data)) {
- printf("rtl8366 smi write failed!\n");
- return -1;
- }
-
- return 0;
-}
-
-static int rtl8366_setRegisterBit(uint32_t reg, uint32_t bitNum, uint32_t value)
-{
- uint16_t regData;
-
- if (bitNum >= 16)
- return -1;
-
- if (rtl8366_readRegister(reg, ®Data))
- return -1;
-
- if (value)
- regData |= (1 << bitNum);
- else
- regData &= ~(1 << bitNum);
-
- if (rtl8366_writeRegister(reg, regData))
- return -1;
-
- return 0;
-}
-
-//-------------------------------------------------------------------
-// MII PHY read / write functions
-//-------------------------------------------------------------------
-static int rtl8366_getPhyReg(uint32_t phyNum, uint32_t reg, uint16_t *data)
-{
- uint16_t phyAddr, regData;
-
- if (phyNum > RTL8366S_PHY_NO_MAX) {
- printf("rtl8366s: invalid phy number!\n");
- return -1;
- }
-
- if (phyNum > RTL8366S_PHY_ADDR_MAX) {
- printf("rtl8366s: invalid phy register number!\n");
- return -1;
- }
-
- if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG,
- RTL8366S_PHY_CTRL_READ))
- return -1;
-
- phyAddr = 0x8000 | (1 << (phyNum + RTL8366S_PHY_NO_OFFSET))
- | (reg & RTL8366S_PHY_REG_MASK);
- if (rtl8366_writeRegister(phyAddr, 0))
- return -1;
-
- if (rtl8366_readRegister(RTL8366S_PHY_ACCESS_DATA_REG, ®Data))
- return -1;
-
- if (data)
- *data = regData;
-
- return 0;
-}
-
-static int rtl8366_setPhyReg(uint32_t phyNum, uint32_t reg, uint16_t data)
-{
- uint16_t phyAddr;
-
- if (phyNum > RTL8366S_PHY_NO_MAX) {
- printf("rtl8366s: invalid phy number!\n");
- return -1;
- }
-
- if (phyNum > RTL8366S_PHY_ADDR_MAX) {
- printf("rtl8366s: invalid phy register number!\n");
- return -1;
- }
-
- if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG,
- RTL8366S_PHY_CTRL_WRITE))
- return -1;
-
- phyAddr = 0x8000 | (1 << (phyNum + RTL8366S_PHY_NO_OFFSET))
- | (reg & RTL8366S_PHY_REG_MASK);
- if (rtl8366_writeRegister(phyAddr, data))
- return -1;
-
- return 0;
-}
-
-static int rtl8366_miiread(char *devname, uchar phy_adr, uchar reg, ushort *data)
-{
- uint16_t regData;
-
- DBG("rtl8366_miiread: devname=%s, addr=%#02x, reg=%#02x\n",
- devname, phy_adr, reg);
-
- if (strcmp(devname, RTL8366_DEVNAME) != 0)
- return -1;
-
- if (rtl8366_getPhyReg(phy_adr, reg, ®Data)) {
- printf("rtl8366_miiread: write failed!\n");
- return -1;
- }
-
- if (data)
- *data = regData;
-
- return 0;
-}
-
-static int rtl8366_miiwrite(char *devname, uchar phy_adr, uchar reg, ushort data)
-{
- DBG("rtl8366_miiwrite: devname=%s, addr=%#02x, reg=%#02x, data=%#04x\n",
- devname, phy_adr, reg, data);
-
- if (strcmp(devname, RTL8366_DEVNAME) != 0)
- return -1;
-
- if (rtl8366_setPhyReg(phy_adr, reg, data)) {
- printf("rtl8366_miiwrite: write failed!\n");
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366_mii_register(bd_t *bis)
-{
- miiphy_register(strdup(RTL8366_DEVNAME), rtl8366_miiread,
- rtl8366_miiwrite);
-
- return 0;
-}
-
-
-//-------------------------------------------------------------------
-// Switch management functions
-//-------------------------------------------------------------------
-
-int rtl8366s_setGreenFeature(uint32_t tx, uint32_t rx)
-{
- if (rtl8366_setRegisterBit(RTL8366S_GREEN_FEATURE_REG,
- RTL8366S_GREEN_FEATURE_TX_BIT, tx))
- return -1;
-
- if (rtl8366_setRegisterBit(RTL8366S_GREEN_FEATURE_REG,
- RTL8366S_GREEN_FEATURE_RX_BIT, rx))
- return -1;
-
- return 0;
-}
-
-int rtl8366s_setPowerSaving(uint32_t phyNum, uint32_t enabled)
-{
- uint16_t regData;
-
- if (phyNum > RTL8366S_PHY_NO_MAX)
- return -1;
-
- if (rtl8366_getPhyReg(phyNum, 12, ®Data))
- return -1;
-
- if (enabled)
- regData |= (1 << 12);
- else
- regData &= ~(1 << 12);
-
- if (rtl8366_setPhyReg(phyNum, 12, regData))
- return -1;
-
- return 0;
-}
-
-int rtl8366s_setGreenEthernet(uint32_t greenFeature, uint32_t powerSaving)
-{
- uint32_t phyNum, i;
- uint16_t regData;
-
- const uint16_t greenSettings[][2] =
- {
- {0xBE5B,0x3500},
- {0xBE5C,0xB975},
- {0xBE5D,0xB9B9},
- {0xBE77,0xA500},
- {0xBE78,0x5A78},
- {0xBE79,0x6478}
- };
-
- if (rtl8366_readRegister(RTL8366S_MODEL_ID_REG, ®Data))
- return -1;
-
- switch (regData)
- {
- case 0x0000:
- for (i = 0; i < 6; i++) {
- if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, RTL8366S_PHY_CTRL_WRITE))
- return -1;
- if (rtl8366_writeRegister(greenSettings[i][0], greenSettings[i][1]))
- return -1;
- }
- break;
-
- case RTL8366S_MODEL_8366SR:
- if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, RTL8366S_PHY_CTRL_WRITE))
- return -1;
- if (rtl8366_writeRegister(greenSettings[0][0], greenSettings[0][1]))
- return -1;
- break;
-
- default:
- printf("rtl8366s_initChip: unsupported chip found!\n");
- return -1;
- }
-
- if (rtl8366s_setGreenFeature(greenFeature, powerSaving))
- return -1;
-
- for (phyNum = 0; phyNum <= RTL8366S_PHY_NO_MAX; phyNum++) {
- if (rtl8366s_setPowerSaving(phyNum, powerSaving))
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366s_setCPUPortMask(uint8_t port, uint32_t enabled)
-{
- if(port >= 6){
- printf("rtl8366s_setCPUPortMask: invalid port number\n");
- return -1;
- }
-
- return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG, port, enabled);
-}
-
-int rtl8366s_setCPUDisableInsTag(uint32_t enable)
-{
- return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG,
- RTL8366S_CPU_INSTAG_BIT, enable);
-}
-
-int rtl8366s_setCPUDropUnda(uint32_t enable)
-{
- return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG,
- RTL8366S_CPU_DRP_BIT, enable);
-}
-
-int rtl8366s_setCPUPort(uint8_t port, uint32_t noTag, uint32_t dropUnda)
-{
- uint32_t i;
-
- if(port >= 6){
- printf("rtl8366s_setCPUPort: invalid port number\n");
- return -1;
- }
-
- /* reset register */
- for(i = 0; i < 6; i++)
- {
- if(rtl8366s_setCPUPortMask(i, 0)){
- printf("rtl8366s_setCPUPort: rtl8366s_setCPUPortMask failed\n");
- return -1;
- }
- }
-
- if(rtl8366s_setCPUPortMask(port, 1)){
- printf("rtl8366s_setCPUPort: rtl8366s_setCPUPortMask failed\n");
- return -1;
- }
-
- if(rtl8366s_setCPUDisableInsTag(noTag)){
- printf("rtl8366s_setCPUPort: rtl8366s_setCPUDisableInsTag fail\n");
- return -1;
- }
-
- if(rtl8366s_setCPUDropUnda(dropUnda)){
- printf("rtl8366s_setCPUPort: rtl8366s_setCPUDropUnda fail\n");
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366s_setLedConfig(uint32_t ledNum, uint8_t config)
-{
- uint16_t regData;
-
- if(ledNum >= RTL8366S_LED_GROUP_MAX) {
- DBG("rtl8366s_setLedConfig: invalid led group\n");
- return -1;
- }
-
- if(config > RTL8366S_LEDCONF_LEDFORCE) {
- DBG("rtl8366s_setLedConfig: invalid led config\n");
- return -1;
- }
-
- if (rtl8366_readRegister(RTL8366S_LED_INDICATED_CONF_REG, ®Data)) {
- printf("rtl8366s_setLedConfig: failed to get led register!\n");
- return -1;
- }
-
- regData &= ~(0xF << (ledNum * 4));
- regData |= config << (ledNum * 4);
-
- if (rtl8366_writeRegister(RTL8366S_LED_INDICATED_CONF_REG, regData)) {
- printf("rtl8366s_setLedConfig: failed to set led register!\n");
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366s_getLedConfig(uint32_t ledNum, uint8_t *config)
-{
- uint16_t regData;
-
- if(ledNum >= RTL8366S_LED_GROUP_MAX) {
- DBG("rtl8366s_getLedConfig: invalid led group\n");
- return -1;
- }
-
- if (rtl8366_readRegister(RTL8366S_LED_INDICATED_CONF_REG, ®Data)) {
- printf("rtl8366s_getLedConfig: failed to get led register!\n");
- return -1;
- }
-
- if (config)
- *config = (regData >> (ledNum * 4)) & 0xF;
-
- return 0;
-}
-
-int rtl8366s_setLedForceValue(uint32_t group0, uint32_t group1,
- uint32_t group2, uint32_t group3)
-{
- uint16_t regData;
-
- regData = (group0 & 0x3F) | ((group1 & 0x3F) << 6);
- if (rtl8366_writeRegister(RTL8366S_LED_0_1_FORCE_REG, regData)) {
- printf("rtl8366s_setLedForceValue: failed to set led register!\n");
- return -1;
- }
-
- regData = (group2 & 0x3F) | ((group3 & 0x3F) << 6);
- if (rtl8366_writeRegister(RTL8366S_LED_2_3_FORCE_REG, regData)) {
- printf("rtl8366s_setLedForceValue: failed to set led register!\n");
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366s_initChip(void)
-{
- uint32_t ledGroup, i = 0;
- uint16_t regData;
- uint8_t ledData[RTL8366S_LED_GROUP_MAX];
- const uint16_t (*chipData)[2];
-
- const uint16_t chipB[][2] =
- {
- {0x0000, 0x0038},{0x8100, 0x1B37},{0xBE2E, 0x7B9F},{0xBE2B, 0xA4C8},
- {0xBE74, 0xAD14},{0xBE2C, 0xDC00},{0xBE69, 0xD20F},{0xBE3B, 0xB414},
- {0xBE24, 0x0000},{0xBE23, 0x00A1},{0xBE22, 0x0008},{0xBE21, 0x0120},
- {0xBE20, 0x1000},{0xBE24, 0x0800},{0xBE24, 0x0000},{0xBE24, 0xF000},
- {0xBE23, 0xDF01},{0xBE22, 0xDF20},{0xBE21, 0x101A},{0xBE20, 0xA0FF},
- {0xBE24, 0xF800},{0xBE24, 0xF000},{0x0242, 0x02BF},{0x0245, 0x02BF},
- {0x0248, 0x02BF},{0x024B, 0x02BF},{0x024E, 0x02BF},{0x0251, 0x02BF},
- {0x0230, 0x0A32},{0x0233, 0x0A32},{0x0236, 0x0A32},{0x0239, 0x0A32},
- {0x023C, 0x0A32},{0x023F, 0x0A32},{0x0254, 0x0A3F},{0x0255, 0x0064},
- {0x0256, 0x0A3F},{0x0257, 0x0064},{0x0258, 0x0A3F},{0x0259, 0x0064},
- {0x025A, 0x0A3F},{0x025B, 0x0064},{0x025C, 0x0A3F},{0x025D, 0x0064},
- {0x025E, 0x0A3F},{0x025F, 0x0064},{0x0260, 0x0178},{0x0261, 0x01F4},
- {0x0262, 0x0320},{0x0263, 0x0014},{0x021D, 0x9249},{0x021E, 0x0000},
- {0x0100, 0x0004},{0xBE4A, 0xA0B4},{0xBE40, 0x9C00},{0xBE41, 0x501D},
- {0xBE48, 0x3602},{0xBE47, 0x8051},{0xBE4C, 0x6465},{0x8000, 0x1F00},
- {0x8001, 0x000C},{0x8008, 0x0000},{0x8007, 0x0000},{0x800C, 0x00A5},
- {0x8101, 0x02BC},{0xBE53, 0x0005},{0x8E45, 0xAFE8},{0x8013, 0x0005},
- {0xBE4B, 0x6700},{0x800B, 0x7000},{0xBE09, 0x0E00},
- {0xFFFF, 0xABCD}
- };
-
- const uint16_t chipDefault[][2] =
- {
- {0x0242, 0x02BF},{0x0245, 0x02BF},{0x0248, 0x02BF},{0x024B, 0x02BF},
- {0x024E, 0x02BF},{0x0251, 0x02BF},
- {0x0254, 0x0A3F},{0x0256, 0x0A3F},{0x0258, 0x0A3F},{0x025A, 0x0A3F},
- {0x025C, 0x0A3F},{0x025E, 0x0A3F},
- {0x0263, 0x007C},{0x0100, 0x0004},
- {0xBE5B, 0x3500},{0x800E, 0x200F},{0xBE1D, 0x0F00},{0x8001, 0x5011},
- {0x800A, 0xA2F4},{0x800B, 0x17A3},{0xBE4B, 0x17A3},{0xBE41, 0x5011},
- {0xBE17, 0x2100},{0x8000, 0x8304},{0xBE40, 0x8304},{0xBE4A, 0xA2F4},
- {0x800C, 0xA8D5},{0x8014, 0x5500},{0x8015, 0x0004},{0xBE4C, 0xA8D5},
- {0xBE59, 0x0008},{0xBE09, 0x0E00},{0xBE36, 0x1036},{0xBE37, 0x1036},
- {0x800D, 0x00FF},{0xBE4D, 0x00FF},
- {0xFFFF, 0xABCD}
- };
-
- DBG("rtl8366s_initChip\n");
-
- /* save current led config and set to led force */
- for (ledGroup = 0; ledGroup < RTL8366S_LED_GROUP_MAX; ledGroup++) {
- if (rtl8366s_getLedConfig(ledGroup, &ledData[ledGroup]))
- return -1;
-
- if (rtl8366s_setLedConfig(ledGroup, RTL8366S_LEDCONF_LEDFORCE))
- return -1;
- }
-
- if (rtl8366s_setLedForceValue(0,0,0,0))
- return -1;
-
- if (rtl8366_readRegister(RTL8366S_MODEL_ID_REG, ®Data))
- return -1;
-
- switch (regData)
- {
- case 0x0000:
- chipData = chipB;
- break;
-
- case RTL8366S_MODEL_8366SR:
- chipData = chipDefault;
- break;
-
- default:
- printf("rtl8366s_initChip: unsupported chip found!\n");
- return -1;
- }
-
- DBG("rtl8366s_initChip: found %x chip\n", regData);
-
- while ((chipData[i][0] != 0xFFFF) && (chipData[i][1] != 0xABCD)) {
-
- /* phy settings*/
- if ((chipData[i][0] & 0xBE00) == 0xBE00) {
- if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG,
- RTL8366S_PHY_CTRL_WRITE))
- return -1;
- }
-
- if (rtl8366_writeRegister(chipData[i][0], chipData[i][1]))
- return -1;
-
- i++;
- }
-
- /* chip needs some time */
- udelay(100 * 1000);
-
- /* restore led config */
- for (ledGroup = 0; ledGroup < RTL8366S_LED_GROUP_MAX; ledGroup++) {
- if (rtl8366s_setLedConfig(ledGroup, ledData[ledGroup]))
- return -1;
- }
-
- return 0;
-}
-
-int rtl8366s_initialize(void)
-{
- uint16_t regData;
-
- DBG("rtl8366s_initialize: start setup\n");
-
- smi_init();
-
- rtl8366_readRegister(RTL8366S_CHIP_ID_REG, ®Data);
- DBG("Realtek 8366SR switch ID %#04x\n", regData);
-
- if (regData != 0x8366) {
- printf("rtl8366s_initialize: found unsupported switch\n");
- return -1;
- }
-
- if (rtl8366s_initChip()) {
- printf("rtl8366s_initialize: init chip failed\n");
- return -1;
- }
-
- if (rtl8366s_setGreenEthernet(1, 1)) {
- printf("rtl8366s_initialize: set green ethernet failed\n");
- return -1;
- }
-
- /* Set port 5 noTag and don't dropUnda */
- if (rtl8366s_setCPUPort(5, 1, 0)) {
- printf("rtl8366s_initialize: set CPU port failed\n");
- return -1;
- }
-
- return 0;
-}
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <malloc.h>
-#include <spi.h>
-
-#include <asm/addrspace.h>
-#include <asm/types.h>
-#include <asm/ar71xx.h>
-
-/*-----------------------------------------------------------------------
- * Definitions
- */
-
-#ifdef DEBUG_SPI
-#define PRINTD(fmt,args...) printf (fmt ,##args)
-#else
-#define PRINTD(fmt,args...)
-#endif
-
-struct ar71xx_spi_slave {
- struct spi_slave slave;
- unsigned int mode;
-};
-
-static inline struct ar71xx_spi_slave *to_ar71xx_spi(struct spi_slave *slave)
-{
- return container_of(slave, struct ar71xx_spi_slave, slave);
-}
-
-/*=====================================================================*/
-/* Public Functions */
-/*=====================================================================*/
-
-/*-----------------------------------------------------------------------
- * Initialization
- */
-
-void spi_init()
-{
- PRINTD("ar71xx_spi: spi_init");
-
- // Init SPI Hardware, disable remap, set clock
- __raw_writel(0x43, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_CTRL));
-
- PRINTD(" ---> out\n");
-}
-
-struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
- unsigned int max_hz, unsigned int mode)
-{
- struct ar71xx_spi_slave *ss;
-
- PRINTD("ar71xx_spi: spi_setup_slave");
-
- if ((bus != 0) || (cs > 2))
- return NULL;
-
- ss = malloc(sizeof(struct ar71xx_spi_slave));
- if (!ss)
- return NULL;
-
- ss->slave.bus = bus;
- ss->slave.cs = cs;
- ss->mode = mode;
-
- /* TODO: Use max_hz to limit the SCK rate */
-
- PRINTD(" ---> out\n");
-
- return &ss->slave;
-}
-
-void spi_free_slave(struct spi_slave *slave)
-{
- struct ar71xx_spi_slave *ss = to_ar71xx_spi(slave);
-
- free(ss);
-}
-
-int spi_claim_bus(struct spi_slave *slave)
-{
-
- return 0;
-}
-
-void spi_release_bus(struct spi_slave *slave)
-{
-
-}
-
-int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
- void *din, unsigned long flags)
-{
- struct ar71xx_spi_slave *ss = to_ar71xx_spi(slave);
- uint8_t *rx = din;
- const uint8_t *tx = dout;
- uint8_t curbyte, curbitlen, restbits;
- uint32_t bytes = bitlen / 8;
- uint32_t out;
- uint32_t in;
-
- PRINTD("ar71xx_spi: spi_xfer: slave:%p bitlen:%08x dout:%p din:%p flags:%08x\n", slave, bitlen, dout, din, flags);
-
- if (flags & SPI_XFER_BEGIN) {
- __raw_writel(SPI_FS_GPIO, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_FS));
- __raw_writel(SPI_IOC_CS_ALL, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC));
- }
-
- restbits = (bitlen % 8);
- if (restbits != 0)
- bytes++;
-
- // enable chip select
- out = SPI_IOC_CS_ALL & ~(SPI_IOC_CS(slave->cs));
-
- while (bytes--) {
-
- curbyte = 0;
- if (tx) {
- curbyte = *tx++;
- }
-
- if (restbits != 0) {
- curbitlen = restbits;
- curbyte <<= 8 - restbits;
- } else {
- curbitlen = 8;
- }
-
- PRINTD("ar71xx_spi: sending: data:%02x length:%d\n", curbyte, curbitlen);
-
- /* clock starts at inactive polarity */
- for (curbyte <<= (8 - curbitlen); curbitlen; curbitlen--) {
-
- if (curbyte & (1 << 7))
- out |= SPI_IOC_DO;
- else
- out &= ~(SPI_IOC_DO);
-
- /* setup MSB (to slave) on trailing edge */
- __raw_writel(out, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC));
-
- __raw_writel(out | SPI_IOC_CLK, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC));
-
- curbyte <<= 1;
- }
-
- in = __raw_readl(KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_RDS));
- PRINTD("ar71xx_spi: received:%02x\n", in);
-
- if (rx) {
- if (restbits == 0) {
- *rx++ = in;
- } else {
- *rx++ = (in << (8 - restbits));
- }
- }
- }
-
- if (flags & SPI_XFER_END) {
- __raw_writel(SPI_IOC_CS(slave->cs), KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC));
- __raw_writel(SPI_IOC_CS_ALL, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC));
- __raw_writel(0, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_FS));
- }
-
- PRINTD(" ---> out\n");
-
- return 0;
-}
+++ /dev/null
-/*
- * Atheros AR71xx SoC specific definitions
- *
- * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * Parts of this file are based on Atheros' 2.6.15 BSP
- *
- * 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.
- */
-
-#ifndef __ASM_MACH_AR71XX_H
-#define __ASM_MACH_AR71XX_H
-
-#include <linux/types.h>
-#include <asm/io.h>
-#include <linux/bitops.h>
-
-#ifndef __ASSEMBLER__
-
-#define BIT(x) (1<<(x))
-
-#define AR71XX_PCI_MEM_BASE 0x10000000
-#define AR71XX_PCI_MEM_SIZE 0x08000000
-#define AR71XX_APB_BASE 0x18000000
-#define AR71XX_GE0_BASE 0x19000000
-#define AR71XX_GE0_SIZE 0x01000000
-#define AR71XX_GE1_BASE 0x1a000000
-#define AR71XX_GE1_SIZE 0x01000000
-#define AR71XX_EHCI_BASE 0x1b000000
-#define AR71XX_EHCI_SIZE 0x01000000
-#define AR71XX_OHCI_BASE 0x1c000000
-#define AR71XX_OHCI_SIZE 0x01000000
-#define AR7240_OHCI_BASE 0x1b000000
-#define AR7240_OHCI_SIZE 0x01000000
-#define AR71XX_SPI_BASE 0x1f000000
-#define AR71XX_SPI_SIZE 0x01000000
-
-#define AR71XX_DDR_CTRL_BASE (AR71XX_APB_BASE + 0x00000000)
-#define AR71XX_DDR_CTRL_SIZE 0x10000
-#define AR71XX_CPU_BASE (AR71XX_APB_BASE + 0x00010000)
-#define AR71XX_UART_BASE (AR71XX_APB_BASE + 0x00020000)
-#define AR71XX_UART_SIZE 0x10000
-#define AR71XX_USB_CTRL_BASE (AR71XX_APB_BASE + 0x00030000)
-#define AR71XX_USB_CTRL_SIZE 0x10000
-#define AR71XX_GPIO_BASE (AR71XX_APB_BASE + 0x00040000)
-#define AR71XX_GPIO_SIZE 0x10000
-#define AR71XX_PLL_BASE (AR71XX_APB_BASE + 0x00050000)
-#define AR71XX_PLL_SIZE 0x10000
-#define AR71XX_RESET_BASE (AR71XX_APB_BASE + 0x00060000)
-#define AR71XX_RESET_SIZE 0x10000
-#define AR71XX_MII_BASE (AR71XX_APB_BASE + 0x00070000)
-#define AR71XX_MII_SIZE 0x10000
-#define AR71XX_SLIC_BASE (AR71XX_APB_BASE + 0x00090000)
-#define AR71XX_SLIC_SIZE 0x10000
-#define AR71XX_DMA_BASE (AR71XX_APB_BASE + 0x000A0000)
-#define AR71XX_DMA_SIZE 0x10000
-#define AR71XX_STEREO_BASE (AR71XX_APB_BASE + 0x000B0000)
-#define AR71XX_STEREO_SIZE 0x10000
-
-#define AR724X_PCI_CRP_BASE (AR71XX_APB_BASE + 0x000C0000)
-#define AR724X_PCI_CRP_SIZE 0x100
-
-#define AR724X_PCI_CTRL_BASE (AR71XX_APB_BASE + 0x000F0000)
-#define AR724X_PCI_CTRL_SIZE 0x100
-
-#define AR91XX_WMAC_BASE (AR71XX_APB_BASE + 0x000C0000)
-#define AR91XX_WMAC_SIZE 0x30000
-
-#define AR71XX_MEM_SIZE_MIN 0x0200000
-#define AR71XX_MEM_SIZE_MAX 0x10000000
-
-#define AR71XX_CPU_IRQ_BASE 0
-#define AR71XX_MISC_IRQ_BASE 8
-#define AR71XX_MISC_IRQ_COUNT 8
-#define AR71XX_GPIO_IRQ_BASE 16
-#define AR71XX_GPIO_IRQ_COUNT 32
-#define AR71XX_PCI_IRQ_BASE 48
-#define AR71XX_PCI_IRQ_COUNT 8
-
-#define AR71XX_CPU_IRQ_IP2 (AR71XX_CPU_IRQ_BASE + 2)
-#define AR71XX_CPU_IRQ_USB (AR71XX_CPU_IRQ_BASE + 3)
-#define AR71XX_CPU_IRQ_GE0 (AR71XX_CPU_IRQ_BASE + 4)
-#define AR71XX_CPU_IRQ_GE1 (AR71XX_CPU_IRQ_BASE + 5)
-#define AR71XX_CPU_IRQ_MISC (AR71XX_CPU_IRQ_BASE + 6)
-#define AR71XX_CPU_IRQ_TIMER (AR71XX_CPU_IRQ_BASE + 7)
-
-#define AR71XX_MISC_IRQ_TIMER (AR71XX_MISC_IRQ_BASE + 0)
-#define AR71XX_MISC_IRQ_ERROR (AR71XX_MISC_IRQ_BASE + 1)
-#define AR71XX_MISC_IRQ_GPIO (AR71XX_MISC_IRQ_BASE + 2)
-#define AR71XX_MISC_IRQ_UART (AR71XX_MISC_IRQ_BASE + 3)
-#define AR71XX_MISC_IRQ_WDOG (AR71XX_MISC_IRQ_BASE + 4)
-#define AR71XX_MISC_IRQ_PERFC (AR71XX_MISC_IRQ_BASE + 5)
-#define AR71XX_MISC_IRQ_OHCI (AR71XX_MISC_IRQ_BASE + 6)
-#define AR71XX_MISC_IRQ_DMA (AR71XX_MISC_IRQ_BASE + 7)
-
-#define AR71XX_GPIO_IRQ(_x) (AR71XX_GPIO_IRQ_BASE + (_x))
-
-#define AR71XX_PCI_IRQ_DEV0 (AR71XX_PCI_IRQ_BASE + 0)
-#define AR71XX_PCI_IRQ_DEV1 (AR71XX_PCI_IRQ_BASE + 1)
-#define AR71XX_PCI_IRQ_DEV2 (AR71XX_PCI_IRQ_BASE + 2)
-#define AR71XX_PCI_IRQ_CORE (AR71XX_PCI_IRQ_BASE + 4)
-
-extern u32 ar71xx_ahb_freq;
-extern u32 ar71xx_cpu_freq;
-extern u32 ar71xx_ddr_freq;
-
-enum ar71xx_soc_type {
- AR71XX_SOC_UNKNOWN,
- AR71XX_SOC_AR7130,
- AR71XX_SOC_AR7141,
- AR71XX_SOC_AR7161,
- AR71XX_SOC_AR7240,
- AR71XX_SOC_AR7241,
- AR71XX_SOC_AR7242,
- AR71XX_SOC_AR9130,
- AR71XX_SOC_AR9132
-};
-
-extern enum ar71xx_soc_type ar71xx_soc;
-
-/*
- * PLL block
- */
-#define AR71XX_PLL_REG_CPU_CONFIG 0x00
-#define AR71XX_PLL_REG_SEC_CONFIG 0x04
-#define AR71XX_PLL_REG_ETH0_INT_CLOCK 0x10
-#define AR71XX_PLL_REG_ETH1_INT_CLOCK 0x14
-
-#define AR71XX_PLL_DIV_SHIFT 3
-#define AR71XX_PLL_DIV_MASK 0x1f
-#define AR71XX_CPU_DIV_SHIFT 16
-#define AR71XX_CPU_DIV_MASK 0x3
-#define AR71XX_DDR_DIV_SHIFT 18
-#define AR71XX_DDR_DIV_MASK 0x3
-#define AR71XX_AHB_DIV_SHIFT 20
-#define AR71XX_AHB_DIV_MASK 0x7
-
-#define AR71XX_ETH0_PLL_SHIFT 17
-#define AR71XX_ETH1_PLL_SHIFT 19
-
-#define AR724X_PLL_REG_CPU_CONFIG 0x00
-#define AR724X_PLL_REG_PCIE_CONFIG 0x18
-
-#define AR724X_PLL_DIV_SHIFT 0
-#define AR724X_PLL_DIV_MASK 0x3ff
-#define AR724X_PLL_REF_DIV_SHIFT 10
-#define AR724X_PLL_REF_DIV_MASK 0xf
-#define AR724X_AHB_DIV_SHIFT 19
-#define AR724X_AHB_DIV_MASK 0x1
-#define AR724X_DDR_DIV_SHIFT 22
-#define AR724X_DDR_DIV_MASK 0x3
-
-#define AR91XX_PLL_REG_CPU_CONFIG 0x00
-#define AR91XX_PLL_REG_ETH_CONFIG 0x04
-#define AR91XX_PLL_REG_ETH0_INT_CLOCK 0x14
-#define AR91XX_PLL_REG_ETH1_INT_CLOCK 0x18
-
-#define AR91XX_PLL_DIV_SHIFT 0
-#define AR91XX_PLL_DIV_MASK 0x3ff
-#define AR91XX_DDR_DIV_SHIFT 22
-#define AR91XX_DDR_DIV_MASK 0x3
-#define AR91XX_AHB_DIV_SHIFT 19
-#define AR91XX_AHB_DIV_MASK 0x1
-
-#define AR91XX_ETH0_PLL_SHIFT 20
-#define AR91XX_ETH1_PLL_SHIFT 22
-
-// extern void __iomem *ar71xx_pll_base;
-
-// static inline void ar71xx_pll_wr(unsigned reg, u32 val)
-// {
- // __raw_writel(val, ar71xx_pll_base + reg);
-// }
-
-// static inline u32 ar71xx_pll_rr(unsigned reg)
-// {
- // return __raw_readl(ar71xx_pll_base + reg);
-// }
-
-/*
- * USB_CONFIG block
- */
-#define USB_CTRL_REG_FLADJ 0x00
-#define USB_CTRL_REG_CONFIG 0x04
-
-// extern void __iomem *ar71xx_usb_ctrl_base;
-
-// static inline void ar71xx_usb_ctrl_wr(unsigned reg, u32 val)
-// {
- // __raw_writel(val, ar71xx_usb_ctrl_base + reg);
-// }
-
-// static inline u32 ar71xx_usb_ctrl_rr(unsigned reg)
-// {
- // return __raw_readl(ar71xx_usb_ctrl_base + reg);
-// }
-
-/*
- * GPIO block
- */
-#define GPIO_REG_OE 0x00
-#define GPIO_REG_IN 0x04
-#define GPIO_REG_OUT 0x08
-#define GPIO_REG_SET 0x0c
-#define GPIO_REG_CLEAR 0x10
-#define GPIO_REG_INT_MODE 0x14
-#define GPIO_REG_INT_TYPE 0x18
-#define GPIO_REG_INT_POLARITY 0x1c
-#define GPIO_REG_INT_PENDING 0x20
-#define GPIO_REG_INT_ENABLE 0x24
-#define GPIO_REG_FUNC 0x28
-
-#define AR71XX_GPIO_FUNC_STEREO_EN BIT(17)
-#define AR71XX_GPIO_FUNC_SLIC_EN BIT(16)
-#define AR71XX_GPIO_FUNC_SPI_CS2_EN BIT(13)
-#define AR71XX_GPIO_FUNC_SPI_CS1_EN BIT(12)
-#define AR71XX_GPIO_FUNC_UART_EN BIT(8)
-#define AR71XX_GPIO_FUNC_USB_OC_EN BIT(4)
-#define AR71XX_GPIO_FUNC_USB_CLK_EN BIT(0)
-
-#define AR71XX_GPIO_COUNT 16
-
-#define AR724X_GPIO_FUNC_GE0_MII_CLK_EN BIT(19)
-#define AR724X_GPIO_FUNC_SPI_EN BIT(18)
-#define AR724X_GPIO_FUNC_SPI_CS_EN2 BIT(14)
-#define AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13)
-#define AR724X_GPIO_FUNC_CLK_OBS5_EN BIT(12)
-#define AR724X_GPIO_FUNC_CLK_OBS4_EN BIT(11)
-#define AR724X_GPIO_FUNC_CLK_OBS3_EN BIT(10)
-#define AR724X_GPIO_FUNC_CLK_OBS2_EN BIT(9)
-#define AR724X_GPIO_FUNC_CLK_OBS1_EN BIT(8)
-#define AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7)
-#define AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6)
-#define AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5)
-#define AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4)
-#define AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3)
-#define AR724X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2)
-#define AR724X_GPIO_FUNC_UART_EN BIT(1)
-#define AR724X_GPIO_FUNC_JTAG_DISABLE BIT(0)
-
-#define AR724X_GPIO_COUNT 18
-
-#define AR91XX_GPIO_FUNC_WMAC_LED_EN BIT(22)
-#define AR91XX_GPIO_FUNC_EXP_PORT_CS_EN BIT(21)
-#define AR91XX_GPIO_FUNC_I2S_REFCLKEN BIT(20)
-#define AR91XX_GPIO_FUNC_I2S_MCKEN BIT(19)
-#define AR91XX_GPIO_FUNC_I2S1_EN BIT(18)
-#define AR91XX_GPIO_FUNC_I2S0_EN BIT(17)
-#define AR91XX_GPIO_FUNC_SLIC_EN BIT(16)
-#define AR91XX_GPIO_FUNC_UART_RTSCTS_EN BIT(9)
-#define AR91XX_GPIO_FUNC_UART_EN BIT(8)
-#define AR91XX_GPIO_FUNC_USB_CLK_EN BIT(4)
-
-#define AR91XX_GPIO_COUNT 22
-
-// extern void __iomem *ar71xx_gpio_base;
-
-// static inline void ar71xx_gpio_wr(unsigned reg, u32 value)
-// {
- // __raw_writel(value, ar71xx_gpio_base + reg);
-// }
-
-// static inline u32 ar71xx_gpio_rr(unsigned reg)
-// {
- // return __raw_readl(ar71xx_gpio_base + reg);
-// }
-
-// void ar71xx_gpio_init(void) __init;
-// void ar71xx_gpio_function_enable(u32 mask);
-// void ar71xx_gpio_function_disable(u32 mask);
-// void ar71xx_gpio_function_setup(u32 set, u32 clear);
-
-/*
- * DDR_CTRL block
- */
-#define AR71XX_DDR_REG_PCI_WIN0 0x7c
-#define AR71XX_DDR_REG_PCI_WIN1 0x80
-#define AR71XX_DDR_REG_PCI_WIN2 0x84
-#define AR71XX_DDR_REG_PCI_WIN3 0x88
-#define AR71XX_DDR_REG_PCI_WIN4 0x8c
-#define AR71XX_DDR_REG_PCI_WIN5 0x90
-#define AR71XX_DDR_REG_PCI_WIN6 0x94
-#define AR71XX_DDR_REG_PCI_WIN7 0x98
-#define AR71XX_DDR_REG_FLUSH_GE0 0x9c
-#define AR71XX_DDR_REG_FLUSH_GE1 0xa0
-#define AR71XX_DDR_REG_FLUSH_USB 0xa4
-#define AR71XX_DDR_REG_FLUSH_PCI 0xa8
-
-#define AR724X_DDR_REG_FLUSH_GE0 0x7c
-#define AR724X_DDR_REG_FLUSH_GE1 0x80
-#define AR724X_DDR_REG_FLUSH_USB 0x84
-#define AR724X_DDR_REG_FLUSH_PCIE 0x88
-
-#define AR91XX_DDR_REG_FLUSH_GE0 0x7c
-#define AR91XX_DDR_REG_FLUSH_GE1 0x80
-#define AR91XX_DDR_REG_FLUSH_USB 0x84
-#define AR91XX_DDR_REG_FLUSH_WMAC 0x88
-
-#define PCI_WIN0_OFFS 0x10000000
-#define PCI_WIN1_OFFS 0x11000000
-#define PCI_WIN2_OFFS 0x12000000
-#define PCI_WIN3_OFFS 0x13000000
-#define PCI_WIN4_OFFS 0x14000000
-#define PCI_WIN5_OFFS 0x15000000
-#define PCI_WIN6_OFFS 0x16000000
-#define PCI_WIN7_OFFS 0x07000000
-
-// extern void __iomem *ar71xx_ddr_base;
-
-// static inline void ar71xx_ddr_wr(unsigned reg, u32 val)
-// {
- // __raw_writel(val, ar71xx_ddr_base + reg);
-// }
-
-// static inline u32 ar71xx_ddr_rr(unsigned reg)
-// {
- // return __raw_readl(ar71xx_ddr_base + reg);
-// }
-
-// void ar71xx_ddr_flush(u32 reg);
-
-/*
- * PCI block
- */
-#define AR71XX_PCI_CFG_BASE (AR71XX_PCI_MEM_BASE + PCI_WIN7_OFFS + 0x10000)
-#define AR71XX_PCI_CFG_SIZE 0x100
-
-#define PCI_REG_CRP_AD_CBE 0x00
-#define PCI_REG_CRP_WRDATA 0x04
-#define PCI_REG_CRP_RDDATA 0x08
-#define PCI_REG_CFG_AD 0x0c
-#define PCI_REG_CFG_CBE 0x10
-#define PCI_REG_CFG_WRDATA 0x14
-#define PCI_REG_CFG_RDDATA 0x18
-#define PCI_REG_PCI_ERR 0x1c
-#define PCI_REG_PCI_ERR_ADDR 0x20
-#define PCI_REG_AHB_ERR 0x24
-#define PCI_REG_AHB_ERR_ADDR 0x28
-
-#define PCI_CRP_CMD_WRITE 0x00010000
-#define PCI_CRP_CMD_READ 0x00000000
-#define PCI_CFG_CMD_READ 0x0000000a
-#define PCI_CFG_CMD_WRITE 0x0000000b
-
-#define PCI_IDSEL_ADL_START 17
-
-#define AR724X_PCI_CFG_BASE (AR71XX_PCI_MEM_BASE + 0x4000000)
-#define AR724X_PCI_CFG_SIZE 0x1000
-
-#define AR724X_PCI_REG_APP 0x00
-#define AR724X_PCI_REG_RESET 0x18
-#define AR724X_PCI_REG_INT_STATUS 0x4c
-#define AR724X_PCI_REG_INT_MASK 0x50
-
-#define AR724X_PCI_APP_LTSSM_ENABLE BIT(0)
-#define AR724X_PCI_RESET_LINK_UP BIT(0)
-
-#define AR724X_PCI_INT_DEV0 BIT(14)
-
-/*
- * RESET block
- */
-#define AR71XX_RESET_REG_TIMER 0x00
-#define AR71XX_RESET_REG_TIMER_RELOAD 0x04
-#define AR71XX_RESET_REG_WDOG_CTRL 0x08
-#define AR71XX_RESET_REG_WDOG 0x0c
-#define AR71XX_RESET_REG_MISC_INT_STATUS 0x10
-#define AR71XX_RESET_REG_MISC_INT_ENABLE 0x14
-#define AR71XX_RESET_REG_PCI_INT_STATUS 0x18
-#define AR71XX_RESET_REG_PCI_INT_ENABLE 0x1c
-#define AR71XX_RESET_REG_GLOBAL_INT_STATUS 0x20
-#define AR71XX_RESET_REG_RESET_MODULE 0x24
-#define AR71XX_RESET_REG_PERFC_CTRL 0x2c
-#define AR71XX_RESET_REG_PERFC0 0x30
-#define AR71XX_RESET_REG_PERFC1 0x34
-#define AR71XX_RESET_REG_REV_ID 0x90
-
-#define AR91XX_RESET_REG_GLOBAL_INT_STATUS 0x18
-#define AR91XX_RESET_REG_RESET_MODULE 0x1c
-#define AR91XX_RESET_REG_PERF_CTRL 0x20
-#define AR91XX_RESET_REG_PERFC0 0x24
-#define AR91XX_RESET_REG_PERFC1 0x28
-
-#define AR724X_RESET_REG_RESET_MODULE 0x1c
-
-#define WDOG_CTRL_LAST_RESET BIT(31)
-#define WDOG_CTRL_ACTION_MASK 3
-#define WDOG_CTRL_ACTION_NONE 0 /* no action */
-#define WDOG_CTRL_ACTION_GPI 1 /* general purpose interrupt */
-#define WDOG_CTRL_ACTION_NMI 2 /* NMI */
-#define WDOG_CTRL_ACTION_FCR 3 /* full chip reset */
-
-#define MISC_INT_DMA BIT(7)
-#define MISC_INT_OHCI BIT(6)
-#define MISC_INT_PERFC BIT(5)
-#define MISC_INT_WDOG BIT(4)
-#define MISC_INT_UART BIT(3)
-#define MISC_INT_GPIO BIT(2)
-#define MISC_INT_ERROR BIT(1)
-#define MISC_INT_TIMER BIT(0)
-
-#define PCI_INT_CORE BIT(4)
-#define PCI_INT_DEV2 BIT(2)
-#define PCI_INT_DEV1 BIT(1)
-#define PCI_INT_DEV0 BIT(0)
-
-#define RESET_MODULE_EXTERNAL BIT(28)
-#define RESET_MODULE_FULL_CHIP BIT(24)
-#define RESET_MODULE_AMBA2WMAC BIT(22)
-#define RESET_MODULE_CPU_NMI BIT(21)
-#define RESET_MODULE_CPU_COLD BIT(20)
-#define RESET_MODULE_DMA BIT(19)
-#define RESET_MODULE_SLIC BIT(18)
-#define RESET_MODULE_STEREO BIT(17)
-#define RESET_MODULE_DDR BIT(16)
-#define RESET_MODULE_GE1_MAC BIT(13)
-#define RESET_MODULE_GE1_PHY BIT(12)
-#define RESET_MODULE_USBSUS_OVERRIDE BIT(10)
-#define RESET_MODULE_GE0_MAC BIT(9)
-#define RESET_MODULE_GE0_PHY BIT(8)
-#define RESET_MODULE_USB_OHCI_DLL BIT(6)
-#define RESET_MODULE_USB_HOST BIT(5)
-#define RESET_MODULE_USB_PHY BIT(4)
-#define RESET_MODULE_USB_OHCI_DLL_7240 BIT(3)
-#define RESET_MODULE_PCI_BUS BIT(1)
-#define RESET_MODULE_PCI_CORE BIT(0)
-
-#define AR724X_RESET_GE1_MDIO BIT(23)
-#define AR724X_RESET_GE0_MDIO BIT(22)
-#define AR724X_RESET_PCIE_PHY_SERIAL BIT(10)
-#define AR724X_RESET_PCIE_PHY BIT(7)
-#define AR724X_RESET_PCIE BIT(6)
-
-#define REV_ID_MAJOR_MASK 0xfff0
-#define REV_ID_MAJOR_AR71XX 0x00a0
-#define REV_ID_MAJOR_AR913X 0x00b0
-#define REV_ID_MAJOR_AR7240 0x00c0
-#define REV_ID_MAJOR_AR7241 0x0100
-#define REV_ID_MAJOR_AR7242 0x1100
-
-#define AR71XX_REV_ID_MINOR_MASK 0x3
-#define AR71XX_REV_ID_MINOR_AR7130 0x0
-#define AR71XX_REV_ID_MINOR_AR7141 0x1
-#define AR71XX_REV_ID_MINOR_AR7161 0x2
-#define AR71XX_REV_ID_REVISION_MASK 0x3
-#define AR71XX_REV_ID_REVISION_SHIFT 2
-
-#define AR91XX_REV_ID_MINOR_MASK 0x3
-#define AR91XX_REV_ID_MINOR_AR9130 0x0
-#define AR91XX_REV_ID_MINOR_AR9132 0x1
-#define AR91XX_REV_ID_REVISION_MASK 0x3
-#define AR91XX_REV_ID_REVISION_SHIFT 2
-
-#define AR724X_REV_ID_REVISION_MASK 0x3
-
-// extern void __iomem *ar71xx_reset_base;
-
-static inline void ar71xx_reset_wr(unsigned reg, u32 val)
-{
- __raw_writel(val, KSEG1ADDR(AR71XX_RESET_BASE) + reg);
-}
-
-static inline u32 ar71xx_reset_rr(unsigned reg)
-{
- return __raw_readl(KSEG1ADDR(AR71XX_RESET_BASE) + reg);
-}
-
-// void ar71xx_device_stop(u32 mask);
-// void ar71xx_device_start(u32 mask);
-// int ar71xx_device_stopped(u32 mask);
-
-/*
- * SPI block
- */
-#define SPI_REG_FS 0x00 /* Function Select */
-#define SPI_REG_CTRL 0x04 /* SPI Control */
-#define SPI_REG_IOC 0x08 /* SPI I/O Control */
-#define SPI_REG_RDS 0x0c /* Read Data Shift */
-
-#define SPI_FS_GPIO BIT(0) /* Enable GPIO mode */
-
-#define SPI_CTRL_RD BIT(6) /* Remap Disable */
-#define SPI_CTRL_DIV_MASK 0x3f
-
-#define SPI_IOC_DO BIT(0) /* Data Out pin */
-#define SPI_IOC_CLK BIT(8) /* CLK pin */
-#define SPI_IOC_CS(n) BIT(16 + (n))
-#define SPI_IOC_CS0 SPI_IOC_CS(0)
-#define SPI_IOC_CS1 SPI_IOC_CS(1)
-#define SPI_IOC_CS2 SPI_IOC_CS(2)
-#define SPI_IOC_CS_ALL (SPI_IOC_CS0 | SPI_IOC_CS1 | SPI_IOC_CS2)
-
-// void ar71xx_flash_acquire(void);
-// void ar71xx_flash_release(void);
-
-/*
- * MII_CTRL block
- */
-#define MII_REG_MII0_CTRL 0x00
-#define MII_REG_MII1_CTRL 0x04
-
-#define MII0_CTRL_IF_GMII 0
-#define MII0_CTRL_IF_MII 1
-#define MII0_CTRL_IF_RGMII 2
-#define MII0_CTRL_IF_RMII 3
-
-#define MII1_CTRL_IF_RGMII 0
-#define MII1_CTRL_IF_RMII 1
-
-#endif /* __ASSEMBLER__ */
-
-#endif /* __ASM_MACH_AR71XX_H */
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef _AR71XX_GPIO_H
-#define _AR71XX_GPIO_H
-
-#include <common.h>
-#include <asm/ar71xx.h>
-
-static inline void ar71xx_setpin(uint8_t pin, uint8_t state)
-{
- uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT));
-
- if (state != 0) {
- reg |= (1 << pin);
- } else {
- reg &= ~(1 << pin);
- }
-
- writel(reg, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT));
- readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT));
-}
-
-static inline uint32_t ar71xx_getpin(uint8_t pin)
-{
- uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_IN));
- return (((reg & (1 << pin)) != 0) ? 1 : 0);
-}
-
-static inline void ar71xx_setpindir(uint8_t pin, uint8_t direction)
-{
- uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE));
-
- if (direction != 0) {
- reg |= (1 << pin);
- } else {
- reg &= ~(1 << pin);
- }
-
- writel(reg, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE));
- readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE));
-}
-
-
-#endif /* AR71XX_GPIO_H */
+++ /dev/null
-/*
- * (C) Copyright 2010
- * Michael Kurz <michi.kurz@googlemail.com>.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/* This file contains the configuration parameters for the zyxel nbg460n board. */
-
-#ifndef _NBG460N_CONFIG_H
-#define _NBG460N_CONFIG_H
-
-#define CONFIG_MIPS32 1 /* MIPS32 CPU core */
-#define CONFIG_AR71XX 1
-#define CONFIG_AR91XX 1
-#define CONFIG_SYS_HZ 1000
-#define CONFIG_SYS_MIPS_TIMER_FREQ (400000000/2)
-
-/* Cache Configuration */
-#define CONFIG_SYS_DCACHE_SIZE 32768
-#define CONFIG_SYS_ICACHE_SIZE 65536
-#define CONFIG_SYS_CACHELINE_SIZE 32
-/* Cache lock for stack */
-#define CONFIG_SYS_INIT_SP_OFFSET 0x1000
-
-#define CONFIG_SYS_MONITOR_BASE (TEXT_BASE)
-
-#define CONFIG_BAUDRATE 115200
-#define CONFIG_SYS_BAUDRATE_TABLE {115200}
-
-#define CONFIG_MISC_INIT_R
-
-/* SPI-Flash support */
-#define CONFIG_SPI_FLASH
-#define CONFIG_AR71XX_SPI
-#define CONFIG_SPI_FLASH_MACRONIX
-#define CONFIG_SF_DEFAULT_HZ 25000000
-
-#define CONFIG_ENV_SPI_MAX_HZ 25000000
-#define CONFIG_ENV_SPI_BUS 0
-#define CONFIG_ENV_SPI_CS 0
-
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_ADDR 0xbfc20000
-#define CONFIG_ENV_OFFSET 0x20000
-#define CONFIG_ENV_SIZE 0x01000
-#define CONFIG_ENV_SECT_SIZE 0x10000
-#define CONFIG_SYS_MAX_FLASH_BANKS 1
-#define CONFIG_SYS_MAX_FLASH_SECT 64
-#define CONFIG_SYS_FLASH_BASE 0xbfc00000
-
-/* Net support */
-#define CONFIG_ETHADDR_ADDR 0xbfc0fff8
-#define CONFIG_SYS_RX_ETH_BUFFER 16
-#define CONFIG_AG71XX
-#define CONFIG_AG71XX_PORTS { 1, 1 }
-#define CONFIG_AG71XX_MII0_IIF MII0_CTRL_IF_RGMII
-#define CONFIG_AG71XX_MII1_IIF MII1_CTRL_IF_RGMII
-#define CONFIG_NET_MULTI
-#define CONFIG_IPADDR 192.168.1.254
-#define CONFIG_SERVERIP 192.168.1.42
-
-/* Switch support */
-#define CONFIG_MII
-#define CONFIG_RTL8366_MII
-#define RTL8366_PIN_SDA 16
-#define RTL8366_PIN_SCK 18
-#define MII_GPIOINCLUDE <asm/ar71xx_gpio.h>
-#define MII_SETSDA(x) ar71xx_setpin(RTL8366_PIN_SDA, x)
-#define MII_GETSDA ar71xx_getpin(RTL8366_PIN_SDA)
-#define MII_SETSCK(x) ar71xx_setpin(RTL8366_PIN_SCK, x)
-#define MII_SDAINPUT ar71xx_setpindir(RTL8366_PIN_SDA, 0)
-#define MII_SDAOUTPUT ar71xx_setpindir(RTL8366_PIN_SDA, 1)
-#define MII_SCKINPUT ar71xx_setpindir(RTL8366_PIN_SCK, 0)
-#define MII_SCKOUTPUT ar71xx_setpindir(RTL8366_PIN_SCK, 1)
-
-#define CONFIG_BOOTDELAY 3
-#define CONFIG_BOOTARGS "console=ttyS0,115200 rootfstype==squashfs,jffs2 noinitrd machtype=NBG460N"
-#define CONFIG_BOOTCOMMAND "bootm 0xbfc70000"
-#define CONFIG_LZMA
-
-
-/* Commands */
-#define CONFIG_SYS_NO_FLASH
-#include <config_cmd_default.h>
-#undef CONFIG_CMD_BDI
-#undef CONFIG_CMD_FPGA
-#undef CONFIG_CMD_IMI
-#undef CONFIG_CMD_IMLS
-#undef CONFIG_CMD_LOADS
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_SPI
-
-/* Miscellaneous configurable options */
-#define CONFIG_SYS_PROMPT "U-Boot> "
-#define CONFIG_SYS_CBSIZE 256
-#define CONFIG_SYS_MAXARGS 16
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_LONGHELP 1
-#define CONFIG_CMDLINE_EDITING 1
-#define CONFIG_AUTO_COMPLETE
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
-
-/* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN ROUND(3 * 0x10000 + 128*1024, 0x1000)
-#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */
-
-#define CONFIG_SYS_BOOTPARAMS_LEN 128*1024
-
-#define CONFIG_SYS_SDRAM_BASE 0x80000000 /* Cached addr */
-#define CONFIG_SYS_LOAD_ADDR 0x80060000 /* default load address */
-
-#define CONFIG_SYS_MEMTEST_START 0x80000800
-#define CONFIG_SYS_MEMTEST_END 0x81E00000
-
-#endif /* _NBG460N_CONFIG_H */
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2011-2014 OpenWrt.org
-#
-
-[ -e /etc/config/ubootenv ] && exit 0
-
-touch /etc/config/ubootenv
-
-. /lib/uboot-envtools.sh
-. /lib/functions.sh
-
-board=$(board_name)
-
-case "$board" in
-a40|\
-a60|\
-alfa-ap120c|\
-all0258n|\
-ap121f|\
-ap90q|\
-ap91-5g|\
-arduino-yun|\
-cap324|\
-cap4200ag|\
-carambola2|\
-cpe830|\
-cpe870|\
-cr3000|\
-cr5000|\
-dw33d|\
-e1700ac-v2|\
-e600g-v2|\
-e600gac-v2|\
-eap300v2|\
-ens202ext|\
-gl-ar300m|\
-gl-ar750|\
-hornet-ub|\
-hornet-ub-x2|\
-jwap230|\
-koala|\
-mr1750|\
-mr1750v2|\
-mr600|\
-mr600v2|\
-mr900|\
-mr900v2|\
-n5q|\
-nbg6616|\
-nbg6716|\
-om5p|\
-om5p-ac|\
-om5p-acv2|\
-om5p-an|\
-r36a|\
-rme-eg200|\
-sr3200|\
-t830|\
-tube2h|\
-wam250|\
-wnr1000-v2|\
-wnr2000-v3|\
-wnr2200|\
-wnr612-v2|\
-xd3200)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
- ;;
-alfa-ap96|\
-all0315n|\
-om2p|\
-om2p-hs|\
-om2p-hsv2|\
-om2p-hsv3|\
-om2p-hsv4|\
-om2p-lc|\
-om2pv2|\
-om2pv4)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
- ;;
-dap-2695-a1|\
-wzr-hp-ag300h)
- ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000"
- ;;
-dr342|\
-dr531)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0xf800" "0x10000"
- ;;
-gl-ar150|\
-gl-domino|\
-gl-mifi)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x8000" "0x10000"
- ;;
-rambutan)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
- ubootenv_add_uci_config "/dev/mtd1" "0x100000" "0x20000" "0x20000"
- ;;
-qihoo-c301)
- ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x10000" "0x10000"
- ;;
-wi2a-ac200i)
- ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x8000" "0x10000"
- ;;
-wndr3700)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x10000"
- ;;
-wndr4300)
- ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000"
- ;;
-esac
-
-config_load ubootenv
-config_foreach ubootenv_add_app_config ubootenv
-
-exit 0
+++ /dev/null
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=vsc73x5-ucode
-PKG_RELEASE:=1
-
-PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
-
-PKG_SOURCE:=vsc73x5-ucode.tar.bz2
-PKG_BUILD_DIR:=$(BUILD_DIR)/vsc73x5-ucode
-
-PKG_HASH:=9728cec2b5d49ddd52578a8c600f1fd9f878a34e7e00ed51c248e0d608dd763a
-
-PKG_FLAGS:=nonshared
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/vsc73x5-defaults
- SECTION:=net
- CATEGORY:=Network
- DEPENDS:=@TARGET_ar71xx
- DEFAULT:=n
- TITLE:=$(1)
-endef
-
-define Package/vsc73x5/install
- $(INSTALL_DIR) $(1)/lib/firmware
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(2) $(1)/lib/firmware/$(3)
-endef
-
-define Package/vsc7385-ucode-pb44
- $(call Package/vsc73x5-defaults, Vitesse VSC7395 microcode for the Atheros PB44 boards)
-endef
-
-define Package/vsc7385-ucode-pb44/description
- This package contains the Atheros PB44 board specific microcode for
- the Vitesse VSC7385 ethernet switch.
-endef
-
-define Package/vsc7385-ucode-pb44/install
- $(call Package/vsc73x5/install,$(1),g5_Plus1_2_29b_unmanaged_Atheros_v5.bin,vsc7385_ucode_pb44.bin)
-endef
-
-define Package/vsc7395-ucode-pb44
- $(call Package/vsc73x5-defaults, Vitesse VSC7395 microcode for the Atheros PB44 boards)
-endef
-
-define Package/vsc7395-ucode-pb44/description
- This package contains the Atheros PB44 board specific microcode for
- the Vitesse VSC7395 ethernet switch.
-endef
-
-define Package/vsc7395-ucode-pb44/install
- $(call Package/vsc73x5/install,$(1),g5e_Plus1_2_29a_unmanaged_Atheros_v3.bin,vsc7395_ucode_pb44.bin)
-endef
-
-define Build/Compile
-
-endef
-
-$(eval $(call BuildPackage,vsc7385-ucode-pb44))
-$(eval $(call BuildPackage,vsc7395-ucode-pb44))
+++ /dev/null
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-CC:=gcc
-OBJCOPY:=objcopy
-
-all: g5_Plus1_2_31_unmanaged_Atheros_v3.bin \
- g5_Plus1_2_31_unmanaged_Atheros_v4.bin \
- g5_Plus1_2_29b_unmanaged_Atheros_v5.bin \
- g5e_Plus1_2_29a_unmanaged_Atheros_v3.bin
-
-%.o: %.c
- $(CC) $(CFLAGS) -c $^ -o $@
-
-%.bin: %.o
- $(OBJCOPY) -O binary -j .data $^ $@
define KernelPackage/usb-chipidea
TITLE:=Host and device support for Chipidea controllers
- DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget @TARGET_ar71xx||TARGET_ath79 +kmod-usb-ehci +kmod-usb-phy-nop
+ DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget @TARGET_ath79 +kmod-usb-ehci +kmod-usb-phy-nop
KCONFIG:= \
CONFIG_EXTCON \
CONFIG_USB_CHIPIDEA \
config-$(call config_package,ath9k) += ATH9K
config-$(call config_package,ath9k-common) += ATH9K_COMMON
config-$(call config_package,owl-loader) += ATH9K_PCI_NO_EEPROM
-config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
config-$(CONFIG_TARGET_ath79) += ATH9K_AHB
config-$(CONFIG_TARGET_ipq40xx) += ATH10K_AHB
config-$(CONFIG_PCI) += ATH9K_PCI
define KernelPackage/ath
$(call KernelPackage/mac80211/Default)
TITLE:=Atheros common driver part
- DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath79||TARGET_ath25 +kmod-mac80211
+ DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ath79||TARGET_ath25 +kmod-mac80211
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko
MENU:=1
endef
TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc)
URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k
HIDDEN:=1
- DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath79 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT
+ DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ath79 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT
FILES:= \
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
$(call KernelPackage/mac80211/Default)
TITLE:=Atheros 802.11n PCI wireless cards support
URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k
- DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx||TARGET_ath79 +kmod-ath9k-common
+ DEPENDS+= @PCI_SUPPORT||TARGET_ath79 +kmod-ath9k-common
FILES:= \
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko
AUTOLOAD:=$(call AutoProbe,ath9k)
config ATH9K_UBNTHSR
bool "Support for Ubiquiti UniFi Outdoor+ access point"
- depends on PACKAGE_kmod-ath9k && (TARGET_ar71xx_generic||TARGET_ath79)
+ depends on PACKAGE_kmod-ath9k && TARGET_ath79
default y
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=om-watchdog
-PKG_RELEASE:=3
+PKG_RELEASE:=4
include $(INCLUDE_DIR)/package.mk
get_gpio() {
local board=$(board_name)
- if [ -r /lib/ar71xx.sh ]; then
- case "$board" in
- "a40"|\
- "a60"|\
- "mr1750"|\
- "mr1750v2"|\
- "mr900"|\
- "mr900v2")
- return 16
- ;;
- "mr600v2")
- return 15
- ;;
- "om2p"|\
- "om2p-hs"|\
- "om2p-hsv2"|\
- "om2p-hsv3"|\
- "om2p-hsv4"|\
- "om2pv4"|\
- "om5p-acv2")
- return 12
- ;;
- "om2p-lc"|\
- "om2pv2")
- return 26
- ;;
- "om5p"|\
- "om5p-an")
- return 11
- ;;
- "om5p-ac")
- return 17
- ;;
- esac
- elif [ "$board" = "teltonika,rut5xx" ]; then
+ if [ "$board" = "teltonika,rut5xx" ]; then
# ramips
return 11
else
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mtd
-PKG_RELEASE:=25
+PKG_RELEASE:=26
PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME)
STAMP_PREPARED := $(STAMP_PREPARED)_$(call confvar,CONFIG_MTD_REDBOOT_PARTS)
obj.wrg = wrg.o md5.o
obj.wrgg = wrgg.o md5.o
obj.tpl = tpl_ramips_recoveryflag.o
-obj.ar71xx = trx.o $(obj.seama) $(obj.wrgg)
obj.ath79 = $(obj.seama) $(obj.wrgg)
obj.gemini = $(obj.wrgg)
obj.brcm = trx.o
return -1;
}
-#ifndef target_ar71xx
int
trx_check(int imagefd, const char *mtd, char *buf, int *len)
{
close(fd);
return 1;
}
-#endif
int
mtd_fixtrx(const char *mtd, size_t offset, size_t data_size)
CATEGORY:=Base system
TITLE:=Userspace port of the Broadcom NVRAM manipulation tool
MAINTAINER:=Jo-Philipp Wich <xm@subsignal.org>
- DEPENDS:=@(TARGET_bcm47xx||TARGET_bcm53xx||TARGET_ar71xx||TARGET_ath79)
+ DEPENDS:=@(TARGET_bcm47xx||TARGET_bcm53xx||TARGET_ath79)
endef
define Package/nvram/description
+++ /dev/null
-#
-# Copyright (C) 2008-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-include $(TOPDIR)/rules.mk
-
-ARCH:=mips
-BOARD:=ar71xx
-BOARDNAME:=Atheros AR7xxx/AR9xxx
-FEATURES:=usbgadget source-only
-CPU_TYPE:=24kc
-SUBTARGETS:=generic tiny nand mikrotik
-
-KERNEL_PATCHVER:=4.14
-
-include $(INCLUDE_DIR)/target.mk
-
-DEFAULT_PACKAGES += \
- kmod-gpio-button-hotplug swconfig \
- kmod-ath9k uboot-envtools
-
-$(eval $(call BuildTarget))
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2011 OpenWrt.org
-#
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-board=$(board_name)
-
-case "$board" in
-a40)
- ucidef_set_led_default "status-red" "Status (red)" "a40:red:status" "0"
- ucidef_set_led_default "status-blue" "Status (blue)" "a40:blue:status" "0"
- ;;
-a60)
- ucidef_set_led_default "status-red" "Status (red)" "a60:red:status" "0"
- ucidef_set_led_default "status-blue" "Status (blue)" "a60:blue:status" "0"
- ;;
-airgateway|\
-airgatewaypro)
- ucidef_set_led_wlan "wlan" "WLAN" "ubnt:blue:wlan" "phy0tpt"
- ;;
-alfa-nx)
- ucidef_set_led_netdev "wan" "WAN" "alfa:green:led_2" "eth0"
- ucidef_set_led_netdev "lan" "LAN" "alfa:green:led_3" "eth1"
- ;;
-all0258n|\
-all0315n)
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "$board:red:rssilow" "wlan0" "1" "40" "0" "6"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "$board:yellow:rssimedium" "wlan0" "30" "80" "-29" "5"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$board:green:rssihigh" "wlan0" "70" "100" "-69" "8"
- ;;
-antminer-s1|\
-antminer-s3)
- ucidef_set_led_default "sys" "SYS" "$board:green:sys" "0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
-
- case "$board" in
- antminer-s3)
- ucidef_set_led_default "lan" "LAN" "$board:yellow:lan" "0"
- ;;
- esac
- ;;
-antrouter-r1)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ucidef_set_led_default "btc" "BTC" "$board:green:btc" "0"
- ;;
-ap121f)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-ap147-010)
- ucidef_set_led_netdev "wan" "WAN" "ap147:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "ap147:green:lan1" "switch0" "0x10"
- ucidef_set_led_switch "lan2" "LAN2" "ap147:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "ap147:green:lan3" "switch0" "0x04"
- ucidef_set_led_switch "lan4" "LAN4" "ap147:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "ap147:green:wlan-2g" "phy0tpt"
- ;;
-ap90q|\
-cpe505n|\
-cpe830|\
-cpe870|\
-dr531|\
-e600g-v2|\
-e600gac-v2|\
-e750a-v4)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
-
- case "$board" in
- ap90q)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
- cpe505n)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
- ;;
- cpe830|\
- cpe870)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "$board:green:link1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "$board:green:link2" "wlan0" "26" "100" "-25" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$board:green:link3" "wlan0" "51" "100" "-50" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$board:green:link4" "wlan0" "76" "100" "-75" "13"
- ;;
- esac
- ;;
-ap531b0|\
-gl-usb150|\
-sc1750|\
-sc450)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-ap91-5g|\
-n5q)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "signal1" "SIGNAL1" "$board:red:signal1" "wlan0" "1" "100"
- ucidef_set_led_rssi "signal2" "SIGNAL2" "$board:orange:signal2" "wlan0" "25" "100"
- ucidef_set_led_rssi "signal3" "SIGNAL3" "$board:green:signal3" "wlan0" "50" "100"
- ucidef_set_led_rssi "signal4" "SIGNAL4" "$board:green:signal4" "wlan0" "75" "100"
-
- case "$board" in
- n5q)
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
- esac
- ;;
-archer-c25-v1)
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt"
- ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x10"
- 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 "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
- ;;
-archer-c5|\
-archer-c7)
- ucidef_set_led_usbport "usb1" "USB1" "tp-link:green:usb1" "usb1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "tp-link:green:usb2" "usb2-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy0tpt"
- ;;
-archer-c58-v1|\
-archer-c59-v1|\
-archer-c59-v2|\
-archer-c60-v1|\
-archer-c60-v2)
- ucidef_set_led_switch "lan" "LAN" "$board:green:lan" "switch0" "0x1E"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt"
-
- case "$board" in
- archer-c59-v1|\
- archer-c59-v2)
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ;;
- esac
- ;;
-archer-c7-v4|\
-archer-c7-v5)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt"
- ucidef_set_led_switch "wan" "WAN" "$board:green:wan" "switch0" "0x02"
- ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan4" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan2" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan1" "switch0" "0x20"
-
- case "$board" in
- archer-c7-v4)
- ucidef_set_led_usbport "usb1" "USB1" "$board:green:usb1" "usb1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "$board:green:usb2" "usb2-port1"
- ;;
- esac
-
- case "$board" in
- archer-c7-v5)
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ;;
- esac
- ;;
-arduino-yun)
- ucidef_set_led_wlan "wlan" "WLAN" "arduino:blue:wlan" "phy0tpt"
- ucidef_set_led_usbport "usb" "USB" "arduino:white:usb" "1-1-port1"
- ;;
-bhr-4grv2)
- ucidef_set_led_default "power" "POWER" "buffalo:green:power" "1"
- ucidef_set_led_default "diag" "DIAG" "buffalo:red:diag" "0"
- ;;
-bsb)
- ucidef_set_led_default "sys" "SYS" "$board:red:sys" "1"
- ;;
-bullet-m|\
-bullet-m-xw|\
-loco-m-xw|\
-nanostation-m|\
-nanostation-m-xw|\
-rocket-m|\
-rocket-m-xw)
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "ubnt:red:link1" "wlan0" "1" "100"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "ubnt:orange:link2" "wlan0" "26" "100"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "ubnt:green:link3" "wlan0" "51" "100"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "ubnt:green:link4" "wlan0" "76" "100"
- ;;
-bxu2000n-2-a1)
- ucidef_set_led_wlan "wlan" "WLAN" "bhu:green:wlan" "phy0tpt"
- ;;
-cap324)
- ucidef_set_led_netdev "lan" "LAN" "pcs:green:lan" "eth0"
- ucidef_set_led_wlan "wlan_amber" "WLAN_AMBER" "pcs:amber:wlan" "phy0tpt"
- ucidef_set_led_wlan "wlan_green" "WLAN_GREEN" "pcs:green:wlan" "phy1tpt"
- ;;
-c-55)
- ucidef_set_led_netdev "lan_green" "LAN_GREEN" "$board:green:lan" "eth0"
- ucidef_set_led_wlan "wlan_amber" "WLAN_AMBER" "$board:amber:wlan" "phy0tpt"
- ucidef_set_led_wlan "wlan_green" "WLAN_GREEN" "$board:green:wlan" "phy1tpt"
- ;;
-c-60)
- ucidef_set_led_wlan "wlan1_green" "WLAN1_GREEN" "$board:green:wlan1" "phy0tpt"
- ucidef_set_led_wlan "wlan2_green" "WLAN2_GREEN" "$board:green:wlan2" "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"
- ucidef_set_led_wlan "wlan_green" "WLAN_GREEN" "senao:green:wlan" "phy1tpt"
- ;;
-carambola2)
- ucidef_set_led_netdev "lan" "LAN" "$board:orange:eth0" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "$board:orange:eth1" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-cf-e316n-v2)
- ucidef_set_led_netdev "lan" "LAN" "$board:blue:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
- ;;
-cf-e320n-v2)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "$board:red:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
- ;;
-cf-e355ac-v1|\
-cf-e355ac-v2|\
-cf-e375ac|\
-cf-e380ac-v1|\
-cf-e380ac-v2|\
-cf-e385ac)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:blue:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:red:wlan5g" "phy0tpt"
-
- case "$board" in
- cf-e375ac|\
- cf-e385ac)
- ucidef_set_led_switch "lan" "LAN" "$board:green:lan" "switch0" "0x04"
- ;;
- *)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ;;
- esac
- ;;
-cf-e520n|\
-cf-e530n)
- ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
- ;;
-cpe210|\
-cpe210-v2|\
-cpe210-v3|\
-cpe510|\
-cpe510-v2|\
-wbs210|\
-wbs510)
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:link1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:link2" "wlan0" "26" "100" "-25" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:link3" "wlan0" "51" "100" "-50" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:link4" "wlan0" "76" "100" "-75" "13"
-
- case "$board" in
- cpe210-v2|\
- cpe210-v3|\
- cpe510-v2)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan0" "eth0"
- ;;
- *)
- ucidef_set_led_switch "lan0" "LAN0" "tp-link:green:lan0" "switch0" "0x20"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
- ;;
- esac
- ;;
-cr3000)
- ucidef_set_led_netdev "wan" "WAN" "pcs:blue:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "pcs:blue:lan1" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "pcs:blue:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "pcs:blue:lan3" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "pcs:blue:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "pcs:blue:wlan" "phy0tpt"
- ;;
-cr5000)
- ucidef_set_led_wlan "wlan" "WLAN" "pcs:blue:wlan" "phy0tpt"
- ucidef_set_led_usbport "usb" "USB" "pcs:white:wps" "usb1-port1"
- ;;
-db120)
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ;;
-dr344)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ;;
-dragino2)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:red:wlan" "phy0tpt"
- ucidef_set_led_netdev "lan" "LAN" "$board:red:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "$board:red:wan" "eth1"
- ;;
-dw33d)
- ucidef_set_led_usbport "mmc" "MMC" "$board:blue:mmc" "usb1-port1"
- ucidef_set_led_usbport "usb" "USB" "$board:blue:usb" "usb2-port1"
- ucidef_set_led_netdev "internet" "INTERNET" "$board:blue:internet" "eth0"
- ucidef_set_led_wlan "wlan2g" "WLAN-2.4G" "$board:blue:wlan-2g" "phy1tpt"
- ;;
-eap300v2)
- ucidef_set_led_netdev "lan" "LAN" "engenius:blue:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "engenius:blue:wlan" "phy0tpt"
- ;;
-ens202ext)
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "engenius:amber:wlan1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "engenius:red:wlan2" "wlan0" "25" "100" "-39" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "engenius:amber:wlan3" "wlan0" "50" "100" "-59" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "engenius:green:wlan4" "wlan0" "75" "100" "-79" "13"
- ;;
-f9k1115v2)
- ucidef_set_led_usbport "usb2" "USB2" "belkin:green:usb2" "usb1-port1"
- ;;
-fritz300e)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "$board:green:rssi0" "wlan0" "1" "100"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "$board:green:rssi1" "wlan0" "20" "100"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "$board:green:rssi2" "wlan0" "40" "100"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$board:green:rssi3" "wlan0" "60" "100"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$board:green:rssi4" "wlan0" "80" "100"
- ;;
-dap-1330-a1)
- ucidef_set_rssimon "wlan0" "2000000" "2"
- ucidef_set_led_rssi "wifi-low" "wifi-low" "d-link:red:wifi" "wlan0" "1" "29"
- ucidef_set_led_rssi "wifi-medium" "wifi-medium" "d-link:green:wifi" "wlan0" "30" "100"
- ucidef_set_led_rssi "wifi-high" "wifi-high" "d-link:green:signal1" "wlan0" "50" "100"
- ucidef_set_led_rssi "wifi-max" "wifi-max" "d-link:green:signal2" "wlan0" "70" "100"
- ;;
-dap-2695-a1)
- ucidef_set_led_default "power" "POWER" "d-link:green:power" "1"
- ucidef_set_led_default "diag" "DIAG" "d-link:red:power" "0"
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "d-link:green:wlan2g" "phy1tpt"
- ;;
-dhp-1565-a1)
- ucidef_set_led_switch "wan" "WAN" "d-link:green:planet" "switch0" "0x20"
- ;;
-dir-600-a1|\
-dir-615-e1|\
-dir-615-e4|\
-ebr-2310-c1)
- ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "d-link:green:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "d-link:green:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3" "LAN3" "d-link:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "d-link:green:lan4" "switch0" "0x10"
- ;;
-dir-615-c1)
- ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "d-link:green:wlan" "phy0tpt"
- ;;
-dir-825-b1|\
-dir-825-c1)
- ucidef_set_led_usbport "usb" "USB" "d-link:blue:usb" "usb1-port1"
-
- case "$board" in
- dir-825-c1)
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "d-link:blue:wlan2g" "phy0tpt"
- ;;
- esac
- ;;
-dir-615-i1)
- ucidef_set_led_default "power" "POWER" "d-link:green:power" "1"
- ucidef_set_led_default "diag" "DIAG" "d-link:amber:power" "0"
- ucidef_set_led_default "wps" "WPS" "d-link:blue:wps" "0"
- ucidef_set_led_netdev "wan" "WAN" "d-link:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "d-link:green:wlan" "phy0tpt"
- ;;
-dlan-hotspot)
- ucidef_set_led_wlan "wlan" "WLAN" "devolo:green:wifi" "phy0tpt"
- ;;
-dlan-pro-500-wp)
- ucidef_set_led_default "power" "System Power" "devolo:green:status" "1"
- ucidef_set_led_netdev "lan" "Ethernet Activity" "devolo:green:eth" "br-lan"
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "devolo:green:wlan-2g" "phy0tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "devolo:blue:wlan-5g" "none"
- ;;
-dlan-pro-1200-ac)
- ucidef_set_led_wlan "wlan" "WLAN" "devolo:status:wlan" "phy0radio"
- ucidef_set_led_gpio "plcw" "dLAN" "devolo:status:dlan" "17" "0"
- ucidef_set_led_gpio "plcr" "dLAN" "devolo:error:dlan" "16" "0"
- ;;
-e1700ac-v2)
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:green:wlan2g" "phy1tpt"
- ;;
-e558-v2|\
-e750g-v8)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-esr900)
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "engenius:blue:wlan-2g" "phy0tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "engenius:blue:wlan-5g" "phy1tpt"
- ;;
-esr1750|\
-epg5000)
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "$board:blue:wlan-2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "$board:blue:wlan-5g" "phy0tpt"
- ;;
-fritz4020)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-fritz450e)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ;;
-gl-ar300m)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:red:wlan" "phy0tpt"
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ;;
-gl-ar750)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:white:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:white:wlan5g" "phy0tpt"
- ;;
-gl-ar750s)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "$board:green:wlan5g" "phy0tpt"
- ;;
-gl-mifi)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ucidef_set_led_netdev "3gnet" "3GNET" "$board:green:net" "3g-wan"
- ;;
-gl-ar150)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:orange:wlan" "phy0tpt"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ;;
-gl-ar300)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:wlan" "phy0tpt"
- ;;
-gl-domino|\
-sc300m|\
-wrt160nl)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
- ;;
-gl-inet)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:red:wlan" "phy0tpt"
- ;;
-hiwifi-hc6361)
- ucidef_set_led_netdev "inet" "INET" "hiwifi:blue:internet" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "hiwifi:blue:wlan-2p4" "phy0tpt"
- ;;
-hornet-ub|\
-hornet-ub-x2)
- ucidef_set_led_netdev "lan" "LAN" "alfa:blue:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "alfa:blue:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "alfa:blue:wlan" "phy0tpt"
- ucidef_set_led_usbport "usb" "USB" "alfa:blue:usb" "usb1-port1"
- ;;
-koala)
- ucidef_set_led_default "power" "POWER" "$board:green:power" "1"
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4GHz" "$board:yellow:wlan2" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN 5GHz" "$board:red:wlan58" "phy0tpt"
- ;;
-lan-turtle)
- ucidef_set_led_netdev "wan" "WAN" "$board:orange:system" "eth1"
- ;;
-lbe-m5)
- ucidef_set_led_netdev "lan" "LAN" "ubnt:green:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "ubnt:green:wlan" "phy0tpt"
- ;;
-mc-mac1200r)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "mercury:green:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt"
- ;;
-mr12|\
-mr16)
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_wlan "wlan1" "WLAN1" "$board:green:wifi1" "phy0assoc"
- ucidef_set_led_wlan "wlan2" "WLAN2" "$board:green:wifi2" "phy0assoc"
- ucidef_set_led_wlan "wlan3" "WLAN3" "$board:green:wifi3" "phy0assoc"
- ucidef_set_led_wlan "wlan4" "WLAN4" "$board:green:wifi4" "phy0tpt"
- ;;
-mr18)
- ucidef_set_led_netdev "wlan0" "WLAN0" "$board:blue:tricolor0" "wlan0"
- ;;
-mr600)
- ucidef_set_led_wlan "wlan58" "WLAN58" "$board:green:wlan58" "phy0tpt"
- ucidef_set_led_default "wps" "WPS" "mr600:blue:wps" "0"
- ;;
-mr600v2)
- ucidef_set_led_default "wlan24-red" "WLAN 2.4GHz (red)" "mr600:red:wlan24" "0"
- ucidef_set_led_default "wlan24-yellow" "WLAN 2.4GHz (yellow)" "mr600:yellow:wlan24" "0"
- ucidef_set_led_wlan "wlan24-green" "WLAN 4GHz (green)" "mr600:green:wlan24" "phy1tpt"
- ucidef_set_led_default "wlan5-red" "WLAN 5GHz (red)" "mr600:red:wlan58" "0"
- ucidef_set_led_default "wlan5-yellow" "WLAN 5GHz (yellow)" "mr600:yellow:wlan58" "0"
- ucidef_set_led_wlan "wlan5-green" "WLAN 5GHz (green)" "mr600:green:wlan58" "phy0tpt"
- ;;
-mr1750|\
-mr1750v2)
- ucidef_set_led_netdev "lan" "LAN" "mr1750:blue:wan" "eth0"
- ucidef_set_led_wlan "wlan58" "WLAN58" "mr1750:blue:wlan58" "phy0tpt"
- ucidef_set_led_wlan "wlan24" "WLAN24" "mr1750:blue:wlan24" "phy1tpt"
- ucidef_set_led_default "status-red" "Status (red)" "mr1750:red:wifi" "0"
- ucidef_set_led_default "status-green" "Status (green)" "mr1750:green:wifi" "0"
- ;;
-mr900|\
-mr900v2)
- ucidef_set_led_netdev "lan" "LAN" "mr900:blue:wan" "eth0"
- ucidef_set_led_wlan "wlan24" "WLAN24" "mr900:blue:wlan24" "phy0tpt"
- ucidef_set_led_wlan "wlan58" "WLAN58" "mr900:blue:wlan58" "phy1tpt"
- ucidef_set_led_default "status-red" "Status (red)" "mr900:red:wifi" "0"
- ucidef_set_led_default "status-green" "Status (green)" "mr900:green:wifi" "0"
- ;;
-mynet-n600)
- ucidef_set_led_netdev "wan" "WAN" "wd:blue:internet" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "wd:green:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "wd:green:lan2" "switch0" "0x10"
- ucidef_set_led_switch "lan3" "LAN3" "wd:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "wd:green:lan4" "switch0" "0x04"
- ;;
-mynet-rext)
- ucidef_set_led_netdev "lan" "LAN" "wd:blue:ethernet" "eth0"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "wd:blue:quality1" "wlan0" "1" "40" "0" "6"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "wd:blue:quality2" "wlan0" "30" "80" "-29" "5"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "wd:blue:quality3" "wlan0" "70" "100" "-69" "8"
- ucidef_set_led_wlan "wlan" "WLAN" "wd:blue:wireless" "phy0tpt"
- ;;
-mzk-w04u)
- ucidef_set_led_usbport "usb" "USB" "planex:green:usb" "usb1-port1"
- ;;
-mzk-w300nh)
- ucidef_set_led_wlan "wlan" "WLAN" "planex:green:wlan" "phy0tpt"
- ;;
-nbg460n_550n_550nh)
- ucidef_set_led_wlan "wlan" "WLAN" "nbg460n:green:wlan" "phy0tpt"
- ;;
-nbg6616)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wifi2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5" "WLAN5" "$board:green:wifi5g" "phy0tpt"
- ucidef_set_led_usbport "usb1" "USB1" "$board:green:usb1" "usb1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "$board:green:usb2" "usb2-port1"
- ;;
-nbg6716)
- ucidef_set_led_netdev "wan" "WAN" "$board:white:internet" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:white:wifi2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5" "WLAN5" "$board:white:wifi5g" "phy0tpt"
- ucidef_set_led_usbport "usb1" "USB1" "$board:white:usb1" "usb1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "$board:white:usb2" "usb2-port1"
- ;;
-om2p|\
-om2p-hs|\
-om2p-hsv2|\
-om2p-hsv3|\
-om2p-hsv4|\
-om2p-lc|\
-om2pv2|\
-om2pv4)
- ucidef_set_led_netdev "port1" "port1" "om2p:blue:wan" "eth0"
- ucidef_set_led_netdev "port2" "port2" "om2p:blue:lan" "eth1"
- ucidef_set_led_default "wlan-red" "WLAN (red)" "om2p:red:wifi" "0"
- ucidef_set_led_default "wlan-yellow" "WLAN (yellow)" "om2p:yellow:wifi" "0"
- ucidef_set_led_default "wlan-green" "WLAN (green)" "om2p:green:wifi" "0"
- ;;
-om5p|\
-om5p-an)
- ucidef_set_led_netdev "port1" "port1" "om5p:blue:wan" "eth0"
- ucidef_set_led_netdev "port2" "port2" "om5p:blue:lan" "eth1"
- ucidef_set_led_default "wlan-red" "WLAN (red)" "om5p:red:wifi" "0"
- ucidef_set_led_default "wlan-yellow" "WLAN (yellow)" "om5p:yellow:wifi" "0"
- ucidef_set_led_default "wlan-green" "WLAN (green)" "om5p:green:wifi" "0"
- ;;
-om5p-ac)
- ucidef_set_led_netdev "port1" "port1" "om5pac:blue:lan" "eth0"
- ucidef_set_led_netdev "port2" "port2" "om5pac:blue:wan" "eth1"
- ucidef_set_led_default "wlan-red" "WLAN (red)" "om5pac:red:wifi" "0"
- ucidef_set_led_default "wlan-yellow" "WLAN (yellow)" "om5pac:yellow:wifi" "0"
- ucidef_set_led_default "wlan-green" "WLAN (green)" "om5pac:green:wifi" "0"
- ;;
-om5p-acv2)
- ucidef_set_led_default "wlan-red" "WLAN (red)" "om5pac:red:wifi" "0"
- ucidef_set_led_default "wlan-yellow" "WLAN (yellow)" "om5pac:yellow:wifi" "0"
- ucidef_set_led_default "wlan-green" "WLAN (green)" "om5pac:green:wifi" "0"
- ;;
-omy-g1)
- ucidef_set_led_wlan "wlan" "WLAN" "omy:green:wlan" "phy0tpt"
- ucidef_set_led_netdev "wan" "WAN" "omy:green:wan" "eth0"
- ucidef_set_led_netdev "lan" "LAN" "omy:green:lan" "eth1"
- ;;
-omy-x1)
- ucidef_set_led_default "power" "POWER" "omy:green:power" "1"
- ucidef_set_led_default "wan" "WAN" "omy:green:wan" "eth0"
- ;;
-pqi-air-pen)
- ucidef_set_led_wlan "wlan" "WLAN" "pqi-air-pen:blue:wlan" "phy0tpt"
- ucidef_set_led_default "wps" "WPS" "pqi-air-pen:blue:wps" "0"
- ;;
-qihoo-c301)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "qihoo:red:status" "phy1tpt"
- ;;
-r36a)
- ucidef_set_led_netdev "lan" "LAN" "$board:blue:lan" "eth0"
- ucidef_set_led_usbport "usb" "USB" "$board:blue:usb" "usb1-port1"
- ucidef_set_led_netdev "wan" "WAN" "$board:blue:wan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:blue:wlan" "phy0tpt"
- ;;
-r602n|\
-t830|\
-zbt-we1526)
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x10"
- 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 "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
-
- case "$board" in
- t830)
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ;;
- esac
- ;;
-r6100)
- ucidef_set_led_netdev "wan" "WAN (green)" "netgear:green:wan" "eth0"
- ucidef_set_led_usbport "usb" "USB" "netgear:blue:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy1tpt"
- ;;
-rb-750)
- ucidef_set_led_default "act" "act" "rb750:green:act" "1"
- ucidef_set_led_netdev "port1" "port1" "rb750:green:port1" "eth1"
- ucidef_set_led_switch "port2" "port2" "rb750:green:port2" "switch0" "0x10"
- ucidef_set_led_switch "port3" "port3" "rb750:green:port3" "switch0" "0x08"
- ucidef_set_led_switch "port4" "port4" "rb750:green:port4" "switch0" "0x04"
- ucidef_set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02"
- ;;
-rb-750-r2|\
-rb-750p-pbr2|\
-rb-750up-r2)
- ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000"
- ucidef_set_led_netdev "port1" "port1" "rb:green:port1" "eth0"
- ucidef_set_led_switch "port2" "port2" "rb:green:port2" "switch0" "0x10"
- ucidef_set_led_switch "port3" "port2" "rb:green:port3" "switch0" "0x08"
- ucidef_set_led_switch "port4" "port3" "rb:green:port4" "switch0" "0x04"
- ucidef_set_led_switch "port5" "port5" "rb:green:port5" "switch0" "0x02"
- ;;
-rb-911-2hn|\
-rb-911-5hn)
- ucidef_set_led_netdev "eth" "ETH" "rb:green:eth" "eth0"
- ;;
-rb-931-2nd|\
-rb-941-2nd)
- ucidef_set_led_timer "user" "USR/ACT" "rb:green:user" "1000" "1000"
- ;;
-rb-951ui-2nd|\
-rb-952ui-5ac2nd)
- ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000"
- ucidef_set_led_netdev "port1" "port1" "rb:green:port1" "eth0"
- ucidef_set_led_switch "port2" "port2" "rb:green:port2" "switch0" "0x10"
- ucidef_set_led_switch "port3" "port2" "rb:green:port3" "switch0" "0x08"
- ucidef_set_led_switch "port4" "port3" "rb:green:port4" "switch0" "0x04"
- ucidef_set_led_switch "port5" "port5" "rb:green:port5" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "rb:blue:wlan" "phy0tpt"
- ;;
-rb-962uigs-5hact2hnt)
- ucidef_set_led_timer "user" "USER/SFP" "rb:green:user" "1000" "1000"
- ;;
-rb-2011il|\
-rb-2011ils|\
-rb-2011l|\
-rb-2011uas|\
-rb-2011uas-2hnd|\
-rb-2011uias|\
-rb-2011uias-2hnd|\
-rb-2011uias-2hnd-r2)
- ucidef_set_led_switch "eth6" "ETH6" "rb:green:eth6" "switch1" "0x20"
- ucidef_set_led_switch "eth7" "ETH7" "rb:green:eth7" "switch1" "0x10"
- ucidef_set_led_switch "eth8" "ETH8" "rb:green:eth8" "switch1" "0x08"
- ucidef_set_led_switch "eth9" "ETH9" "rb:green:eth9" "switch1" "0x04"
- ucidef_set_led_switch "eth10" "ETH10" "rb:green:eth10" "switch1" "0x02"
- ;;
-rb-lhg-5nd)
- ucidef_set_led_netdev "lan" "LAN" "rb:green:eth" "eth0"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "rb:green:rssi0" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "rb:green:rssi1" "wlan0" "20" "100" "-19" "13"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "rb:green:rssi2" "wlan0" "40" "100" "-39" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "rb:green:rssi3" "wlan0" "60" "100" "-59" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "rb:green:rssi4" "wlan0" "80" "100" "-79" "13"
- ;;
-rb-map-2nd)
- ucidef_set_led_switch "eth1" "WAN" "rb:green:eth1" "switch0" "0x02"
- ucidef_set_led_switch "eth2" "LAN" "rb:green:eth2" "switch0" "0x04"
- ucidef_set_led_gpio "poe" "POE" "rb:red:poe_out" "14" "0"
- ucidef_set_led_wlan "wlan" "WLAN" "rb:green:wlan" "phy0tpt"
- ;;
-rb-mapl-2nd)
- ucidef_set_led_default "power" "POWER" "rb:green:power" "1"
- ucidef_set_led_netdev "lan" "LAN" "rb:green:eth" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "rb:green:wlan" "phy0tpt"
- ;;
-rb-wap-2nd)
- ucidef_set_led_timer "user" "USER" "rb:green:user" "1000" "1000"
- ucidef_set_led_wlan "wlan" "WLAN" "rb:green:wlan" "phy0tpt"
- ;;
-rb-wapr-2nd)
- ucidef_set_led_wlan "wlan" "WLAN" "rb:green:user" "phy0tpt"
- ;;
-re355|\
-re450)
- ucidef_set_led_netdev "lan_data" "LAN Data" "$board:green:lan_data" "eth0" "tx rx"
- ucidef_set_led_netdev "lan_link" "LAN Link" "$board:green:lan_link" "eth0" "link"
- ucidef_set_led_wlan "wlan2g" "WLAN 2.4 GHz" "$board:blue:wlan2g" "phy1tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN 5 GHz" "$board:blue:wlan5g" "phy0tpt"
- ;;
-rme-eg200)
- ucidef_set_led_netdev "wan" "WAN" "eg200:red:eth0" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "eg200:red:wlan" "phy0tpt"
- ucidef_set_led_oneshot "modbus" "Modbus" "eg200:red:modbus" "100" "33"
- ucidef_set_led_default "etactica" "etactica" "eg200:red:etactica" "ignore"
- ;;
-rocket-m-ti)
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssiverylow" "RSSIVERYLOW" "ubnt:green:link1" "wlan0" "1" "100"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "ubnt:green:link2" "wlan0" "18" "100"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "ubnt:green:link3" "wlan0" "34" "100"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "ubnt:green:link4" "wlan0" "51" "100"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "ubnt:green:link5" "wlan0" "67" "100"
- ucidef_set_led_rssi "rssiveryhigh" "RSSIVERYHIGH" "ubnt:green:link6" "wlan0" "84" "100"
- ;;
-rut900)
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x10"
- ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04"
- ;;
-smart-300)
- ucidef_set_led_netdev "wan" "WAN" "nc-link:green:wan" "eth0"
- ucidef_set_led_switch "lan1" "LAN1" "nc-link:green:lan1" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "nc-link:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "nc-link:green:lan3" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "nc-link:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "nc-link:green:wlan" "phy0tpt"
- ;;
-som9331)
- ucidef_set_led_netdev "wan" "WAN" "$board:orange:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "$board:orange:lan1" "switch0" "0x08"
- ucidef_set_led_switch "lan2" "LAN2" "$board:orange:lan2" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:red:wlan" "phy0tpt"
- ucidef_set_led_usbport "usb" "USB" "$board:green:system" "usb1-port1"
- ;;
-sr3200)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:green:wlan2g" "phy1tpt"
- ;;
-tellstick-znet-lite)
- ucidef_set_led_netdev "lan_act" "LANACT" "tellstick:green:lan" "eth0" "tx rx"
- ucidef_set_led_netdev "lan_link" "LANLINK" "tellstick:orange:lan" "eth0" "link"
- ;;
-tew-712br)
- ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "trendnet:green:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "trendnet:green:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3" "LAN3" "trendnet:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "trendnet:green:lan4" "switch0" "0x10"
- ucidef_set_led_wlan "wlan" "WLAN" "trendnet:green:wlan" "phy0tpt"
- ;;
-tew-732br)
- ucidef_set_led_netdev "wan" "WAN" "trendnet:green:wan" "eth1"
- ;;
-tew-823dru)
- ucidef_set_led_netdev "wan" "WAN" "trendnet:green:planet" "eth0"
- ;;
-tl-mr11u|\
-tl-mr3020|\
-tl-mr3040|\
-tl-mr3040-v2)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:3g" "usb1-port1"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
- ;;
-tl-mr3220|\
-tl-mr3420)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:3g" "usb1-port1"
- ;;
-tl-mr3220-v2|\
-tl-wr741nd-v4)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
-
- case "$board" in
- tl-mr3220-v2)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:3g" "usb1-port1"
- ;;
- esac
- ;;
-tl-mr3420-v2|\
-tl-wr841n-v8|\
-tl-wr842n-v2|\
-tl-wr941nd-v5)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth0"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
-
- case "$board" in
- tl-mr3420-v2|\
- tl-wr842n-v2)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:3g" "usb1-port1"
- ;;
- esac
- ;;
-tl-mr6400)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:white:lan" "eth0"
- ucidef_set_led_netdev "wan" "WAN" "tp-link:white:wan" "eth1"
- ucidef_set_led_netdev "4g" "4G" "tp-link:white:4g" "usb0"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:white:wlan" "phy0tpt"
- ;;
-tl-wa7210n-v2)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:green:signal1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:green:signal2" "wlan0" "26" "100" "-25" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:green:signal3" "wlan0" "51" "100" "-50" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:green:signal4" "wlan0" "76" "100" "-75" "13"
- ;;
-tl-wa750re)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:orange:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:orange:wlan" "phy0tpt"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:orange:signal1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:orange:signal2" "wlan0" "20" "100" "-19" "13"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "tp-link:orange:signal3" "wlan0" "40" "100" "-39" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:orange:signal4" "wlan0" "60" "100" "-59" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:orange:signal5" "wlan0" "80" "100" "-79" "13"
- ;;
-tl-wa801nd-v3)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth1"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ;;
-tl-wa850re|\
-tl-wa850re-v2)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:blue:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:blue:wlan" "phy0tpt"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:blue:signal1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "tp-link:blue:signal2" "wlan0" "20" "100" "-19" "13"
- ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "tp-link:blue:signal3" "wlan0" "40" "100" "-39" "13"
- ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "tp-link:blue:signal4" "wlan0" "60" "100" "-59" "13"
- ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "tp-link:blue:signal5" "wlan0" "80" "100" "-79" "13"
- ;;
-tl-wa701nd-v2|\
-tl-wa801nd-v2|\
-tl-wa830re-v2|\
-tl-wa860re|\
-tl-wa901nd-v3|\
-tl-wa901nd-v4|\
-tl-wa901nd-v5)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ;;
-tl-wa901nd)
- ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
- ;;
-tl-wa901nd-v2|\
-tl-wr941nd|\
-tl-wr1041n-v2)
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ;;
-tl-wdr3320-v2)
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy0tpt"
- ;;
-tl-wdr3500)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy0tpt"
- ;;
-tl-wdr4300)
- ucidef_set_led_usbport "usb1" "USB1" "tp-link:green:usb1" "1-1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "tp-link:green:usb2" "1-1-port2"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy0tpt"
- ;;
-tl-wdr4900-v2)
- ucidef_set_led_usbport "usb1" "USB1" "tp-link:green:usb1" "usb1-port1"
- ucidef_set_led_usbport "usb2" "USB2" "tp-link:green:usb2" "usb2-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy0tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy1tpt"
- ;;
-tl-wdr6500-v2|\
-tl-wr741nd)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x10"
- ;;
-tl-wpa8630)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_netdev "wlan" "WLAN" "$board:green:wlan" "wlan1"
- ucidef_set_led_netdev "wlan5" "WLAN5" "$board:green:wlan5" "wlan0"
- ;;
-tl-wr740n-v6|\
-tl-wr841n-v9|\
-tl-wr841n-v11|\
-tl-wr842n-v3)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x04"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
-
- case "$board" in
- tl-wr842n-v3)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:3g" "usb1-port1"
- ;;
- esac
- ;;
-tl-wr802n-v1)
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:blue:system" "phy0tpt"
- ;;
-tl-wr802n-v2)
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:system" "phy0tpt"
- ;;
-tl-wr902ac-v1)
- ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth0"
- ucidef_set_led_usbport "usb" "USB" "$board:green:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:green:wlan2g" "phy1tpt"
- ;;
-tl-wr940n-v4|\
-tl-wr941nd-v6)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth0"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:blue:lan1" "switch0" "0x10"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:blue:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:blue:lan3" "switch0" "0x04"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:blue:lan4" "switch0" "0x02"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:blue:wlan" "phy0tpt"
- ;;
-tl-wr840n-v2|\
-tl-wr840n-v3)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1"
- ucidef_set_led_switch "lan" "LAN" "tp-link:green:lan" "switch0" "0x1E"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ;;
-tl-wr940n-v6)
- ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth0"
- ;;
-tl-wr942n-v1)
- ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x04"
- ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x10"
- ucidef_set_led_switch "lan4" "LAN4" "$board:green:lan4" "switch0" "0x02"
- ucidef_set_led_netdev "wan" "WAN" "$board:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:green:wlan" "phy0tpt"
- ucidef_set_led_usbport "usb1" "USB1" "$board:green:usb1" "1-1-port2"
- ucidef_set_led_usbport "usb2" "USB2" "$board:green:usb2" "1-1-port1"
- ;;
-tl-wr1043nd|\
-tl-wr1043nd-v2)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ;;
-tl-wr1043n-v5|\
-tl-wr1043nd-v4)
- ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
- ucidef_set_led_switch "wan" "WAN" "tp-link:green:wan" "switch0" "0x20"
- ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"
- ucidef_set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08"
- ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x04"
- ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
-
- case "$board" in
- tl-wr1043nd-v4)
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:usb" "usb1-port1"
- ;;
- esac
- ;;
-tl-wr2543n)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy0tpt"
- ucidef_set_led_usbport "usb" "USB" "tp-link:green:usb" "usb1-port1"
- ;;
-tube2h)
- ucidef_set_led_netdev "lan" "LAN" "alfa:blue:lan" "eth0"
- ucidef_set_rssimon "wlan0" "200000" "1"
- ucidef_set_led_rssi "signal1" "SIGNAL1" "alfa:red:signal1" "wlan0" "1" "100" "0" "13"
- ucidef_set_led_rssi "signal2" "SIGNAL2" "alfa:orange:signal2" "wlan0" "26" "100" "-25" "13"
- ucidef_set_led_rssi "signal3" "SIGNAL3" "alfa:green:signal3" "wlan0" "51" "100" "-50" "13"
- ucidef_set_led_rssi "signal4" "SIGNAL4" "alfa:green:signal4" "wlan0" "76" "100" "-75" "13"
- ;;
-wam250)
- ucidef_set_led_netdev "lan" "LAN" "$board:white:lan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "$board:white:wlan" "phy0tpt"
- ;;
-wndap360)
- ucidef_set_led_power "power" "POWER GREEN" "netgear:green:power" "1"
- ;;
-wndr3700)
- ucidef_set_led_default "wan" "WAN LED (green)" "netgear:green:wan" "0"
- ucidef_set_led_usbport "usb" "USB" "netgear:green:usb" "usb1-port1"
- ;;
-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|\
-wndr4300)
- ucidef_set_led_switch "wan-amber" "WAN (amber)" "netgear:amber:wan" "switch0" "0x20"
- ucidef_set_led_usbport "usb" "USB" "netgear:green:usb" "usb1-port1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "netgear:green:wlan2g" "phy0tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "netgear:blue:wlan5g" "phy1tpt"
- ;;
-whr-g301n|\
-whr-hp-g300n|\
-whr-hp-gn)
- ucidef_set_led_netdev "wan" "WAN" "buffalo:green:wan" "eth1"
- ucidef_set_led_switch "lan1" "LAN1" "buffalo:green:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "buffalo:green:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3" "LAN3" "buffalo:green:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "buffalo:green:lan4" "switch0" "0x10"
- ;;
-wifi-pineapple-nano)
- ucidef_set_led_wlan "wlan0" "WLAN0" "$board:blue:system" "phy0tpt"
- ;;
-wlae-ag300n)
- ucidef_set_led_netdev "wireless" "WIRELESS" "buffalo:green:wireless" "wlan0"
- ;;
-wnr1000-v2|\
-wnr2000-v3)
- ucidef_set_led_netdev "wan-amber" "WAN (amber)" "netgear:amber:wan" "eth0"
- ucidef_set_led_default "wan-green" "WAN (green)" "netgear:green:wan" "0"
- ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy0tpt"
- ucidef_set_led_switch "lan1green" "LAN1 (green)" "netgear:green:lan1" "switch0" "0x02" "0x04"
- ucidef_set_led_switch "lan2green" "LAN2 (green)" "netgear:green:lan2" "switch0" "0x04" "0x04"
- ucidef_set_led_switch "lan3green" "LAN3 (green)" "netgear:green:lan3" "switch0" "0x08" "0x04"
- ucidef_set_led_switch "lan4green" "LAN4 (green)" "netgear:green:lan4" "switch0" "0x10" "0x04"
- ucidef_set_led_switch "lan1amber" "LAN1 (amber)" "netgear:amber:lan1" "switch0" "0x02" "0x02"
- ucidef_set_led_switch "lan2amber" "LAN2 (amber)" "netgear:amber:lan2" "switch0" "0x04" "0x02"
- ucidef_set_led_switch "lan3amber" "LAN3 (amber)" "netgear:amber:lan3" "switch0" "0x08" "0x02"
- ucidef_set_led_switch "lan4amber" "LAN4 (amber)" "netgear:amber:lan4" "switch0" "0x10" "0x02"
- ;;
-wnr2000-v4)
- ucidef_set_led_netdev "wan" "WAN" "netgear:green:wan" "eth0"
- ucidef_set_led_netdev "wlan" "WLAN" "netgear:blue:wlan" "wlan0"
- ucidef_set_led_switch "lan1" "LAN1" "netgear:amber:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2" "LAN2" "netgear:amber:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3" "LAN3" "netgear:amber:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4" "LAN4" "netgear:amber:lan4" "switch0" "0x10"
- ucidef_set_led_usbport "usb" "USB" "netgear:amber:status" "usb1-port1"
- ;;
-wnr2200)
- ucidef_set_led_netdev "wan-amber" "WAN (amber)" "netgear:amber:wan" "eth0"
- ucidef_set_led_default "wan-green" "WAN (green)" "netgear:green:wan" "0"
- ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy0tpt"
- ucidef_set_led_switch "lan1green" "LAN1 (green)" "netgear:green:lan1" "switch0" "0x02" "0x04"
- ucidef_set_led_switch "lan2green" "LAN2 (green)" "netgear:green:lan2" "switch0" "0x04" "0x04"
- ucidef_set_led_switch "lan3green" "LAN3 (green)" "netgear:green:lan3" "switch0" "0x08" "0x04"
- ucidef_set_led_switch "lan4green" "LAN4 (green)" "netgear:green:lan4" "switch0" "0x10" "0x04"
- ucidef_set_led_switch "lan1amber" "LAN1 (amber)" "netgear:amber:lan1" "switch0" "0x02" "0x02"
- ucidef_set_led_switch "lan2amber" "LAN2 (amber)" "netgear:amber:lan2" "switch0" "0x04" "0x02"
- ucidef_set_led_switch "lan3amber" "LAN3 (amber)" "netgear:amber:lan3" "switch0" "0x08" "0x02"
- ucidef_set_led_switch "lan4amber" "LAN4 (amber)" "netgear:amber:lan4" "switch0" "0x10" "0x02"
- ucidef_set_led_usbport "usb" "USB" "netgear:green:usb" "usb1-port1"
- ;;
-wnr612-v2)
- ucidef_set_led_netdev "wan" "WAN" "netgear:green:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "netgear:green:wlan" "phy0tpt"
- ucidef_set_led_switch "lan1" "LAN1" "netgear:green:lan1" "switch0" "0x02" "0x0f"
- ucidef_set_led_switch "lan2" "LAN2" "netgear:green:lan2" "switch0" "0x04" "0x0f"
- ;;
-wpn824n)
- ucidef_set_led_netdev "wan-amber" "WAN (amber)" "netgear:amber:wan" "eth0"
- ucidef_set_led_wlan "wlan" "WLAN" "netgear:blue:wlan" "phy0tpt"
- ucidef_set_led_switch "lan1amber" "LAN1 (amber)" "netgear:amber:lan1" "switch0" "0x02"
- ucidef_set_led_switch "lan2amber" "LAN2 (amber)" "netgear:amber:lan2" "switch0" "0x04"
- ucidef_set_led_switch "lan3amber" "LAN3 (amber)" "netgear:amber:lan3" "switch0" "0x08"
- ucidef_set_led_switch "lan4amber" "LAN4 (amber)" "netgear:amber:lan4" "switch0" "0x10"
- ucidef_set_led_default "lan1green" "LAN1 (green)" "netgear:green:lan1" "0"
- ucidef_set_led_default "lan2green" "LAN2 (green)" "netgear:green:lan2" "0"
- ucidef_set_led_default "lan3green" "LAN3 (green)" "netgear:green:lan3" "0"
- ucidef_set_led_default "lan4green" "LAN4 (green)" "netgear:green:lan4" "0"
- ucidef_set_led_default "wan-green" "WAN (green)" "netgear:green:wan" "0"
- ucidef_set_led_default "wps1" "WPS1" "netgear:blue:wps1" "0"
- ucidef_set_led_default "wps2" "WPS2" "netgear:blue:wps2" "0"
- ucidef_set_led_default "status" "STATUS" "netgear:amber:status" "0"
- ucidef_set_led_default "test" "TEST" "netgear:amber:test" "0"
- ;;
-wzr-hp-ag300h)
- ucidef_set_led_default "diag" "DIAG" "buffalo:red:diag" "0"
- ucidef_set_led_netdev "router" "ROUTER" "buffalo:green:router" "eth1"
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "buffalo:amber:band2g" "phy0tpt"
- ucidef_set_led_wlan "wlan5g" "WLAN5G" "buffalo:amber:band5g" "phy1tpt"
- ucidef_set_led_usbport "usb" "USB" "buffalo:green:usb" "usb1-port1"
- ;;
-wzr-hp-g300nh)
- ucidef_set_led_wlan "wlan" "Wireless" "buffalo:green:wireless" "phy0tpt"
- ucidef_set_led_netdev "router" "Router" "buffalo:green:router" "eth1"
- ucidef_set_led_usbport "usb" "USB" "buffalo:blue:usb" "usb1-port1"
- ;;
-wzr-hp-g300nh2|\
-wzr-hp-g450h)
- ucidef_set_led_wlan "wlan" "Wireless" "buffalo:green:wireless" "phy0tpt"
- ;;
-xd3200)
- ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:blue:wlan2g" "phy1tpt"
- ;;
-z1)
- ucidef_set_led_netdev "wlan1" "WLAN1" "$board:blue:tricolor0" "wlan1"
- ;;
-zcn-1523h-2)
- ucidef_set_led_netdev "lan1" "lan1" "zcn-1523h:green:lan1" "eth0"
- ;;
-zcn-1523h-5)
- ucidef_set_led_netdev "lan1" "lan1" "zcn-1523h:green:lan1" "eth0"
- ucidef_set_led_netdev "lan2" "lan2" "zcn-1523h:green:lan2" "eth1"
- ;;
-esac
-
-board_config_flush
-
-exit 0
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2011-2015 OpenWrt.org
-#
-
-. /lib/functions/system.sh
-. /lib/functions/uci-defaults.sh
-
-ar71xx_setup_interfaces()
-{
- local board="$1"
-
- case "$board" in
- airgatewaypro)
- ucidef_add_switch "switch0" \
- "0@eth0" "4:lan" "5:wan"
- ;;
- airrouter|\
- ap121|\
- ap121-mini|\
- ap96|\
- dir-600-a1|\
- dir-615-c1|\
- dir-615-e1|\
- dir-615-e4|\
- hiwifi-hc6361|\
- ja76pf|\
- mc-mac1200r|\
- minibox-v1|\
- mynet-n600|\
- oolite-v1|\
- oolite-v5.2|\
- oolite-v5.2-dev|\
- qihoo-c301|\
- r602n|\
- rb-750|\
- rb-751|\
- som9331|\
- t830|\
- tew-632brp|\
- tew-712br|\
- tew-732br|\
- tl-mr3220|\
- tl-mr3420|\
- tl-wdr3320-v2|\
- tl-wdr3500|\
- tl-wr740n-v6|\
- tl-wr840n-v2|\
- tl-wr840n-v3|\
- tl-wr841n-v11|\
- tl-wr841n-v9|\
- tl-wr842n-v3|\
- whr-g301n|\
- whr-hp-g300n|\
- whr-hp-gn|\
- wzr-hp-ag300h|\
- zbt-we1526)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
- ;;
- alfa-ap120c|\
- all0305|\
- antminer-s1|\
- antminer-s3|\
- antrouter-r1|\
- ap121f|\
- ap91-5g|\
- aw-nr580|\
- bullet-m|\
- bullet-m-xw|\
- c-55|\
- cap324|\
- cap4200ag|\
- cf-e380ac-v1|\
- cf-e380ac-v2|\
- cpe210-v2|\
- cpe210-v3|\
- cpe510-v2|\
- dr342|\
- eap120|\
- eap300v2|\
- eap7660d|\
- el-mini|\
- fritz300e|\
- fritz450e|\
- gl-usb150|\
- hiveap-121|\
- koala|\
- lbe-m5|\
- loco-m-xw|\
- mr12|\
- mr16|\
- mr1750|\
- mr1750v2|\
- mr18|\
- mr600|\
- mr600v2|\
- mr900|\
- mr900v2|\
- mynet-rext|\
- pqi-air-pen|\
- rb-411|\
- rb-411u|\
- rb-911-2hn|\
- rb-911-5hn|\
- rb-911g-2hpnd|\
- rb-911g-5hpacd|\
- rb-911g-5hpnd|\
- rb-912uag-2hpnd|\
- rb-912uag-5hpnd|\
- rb-921gs-5hpacd-r2|\
- rb-922uags-5hpacd|\
- rb-lhg-5nd|\
- rb-mapl-2nd|\
- rb-sxt2n|\
- rb-sxt-2nd-r3|\
- rb-sxt5n|\
- rb-wap-2nd|\
- rb-wapr-2nd|\
- rb-wapg-5hact2hnd|\
- re355|\
- re450|\
- rocket-m-xw|\
- sc300m |\
- tl-mr10u|\
- tl-mr11u|\
- tl-mr12u|\
- tl-mr13u|\
- tl-mr3020|\
- tl-mr3040|\
- tl-mr3040-v2|\
- tl-wa701nd-v2|\
- tl-wa7210n-v2|\
- tl-wa750re|\
- tl-wa801nd-v2|\
- tl-wa830re-v2|\
- tl-wa850re|\
- tl-wa850re-v2|\
- tl-wa855re-v1|\
- tl-wa901nd|\
- tl-wa901nd-v2|\
- tl-wa901nd-v3|\
- tl-wa901nd-v4|\
- tl-wa901nd-v5|\
- tl-wr703n|\
- tl-wr802n-v1|\
- tl-wr802n-v2|\
- tl-wr902ac-v1|\
- ts-d084|\
- tube2h|\
- unifi|\
- unifiac-lite|\
- wi2a-ac200i|\
- wifi-pineapple-nano|\
- wndap360|\
- wp543)
- ucidef_set_interface_lan "eth0"
- ;;
- a40|\
- a60|\
- alfa-ap96|\
- alfa-nx|\
- dr344|\
- gl-ar150|\
- gl-ar300m|\
- gl-domino|\
- gl-inet|\
- gl-mifi|\
- jwap003|\
- om2p-hsv4|\
- om2pv4|\
- pb42|\
- pb44|\
- rb-951ui-2hnd|\
- routerstation|\
- tl-wr710n|\
- tl-wr720n-v3|\
- tl-wr810n|\
- tl-wr810n-v2|\
- wpe72|\
- wrtnode2q)
- ucidef_set_interfaces_lan_wan "eth1" "eth0"
- ;;
- all0258n|\
- all0315n|\
- dlan-hotspot|\
- dlan-pro-500-wp|\
- ja76pf2|\
- rocket-m-ti|\
- ubnt-unifi-outdoor)
- ucidef_set_interface_lan "eth0 eth1"
- ;;
- wzr-hp-g300nh2)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:1" "3:lan:2" "4:lan:3" "5:lan:4" "2:wan"
- ;;
- ap132|\
- ap136|\
- ap152|\
- rb-750gl|\
- rb-751g|\
- rb-951g-2hnd|\
- rb-962uigs-5hact2hnt|\
- wlr8100|\
- wzr-hp-g450h)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"
- ;;
- ap135-020|\
- ap136-020|\
- bhr-4grv2|\
- tew-823dru|\
- tl-wr1043nd-v2|\
- wzr-450hp2)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan" "6@eth0"
- ;;
- ap136-010|\
- ap147-010|\
- nbg6616|\
- nbg6716)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "6@eth1"
- ;;
- ap143|\
- rb-433|\
- rb-433u)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "5@eth1"
- ;;
- archer-c5|\
- archer-c7|\
- tl-wdr4900-v2)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
- ucidef_add_switch "switch0" \
- "0@eth1" "2:lan" "3:lan" "4:lan" "5:lan" "6@eth0" "1:wan"
- ;;
- archer-c25-v1|\
- archer-c60-v1|\
- archer-c60-v2|\
- rb-750-r2|\
- rb-750p-pbr2|\
- rb-750up-r2|\
- rb-951ui-2nd|\
- rb-952ui-5ac2nd)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
- ;;
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- fritz4020|\
- rb-450g)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan:1" "2:lan:4" "3:lan:3" "4:lan:2"
- ;;
- arduino-yun|\
- dir-505-a1|\
- tl-wa801nd-v3)
- ucidef_set_interface_lan "eth1"
- ;;
- bsb)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan" "3:lan"
- ;;
- c-60)
- ucidef_add_switch "switch0" \
- "0@eth0" "3:wan" "4:lan"
- ;;
- rme-eg200)
- ucidef_set_interface_lan "eth0" "dhcp"
- ;;
- cf-e375ac|\
- rb-map-2nd)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:wan" "2:lan"
- ;;
- cf-e385ac)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2"
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "1:wan" "6@eth1"
- ;;
- cpe210|\
- cpe510|\
- wbs210|\
- wbs510)
- ucidef_add_switch "switch0" \
- "0@eth0" "5:lan" "4:wan"
- ;;
- cr3000)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:1" "2:lan:4" "3:lan:3" "4:lan:2"
- ;;
- cr5000|\
- dgl-5500-a1|\
- dhp-1565-a1|\
- dir-825-c1|\
- dir-835-a1|\
- esr900|\
- mynet-n750|\
- sr3200)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan"
- ;;
- tl-wr1043n-v5)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
- ;;
- dap-2695-a1)
- ucidef_add_switch "switch0" "0@eth0" "2:lan" "3:wan" "6@eth1"
- ;;
- rb-931-2nd)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:3" "2:lan:2" "3:wan:1"
- ;;
- rb-941-2nd)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:wan:1"
- ;;
- db120|\
- rb-2011il|\
- rb-2011ils|\
- rb-2011l|\
- rb-2011uas|\
- rb-2011uas-2hnd|\
- rb-2011uias|\
- rb-2011uias-2hnd|\
- rb-2011uias-2hnd-r2)
- case "$board" in
- rb-2011ils|\
- rb-2011uas*|\
- rb-2011uias|\
- rb-2011uias-2hnd|\
- rb-2011uias-2hnd-r2)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan" "6:sfp"
- ;;
- *)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"
- ;;
- esac
-
- ucidef_add_switch "switch1" \
- "0@eth1" "1:lan" "2:lan" "3:lan" "4:lan" "5:lan"
- ;;
- dir-615-i1|\
- omy-g1|\
- r6100|\
- smart-300|\
- tl-wdr6500-v2|\
- tl-wr940n-v4|\
- tl-wr940n-v6|\
- tl-wr941nd-v6|\
- wnr1000-v2|\
- wnr2000-v4|\
- wnr2200|\
- wnr612-v2|\
- wpn824n)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4"
- ;;
- tl-mr6400)
- ucidef_set_interfaces_lan_wan "eth0.1 eth1" "usb0"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "2:lan" "3:lan"
- ;;
- dir-825-b1|\
- nbg460n_550n_550nh|\
- tew-673gru|\
- wzr-hp-g300nh)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "2:lan" "3:lan" "5@eth0"
- ;;
- dlan-pro-1200-ac)
- ucidef_set_interface_lan "eth0"
- ucidef_add_switch "switch0" \
- "0u@eth0" "2:lan" "3:lan" "4:lan"
- ucidef_add_switch_attr "switch0" "enable" "false"
- ;;
- e1700ac-v2|\
- e750g-v8|\
- unifiac-pro|\
- xd3200)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:wan"
- ;;
- e558-v2)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
- ucidef_add_switch "switch0" \
- "0@eth1" "4:lan" "5:lan" "6@eth0" "3:wan"
- ;;
- ebr-2310-c1)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4"
- ;;
- el-m150)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "3@eth1"
- ;;
- dir-869-a1|\
- epg5000|\
- esr1750|\
- tl-wr1043nd-v4|\
- wndr3700v4|\
- wndr4300)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
- ;;
- ew-balin)
- ucidef_set_interface "usb2" ifname "usb0" protocol "static"
- ucidef_add_switch "switch0" \
- "0@eth0" "5:lan:4" "4:lan:5" "3:wan"
- ;;
- ew-dorin)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "2:lan" "3:wan"
- ;;
- ew-dorin-router)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:lan"
- ;;
- dw33d|\
- f9k1115v2)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0.2"
- ucidef_add_switch "switch0" \
- "2:lan" "3:lan" "4:lan" "5:lan" "6@eth1" "0@eth0" "1:wan"
- ;;
- gl-ar300|\
- wnr2000-v3)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan" "2:lan" "3:lan" "4:lan"
- ;;
- gl-ar750|\
- rb-435g)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan" "2:lan"
- ;;
- gl-ar750s)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan:2" "3:lan:1" "1:wan"
- ;;
- jwap230)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "5:wan" "6@eth1"
- ;;
- nanostation-m-xw)
- ucidef_add_switch "switch0" \
- "0@eth0" "5:lan" "1:wan"
- ;;
- onion-omega)
- ucidef_set_interface_lan "wlan0"
- ;;
- rb-450)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "5@eth1"
- ;;
- routerstation-pro)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "2:lan:3" "3:lan:2" "4:lan:1"
- ;;
- rb-493g)
- ucidef_set_interfaces_lan_wan "eth0.1 eth1.1" "eth1.2"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
- ucidef_add_switch "switch1" \
- "0@eth1" "1:lan:4" "2:lan:1" "3:lan:3" "4:lan:2" "5:wan"
- ;;
- rut900)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan:3" "3:lan:2" "4:lan:1"
- ;;
- tellstick-znet-lite)
- ucidef_set_interface_wan "eth0"
- ucidef_set_interface "wlan" ifname "wlan0" protocol "dhcp"
- ;;
- tl-mr3420-v2|\
- tl-wr841n-v8|\
- tl-wr842n-v2|\
- tl-wr941nd-v5|\
- tl-wr942n-v1)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth0"
- ucidef_add_switch "switch0" \
- "0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
- ;;
- archer-c7-v4|\
- archer-c7-v5|\
- tl-wdr4300|\
- tl-wr1041n-v2)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "5:lan:4" "1:wan"
- ;;
- tl-wpa8630)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan:3" "3:lan:2" "4:lan:1" "5:lan:4"
- ;;
- tl-wr1043nd)
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
- ;;
- tl-wr2543n)
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "9@eth0"
- ;;
- tl-mr3220-v2|\
- tl-wr741nd-v4)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
- ;;
- tl-wr841n-v1|\
- tl-wr941nd)
- ucidef_set_interface "eth" ifname "eth0"
- ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
- ;;
- tl-wr741nd|\
- tl-wr841n-v7)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4"
- ;;
- uap-pro|\
- wpj342)
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan" "2:wan"
- ;;
- wndr3700|\
- wndr3700v2|\
- wndr3800|\
- wndr3800ch)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "5@eth0"
-
- ucidef_add_switch_attr "switch0" "blinkrate" 2
- ucidef_add_switch_port_attr "switch0" 1 led 6
- ucidef_add_switch_port_attr "switch0" 2 led 9
- ucidef_add_switch_port_attr "switch0" 5 led 2
- ;;
- wpj344)
- ucidef_add_switch "switch0" \
- "0@eth0" "3:lan" "2:wan"
- ;;
- wpj558)
- ucidef_add_switch "switch0" \
- "5:lan" "1:wan" "6@eth0"
- ;;
- wpj563)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan" "3:wan"
- ;;
- wrt160nl)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4@eth0"
- ;;
- wzr-hp-g450h)
- ucidef_add_switch "switch0" \
- "0@eth0" "2:lan:1 3:lan:2 4:lan:3 5:lan:4" "1:wan"
- ;;
- z1)
- ucidef_set_interfaces_lan_wan "eth0.1" "eth1"
- ucidef_add_switch "switch0" \
- "0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "4:lan:4" "5:wan"
- ;;
- ens202ext)
- ucidef_set_interfaces_lan_wan "eth1.1" "eth1.2"
- ucidef_add_switch "switch0" \
- "0@eth1" "2:lan:1" "3:lan:2" "4:lan:3" "5:lan:4" "1:wan"
- ;;
- *)
- ucidef_set_interfaces_lan_wan "eth0" "eth1"
- ;;
- esac
-}
-
-ar71xx_setup_macs()
-{
- local board="$1"
- local lan_mac=""
- local wan_mac=""
-
- case $board in
- archer-c7-v4)
- base_mac=$(mtd_get_mac_binary config 0x8)
- wan_mac=$(macaddr_add "$base_mac" 1)
- ;;
- archer-c7-v5)
- base_mac=$(mtd_get_mac_binary info 0x8)
- wan_mac=$(macaddr_add "$base_mac" 1)
- ;;
- dgl-5500-a1|\
- dir-825-c1)
- wan_mac=$(mtd_get_mac_ascii nvram "wan_mac")
- ;;
- dhp-1565-a1|\
- dir-835-a1|\
- wndr3700v4|\
- wndr4300)
- lan_mac=$(mtd_get_mac_binary caldata 0x0)
- wan_mac=$(mtd_get_mac_binary caldata 0x6)
- ;;
- dir-869-a1|\
- mynet-n750)
- wan_mac=$(mtd_get_mac_ascii devdata "wanmac")
- ;;
- esr900)
- wan_mac=$(mtd_get_mac_ascii u-boot-env "wanaddr")
- ;;
- fritz300e)
- lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)"))
- ;;
- tl-wdr4300)
- base_mac=$(mtd_get_mac_binary u-boot 0x1fc00)
- wan_mac=$(macaddr_add "$base_mac" 1)
- ;;
- tl-wr1043n-v5|\
- tl-wr1043nd-v4)
- lan_mac=$(mtd_get_mac_binary product-info 0x8)
- wan_mac=$(macaddr_add "$lan_mac" 1)
- ;;
- wlr8100)
- lan_mac=$(mtd_get_mac_ascii u-boot-env "ethaddr")
- wan_mac=$(mtd_get_mac_ascii u-boot-env "wanaddr")
- ;;
- wpj344|\
- wpj558)
- wan_mac=$(mtd_get_mac_binary u-boot 0x2e018)
- ;;
- esac
-
- [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
- [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
-}
-
-ar71xx_setup_ar8xxx_switch()
-{
- local board="$1"
-
- case $board in
- ap147-010|\
- archer-c25-v1|\
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- archer-c60-v1|\
- archer-c60-v2|\
- archer-c7-v4|\
- archer-c7-v5|\
- cf-e375ac|\
- cf-e385ac|\
- cr3000|\
- dhp-1565-a1|\
- mynet-n600|\
- rb-2011il|\
- rb-2011ils|\
- rb-2011l|\
- rb-2011uas|\
- rb-2011uas-2hnd|\
- rb-2011uias|\
- rb-2011uias-2hnd|\
- rb-2011uias-2hnd-r2|\
- rb-750|\
- rb-750p-pbr2|\
- rb-750-r2|\
- rb-750up-r2|\
- rb-951ui-2nd|\
- rb-952ui-5ac2nd|\
- rb-map-2nd|\
- tl-wr1043nd-v4|\
- tl-wr1043n-v5|\
- wndr3700v4|\
- wndr3700v4|\
- wndr4300|\
- wnr1000-v2|\
- wnr2000-v3|\
- wnr2200|\
- wnr612-v2|\
- wpn824n)
- ucidef_set_ar8xxx_switch_mib "switch0" 0 500
- ;;
- esac
-}
-
-board_config_update
-board=$(board_name)
-ar71xx_setup_interfaces $board
-ar71xx_setup_macs $board
-ar71xx_setup_ar8xxx_switch $board
-board_config_flush
-
-exit 0
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-board=$(board_name)
-
-case "$board" in
-cpe210|\
-cpe510|\
-wbs210|\
-wbs510)
- ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"
- ;;
-nanostation-m)
- ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "8"
- ;;
-nanostation-m-xw)
- ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "2"
- ;;
-rb-912uag-2hpnd|\
-rb-912uag-5hpnd)
- ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "61" "1"
- ;;
-rb-750up-r2|\
-rb-951ui-2nd|\
-rb-952ui-5ac2nd)
- ucidef_add_gpio_switch "usb_power_switch" "USB Power Switch" "45" "1"
- ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14"
- ;;
-rb-750p-pbr2)
- ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "14"
- ;;
-esac
-
-board_config_flush
-
-exit 0
+++ /dev/null
-#!/bin/sh
-# Copyright (C) 2009-2013 OpenWrt.org
-
-. /lib/functions.sh
-. /lib/functions/leds.sh
-
-get_status_led() {
- local board=$(board_name)
-
- case $board in
- a40)
- status_led="a40:green:status"
- ;;
- a60)
- status_led="a60:green:status"
- ;;
- alfa-nx)
- status_led="alfa:green:led_8"
- ;;
- all0305)
- status_led="eap7660d:green:ds4"
- ;;
- antminer-s1|\
- antminer-s3|\
- antminer-r1|\
- e1700ac-v2|\
- e558-v2|\
- e600gac-v2|\
- e750a-v4|\
- e750g-v8|\
- eap120|\
- minibox-v1|\
- minibox-v3.2|\
- packet-squirrel|\
- som9331|\
- sr3200|\
- tl-wr802n-v2|\
- xd3200)
- status_led="$board:green:system"
- ;;
- ap121f)
- status_led="$board:green:vpn"
- ;;
- ap132|\
- ap531b0|\
- cpe505n|\
- db120|\
- dr342|\
- dr344|\
- rut900|\
- tew-632brp|\
- tl-wr942n-v1|\
- wpj344|\
- zbt-we1526)
- status_led="$board:green:status"
- ;;
- ap136-010|\
- ap136-020)
- status_led="ap136:green:status"
- ;;
- ap147-010)
- status_led="ap147:green:status"
- ;;
- ap135-020)
- status_led="ap135:green:status"
- ;;
- archer-c25-v1|\
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- archer-c60-v1|\
- archer-c60-v2|\
- archer-c7-v4|\
- archer-c7-v5|\
- fritz300e|\
- fritz4020|\
- fritz450e|\
- gl-ar750s|\
- gl-usb150|\
- mr12|\
- mr16|\
- nbg6616|\
- sc1750|\
- sc450|\
- tl-wpa8630|\
- tl-wr902ac-v1)
- status_led="$board:green:power"
- ;;
- tl-mr10u|\
- tl-mr12u|\
- tl-mr13u|\
- tl-wdr4300|\
- tl-wdr4900-v2|\
- tl-wr703n|\
- tl-wr710n|\
- tl-wr720n-v3|\
- tl-wr802n-v1|\
- tl-wr810n|\
- tl-wr810n-v2|\
- tl-wr940n-v4|\
- tl-wr941nd-v6)
- status_led="tp-link:blue:system"
- ;;
- ap90q|\
- cpe830|\
- cpe870|\
- gl-ar300m|\
- gl-inet|\
- gl-mifi)
- status_led="$board:green:lan"
- ;;
- ap91-5g|\
- n5q)
- status_led="$board:green:signal4"
- ;;
- ap96)
- status_led="$board:green:led2"
- ;;
- aw-nr580)
- status_led="$board:green:ready"
- ;;
- bhr-4grv2|\
- wzr-hp-ag300h|\
- wzr-hp-g300nh2)
- status_led="buffalo:red:diag"
- ;;
- bsb)
- status_led="$board:red:sys"
- ;;
- bullet-m|\
- bullet-m-xw|\
- loco-m-xw|\
- nano-m|\
- nanostation-m|\
- nanostation-m-xw|\
- rocket-m|\
- rocket-m-xw)
- status_led="ubnt:green:link4"
- ;;
- bxu2000n-2-a1)
- status_led="bhu:green:status"
- ;;
- cap324)
- status_led="pcs:green:power"
- ;;
- c-55|\
- c-60)
- status_led="$board:green:pwr"
- ;;
- cap4200ag)
- status_led="senao:green:pwr"
- ;;
- cf-e316n-v2|\
- cf-e520n|\
- cf-e530n)
- status_led="$board:blue:wan"
- ;;
- cf-e320n-v2)
- status_led="$board:blue:wlan"
- ;;
- cf-e375ac|\
- cf-e380ac-v1|\
- cf-e380ac-v2|\
- cf-e385ac)
- status_led="$board:blue:wlan2g"
- ;;
- cpe510)
- status_led="tp-link:green:link4"
- ;;
- cr3000|\
- cr5000)
- status_led="pcs:amber:power"
- ;;
- dap-1330-a1|\
- dgl-5500-a1|\
- dhp-1565-a1|\
- dir-505-a1|\
- dir-600-a1|\
- dir-615-e1|\
- dir-615-i1|\
- dir-615-e4)
- status_led="d-link:green:power"
- ;;
- dir-615-c1)
- status_led="d-link:green:status"
- ;;
- dir-825-b1)
- status_led="d-link:orange:power"
- ;;
- dir-825-c1|\
- dir-835-a1)
- status_led="d-link:amber:power"
- ;;
- dir-869-a1)
- status_led="d-link:white:status"
- ;;
- dlan-hotspot)
- status_led="devolo:green:wifi"
- ;;
- dlan-pro-500-wp)
- status_led="devolo:green:wlan-2g"
- ;;
- dlan-pro-1200-ac)
- status_led="devolo:status:wlan"
- ;;
- dr531)
- status_led="$board:green:sig4"
- ;;
- dragino2|\
- oolite-v1)
- status_led="$board:red:system"
- ;;
- dw33d|\
- r36a)
- status_led="$board:blue:status"
- ;;
- e600g-v2|\
- oolite-v5.2-dev|\
- ts-d084|\
- wifi-pineapple-nano)
- status_led="$board:blue:system"
- ;;
- eap300v2)
- status_led="engenius:blue:power"
- ;;
- ens202ext|\
- esr900)
- status_led="engenius:amber:power"
- ;;
- eap7660d)
- status_led="$board:green:ds4"
- ;;
- el-m150|\
- el-mini)
- status_led="easylink:green:system"
- ;;
- ew-balin)
- status_led="balin:green:status"
- ;;
- ew-dorin|\
- ew-dorin-router)
- status_led="dorin:green:status"
- ;;
- f9k1115v2)
- status_led="belkin:blue:status"
- ;;
- epg5000|\
- esr1750)
- status_led="$board:amber:power"
- ;;
- gl-ar750|\
- hiveap-121|\
- nbg6716|\
- wam250)
- status_led="$board:white:power"
- ;;
- hiwifi-hc6361)
- status_led="hiwifi:blue:system"
- ;;
- hornet-ub|\
- hornet-ub-x2)
- status_led="alfa:blue:wps"
- ;;
- ja76pf|\
- ja76pf2)
- status_led="jjplus:green:led1"
- ;;
- jwap230)
- status_led="$board:green:led1"
- ;;
- koala)
- status_led="$board:blue:sys"
- ;;
- lan-turtle)
- status_led="$board:orange:system"
- ;;
- lbe-m5)
- status_led="ubnt:green:sys"
- ;;
- ls-sr71)
- status_led="ubnt:green:d22"
- ;;
- mc-mac1200r)
- status_led="mercury:green:system"
- ;;
- mr18|\
- z1)
- status_led="$board:green:tricolor0"
- ;;
- mr600)
- status_led="$board:orange:power"
- ;;
- mr600v2)
- status_led="mr600:blue:power"
- ;;
- mr1750|\
- mr1750v2)
- status_led="mr1750:blue:power"
- ;;
- mr900|\
- mr900v2)
- status_led="mr900:blue:power"
- ;;
- mynet-n600|\
- mynet-n750|\
- mynet-rext)
- status_led="wd:blue:power"
- ;;
- mzk-w04nu|\
- mzk-w300nh)
- status_led="planex:green:status"
- ;;
- nbg460n_550n_550nh)
- status_led="nbg460n:green:power"
- ;;
- om2p|\
- om2p-hs|\
- om2p-hsv2|\
- om2p-hsv3|\
- om2p-hsv4|\
- om2p-lc|\
- om2pv2|\
- om2pv4)
- status_led="om2p:blue:power"
- ;;
- om5p|\
- om5p-an)
- status_led="om5p:blue:power"
- ;;
- om5p-ac|\
- om5p-acv2)
- status_led="om5pac:blue:power"
- ;;
- omy-g1)
- status_led="omy:green:wlan"
- ;;
- omy-x1)
- status_led="omy:green:power"
- ;;
- onion-omega)
- status_led="onion:amber:system"
- ;;
- pb44)
- status_led="$board:amber:jump1"
- ;;
- r602n)
- status_led="$board:green:wan"
- ;;
- rb-2011il|\
- rb-2011ils|\
- rb-2011l|\
- rb-2011uas|\
- rb-2011uas-2hnd)
- status_led="rb:green:usr"
- ;;
- rb-411|\
- rb-411u|\
- rb-433|\
- rb-433u|\
- rb-450|\
- rb-450g|\
- rb-493)
- status_led="rb4xx:yellow:user"
- ;;
- rb-750)
- status_led="rb750:green:act"
- ;;
- rb-750-r2|\
- rb-750p-pbr2|\
- rb-750up-r2|\
- rb-911-2hn|\
- rb-911-5hn|\
- rb-911g-2hpnd|\
- rb-911g-5hpacd|\
- rb-911g-5hpnd|\
- rb-931-2nd|\
- rb-941-2nd|\
- rb-951ui-2nd|\
- rb-952ui-5ac2nd|\
- rb-962uigs-5hact2hnt|\
- rb-lhg-5nd|\
- rb-map-2nd|\
- rb-mapl-2nd|\
- rb-sxt-2nd-r3|\
- rb-wap-2nd|\
- rb-wapr-2nd)
- status_led="rb:green:user"
- ;;
- rb-951ui-2hnd)
- status_led="rb:green:act"
- ;;
- rb-912uag-2hpnd|\
- rb-912uag-5hpnd|\
- rb-sxt2n|\
- rb-sxt5n|\
- rb-wapg-5hact2hnd)
- status_led="rb:green:power"
- ;;
- re355|\
- re450|\
- sc300m)
- status_led="$board:blue:power"
- ;;
- rocket-m-ti)
- status_led="ubnt:green:link6"
- ;;
- routerstation|\
- routerstation-pro)
- status_led="ubnt:green:rf"
- ;;
- rw2458n)
- status_led="$board:green:d3"
- ;;
- smart-300)
- status_led="nc-link:green:system"
- ;;
- qihoo-c301)
- status_led="qihoo:green:status"
- ;;
- t830)
- status_led="$board:green:usb"
- ;;
- tellstick-znet-lite)
- status_led="tellstick:white:system"
- ;;
- tew-673gru)
- status_led="trendnet:blue:wps"
- ;;
- tew-712br|\
- tew-732br|\
- tew-823dru)
- status_led="trendnet:green:power"
- ;;
- tl-mr3020|\
- tl-wr2543n)
- status_led="tp-link:green:wps"
- ;;
- tl-wa750re)
- status_led="tp-link:orange:re"
- ;;
- tl-wa850re|\
- tl-wa850re-v2)
- status_led="tp-link:blue:re"
- ;;
- tl-wa855re-v1|\
- tl-wa860re)
- status_led="tp-link:green:power"
- ;;
- tl-mr6400)
- status_led="tp-link:white:power"
- ;;
- archer-c5|\
- archer-c7|\
- tl-mr3220|\
- tl-mr3220-v2|\
- tl-mr3420|\
- tl-mr3420-v2|\
- tl-wa701nd-v2|\
- tl-wa801nd-v2|\
- tl-wa801nd-v3|\
- tl-wa830re-v2|\
- tl-wa901nd|\
- tl-wa901nd-v2|\
- tl-wa901nd-v3|\
- tl-wa901nd-v4|\
- tl-wa901nd-v5|\
- tl-wdr3320-v2|\
- tl-wdr3500|\
- tl-wr1041n-v2|\
- tl-wr1043n-v5|\
- tl-wr1043nd|\
- tl-wr1043nd-v2|\
- tl-wr1043nd-v4|\
- tl-wr740n-v6|\
- tl-wr741nd|\
- tl-wr741nd-v4|\
- tl-wr840n-v2|\
- tl-wr840n-v3|\
- tl-wr841n-v1|\
- tl-wr841n-v7|\
- tl-wr841n-v8|\
- tl-wr841n-v11|\
- tl-wr842n-v2|\
- tl-wr842n-v3|\
- tl-wr941nd|\
- tl-wr941nd-v5)
- status_led="tp-link:green:system"
- ;;
- tl-wr841n-v9)
- status_led="tp-link:green:qss"
- ;;
- tl-wr940n-v6)
- status_led="tp-link:orange:diag"
- ;;
- tl-wdr6500-v2)
- status_led="tp-link:white:system"
- ;;
- tube2h)
- status_led="alfa:green:signal4"
- ;;
- unifi)
- status_led="ubnt:green:dome"
- ;;
- uap-pro|\
- unifiac-lite|\
- unifiac-pro)
- status_led="ubnt:white:dome"
- ;;
- unifi-outdoor-plus)
- status_led="ubnt:white:front"
- ;;
- airgateway|\
- airgatewaypro)
- status_led="ubnt:white:status"
- ;;
- wi2a-ac200i)
- status_led="nokia:green:ctrl"
- ;;
- whr-g301n|\
- whr-hp-g300n|\
- whr-hp-gn|\
- wzr-hp-g300nh)
- status_led="buffalo:green:router"
- ;;
- wlae-ag300n)
- status_led="buffalo:green:status"
- ;;
- r6100|\
- wndap360|\
- wndr3700|\
- wndr3700v4|\
- wndr4300|\
- wnr2000|\
- wnr2000-v3|\
- wnr2200|\
- wnr612-v2|\
- wnr1000-v2|\
- wpn824n)
- status_led="netgear:green:power"
- ;;
- wp543)
- status_led="$board:green:diag"
- ;;
- wpj342|\
- wpj531|\
- wpj558)
- status_led="$board:green:sig3"
- ;;
- wpj563)
- status_led="$board:green:sig1"
- ;;
- wrt160nl|\
- wrt400n)
- status_led="$board:blue:wps"
- ;;
- zcn-1523h-2|\
- zcn-1523h-5)
- status_led="zcn-1523h:amber:init"
- ;;
- wlr8100)
- status_led="sitecom:amber:status"
- ;;
- esac
-}
-
-set_state() {
- get_status_led
-
- case "$1" in
- preinit)
- status_led_blink_preinit
- ;;
- failsafe)
- status_led_blink_failsafe
- ;;
- preinit_regular)
- status_led_blink_preinit_regular
- ;;
- upgrade)
- status_led_blink_preinit_regular
- ;;
- done)
- status_led_on
- case $(board_name) in
- gl-ar300m|\
- gl-ar750)
- fw_printenv lc >/dev/null 2>&1 && fw_setenv "bootcount" 0
- ;;
- qihoo-c301)
- local n=$(fw_printenv activeregion | cut -d = -f 2)
- fw_setenv "image${n}trynum" 0
- ;;
- wi2a-ac200i)
- fw_setenv PKRstCnt 0
- ;;
- esac
- ;;
- esac
-}
+++ /dev/null
-#!/bin/sh
-
-[ -e /lib/firmware/$FIRMWARE ] && exit 0
-
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-ath9k_eeprom_die() {
- echo "ath9k eeprom: " "$*"
- exit 1
-}
-
-ath9k_eeprom_extract() {
- local part=$1
- local offset=$(($2))
- local count=$(($3))
- local mtd
-
- mtd=$(find_mtd_chardev $part)
- [ -n "$mtd" ] || \
- ath9k_eeprom_die "no mtd device found for partition $part"
-
- dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
- ath9k_eeprom_die "failed to extract from $mtd"
-}
-
-ath9k_ubi_eeprom_extract() {
- local part=$1
- local offset=$(($2))
- local count=$(($3))
- local ubidev=$(nand_find_ubi $CI_UBIPART)
- local ubi
-
- ubi=$(nand_find_volume $ubidev $part)
- [ -n "$ubi" ] || \
- ath9k_eeprom_die "no UBI volume found for $part"
-
- dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
- ath9k_eeprom_die "failed to extract from $ubi"
-}
-
-ath9k_eeprom_extract_reverse() {
- local part=$1
- local offset=$2
- local count=$(($3))
- local mtd
- local reversed
- local caldata
-
- mtd=$(find_mtd_chardev "$part")
- reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
-
- for byte in $reversed; do
- caldata="\x${byte}${caldata}"
- done
-
- printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
-}
-
-ath9k_patch_firmware_mac() {
- local mac=$1
-
- [ -z "$mac" ] && return
-
- macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=2 count=1
-}
-
-board=$(board_name)
-
-case "$FIRMWARE" in
-"soc_wmac.eeprom")
- case $board in
- c-55|\
- c-60)
- ath9k_eeprom_extract "art" 0x1000 0x800
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) +1)
- ;;
- fritz4020|\
- fritz450e)
- ath9k_eeprom_extract_reverse "urlader" 0x1541 0x440
- ;;
- mr18)
- . /lib/upgrade/nand.sh
-
- if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
- ath9k_ubi_eeprom_extract "caldata" 0x1000 0x800
- else
- ath9k_eeprom_extract "odm-caldata" 0x1000 0x800
- fi
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 0x66) +1)
- ;;
- r6100 | \
- wndr3700v4 | \
- wndr4300)
- ath9k_eeprom_extract "caldata" 0x1000 0x800
- ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0x0)
- ;;
- rambutan)
- ath9k_eeprom_extract "art" 0x1000 0x800
- ;;
- wlr8100)
- ath9k_eeprom_extract "art" 0x1000 0x800
- ath9k_patch_firmware_mac $(mtd_get_mac_ascii u-boot-env "ethaddr")
- ;;
- z1)
- . /lib/upgrade/nand.sh
-
- if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
- ath9k_ubi_eeprom_extract "caldata" 0x1000 0x800
- else
- ath9k_eeprom_extract "origcaldata" 0x1000 0x800
- fi
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 0x66) +2)
- ;;
- *)
- ath9k_eeprom_die "board $board is not supported yet"
- ;;
- esac
- ;;
-
-"pci_wmac0.eeprom")
- case $board in
- c-55)
- ath9k_eeprom_extract "art" 0x5000 0x800
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) +2)
- ;;
- fritz300e)
- ath9k_eeprom_extract_reverse "urloader" 0x1541 0x440
- ;;
- mr18)
- . /lib/upgrade/nand.sh
-
- if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
- ath9k_ubi_eeprom_extract "caldata" 0x5000 0x800
- else
- ath9k_eeprom_extract "odm-caldata" 0x5000 0x800
- fi
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 0x66) +2)
- ;;
- wndr3700v4 | \
- wndr4300)
- ath9k_eeprom_extract "caldata" 0x5000 0x800
- ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0xc)
- ;;
- z1)
- . /lib/upgrade/nand.sh
-
- if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
- ath9k_ubi_eeprom_extract "caldata" 0x15000 0x1000
- else
- ath9k_eeprom_extract "origcaldata" 0x15000 0x1000
- fi
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 0x66) +3)
- ;;
- *)
- ath9k_eeprom_die "board $board is not supported yet"
- ;;
- esac
- ;;
-
-"pci_wmac1.eeprom")
- case $board in
- mr18)
- . /lib/upgrade/nand.sh
-
- if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
- ath9k_ubi_eeprom_extract "caldata" 0x9000 0x800
- else
- ath9k_eeprom_extract "odm-caldata" 0x9000 0x800
- fi
- ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 0x66) +3)
- ;;
- *)
- ath9k_eeprom_die "board $board is not supported yet"
- ;;
- esac
- ;;
-esac
+++ /dev/null
-#!/bin/sh
-
-ath10kcal_die() {
- echo "ath10cal: " "$*"
- exit 1
-}
-
-ath10kcal_from_file() {
- local source=$1
- local offset=$(($2))
- local count=$(($3))
-
- dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
- ath10kcal_die "failed to extract calibration data from $source"
-}
-
-ath10kcal_extract() {
- local part=$1
- local offset=$(($2))
- local count=$(($3))
- local mtd cal_size
-
- mtd=$(find_mtd_chardev $part)
- [ -n "$mtd" ] || \
- ath10kcal_die "no mtd device found for partition $part"
-
- # Check that the calibration data size in header equals the desired size
- cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
-
- [ "$count" = "$cal_size" ] || \
- ath10kcal_die "no calibration data found in $part"
-
- dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
- ath10kcal_die "failed to extract calibration data from $mtd"
-}
-
-ath10kcal_patch_mac() {
- local mac=$1
-
- [ -z "$mac" ] && return
-
- macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=6 count=1
-}
-
-[ -e /lib/firmware/$FIRMWARE ] && exit 0
-
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-board=$(board_name)
-
-case "$FIRMWARE" in
-"ath10k/cal-pci-0000:00:00.0.bin")
- case $board in
- a40|\
- a60|\
- mr1750|\
- mr1750v2|\
- om5p-acv2)
- ath10kcal_extract "ART" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
- ;;
- archer-c25-v1|\
- tl-wdr6500-v2)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
- ;;
- archer-c7-v4|\
- archer-c7-v5)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
- ;;
- cf-e355ac-v1|\
- cf-e380ac-v1|\
- cf-e380ac-v2|\
- dlan-pro-1200-ac|\
- e1700ac-v2|\
- e600gac-v2|\
- minibox-v3.2|\
- oolite-v5.2|\
- oolite-v5.2-dev|\
- sr3200|\
- xd3200)
- ath10kcal_extract "art" 0x5000 0x844
- ;;
- dap-2695-a1)
- ath10kcal_extract "radiocfg" 0x5000 0x844
- ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
- ;;
- dir-869-a1|\
- qihoo-c301)
- ath10kcal_extract "radiocfg" 0x5000 0x844
- ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
- ;;
- dw33d)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(mtd_get_mac_binary art 0x12)
- ;;
- epg5000|\
- esr1750)
- ath10kcal_extract "caldata" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
- ;;
- gl-ar750s|\
- gl-ar750|\
- tl-wpa8630)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
- ;;
- koala)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0xc) +0)
- ;;
- mc-mac1200r)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
- ;;
- r6100)
- ath10kcal_extract "caldata" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
- ;;
- rb-952ui-5ac2nd|\
- rb-wapg-5hact2hnd)
- ath10kcal_from_file "/sys/firmware/mikrotik/hard_config/wlan_data" 0x5000 0x844
- ;;
- re355|\
- re450|\
- tl-wr902ac-v1)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
- ;;
- unifiac-lite|\
- unifiac-pro)
- ath10kcal_extract "EEPROM" 0x5000 0x844
- ;;
- wi2a-ac200i)
- ath10kcal_extract "ART" 0x5000 0x844
- ;;
- esac
- ;;
-"ath10k/cal-pci-0000:01:00.0.bin")
- case $board in
- archer-c5|\
- archer-c7)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
- ;;
- nbg6616|\
- nbg6716)
- ath10kcal_extract "RFdata" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
- ;;
- om5p-ac)
- ath10kcal_extract "ART" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
- ;;
- rb-911g-5hpacd|\
- rb-921gs-5hpacd-r2|\
- rb-922uags-5hpacd|\
- rb-962uigs-5hact2hnt)
- ath10kcal_from_file "/sys/firmware/mikrotik/hard_config/wlan_data" 0x5000 0x844
- ;;
- wlr8100)
- ath10kcal_extract "art" 0x5000 0x844
- ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
- ;;
- esac
- ;;
-"ath10k/pre-cal-pci-0000:00:00.0.bin")
- case $board in
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- archer-c60-v1|\
- cf-e355ac-v2|\
- cf-e375ac)
- ath10kcal_extract "art" 0x5000 0x2f20
- ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
- /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
- ;;
- archer-c60-v2)
- ath10kcal_extract "art" 0x5000 0x2f20
- ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
- /lib/firmware/ath10k/QCA9888/hw2.0/board.bin
- ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
- ;;
- cf-e385ac)
- ath10kcal_extract "art" 0x5000 0x2f20
- ;;
- esac
- ;;
-*)
- exit 1
- ;;
-esac
+++ /dev/null
-#!/bin/ash
-
-[ "$ACTION" == "add" ] || exit 0
-
-PHYNBR=${DEVPATH##*/phy}
-
-[ -n $PHYNBR ] || exit 0
-
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-board=$(board_name)
-
-case "$board" in
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- archer-c60-v1)
- echo $(macaddr_add $(mtd_get_mac_binary mac 0x8) $(($PHYNBR - 1)) ) > /sys${DEVPATH}/macaddress
- ;;
- *)
- ;;
-esac
-
+++ /dev/null
-#!/bin/sh
-
-# For AR9220 and AR9223, GPIO JTAG must explicit be disabled
-# before LEDs start working. Do this when wifi device is
-# detected.
-
-#
-# $DEVPATH is not valid for some boards (including WZR-HP-AG300H).
-# Manipulate the $DEVPATH to reach the corresponding phyN.
-#
-
-devdir=$(dirname $DEVPATH)
-devdir=$(dirname $devdir)
-phydir=/sys$devdir/ieee80211
-
-[ -d $phydir ] || exit 0
-
-phyname=$(cat $phydir/phy*/name)
-
-[ -z $phyname -o $ACTION != "add" ] && exit 0
-
-#
-# ar922x_disable_gpio_jtag():
-#
-# Emulate
-# REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, AR_GPIO_JTAG_DISABLE);
-# for AR9220 and AR9223.
-#
-
-ar922x_disable_gpio_jtag() {
- local regidx=0x4054
-
- [ -f /sys/kernel/debug/ieee80211/$1/ath9k/regidx ] || return
-
- echo $regidx > /sys/kernel/debug/ieee80211/$1/ath9k/regidx
- regval=$(cat /sys/kernel/debug/ieee80211/$1/ath9k/regval)
- regval=$((regval | 0x20000))
- echo regval $regval
- echo $regval > /sys/kernel/debug/ieee80211/$1/ath9k/regval
-}
-
-[ $phyname -a $ACTION = "add" ] && {
- . /lib/functions.sh
-
- case $(board_name) in
- wzr-hp-ag300h)
- ar922x_disable_gpio_jtag $phyname
- ;;
- esac;
-}
-
-exit 0
+++ /dev/null
-::sysinit:/etc/init.d/rcS S boot
-::shutdown:/etc/init.d/rcS K shutdown
-::askconsole:/usr/libexec/login.sh
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2013 OpenWrt.org
-#
-
-SWITCH_NAME_CHANGED=
-
-. /lib/functions.sh
-
-do_change_switch_name() {
- local config="$1"
- local option=$2
- local oldname=$3
- local newname=$4
- local val
-
- config_get val "$config" $option
- [ "$val" != "$oldname" ] && return 0
-
- uci_set network "$config" $option $newname
- SWITCH_NAME_CHANGED=1
-
- return 0
-}
-
-migrate_switch_name() {
- local oldname=$1
- local newname=$2
-
- config_load network
-
- logger -t migrate-switchX "Updating switch names in network configuration"
-
- config_foreach do_change_switch_name switch name $oldname $newname
- config_foreach do_change_switch_name switch_vlan device $oldname $newname
-
- [ "$SWITCH_NAME_CHANGED" = "1" ] && {
- logger -t migrate-switchX "Switch names updated, saving network configuration"
- uci commit network
- }
-}
-
-board=$(board_name)
-
-case "$board" in
-airrouter|\
-ap121|\
-ap121-mini|\
-ap96|\
-dir-600-a1|\
-dir-615-c1|\
-dir-615-e1|\
-dir-615-e4|\
-dir-825-c1|\
-ebr-2310-c1|\
-ew-dorin|\
-ew-dorin-router|\
-ja76pf|\
-rb-750|\
-rb-751|\
-tew-632brp|\
-tew-712br|\
-tl-mr3220|\
-tl-mr3220-v2 |\
-tl-mr3420|\
-tl-wdr4300|\
-tl-wr741nd|\
-tl-wr741nd-v4|\
-tl-wr841n-v7|\
-tl-wr1041n-v2|\
-whr-g301n|\
-whr-hp-g300n|\
-whr-hp-gn|\
-wrt160nl|\
-wzr-hp-ag300h|\
-wzr-hp-g300nh2|\
-wzr-hp-g450h|\
-z1)
- migrate_switch_name "eth0" "switch0"
- ;;
-
-el-m150|\
-rb-450)
- migrate_switch_name "eth1" "switch0"
- ;;
-
-db120|\
-rb-2011il|\
-rb-2011ils|\
-rb-2011l|\
-rb-2011uas-2hnd)
- migrate_switch_name "eth0" "switch0"
- migrate_switch_name "eth1" "switch1"
- ;;
-
-dir-825-b1|\
-nbg460n_550n_550nh|\
-tew-673gru)
- migrate_switch_name "rtl8366s" "switch0"
- ;;
-
-tl-wr1043nd)
- migrate_switch_name "rtl8366rb" "switch0"
- ;;
-
-esac
-
-exit 0
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-
-dev="$(uci -q get network.@switch_vlan[0].device)"
-vlan="$(uci -q get network.@switch_vlan[0].vlan)"
-
-if [ "$dev" = "rtl8366s" ] && [ "$vlan" = 0 ]; then
- logger -t vlan-migration "VLAN 0 is invalid for RTL8366s, changing to 1"
- uci set network.@switch_vlan[0].vlan=1
- uci commit network
-fi
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2013 OpenWrt.org
-#
-
-LED_OPTIONS_CHANGED=0
-
-. /lib/functions.sh
-
-do_led_update_sysfs()
-{
- local cfg=$1; shift
- local tuples="$@"
- local sysfs
- local name
-
- config_get sysfs $cfg sysfs
- config_get name $cfg name
-
- [ -z "$sysfs" ] && return
-
- for tuple in $tuples; do
- local old=${tuple%=*}
- local new=${tuple#*=}
- local new_sysfs
-
- new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/")
-
- [ "$new_sysfs" = "$sysfs" ] && continue
-
- uci set system.${cfg}.sysfs="${new_sysfs}"
- LED_OPTIONS_CHANGED=1
-
- logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}"
- done;
-}
-
-migrate_leds()
-{
- config_load system
- config_foreach do_led_update_sysfs led "$@"
-}
-
-board=$(board_name)
-
-case "$board" in
-archer-c7)
- migrate_leds ":blue:=:green:"
- ;;
-dhp-1565-a1|\
-dir-825-c1|\
-dir-835-a1)
- migrate_leds ":orange:=:amber:" ":wifi_bgn=:wlan2g"
- ;;
-dr344)
- migrate_leds ":red:=:green:" ":yellow:=:green:"
- ;;
-gl-ar150)
- migrate_leds "gl-ar150:wlan=gl-ar150:orange:wlan" "gl-ar150:lan=gl-ar150:green:lan" "gl-ar150:wan=gl-ar150:green:wan"
- ;;
-oolite-v1)
- migrate_leds "oolite:=${board}"
- ;;
-wndap360|\
-wndr3700|\
-wnr2000|\
-wnr2200)
- migrate_leds "${board}:=netgear:"
- ;;
-wndr3700v4|\
-wndr4300)
- migrate_leds ":orange:=:amber:"
- ;;
-wnr1000-v2)
- migrate_leds "wnr1000v2:=netgear:"
- ;;
-wnr612-v2)
- migrate_leds "wnr612v2:=netgear:"
- ;;
-esac
-
-[ "$LED_OPTIONS_CHANGED" = "1" ] && uci commit system
-
-exit 0
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-
-. /lib/functions.sh
-
-board=$(board_name)
-
-fixtrx() {
- mtd -o 32 fixtrx firmware
-}
-
-fixwrgg() {
- local kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"kernel".*/\1/p' /proc/mtd)
-
- [ "$kernel_size" ] && mtd -c 0x$kernel_size fixwrgg firmware
-}
-
-case "$board" in
-mynet-rext |\
-wrt160nl)
- fixtrx
- ;;
-dap-2695-a1)
- fixwrgg
- ;;
-esac
+++ /dev/null
-#!/bin/sh
-
-. /lib/functions.sh
-
-fix_seama_header() {
- local kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"kernel".*/\1/p' /proc/mtd)
-
- [ "$kernel_size" ] && mtd -c 0x$kernel_size fixseama firmware
-}
-
-board=$(board_name)
-
-case "$board" in
-dir-869-a1)
- fix_seama_header
- ;;
-esac
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2009-2011 OpenWrt.org
-#
-
-AR71XX_BOARD_NAME=
-AR71XX_MODEL=
-
-ar71xx_get_mtd_offset_size_format() {
- local mtd="$1"
- local offset="$2"
- local size="$3"
- local format="$4"
- local dev
-
- dev=$(find_mtd_part $mtd)
- [ -z "$dev" ] && return
-
- dd if=$dev iflag=skip_bytes bs=$size skip=$offset count=1 2>/dev/null | hexdump -v -e "1/1 \"$format\""
-}
-
-ar71xx_get_mtd_part_magic() {
- local mtd="$1"
- ar71xx_get_mtd_offset_size_format "$mtd" 0 4 %02x
-}
-
-wndr3700_board_detect() {
- local machine="$1"
- local magic
- local name
-
- name="wndr3700"
-
- magic="$(ar71xx_get_mtd_part_magic firmware)"
- case $magic in
- "33373030")
- machine="NETGEAR WNDR3700"
- ;;
- "33373031")
- model="$(ar71xx_get_mtd_offset_size_format art 41 32 %c)"
- # Use awk to remove everything unprintable
- model_stripped="$(ar71xx_get_mtd_offset_size_format art 41 32 %c | LC_CTYPE=C awk -v 'FS=[^[:print:]]' '{print $1; exit}')"
- case $model in
- $'\xff'*)
- if [ "${model:24:1}" = 'N' ]; then
- machine="NETGEAR WNDRMAC"
- else
- machine="NETGEAR WNDR3700v2"
- fi
- ;;
- '29763654+16+64'*)
- machine="NETGEAR ${model_stripped:14}"
- ;;
- '29763654+16+128'*)
- machine="NETGEAR ${model_stripped:15}"
- ;;
- *)
- # Unknown ID
- machine="NETGEAR ${model_stripped}"
- esac
- esac
-
- AR71XX_BOARD_NAME="$name"
- AR71XX_MODEL="$machine"
-}
-
-ubnt_get_mtd_part_magic() {
- ar71xx_get_mtd_offset_size_format EEPROM 4118 2 %02x
-}
-
-ubnt_xm_board_detect() {
- local model
- local magic
-
- magic="$(ubnt_get_mtd_part_magic)"
- case ${magic:0:3} in
- "e00"|\
- "e01"|\
- "e80")
- model="Ubiquiti NanoStation M"
- ;;
- "e0a")
- model="Ubiquiti NanoStation loco M"
- ;;
- "e1b"|\
- "e1d")
- model="Ubiquiti Rocket M"
- ;;
- "e20"|\
- "e2d")
- model="Ubiquiti Bullet M"
- ;;
- "e30")
- model="Ubiquiti PicoStation M"
- ;;
- esac
-
- [ -z "$model" ] || AR71XX_MODEL="${model}${magic:3:1}"
-}
-
-ubnt_unifi_ac_get_mtd_part_magic() {
- ar71xx_get_mtd_offset_size_format EEPROM 12 2 %02x
-}
-
-ubnt_unifi_ac_board_detect() {
- local model
- local magic
-
- magic="$(ubnt_unifi_ac_get_mtd_part_magic)"
- case ${magic:0:4} in
- "e517")
- model="Ubiquiti UniFi-AC-LITE"
- ;;
- "e527")
- model="Ubiquiti UniFi-AC-LR"
- ;;
- "e537")
- model="Ubiquiti UniFi-AC-PRO"
- ;;
- "e557")
- model="Ubiquiti UniFi-AC-MESH"
- ;;
- "e567")
- model="Ubiquiti UniFi-AC-MESH-PRO"
- ;;
- esac
-
- [ -z "$model" ] || AR71XX_MODEL="${model}"
-}
-
-cybertan_get_hw_magic() {
- local part
-
- part=$(find_mtd_part firmware)
- [ -z "$part" ] && return 1
-
- dd bs=8 count=1 skip=0 if=$part 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"'
-}
-
-dir505_board_detect() {
- local dev=$(find_mtd_part 'mac')
- [ -z "$dev" ] && return
-
- # The revision is stored at the beginning of the "mac" partition
- local rev="$(LC_CTYPE=C awk -v 'FS=[^[:print:]]' '{print $1; exit}' $dev)"
- AR71XX_MODEL="D-Link DIR-505 rev. $rev"
-}
-
-tplink_get_hwid() {
- local part
-
- part=$(find_mtd_part firmware)
- [ -z "$part" ] && return 1
-
- dd if=$part bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_get_mid() {
- local part
-
- part=$(find_mtd_part firmware)
- [ -z "$part" ] && return 1
-
- dd if=$part bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_board_detect() {
- local model="$1"
- local hwid
- local hwver
-
- hwid=$(tplink_get_hwid)
- mid=$(tplink_get_mid)
- hwver=${hwid:6:2}
- hwver=" v${hwver#0}"
-
- case "$hwid" in
- "001001"*)
- model="TP-Link TL-MR10U"
- ;;
- "001101"*)
- model="TP-Link TL-MR11U"
- ;;
- "001201"*)
- model="TP-Link TL-MR12U"
- ;;
- "001301"*)
- model="TP-Link TL-MR13U"
- ;;
- "007260"*)
- model="TellStick ZNet Lite"
- ;;
- "015000"*)
- model="EasyLink EL-M150"
- ;;
- "015300"*)
- model="EasyLink EL-MINI"
- ;;
- "044401"*)
- model="ANTMINER-S1"
- ;;
- "044403"*)
- model="ANTMINER-S3"
- ;;
- "066601"*)
- model="OMYlink OMY-G1"
- ;;
- "066602"*)
- model="OMYlink OMY-X1"
- ;;
- "070100"*)
- model="TP-Link TL-WA701N/ND"
- ;;
- "070301"*)
- model="TP-Link TL-WR703N"
- ;;
- "071000"*)
- model="TP-Link TL-WR710N"
-
- [ "$hwid" = '07100002' -a "$mid" = '00000002' ] && hwver=' v2.1'
- ;;
- "072001"*)
- model="TP-Link TL-WR720N"
- ;;
- "073000"*)
- model="TP-Link TL-WA730RE"
- ;;
- "074000"*)
- model="TP-Link TL-WR740N/ND"
- ;;
- "074100"*)
- model="TP-Link TL-WR741N/ND"
- ;;
- "074300"*)
- model="TP-Link TL-WR743N/ND"
- ;;
- "075000"*)
- model="TP-Link TL-WA750RE"
- ;;
- "080100"*)
- model="TP-Link TL-WA801N/ND"
- ;;
- "080200"*)
- model="TP-Link TL-WR802N"
-
- [ "$hwid" = '08020002' -a "$mid" = '00000002' ] && hwver=' v2'
- ;;
- "081000"*)
- model="TP-Link TL-WR810N"
- ;;
- "083000"*)
- model="TP-Link TL-WA830RE"
-
- [ "$hwver" = ' v10' ] && hwver=' v1'
- ;;
- "084100"*)
- model="TP-Link TL-WR841N/ND"
-
- [ "$hwid" = '08410002' -a "$mid" = '00000002' ] && hwver=' v1.5'
- ;;
- "084200"*)
- model="TP-Link TL-WR842N/ND"
- ;;
- "084300"*)
- model="TP-Link TL-WR843N/ND"
- ;;
- "085000"*)
- model="TP-Link TL-WA850RE"
- ;;
- "085500"*)
- model="TP-Link TL-WA855RE"
- ;;
- "086000"*)
- model="TP-Link TL-WA860RE"
- ;;
- "090100"*)
- model="TP-Link TL-WA901N/ND"
- ;;
- "094000"*)
- model="TP-Link TL-WR940N"
- ;;
- "094100"*)
- model="TP-Link TL-WR941N/ND"
-
- [ "$hwid" = "09410002" -a "$mid" = "00420001" ] && {
- model="Rosewill RNX-N360RT"
- hwver=""
- }
- ;;
- "104100"*)
- model="TP-Link TL-WR1041N/ND"
- ;;
- "104300"*)
- model="TP-Link TL-WR1043N/ND"
- ;;
- "120000"*)
- model="MERCURY MAC1200R"
- ;;
- "254300"*)
- model="TP-Link TL-WR2543N/ND"
- ;;
- "302000"*)
- model="TP-Link TL-MR3020"
- ;;
- "304000"*)
- model="TP-Link TL-MR3040"
- ;;
- "322000"*)
- model="TP-Link TL-MR3220"
- ;;
- "332000"*)
- model="TP-Link TL-WDR3320"
- ;;
- "342000"*)
- model="TP-Link TL-MR3420"
- ;;
- "350000"*)
- model="TP-Link TL-WDR3500"
- ;;
- "360000"*)
- model="TP-Link TL-WDR3600"
- ;;
- "430000"*)
- model="TP-Link TL-WDR4300"
- ;;
- "430080"*)
- iw reg set IL
- model="TP-Link TL-WDR4300 (IL)"
- ;;
- "431000"*)
- model="TP-Link TL-WDR4310"
- ;;
- "44440101"*)
- model="ANTROUTER-R1"
- ;;
- "453000"*)
- model="Mercury MW4530R"
- ;;
- "49000002")
- model="TP-Link TL-WDR4900"
- ;;
- "640000"*)
- model="TP-Link TL-MR6400"
- ;;
- "65000002")
- model="TP-Link TL-WDR6500"
- ;;
- "721000"*)
- model="TP-Link TL-WA7210N"
- ;;
- "750000"*|\
- "c70000"*)
- model="TP-Link Archer C7"
- ;;
- "751000"*)
- model="TP-Link TL-WA7510N"
- ;;
- "934100"*)
- model="NC-LINK SMART-300"
- ;;
- "c50000"*)
- model="TP-Link Archer C5"
- ;;
- *)
- hwver=""
- ;;
- esac
-
- AR71XX_MODEL="$model$hwver"
-}
-
-tplink_pharos_get_model_string() {
- local part
- part=$(find_mtd_part 'product-info')
- [ -z "$part" ] && return 1
-
- # The returned string will end with \r\n, but we don't remove it here
- # to simplify matching against it in the sysupgrade image check
- dd if=$part bs=1 skip=4360 2>/dev/null | head -n 1
-}
-
-tplink_pharos_board_detect() {
- local model_string="$1"
- local oIFS="$IFS"; IFS=":"; set -- $model_string; IFS="$oIFS"
-
- local model="${1%%\(*}"
-
- AR71XX_MODEL="TP-Link $model v$2"
-}
-
-tplink_pharos_v2_get_model_string() {
- local part
- part=$(find_mtd_part 'product-info')
- [ -z "$part" ] && return 1
-
- dd if=$part iflag=skip_bytes bs=64 skip=4360 count=1 2>/dev/null | tr -d '\r\0' | head -n 1
-}
-
-mikrotik_board_detect() {
- local machine="$1"
-
- case "$machine" in
- *"2011iL")
- name="rb-2011il"
- ;;
- *"2011iLS")
- name="rb-2011ils"
- ;;
- *"2011L")
- name="rb-2011l"
- ;;
- *"2011UAS")
- name="rb-2011uas"
- ;;
- *"2011UAS-2HnD")
- name="rb-2011uas-2hnd"
- ;;
- *"2011UiAS")
- name="rb-2011uias"
- ;;
- *"2011UiAS-2HnD")
- name="rb-2011uias-2hnd"
- ;;
- *"2011UiAS-2HnD r2")
- name="rb-2011uias-2hnd-r2"
- ;;
- *"411/A/AH")
- name="rb-411"
- ;;
- *"411U")
- name="rb-411u"
- ;;
- *"433/AH")
- name="rb-433"
- ;;
- *"433UAH")
- name="rb-433u"
- ;;
- *"435G")
- name="rb-435g"
- ;;
- *"450")
- name="rb-450"
- ;;
- *"450G")
- name="rb-450g"
- ;;
- *"493/AH")
- name="rb-493"
- ;;
- *"493G")
- name="rb-493g"
- ;;
- *"750")
- name="rb-750"
- ;;
- *"750 r2"|\
- *"750r2")
- name="rb-750-r2"
- ;;
- *"750GL")
- name="rb-750gl"
- ;;
- *"750P r2")
- name="rb-750p-pbr2"
- ;;
- *"750UP r2"|\
- *"750UPr2")
- name="rb-750up-r2"
- ;;
- *"751")
- name="rb-751"
- ;;
- *"751G")
- name="rb-751g"
- ;;
- *"911-2Hn")
- name="rb-911-2hn"
- ;;
- *"911-5Hn")
- name="rb-911-5hn"
- ;;
- *"911G-2HPnD")
- name="rb-911g-2hpnd"
- ;;
- *"911G-5HPacD")
- name="rb-911g-5hpacd"
- ;;
- *"911G-5HPnD")
- name="rb-911g-5hpnd"
- ;;
- *"912UAG-2HPnD")
- name="rb-912uag-2hpnd"
- ;;
- *"912UAG-5HPnD")
- name="rb-912uag-5hpnd"
- ;;
- *"921GS-5HPacD r2")
- name="rb-921gs-5hpacd-r2"
- ;;
- *"922UAGS-5HPacD")
- name="rb-922uags-5hpacd"
- ;;
- *"931-2nD")
- name="rb-931-2nd"
- ;;
- *"941-2nD")
- name="rb-941-2nd"
- ;;
- *"951G-2HnD")
- name="rb-951g-2hnd"
- ;;
- *"951Ui-2HnD")
- name="rb-951ui-2hnd"
- ;;
- *"951Ui-2nD")
- name="rb-951ui-2nd"
- ;;
- *"952Ui-5ac2nD")
- name="rb-952ui-5ac2nd"
- ;;
- *"962UiGS-5HacT2HnT")
- name="rb-962uigs-5hact2hnt"
- ;;
- *"LHG 5nD")
- name="rb-lhg-5nd"
- ;;
- *"mAP 2nD"|\
- *"mAP2nD")
- name="rb-map-2nd"
- ;;
- *"mAP L-2nD"|\
- *"mAPL-2nD")
- name="rb-mapl-2nd"
- ;;
- *"SXT 2nD r3")
- name="rb-sxt-2nd-r3"
- ;;
- *"SXT Lite2")
- name="rb-sxt2n"
- ;;
- *"SXT Lite5")
- name="rb-sxt5n"
- ;;
- *"wAP 2nD r2")
- name="rb-wap-2nd"
- ;;
- *"wAP R-2nD"|\
- *"wAPR-2nD")
- name="rb-wapr-2nd"
- ;;
- *"wAP G-5HacT2HnD"|\
- *"wAPG-5HacT2HnD")
- name="rb-wapg-5hact2hnd"
- ;;
- esac
-
- echo "$name"
-}
-
-ar71xx_board_detect() {
- local machine
- local name
-
- machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)
-
- case "$machine" in
- *"A40")
- name="a40"
- ;;
- *"A60")
- name="a60"
- ;;
- *"AC1750DB")
- name="f9k1115v2"
- ;;
- *"AirGateway")
- name="airgateway"
- ;;
- *"AirGateway Pro")
- name="airgatewaypro"
- ;;
- *"AirRouter")
- name="airrouter"
- ;;
- *"ALFA Network AP120C")
- name="alfa-ap120c"
- ;;
- *"ALFA Network AP96")
- name="alfa-ap96"
- ;;
- *"ALFA Network N2/N5")
- name="alfa-nx"
- ;;
- *"ALL0258N")
- name="all0258n"
- ;;
- *"ALL0305")
- name="all0305"
- ;;
- *"ALL0315N")
- name="all0315n"
- ;;
- *"Antminer-S1")
- name="antminer-s1"
- ;;
- *"Antminer-S3")
- name="antminer-s3"
- ;;
- *"AP121 reference board")
- name="ap121"
- ;;
- *"AP121-MINI")
- name="ap121-mini"
- ;;
- *"AP121F")
- name="ap121f"
- ;;
- *"AP132 reference board")
- name="ap132"
- ;;
- *"AP135-020 reference board")
- name="ap135-020"
- ;;
- *"AP136-010 reference board")
- name="ap136-010"
- ;;
- *"AP136-020 reference board")
- name="ap136-020"
- ;;
- *"AP143 reference board")
- name="ap143"
- ;;
- *"AP147-010 reference board")
- name="ap147-010"
- ;;
- *"AP152 reference board")
- name="ap152"
- ;;
- *"AP531B0")
- name="ap531b0"
- ;;
- *"AP90Q")
- name="ap90q"
- ;;
- *"AP91-5G")
- name="ap91-5g"
- ;;
- *"Archer C25 v1")
- name="archer-c25-v1"
- ;;
- *"Archer C5")
- name="archer-c5"
- ;;
- *"Archer C7 v4")
- name="archer-c7-v4"
- ;;
- *"Archer C7 v5")
- name="archer-c7-v5"
- ;;
- *"Archer C58 v1")
- name="archer-c58-v1"
- ;;
- *"Archer C59 v1")
- name="archer-c59-v1"
- ;;
- *"Archer C59 v2")
- name="archer-c59-v2"
- ;;
- *"Archer C60 v1")
- name="archer-c60-v1"
- ;;
- *"Archer C60 v2")
- name="archer-c60-v2"
- ;;
- *"Archer C7")
- name="archer-c7"
- ;;
- *"Arduino Yun")
- name="arduino-yun"
- ;;
- *"Atheros AP96")
- name="ap96"
- ;;
- *"AW-NR580")
- name="aw-nr580"
- ;;
- *"BHR-4GRV2")
- name="bhr-4grv2"
- ;;
- *"Black Swift board"*)
- name="bsb"
- ;;
- *"Bullet M")
- name="bullet-m"
- ubnt_xm_board_detect
- ;;
- *"Bullet M XW")
- name="bullet-m-xw"
- ;;
- *"BXU2000n-2 rev. A1")
- name="bxu2000n-2-a1"
- ;;
- *"C-55")
- name="c-55"
- ;;
- *"C-60")
- name="c-60"
- ;;
- *"CAP324")
- name="cap324"
- ;;
- *"CAP4200AG")
- name="cap4200ag"
- ;;
- *"Carambola2"*)
- name="carambola2"
- ;;
- *"CF-E316N v2")
- name="cf-e316n-v2"
- ;;
- *"CF-E320N v2")
- name="cf-e320n-v2"
- ;;
- *"CF-E355AC v1")
- name="cf-e355ac-v1"
- ;;
- *"CF-E355AC v2")
- name="cf-e355ac-v2"
- ;;
- *"CF-E375AC")
- name="cf-e375ac"
- ;;
- *"CF-E380AC v1")
- name="cf-e380ac-v1"
- ;;
- *"CF-E380AC v2")
- name="cf-e380ac-v2"
- ;;
- *"CF-E385AC")
- name="cf-e385ac"
- ;;
- *"CF-E520N")
- name="cf-e520n"
- ;;
- *"CF-E530N")
- name="cf-e530n"
- ;;
- *"CPE210/220")
- name="cpe210"
- tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
- ;;
- *"CPE210 v2")
- name="cpe210-v2"
- tplink_pharos_board_detect "$(tplink_pharos_v2_get_model_string)"
- ;;
- *"CPE210 v3")
- name="cpe210-v3"
- tplink_pharos_board_detect "$(tplink_pharos_v2_get_model_string)"
- ;;
- *"CPE505N")
- name="cpe505n"
- ;;
- *"CPE510/520")
- name="cpe510"
- tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
- ;;
- *"CPE510 v2")
- name="cpe510-v2"
- tplink_pharos_board_detect "$(tplink_pharos_v2_get_model_string)"
- ;;
- *"CPE830")
- name="cpe830"
- ;;
- *"CPE870")
- name="cpe870"
- ;;
- *"CR3000")
- name="cr3000"
- ;;
- *"CR5000")
- name="cr5000"
- ;;
- *"DAP-1330 Rev. A1")
- name="dap-1330-a1"
- ;;
- *"DAP-2695 rev. A1")
- name="dap-2695-a1"
- ;;
- *"DB120 reference board")
- name="db120"
- ;;
- *"DGL-5500 rev. A1")
- name="dgl-5500-a1"
- ;;
- *"DHP-1565 rev. A1")
- name="dhp-1565-a1"
- ;;
- *"DIR-505 rev. A1")
- name="dir-505-a1"
- dir505_board_detect
- ;;
- *"DIR-600 rev. A1")
- name="dir-600-a1"
- ;;
- *"DIR-615 rev. C1")
- name="dir-615-c1"
- ;;
- *"DIR-615 rev. E1")
- name="dir-615-e1"
- ;;
- *"DIR-615 rev. E4")
- name="dir-615-e4"
- ;;
- *"DIR-615 rev. I1")
- name="dir-615-i1"
- ;;
- *"DIR-825 rev. B1")
- name="dir-825-b1"
- ;;
- *"DIR-825 rev. C1")
- name="dir-825-c1"
- ;;
- *"DIR-835 rev. A1")
- name="dir-835-a1"
- ;;
- *"DIR-869 rev. A1")
- name="dir-869-a1"
- ;;
- *"dLAN Hotspot")
- name="dlan-hotspot"
- ;;
- *"dLAN pro 1200+ WiFi ac")
- name="dlan-pro-1200-ac"
- ;;
- *"dLAN pro 500 Wireless+")
- name="dlan-pro-500-wp"
- ;;
- *"Domino Pi")
- name="gl-domino"
- ;;
- *"DR342")
- name="dr342"
- ;;
- *"DR344")
- name="dr344"
- ;;
- *"DR531")
- name="dr531"
- ;;
- *"Dragino v2")
- name="dragino2"
- ;;
- *"DW33D")
- name="dw33d"
- ;;
- *"E1700AC v2")
- name="e1700ac-v2"
- ;;
- *"E2100L")
- name="e2100l"
- ;;
- *"E558 v2")
- name="e558-v2"
- ;;
- *"E600G v2")
- name="e600g-v2"
- ;;
- *"E600GAC v2")
- name="e600gac-v2"
- ;;
- *"E750A v4")
- name="e750a-v4"
- ;;
- *"E750G v8")
- name="e750g-v8"
- ;;
- *"EAP120")
- name="eap120"
- tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
- ;;
- *"EAP300 v2")
- name="eap300v2"
- ;;
- *"EAP7660D")
- name="eap7660d"
- ;;
- *"EBR-2310 rev. C1")
- name="ebr-2310-c1"
- ;;
- *"EL-M150")
- name="el-m150"
- ;;
- *"EL-MINI")
- name="el-mini"
- ;;
- *"EmbWir-Balin")
- name="ew-balin"
- ;;
- *"EmbWir-Dorin")
- name="ew-dorin"
- ;;
- *"EmbWir-Dorin-Router")
- name="ew-dorin-router"
- ;;
- *"ENS202EXT")
- name="ens202ext"
- ;;
- *"EPG5000")
- name="epg5000"
- ;;
- *"ESR1750")
- name="esr1750"
- ;;
- *"ESR900")
- name="esr900"
- ;;
- *"eTactica EG-200")
- name="rme-eg200"
- ;;
- *"FRITZ!Box 4020")
- name="fritz4020"
- ;;
- *"FRITZ!WLAN Repeater 300E")
- name="fritz300e"
- ;;
- *"FRITZ!WLAN Repeater 450E")
- name="fritz450e"
- ;;
- *"GL-AR150")
- name="gl-ar150"
- ;;
- *"GL-AR300")
- name="gl-ar300"
- ;;
- *"GL-AR300M")
- name="gl-ar300m"
- ;;
- *"GL-AR750")
- name="gl-ar750"
- ;;
- *"GL-AR750S")
- name="gl-ar750s"
- ;;
- *"GL-CONNECT INET v1")
- name="gl-inet"
-
- local size="$(mtd_get_part_size 'firmware')"
-
- [ "$size" = "8192000" ] && AR71XX_MODEL="GL-iNet 6408A v1"
- [ "$size" = "16580608" ] && AR71XX_MODEL="GL-iNet 6416A v1"
- ;;
- *"GL-MIFI")
- name="gl-mifi"
- ;;
- *"GL-USB150")
- name="gl-usb150"
- ;;
- *"HiveAP-121")
- name="hiveap-121"
- ;;
- *"HiWiFi HC6361")
- name="hiwifi-hc6361"
- ;;
- *"Hornet-UB")
- local size="$(mtd_get_part_size 'firmware')"
-
- [ "$size" = "7929856" ] && name="hornet-ub"
- [ "$size" = "16318464" ] && name="hornet-ub-x2"
- ;;
- *"JA76PF")
- name="ja76pf"
- ;;
- *"JA76PF2")
- name="ja76pf2"
- ;;
- *"JWAP003")
- name="jwap003"
- ;;
- *"JWAP230")
- name="jwap230"
- ;;
- *"Koala")
- name="koala"
- ;;
- *"LAN Turtle")
- name="lan-turtle"
- ;;
- *"Lima"*)
- name="lima"
- ;;
- *"Litebeam M5"*)
- name="lbe-m5"
- ;;
- *"Loco M XW")
- name="loco-m-xw"
- ;;
- *"LS-SR71")
- name="ls-sr71"
- ;;
- *"MAC1200R")
- name="mc-mac1200r"
- ;;
- "MikroTik"*|\
- "Mikrotik"*)
- name=$(mikrotik_board_detect "$machine")
- ;;
- *"MiniBox V1.0")
- name="minibox-v1"
- ;;
- *"Minibox V3.2")
- name="minibox-v3.2"
- ;;
- *"MR12")
- name="mr12"
- ;;
- *"MR16")
- name="mr16"
- ;;
- *"MR1750")
- name="mr1750"
- ;;
- *"MR1750v2")
- name="mr1750v2"
- ;;
- *"MR18")
- name="mr18"
- ;;
- *"MR600")
- name="mr600"
- ;;
- *"MR600v2")
- name="mr600v2"
- ;;
- *"MR900")
- name="mr900"
- ;;
- *"MR900v2")
- name="mr900v2"
- ;;
- *"My Net N600")
- name="mynet-n600"
- ;;
- *"My Net N750")
- name="mynet-n750"
- ;;
- *"My Net Wi-Fi Range Extender")
- name="mynet-rext"
- ;;
- *"MZK-W04NU")
- name="mzk-w04nu"
- ;;
- *"MZK-W300NH")
- name="mzk-w300nh"
- ;;
- *"N5Q")
- name="n5q"
- ;;
- *"Nanostation M")
- name="nanostation-m"
- ubnt_xm_board_detect
- ;;
- *"Nanostation M XW")
- name="nanostation-m-xw"
- ;;
- *"NBG460N/550N/550NH")
- name="nbg460n_550n_550nh"
- ;;
- *"NBG6616")
- name="nbg6616"
- ;;
- *"NBG6716")
- name="nbg6716"
- ;;
- *"OM2P")
- name="om2p"
- ;;
- *"OM2P HS")
- name="om2p-hs"
- ;;
- *"OM2P HSv2")
- name="om2p-hsv2"
- ;;
- *"OM2P HSv3")
- name="om2p-hsv3"
- ;;
- *"OM2P HSv4")
- name="om2p-hsv4"
- ;;
- *"OM2P LC")
- name="om2p-lc"
- ;;
- *"OM2Pv2")
- name="om2pv2"
- ;;
- *"OM2Pv4")
- name="om2pv4"
- ;;
- *"OM5P")
- name="om5p"
- ;;
- *"OM5P AC")
- name="om5p-ac"
- ;;
- *"OM5P ACv2")
- name="om5p-acv2"
- ;;
- *"OM5P AN")
- name="om5p-an"
- ;;
- *"OMY-G1")
- name="omy-g1"
- ;;
- *"OMY-X1")
- name="omy-x1"
- ;;
- *"Onion Omega")
- name="onion-omega"
- ;;
- *"Oolite V1.0")
- name="oolite-v1"
- ;;
- *"Packet Squirrel")
- name="packet-squirrel"
- ;;
- *"Oolite V5.2")
- name="oolite-v5.2"
- ;;
- *"Oolite V5.2-Dev")
- name="oolite-v5.2-dev"
- ;;
- *"PB42")
- name="pb42"
- ;;
- *"PB44 reference board")
- name="pb44"
- ;;
- *"PQI Air Pen")
- name="pqi-air-pen"
- ;;
- *"Qihoo 360 C301")
- name="qihoo-c301"
- ;;
- *"R36A")
- name="r36a"
- ;;
- *"R602N")
- name="r602n"
- ;;
- *"R6100")
- name="r6100"
- ;;
- *"Rambutan"*)
- name="rambutan"
- ;;
- *"RE355")
- name="re355"
- ;;
- *"RE450")
- name="re450"
- ;;
- *"Rocket M")
- name="rocket-m"
- ubnt_xm_board_detect
- ;;
- *"Rocket M TI")
- name="rocket-m-ti"
- ;;
- *"Rocket M XW")
- name="rocket-m-xw"
- ;;
- *"RouterStation")
- name="routerstation"
- ;;
- *"RouterStation Pro")
- name="routerstation-pro"
- ;;
- *"RUT900")
- name="rut900"
- ;;
- *"RW2458N")
- name="rw2458n"
- ;;
- *"SC1750")
- name="sc1750"
- ;;
- *"SC300M")
- name="sc300m"
- ;;
- *"SC450")
- name="sc450"
- ;;
- *"SMART-300")
- name="smart-300"
- ;;
- *"SOM9331")
- name="som9331"
- ;;
- *"SR3200")
- name="sr3200"
- ;;
- *"T830")
- name="t830"
- ;;
- *"TellStick ZNet Lite")
- name="tellstick-znet-lite"
- ;;
- *"TEW-632BRP")
- name="tew-632brp"
- ;;
- *"TEW-673GRU")
- name="tew-673gru"
- ;;
- *"TEW-712BR")
- name="tew-712br"
- ;;
- *"TEW-732BR")
- name="tew-732br"
- ;;
- *"TEW-823DRU")
- name="tew-823dru"
- ;;
- *"TL-MR10U")
- name="tl-mr10u"
- ;;
- *"TL-MR11U")
- name="tl-mr11u"
- ;;
- *"TL-MR12U")
- name="tl-mr12u"
- ;;
- *"TL-MR13U v1")
- name="tl-mr13u"
- ;;
- *"TL-MR3020")
- name="tl-mr3020"
- ;;
- *"TL-MR3040")
- name="tl-mr3040"
- ;;
- *"TL-MR3040 v2")
- name="tl-mr3040-v2"
- ;;
- *"TL-MR3220")
- name="tl-mr3220"
- ;;
- *"TL-MR3220 v2")
- name="tl-mr3220-v2"
- ;;
- *"TL-MR3420")
- name="tl-mr3420"
- ;;
- *"TL-MR3420 v2")
- name="tl-mr3420-v2"
- ;;
- *"TL-MR6400")
- name="tl-mr6400"
- ;;
- *"TL-WA701ND v2")
- name="tl-wa701nd-v2"
- ;;
- *"TL-WA7210N v2")
- name="tl-wa7210n-v2"
- ;;
- *"TL-WA750RE")
- name="tl-wa750re"
- ;;
- *"TL-WA7510N v1")
- name="tl-wa7510n"
- ;;
- *"TL-WA801ND v2")
- name="tl-wa801nd-v2"
- ;;
- *"TL-WA801ND v3")
- name="tl-wa801nd-v3"
- ;;
- *"TL-WA830RE v2")
- name="tl-wa830re-v2"
- ;;
- *"TL-WA850RE")
- name="tl-wa850re"
- ;;
- *"TL-WA850RE v2")
- name="tl-wa850re-v2"
- ;;
- *"TL-WA855RE v1")
- name="tl-wa855re-v1"
- ;;
- *"TL-WA860RE")
- name="tl-wa860re"
- ;;
- *"TL-WA901ND")
- name="tl-wa901nd"
- ;;
- *"TL-WA901ND v2")
- name="tl-wa901nd-v2"
- ;;
- *"TL-WA901ND v3")
- name="tl-wa901nd-v3"
- ;;
- *"TL-WA901ND v4")
- name="tl-wa901nd-v4"
- ;;
- *"TL-WA901ND v5")
- name="tl-wa901nd-v5"
- ;;
- *"TL-WDR3320 v2")
- name="tl-wdr3320-v2"
- ;;
- *"TL-WDR3500")
- name="tl-wdr3500"
- ;;
- *"TL-WDR3600/4300/4310")
- name="tl-wdr4300"
- ;;
- *"TL-WDR4900 v2")
- name="tl-wdr4900-v2"
- ;;
- *"TL-WDR6500 v2")
- name="tl-wdr6500-v2"
- ;;
- *"TL-WPA8630")
- name="tl-wpa8630"
- ;;
- *"TL-WR1041N v2")
- name="tl-wr1041n-v2"
- ;;
- *"TL-WR1043N v5")
- name="tl-wr1043n-v5"
- ;;
- *"TL-WR1043ND")
- name="tl-wr1043nd"
- ;;
- *"TL-WR1043ND v2")
- name="tl-wr1043nd-v2"
- ;;
- *"TL-WR1043ND v4")
- name="tl-wr1043nd-v4"
- ;;
- *"TL-WR2543N"*)
- name="tl-wr2543n"
- ;;
- *"TL-WR703N v1")
- name="tl-wr703n"
- ;;
- *"TL-WR710N v1")
- name="tl-wr710n"
- ;;
- *"TL-WR720N"*)
- name="tl-wr720n-v3"
- ;;
- *"TL-WR740N/ND v6")
- name="tl-wr740n-v6"
- ;;
- *"TL-WR741ND")
- name="tl-wr741nd"
- ;;
- *"TL-WR741ND v4")
- name="tl-wr741nd-v4"
- ;;
- *"TL-WR802N v1")
- name="tl-wr802n-v1"
- ;;
- *"TL-WR802N v2")
- name="tl-wr802n-v2"
- ;;
- *"TL-WR810N")
- name="tl-wr810n"
- ;;
- *"TL-WR810N v2")
- name="tl-wr810n-v2"
- ;;
- *"TL-WR840N v2")
- name="tl-wr840n-v2"
- ;;
- *"TL-WR840N v3")
- name="tl-wr840n-v3"
- ;;
- *"TL-WR841N v1")
- name="tl-wr841n-v1"
- ;;
- *"TL-WR841N/ND v11")
- name="tl-wr841n-v11"
- ;;
- *"TL-WR841N/ND v7")
- name="tl-wr841n-v7"
- ;;
- *"TL-WR841N/ND v8")
- name="tl-wr841n-v8"
- ;;
- *"TL-WR841N/ND v9")
- name="tl-wr841n-v9"
- ;;
- *"TL-WR842N/ND v2")
- name="tl-wr842n-v2"
- ;;
- *"TL-WR842N/ND v3")
- name="tl-wr842n-v3"
- ;;
- *"TL-WR902AC v1")
- name="tl-wr902ac-v1"
- ;;
- *"TL-WR940N v4")
- name="tl-wr940n-v4"
- ;;
- *"TL-WR940N v6")
- name="tl-wr940n-v6"
- ;;
- *"TL-WR941N/ND v5")
- name="tl-wr941nd-v5"
- ;;
- *"TL-WR941N/ND v6")
- name="tl-wr941nd-v6"
- ;;
- *"TL-WR941ND")
- name="tl-wr941nd"
- ;;
- *"TL-WR942N v1")
- name="tl-wr942n-v1"
- ;;
- *"TS-D084")
- name="ts-d084"
- ;;
- *"Tube2H")
- name="tube2h"
- ;;
- *"UniFi")
- name="unifi"
- ;;
- *"UniFi AP Pro")
- name="uap-pro"
- ;;
- *"UniFi-AC-LITE/MESH")
- name="unifiac-lite"
- ubnt_unifi_ac_board_detect
- ;;
- *"UniFi-AC-PRO/MESH-PRO")
- name="unifiac-pro"
- ubnt_unifi_ac_board_detect
- ;;
- *"UniFiAP Outdoor")
- name="unifi-outdoor"
- ;;
- *"UniFiAP Outdoor+")
- name="unifi-outdoor-plus"
- ;;
- *"WAM250")
- name="wam250"
- ;;
- *"WBS210")
- name="wbs210"
- tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
- ;;
- *"WBS510")
- name="wbs510"
- tplink_pharos_board_detect "$(tplink_pharos_get_model_string | tr -d '\r')"
- ;;
- "WeIO"*)
- name="weio"
- ;;
- *"WI2A-AC200i")
- name="wi2a-ac200i"
- ;;
- *"WHR-G301N")
- name="whr-g301n"
- ;;
- *"WHR-HP-G300N")
- name="whr-hp-g300n"
- ;;
- *"WHR-HP-GN")
- name="whr-hp-gn"
- ;;
- *"WiFi Pineapple NANO")
- name="wifi-pineapple-nano"
- ;;
- *"WLAE-AG300N")
- name="wlae-ag300n"
- ;;
- *"WLR-8100")
- name="wlr8100"
- ;;
- *"WNDAP360")
- name="wndap360"
- ;;
- *"WNDR3700/WNDR3800/WNDRMAC")
- wndr3700_board_detect "$machine"
- ;;
- *"WNDR3700v4")
- name="wndr3700v4"
- ;;
- *"WNDR4300")
- name="wndr4300"
- ;;
- *"WNR1000 V2")
- name="wnr1000-v2"
- ;;
- *"WNR2000")
- name="wnr2000"
- ;;
- *"WNR2000 V3")
- name="wnr2000-v3"
- ;;
- *"WNR2000 V4")
- name="wnr2000-v4"
- ;;
- *"WNR2200")
- name="wnr2200"
- ;;
- *"WNR612 V2")
- name="wnr612-v2"
- ;;
- *"WP543")
- name="wp543"
- ;;
- *"WPE72")
- name="wpe72"
- ;;
- *"WPJ342")
- name="wpj342"
- ;;
- *"WPJ344")
- name="wpj344"
- ;;
- *"WPJ531")
- name="wpj531"
- ;;
- *"WPJ558")
- name="wpj558"
- ;;
- *"WPJ563")
- name="wpj563"
- ;;
- *"WPN824N")
- name="wpn824n"
- ;;
- *"WRT160NL")
- name="wrt160nl"
- ;;
- *"WRT400N")
- name="wrt400n"
- ;;
- *"WRTnode2Q"*)
- name="wrtnode2q"
- ;;
- *"WZR-450HP2")
- name="wzr-450hp2"
- ;;
- *"WZR-HP-AG300H/WZR-600DHP")
- name="wzr-hp-ag300h"
- ;;
- *"WZR-HP-G300NH")
- name="wzr-hp-g300nh"
- ;;
- *"WZR-HP-G300NH2")
- name="wzr-hp-g300nh2"
- ;;
- *"WZR-HP-G450H")
- name="wzr-hp-g450h"
- ;;
- *"XD3200")
- name="xd3200"
- ;;
- *"Z1")
- name="z1"
- ;;
- *"ZBT-WE1526")
- name="zbt-we1526"
- ;;
- *"ZCN-1523H-2")
- name="zcn-1523h-2"
- ;;
- *"ZCN-1523H-5")
- name="zcn-1523h-5"
- ;;
- esac
-
- [ -z "$AR71XX_MODEL" ] && [ "${machine:0:8}" = 'TP-LINK ' ] && \
- tplink_board_detect "$machine"
-
- [ -z "$name" ] && name="unknown"
-
- [ -z "$AR71XX_BOARD_NAME" ] && AR71XX_BOARD_NAME="$name"
- [ -z "$AR71XX_MODEL" ] && AR71XX_MODEL="$machine"
-
- [ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"
-
- echo "$AR71XX_BOARD_NAME" > /tmp/sysinfo/board_name
- echo "$AR71XX_MODEL" > /tmp/sysinfo/model
-}
+++ /dev/null
-#!/bin/sh
-
-do_ar71xx() {
- . /lib/ar71xx.sh
-
- ar71xx_board_detect
-}
-
-boot_hook_add preinit_main do_ar71xx
+++ /dev/null
-#
-# Copyright (C) 2009 OpenWrt.org
-#
-
-fetch_mac_from_mtd() {
- local mtd_part=$1
- local lan_env=$2
- local wan_env=$3
- local mtd mac
-
- mtd=$(grep $mtd_part /proc/mtd | cut -d: -f1)
- [ -z $mtd ] && return
-
- mac=$(grep $lan_env /dev/$mtd | cut -d= -f2)
- [ ! -z $mac ] && ifconfig eth0 hw ether $mac 2>/dev/null
-
- mac=$(grep $wan_env /dev/$mtd | cut -d= -f2)
- [ ! -z $mac ] && ifconfig eth1 hw ether $mac 2>/dev/null
-}
-
-preinit_set_mac_address() {
- . /lib/functions.sh
-
- case $(board_name) in
- c-55|\
- c-60)
- mac_lan=$(mtd_get_mac_binary art 0x0)
- [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
- ;;
- dir-615-c1|\
- tew-632brp)
- fetch_mac_from_mtd config lan_mac wan_mac
- ;;
- dir-615-i1)
- fetch_mac_from_mtd nvram sys_lan_mac sys_wan_mac
- ;;
- mr18|\
- z1)
- mac_lan=$(mtd_get_mac_binary_ubi board-config 0x66)
- [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
- ;;
- r6100)
- mac_lan=$(mtd_get_mac_binary caldata 0x0)
- [ -n "$mac_lan" ] && ifconfig eth1 hw ether "$mac_lan"
- mac_wan=$(mtd_get_mac_binary caldata 0x6)
- [ -n "$mac_wan" ] && ifconfig eth0 hw ether "$mac_wan"
- ;;
- rambutan)
- mac_lan=$(mtd_get_mac_binary art 0x0)
- [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
- mac_wan=$(mtd_get_mac_binary art 0x6)
- [ -n "$mac_wan" ] && ifconfig eth1 hw ether "$mac_wan"
- ;;
- wrt160nl)
- fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr
- ;;
- esac
-}
-
-boot_hook_add preinit_main preinit_set_mac_address
+++ /dev/null
-#!/bin/sh
-
-#
-# Copyright (C) 2009 OpenWrt.org
-#
-
-set_preinit_iface() {
- . /lib/functions.sh
-
- case $(board_name) in
- alfa-ap96|\
- alfa-nx|\
- ap135-020|\
- ap136-020|\
- ap147-010|\
- archer-c5|\
- archer-c7|\
- bhr-4grv2|\
- dir-505-a1|\
- gl-ar750|\
- gl-inet|\
- jwap003|\
- pb42|\
- pb44|\
- rb-433|\
- rb-433u|\
- rb-435g|\
- rb-450|\
- rb-450g|\
- routerstation|\
- routerstation-pro|\
- smart-300|\
- tl-mr3420-v2|\
- tl-wdr4900-v2|\
- tl-wr1043nd-v2|\
- tl-wr710n|\
- tl-wr720n-v3|\
- tl-wr841n-v8|\
- tl-wr842n-v2|\
- tl-wr940n-v4|\
- tl-wr940n-v6|\
- tl-wr941nd-v6|\
- wnr1000-v2|\
- wnr2000-v3|\
- wnr2200|\
- wnr612-v2|\
- wpe72|\
- wpn824n)
- ifname=eth1
- ;;
- *)
- ifname=eth0
- ;;
- esac
-}
-
-boot_hook_add preinit_main set_preinit_iface
+++ /dev/null
-#!/bin/sh
-
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-do_patch_ath10k_firmware() {
- local firmware_file="/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin"
-
- # bail out if firmware does not exist
- [ -f "$firmware_file" ] || return
-
- local mac_offset=276
- local mac_length=6
- local default_mac="00:03:07:12:34:56"
- local current_mac="$(hexdump -v -n $mac_length -s $mac_offset -e '5/1 "%02x:" 1/1 "%02x"' $firmware_file 2>/dev/null)"
-
- # check if mac address was already patched
- [ "$default_mac" = "$current_mac" ] || return
-
- # some boards have bogus mac in otp (= directly in the PCIe card's EEPROM).
- # we have to patch the default mac in the firmware because we cannot change
- # the otp.
- case $(board_name) in
- dgl-5500-a1|\
- tew-823dru)
- local mac
- mac=$(mtd_get_mac_ascii nvram wlan1_mac)
-
- cp $firmware_file /tmp/ath10k-firmware.bin
- macaddr_2bin $mac | dd of=/tmp/ath10k-firmware.bin \
- conv=notrunc bs=1 seek=$mac_offset count=$mac_length
- ;;
- esac
-
- [ -f /tmp/ath10k-firmware.bin ] || return
-
- cp /tmp/ath10k-firmware.bin $firmware_file
- rm /tmp/ath10k-firmware.bin
-}
-
-check_patch_ath10k_firmware() {
- case $(board_name) in
- dgl-5500-a1|\
- tew-823dru)
- do_patch_ath10k_firmware
- ;;
- esac
-}
-
-boot_hook_add preinit_main check_patch_ath10k_firmware
+++ /dev/null
-# The U-Boot loader of the some Allnet devices requires image sizes and
-# checksums to be provided in the U-Boot environment.
-# In case the check fails during boot, a failsafe-system is started to provide
-# a minimal web-interface for flashing a new firmware.
-
-# determine size of the main firmware partition
-platform_get_firmware_size() {
- local dev size erasesize name
- while read dev size erasesize name; do
- name=${name#'"'}; name=${name%'"'}
- case "$name" in
- firmware)
- printf "%d" "0x$size"
- break
- ;;
- esac
- done < /proc/mtd
-}
-
-# get the first 4 bytes (magic) of a given file starting at offset in hex format
-get_magic_long_at() {
- dd if="$1" skip=$(( $CI_BLKSZ / 4 * $2 )) bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-get_filesize() {
- wc -c "$1" | while read image_size _n ; do echo $image_size ; break; done
-}
-
-# scan through the update image pages until matching a magic
-platform_get_offset() {
- offsetcount=0
- magiclong="x"
- if [ -n "$3" ]; then
- offsetcount=$3
- fi
- while magiclong=$( get_magic_long_at "$1" "$offsetcount" ) && [ -n "$magiclong" ]; do
- case "$magiclong" in
- "2705"*)
- # U-Boot image magic
- if [ "$2" = "uImage" ]; then
- echo $offsetcount
- return
- fi
- ;;
- "68737173"|"73717368")
- # SquashFS
- if [ "$2" = "rootfs" ]; then
- echo $offsetcount
- return
- fi
- ;;
- "deadc0de"|"19852003")
- # JFFS2 empty page
- if [ "$2" = "rootfs-data" ]; then
- echo $offsetcount
- return
- fi
- ;;
- esac
- offsetcount=$(( $offsetcount + 1 ))
- done
-}
-
-platform_check_image_allnet() {
- local fw_printenv=/usr/sbin/fw_printenv
- [ ! -n "$fw_printenv" -o ! -x "$fw_printenv" ] && {
- echo "Please install uboot-envtools!"
- return 1
- }
-
- [ ! -r "/etc/fw_env.config" ] && {
- echo "/etc/fw_env.config is missing"
- return 1
- }
-
- local image_size=$( get_filesize "$1" )
- local firmware_size=$( platform_get_firmware_size )
- [ $image_size -ge $firmware_size ] &&
- {
- echo "upgrade image is too big (${image_size}b > ${firmware_size}b)"
- }
-
- local vmlinux_blockoffset=$( platform_get_offset "$1" uImage )
- [ -z $vmlinux_blockoffset ] && {
- echo "vmlinux-uImage not found"
- return 1
- }
-
- local rootfs_blockoffset=$( platform_get_offset "$1" rootfs "$vmlinux_blockoffset" )
- [ -z $rootfs_blockoffset ] && {
- echo "missing rootfs"
- return 1
- }
-
- local data_blockoffset=$( platform_get_offset "$1" rootfs-data "$rootfs_blockoffset" )
- [ -z $data_blockoffset ] && {
- echo "rootfs doesn't have JFFS2 end marker"
- return 1
- }
-
- return 0
-}
-
-platform_do_upgrade_allnet() {
- local firmware_base_addr=$( printf "%d" "$1" )
- local vmlinux_blockoffset=$( platform_get_offset "$2" uImage )
- if [ ! -n "$vmlinux_blockoffset" ]; then
- echo "can't determine uImage offset"
- return 1
- fi
- local rootfs_blockoffset=$( platform_get_offset "$2" rootfs $(( $vmlinux_blockoffset + 1 )) )
- local vmlinux_offset=$(( $vmlinux_blockoffset * $CI_BLKSZ ))
- local vmlinux_addr=$(( $firmware_base_addr + $vmlinux_offset ))
- local vmlinux_hexaddr=0x$( printf "%08x" "$vmlinux_addr" )
- if [ ! -n "$rootfs_blockoffset" ]; then
- echo "can't determine rootfs offset"
- return 1
- fi
- local rootfs_offset=$(( $rootfs_blockoffset * $CI_BLKSZ ))
- local rootfs_addr=$(( $firmware_base_addr + $rootfs_offset ))
- local rootfs_hexaddr=0x$( printf "%08x" "$rootfs_addr" )
- local vmlinux_blockcount=$(( $rootfs_blockoffset - $vmlinux_blockoffset ))
- local vmlinux_size=$(( $rootfs_offset - $vmlinux_offset ))
- local vmlinux_hexsize=0x$( printf "%08x" "$vmlinux_size" )
- local data_blockoffset=$( platform_get_offset "$2" rootfs-data $(( $rootfs_blockoffset + 1 )) )
- if [ ! -n "$data_blockoffset" ]; then
- echo "can't determine rootfs size"
- return 1
- fi
- local data_offset=$(( $data_blockoffset * $CI_BLKSZ ))
- local rootfs_blockcount=$(( $data_blockoffset - $rootfs_blockoffset ))
- local rootfs_size=$(( $data_offset - $rootfs_offset ))
- local rootfs_hexsize=0x$( printf "%08x" "$rootfs_size" )
-
- local rootfs_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$rootfs_blockoffset count=$rootfs_blockcount 2>/dev/null | md5sum -); rootfs_md5="${rootfs_md5%% *}"
- local vmlinux_md5=$( dd if="$2" bs=$CI_BLKSZ skip=$vmlinux_blockoffset count=$vmlinux_blockcount 2>/dev/null | md5sum -); vmlinux_md5="${vmlinux_md5%% *}"
- # this needs a recent version of uboot-envtools!
- cat >/tmp/fw_env_upgrade <<EOF
-vmlinux_start_addr $vmlinux_hexaddr
-vmlinux_size $vmlinux_hexsize
-vmlinux_checksum $vmlinux_md5
-rootfs_start_addr $rootfs_hexaddr
-rootfs_size $rootfs_hexsize
-rootfs_checksum $rootfs_md5
-bootcmd bootm $vmlinux_hexaddr
-EOF
-
- mkdir -p /var/lock
- fw_setenv -s /tmp/fw_env_upgrade || {
- echo "failed to update U-Boot environment"
- return 1
- }
- shift
- default_do_upgrade "$@"
-}
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2012 OpenWrt.org
-#
-
-. /lib/functions.sh
-. /lib/ar71xx.sh
-
-get_magic_at() {
- local mtddev=$1
- local pos=$2
- dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-dir825b_is_caldata_valid() {
- local mtddev=$1
- local magic
-
- magic=$(get_magic_at $mtddev 4096)
- [ "$magic" != "a55a" ] && return 0
-
- magic=$(get_magic_at $mtddev 20480)
- [ "$magic" != "a55a" ] && return 0
-
- return 1
-}
-
-dir825b_copy_caldata() {
- local cal_src=$1
- local cal_dst=$2
- local mtd_src
- local mtd_dst
- local md5_src
- local md5_dst
-
- mtd_src=$(find_mtd_part $cal_src)
- [ -z "$mtd_src" ] && {
- echo "no $cal_src partition found"
- return 1
- }
-
- mtd_dst=$(find_mtd_part $cal_dst)
- [ -z "$mtd_dst" ] && {
- echo "no $cal_dst partition found"
- return 1
- }
-
- dir825b_is_caldata_valid "$mtd_src" && {
- echo "no valid calibration data found in $cal_src"
- return 1
- }
-
- dir825b_is_caldata_valid "$mtd_dst" && {
- echo "Copying calibration data from $cal_src to $cal_dst..."
- dd if="$mtd_src" 2>/dev/null | mtd -q -q write - "$cal_dst"
- }
-
- md5_src=$(md5sum "$mtd_src") && md5_src="${md5_src%% *}"
- md5_dst=$(md5sum "$mtd_dst") && md5_dst="${md5_dst%% *}"
-
- [ "$md5_src" != "$md5_dst" ] && {
- echo "calibration data mismatch $cal_src:$md5_src $cal_dst:$md5_dst"
- return 1
- }
-
- return 0
-}
-
-dir825b_do_upgrade_combined() {
- local fw_part=$1
- local fw_file=$2
- local fw_mtd=$(find_mtd_part $fw_part)
- local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null)
- local fw_blocks=$(($fw_length / 65536))
-
- if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then
- local append=""
- [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
- sync
- dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \
- mtd $append write - "$fw_part"
- fi
-}
-
-dir825b_check_image() {
- local magic="$(get_magic_long "$1")"
- local fw_mtd=$(find_mtd_part "firmware_orig")
-
- case "$magic" in
- "27051956")
- ;;
- "43493030")
- local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null)
- local md5_chk=$(dd if="$1" bs=64k skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}"
- local fw_len=$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null)
- local fw_part_len=$(mtd_get_part_size "firmware")
-
- if [ -z "$fw_mtd" ]; then
- ask_bool 0 "Do you have a backup of the caldata partition?" || {
- echo "Warning, please make sure that you have a backup of the caldata partition."
- echo "Once you have that, use 'sysupgrade -i' for upgrading to the 'fat' firmware."
- return 1
- }
- fi
-
- if [ -z "$md5_img" -o -z "$md5_chk" ]; then
- echo "Unable to get image checksums. Maybe you are using a streamed image?"
- return 1
- fi
-
- if [ "$md5_img" != "$md5_chk" ]; then
- echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)"
- return 1
- fi
-
- fw_len=$((0x$fw_len))
- fw_part_len=${fw_part_len:-0}
-
- if [ $fw_part_len -lt $fw_len ]; then
- echo "The upgrade image is too big (size:$fw_len available:$fw_part_len)"
- return 1
- fi
- ;;
- *)
- echo "Unsupported image format."
- return 1
- ;;
- esac
-
- return 0
-}
-
-platform_do_upgrade_dir825b() {
- local magic="$(get_magic_long "$1")"
- local fw_mtd=$(find_mtd_part "firmware_orig")
-
- case "$magic" in
- "27051956")
- if [ -n "$fw_mtd" ]; then
- # restore calibration data before downgrading to
- # the normal image
- dir825b_copy_caldata "caldata" "caldata_orig" || {
- echo "unable to restore calibration data"
- exit 1
- }
- PART_NAME="firmware_orig"
- else
- PART_NAME="firmware"
- fi
- default_do_upgrade "$1"
- ;;
- "43493030")
- if [ -z "$fw_mtd" ]; then
- # backup calibration data before upgrading to the
- # fat image
- dir825b_copy_caldata "caldata" "caldata_copy" || {
- echo "unable to backup calibration data"
- exit 1
- }
- fi
- dir825b_do_upgrade_combined "firmware" "$1"
- ;;
- esac
-}
+++ /dev/null
-#!/bin/sh
-#
-# Copyright (C) 2015-2016 Chris Blake <chrisrblake93@gmail.com>
-#
-# Custom upgrade script for Meraki NAND devices (ex. MR18)
-# Based on dir825.sh and stock nand functions
-#
-. /lib/ar71xx.sh
-. /lib/functions.sh
-
-get_magic_at() {
- local mtddev=$1
- local pos=$2
- dd bs=1 count=2 skip=$pos if=$mtddev 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-meraki_is_caldata_valid() {
- local board=$1
- local mtddev=$2
- local magic
-
- case "$board" in
- "mr18")
- magic=$(get_magic_at $mtddev 4096)
- [ "$magic" != "0202" ] && return 0
-
- magic=$(get_magic_at $mtddev 20480)
- [ "$magic" != "0202" ] && return 0
-
- magic=$(get_magic_at $mtddev 36864)
- [ "$magic" != "0202" ] && return 0
-
- return 1
- ;;
- "z1")
- magic=$(get_magic_at $mtddev 4096)
- [ "$magic" != "0202" ] && return 0
-
- magic=$(get_magic_at $mtddev 86016)
- [ "$magic" != "a55a" ] && return 0
-
- return 1
- ;;
- *)
- return 1
- ;;
- esac
-}
-
-merakinand_copy_caldata() {
- local cal_src=$1
- local cal_dst=$2
- local ubidev="$(nand_find_ubi $CI_UBIPART)"
- local board_name="$(board_name)"
- local rootfs_size="$(ubinfo /dev/ubi0 -N rootfs_data | grep "Size" | awk '{ print $6 }')"
-
- # Setup partitions using board name, in case of future platforms
- case "$board_name" in
- "mr18"|\
- "z1")
- # Src is MTD
- mtd_src="$(find_mtd_chardev $cal_src)"
- [ -n "$mtd_src" ] || {
- echo "no mtd device found for partition $cal_src"
- exit 1
- }
-
- # Dest is UBI
- # TODO: possibly add create (hard to do when rootfs_data is expanded & mounted)
- # Would need to be done from ramdisk
- mtd_dst="$(nand_find_volume $ubidev $cal_dst)"
- [ -n "$mtd_dst" ] || {
- echo "no ubi device found for partition $cal_dst"
- exit 1
- }
-
- meraki_is_caldata_valid "$board_name" "$mtd_src" && {
- echo "no valid calibration data found in $cal_src"
- exit 1
- }
-
- meraki_is_caldata_valid "$board_name" "/dev/$mtd_dst" && {
- echo "Copying calibration data from $cal_src to $cal_dst..."
- dd if="$mtd_src" of=/tmp/caldata.tmp 2>/dev/null
- ubiupdatevol "/dev/$mtd_dst" /tmp/caldata.tmp
- rm /tmp/caldata.tmp
- sync
- }
- return 0
- ;;
- *)
- echo "Unsupported device $board_name";
- return 1
- ;;
- esac
-}
-
-merakinand_do_kernel_check() {
- local board_name="$1"
- local tar_file="$2"
- local image_magic_word=`(tar xf $tar_file sysupgrade-$board_name/kernel -O 2>/dev/null | dd bs=1 count=4 skip=0 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"')`
-
- # What is our kernel magic string?
- case "$board_name" in
- "mr18")
- [ "$image_magic_word" == "8e73ed8a" ] && {
- echo "pass" && return 0
- }
- ;;
- "z1")
- [ "$image_magic_word" == "4d495053" ] && {
- echo "pass" && return 0
- }
- ;;
- esac
-
- exit 1
-}
-
-merakinand_do_platform_check() {
- local board_name="$1"
- local tar_file="$2"
- local control_length=`(tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null`
- local file_type="$(identify_tar $2 sysupgrade-$board_name/root)"
- local kernel_magic="$(merakinand_do_kernel_check $1 $2)"
-
- case "$board_name" in
- "mr18"|\
- "z1")
- [ "$control_length" = 0 -o "$file_type" != "squashfs" -o "$kernel_magic" != "pass" ] && {
- echo "Invalid sysupgrade file for $board_name"
- return 1
- }
- ;;
- *)
- echo "Unsupported device $board_name";
- return 1
- ;;
- esac
-
- return 0
-}
-
-merakinand_do_upgrade() {
- local tar_file="$1"
- local board_name="$(board_name)"
-
- # Do we need to do any platform tweaks?
- case "$board_name" in
- "mr18")
- # Check and create UBI caldata if it's invalid
- merakinand_copy_caldata "odm-caldata" "caldata"
- nand_do_upgrade $1
- ;;
- "z1")
- # Check and create UBI caldata if it's invalid
- merakinand_copy_caldata "origcaldata" "caldata"
- nand_do_upgrade $1
- ;;
- *)
- echo "Unsupported device $board_name";
- exit 1
- ;;
- esac
-}
+++ /dev/null
-# The U-Boot loader of the OpenMesh devices requires image sizes and
-# checksums to be provided in the U-Boot environment.
-# The OpenMesh devices come with 2 main partitions - while one is active
-# sysupgrade will flash the other. The boot order is changed to boot the
-# newly flashed partition. If the new partition can't be booted due to
-# upgrade failures the previously used partition is loaded.
-
-trim()
-{
- echo $1
-}
-
-cfg_value_get()
-{
- local cfg=$1 cfg_opt
- local section=$2 our_section=0
- local param=$3 our_param=
-
- for cfg_opt in $cfg
- do
- [ "$cfg_opt" = "[$section]" ] && our_section=1 && continue
- [ "$our_section" = "1" ] || continue
-
- our_param=$(echo ${cfg_opt%%=*})
- [ "$param" = "$our_param" ] && echo ${cfg_opt##*=} && break
- done
-}
-
-platform_check_image_target_openmesh()
-{
- img_board_target="$1"
-
- case "$img_board_target" in
- A60)
- [ "$board" = "a40" ] && return 0
- [ "$board" = "a60" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- OM2P)
- [ "$board" = "om2p" ] && return 0
- [ "$board" = "om2pv2" ] && return 0
- [ "$board" = "om2pv4" ] && return 0
- [ "$board" = "om2p-lc" ] && return 0
- [ "$board" = "om2p-hs" ] && return 0
- [ "$board" = "om2p-hsv2" ] && return 0
- [ "$board" = "om2p-hsv3" ] && return 0
- [ "$board" = "om2p-hsv4" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- OM5P)
- [ "$board" = "om5p" ] && return 0
- [ "$board" = "om5p-an" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- OM5PAC)
- [ "$board" = "om5p-ac" ] && return 0
- [ "$board" = "om5p-acv2" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- MR1750)
- [ "$board" = "mr1750" ] && return 0
- [ "$board" = "mr1750v2" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- MR600)
- [ "$board" = "mr600" ] && return 0
- [ "$board" = "mr600v2" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- MR900)
- [ "$board" = "mr900" ] && return 0
- [ "$board" = "mr900v2" ] && return 0
- echo "Invalid image board target ($img_board_target) for this platform: $board. Use the correct image for this platform"
- return 1
- ;;
- *)
- echo "Invalid board target ($img_board_target). Use the correct image for this platform"
- return 1
- ;;
- esac
-}
-
-platform_check_image_openmesh()
-{
- local img_magic=$1
- local img_path=$2
- local fw_printenv=/usr/sbin/fw_printenv
- local img_board_target= img_num_files= i=0
- local cfg_name= kernel_name= rootfs_name=
-
- case "$img_magic" in
- # Combined Extended Image v1
- 43453031)
- img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null))
- img_num_files=$(trim $(dd if="$img_path" bs=2 skip=18 count=1 2>/dev/null))
- ;;
- *)
- echo "Invalid image ($img_magic). Use combined extended images on this platform"
- return 1
- ;;
- esac
-
- platform_check_image_target_openmesh "$img_board_target" || return 1
-
- [ $img_num_files -lt 3 ] && {
- echo "Invalid number of embedded images ($img_num_files). Use the correct image for this platform"
- return 1
- }
-
- cfg_name=$(trim $(dd if="$img_path" bs=2 skip=19 count=16 2>/dev/null))
-
- [ "$cfg_name" != "fwupgrade.cfg" ] && {
- echo "Invalid embedded config file ($cfg_name). Use the correct image for this platform"
- return 1
- }
-
- kernel_name=$(trim $(dd if="$img_path" bs=2 skip=55 count=16 2>/dev/null))
-
- [ "$kernel_name" != "kernel" ] && {
- echo "Invalid embedded kernel file ($kernel_name). Use the correct image for this platform"
- return 1
- }
-
- rootfs_name=$(trim $(dd if="$img_path" bs=2 skip=91 count=16 2>/dev/null))
-
- [ "$rootfs_name" != "rootfs" ] && {
- echo "Invalid embedded kernel file ($rootfs_name). Use the correct image for this platform"
- return 1
- }
-
- [ ! -x "$fw_printenv" ] && {
- echo "Please install uboot-envtools!"
- return 1
- }
-
- [ ! -r "/etc/fw_env.config" ] && {
- echo "/etc/fw_env.config is missing"
- return 1
- }
-
- return 0
-}
-
-platform_do_upgrade_openmesh()
-{
- local img_path=$1 img_board_target=
- local kernel_start_addr= kernel_start_addr1= kernel_start_addr2=
- local kernel_size= kernel_md5=
- local rootfs_size= rootfs_checksize= rootfs_md5=
- local kernel_bsize= total_size=
- local data_offset=$((64 * 1024)) block_size= offset=
- local uboot_env_upgrade="/tmp/fw_env_upgrade"
- local cfg_size= kernel_size= rootfs_size=
- local append=""
-
- [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
- cfg_size=$(dd if="$img_path" bs=2 skip=35 count=4 2>/dev/null)
- kernel_size=$(dd if="$img_path" bs=2 skip=71 count=4 2>/dev/null)
- rootfs_size=$(dd if="$img_path" bs=2 skip=107 count=4 2>/dev/null)
-
- img_board_target=$(trim $(dd if="$img_path" bs=4 skip=1 count=8 2>/dev/null))
- cfg_content=$(dd if="$img_path" bs=1 skip=$data_offset count=$(echo $((0x$cfg_size))) 2>/dev/null)
-
- case $img_board_target in
- OM2P)
- block_size=$((256 * 1024))
- total_size=7340032
- kernel_start_addr1=0x9f1c0000
- kernel_start_addr2=0x9f8c0000
- ;;
- OM5P|OM5PAC|MR600|MR900|MR1750|A60)
- block_size=$((64 * 1024))
- total_size=7995392
- kernel_start_addr1=0x9f0b0000
- kernel_start_addr2=0x9f850000
- ;;
- esac
-
- kernel_md5=$(cfg_value_get "$cfg_content" "vmlinux" "md5sum")
- rootfs_md5=$(cfg_value_get "$cfg_content" "rootfs" "md5sum")
- rootfs_checksize=$(cfg_value_get "$cfg_content" "rootfs" "checksize")
-
- if [ "$((0x$kernel_size % $block_size))" = "0" ]
- then
- kernel_bsize=$(echo $((0x$kernel_size)))
- else
- kernel_bsize=$((0x$kernel_size + ($block_size - (0x$kernel_size % $block_size))))
- fi
-
- mtd -q erase inactive
-
- offset=$(echo $(($data_offset + 0x$cfg_size + 0x$kernel_size)))
- dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$rootfs_size))) 2>&- | mtd -n -p $kernel_bsize $append write - "inactive"
-
- offset=$(echo $(($data_offset + 0x$cfg_size)))
- dd if="$img_path" bs=1 skip=$offset count=$(echo $((0x$kernel_size))) 2>&- | mtd -n write - "inactive"
-
- rm $uboot_env_upgrade 2>&-
-
- if [ "$(grep 'mtd3:.*inactive' /proc/mtd)" ]
- then
- printf "kernel_size_1 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade
- printf "rootfs_size_1 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade
- printf "bootseq 1,2\n" >> $uboot_env_upgrade
- kernel_start_addr=$kernel_start_addr1
- else
- printf "kernel_size_2 %u\n" $(($kernel_bsize / 1024)) >> $uboot_env_upgrade
- printf "rootfs_size_2 %u\n" $((($total_size - $kernel_bsize) / 1024)) >> $uboot_env_upgrade
- printf "bootseq 2,1\n" >> $uboot_env_upgrade
- kernel_start_addr=$kernel_start_addr2
- fi
-
- printf "vmlinux_start_addr %s\n" $kernel_start_addr >> $uboot_env_upgrade
- printf "vmlinux_size 0x%s\n" $kernel_size >> $uboot_env_upgrade
- printf "vmlinux_checksum %s\n" $kernel_md5 >> $uboot_env_upgrade
- printf "rootfs_start_addr 0x%x\n" $(($kernel_start_addr + $kernel_bsize)) >> $uboot_env_upgrade
- printf "rootfs_size %s\n" $rootfs_checksize >> $uboot_env_upgrade
- printf "rootfs_checksum %s\n" $rootfs_md5 >> $uboot_env_upgrade
-
- mkdir -p /var/lock
- fw_setenv -s $uboot_env_upgrade || {
- echo "failed to update U-Boot environment"
- return 1
- }
-}
+++ /dev/null
-#
-# Copyright (C) 2011 OpenWrt.org
-#
-
-. /lib/functions/system.sh
-. /lib/ar71xx.sh
-
-PART_NAME=firmware
-RAMFS_COPY_DATA='/lib/ar71xx.sh /etc/fw_env.config /var/lock/fw_printenv.lock'
-RAMFS_COPY_BIN='nandwrite fw_printenv fw_setenv'
-
-CI_BLKSZ=65536
-CI_LDADR=0x80060000
-
-PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
-
-platform_find_partitions() {
- local first dev size erasesize name
- while read dev size erasesize name; do
- name=${name#'"'}; name=${name%'"'}
- case "$name" in
- vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem)
- if [ -z "$first" ]; then
- first="$name"
- else
- echo "$erasesize:$first:$name"
- break
- fi
- ;;
- esac
- done < /proc/mtd
-}
-
-platform_find_kernelpart() {
- local part
- for part in "${1%:*}" "${1#*:}"; do
- case "$part" in
- vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin)
- echo "$part"
- break
- ;;
- esac
- done
-}
-
-platform_find_rootfspart() {
- local part
- for part in "${1%:*}" "${1#*:}"; do
- [ "$part" != "$2" ] && echo "$part" && break
- done
-}
-
-platform_do_upgrade_combined() {
- local partitions=$(platform_find_partitions)
- local kernelpart=$(platform_find_kernelpart "${partitions#*:}")
- local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}"
- local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null)
- local kern_blocks=$(($kern_length / $CI_BLKSZ))
- local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ))
-
- if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \
- [ ${kern_blocks:-0} -gt 0 ] && \
- [ ${root_blocks:-0} -gt 0 ] && \
- [ ${erase_size:-0} -gt 0 ];
- then
- local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart")
- local append=""
- [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
- if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then
- ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \
- dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \
- mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions
- elif [ -n "$rootfspart" ]; then
- dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null | \
- mtd write - $kernelpart
- dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null | \
- mtd -r $append write - $rootfspart
- fi
- fi
- PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0
-}
-
-tplink_get_image_hwid() {
- get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_get_image_mid() {
- get_image "$@" | dd bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_get_image_boot_size() {
- get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-tplink_pharos_check_support_list() {
- local image="$1"
- local offset="$2"
- local model="$3"
- local trargs="$4"
-
- # Here $image is given to dd directly instead of using get_image;
- # otherwise the skip will take almost a second (as dd can't seek)
- dd if="$image" bs=1 skip=$offset count=1024 2>/dev/null | tr -d "$trargs" | (
- while IFS= read -r line; do
- [ "$line" = "$model" ] && exit 0
- done
-
- exit 1
- )
-}
-
-tplink_pharos_check_image() {
- local image_magic="$(get_magic_long "$1")"
- local board_magic="$2"
- [ "$image_magic" != "$board_magic" ] && {
- echo "Invalid image magic '$image_magic'. Expected '$board_magic'."
- return 1
- }
-
- local model_string="$3"
- local trargs="$4"
-
- # New images have the support list at 7802888, old ones at 1511432
- tplink_pharos_check_support_list "$1" 7802888 "$model_string" "$trargs" || \
- tplink_pharos_check_support_list "$1" 1511432 "$model_string" "$trargs" || {
- echo "Unsupported image (model not in support-list)"
- return 1
- }
-
- return 0
-}
-
-seama_get_type_magic() {
- get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-wrgg_get_image_magic() {
- get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
-}
-
-cybertan_get_image_magic() {
- get_image "$@" | dd bs=8 count=1 skip=0 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"'
-}
-
-cybertan_check_image() {
- local magic="$(cybertan_get_image_magic "$1")"
- local fw_magic="$(cybertan_get_hw_magic)"
-
- [ "$fw_magic" != "$magic" ] && {
- echo "Invalid image, ID mismatch, got:$magic, but need:$fw_magic"
- return 1
- }
-
- return 0
-}
-
-platform_do_upgrade_compex() {
- local fw_file=$1
- local fw_part=$PART_NAME
- local fw_mtd=$(find_mtd_part $fw_part)
- local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null)
- local fw_blocks=$(($fw_length / 65536))
-
- if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then
- local append=""
- [ -f "$UPGRADE_BACKUP" ] && append="-j $UPGRADE_BACKUP"
-
- sync
- dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \
- mtd $append write - "$fw_part"
- fi
-}
-
-alfa_check_image() {
- local magic_long="$(get_magic_long "$1")"
- local fw_part_size=$(mtd_get_part_size firmware)
-
- case "$magic_long" in
- "27051956")
- [ "$fw_part_size" != "16318464" ] && {
- echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
- return 1
- }
- ;;
- "68737173")
- [ "$fw_part_size" != "7929856" ] && {
- echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes"
- return 1
- }
- ;;
- esac
-
- return 0
-}
-
-platform_check_image() {
- local board=$(board_name)
- local magic="$(get_magic_word "$1")"
- local magic_long="$(get_magic_long "$1")"
-
- [ "$#" -gt 1 ] && return 1
-
- case "$board" in
- airgateway|\
- airgatewaypro|\
- airrouter|\
- ap121f|\
- ap132|\
- ap531b0|\
- ap90q|\
- archer-c25-v1|\
- archer-c58-v1|\
- archer-c59-v1|\
- archer-c59-v2|\
- archer-c60-v1|\
- archer-c60-v2|\
- archer-c7-v4|\
- archer-c7-v5|\
- arduino-yun|\
- bullet-m|\
- bullet-m-xw|\
- c-55|\
- carambola2|\
- cf-e316n-v2|\
- cf-e320n-v2|\
- cf-e355ac-v1|\
- cf-e355ac-v2|\
- cf-e375ac|\
- cf-e380ac-v1|\
- cf-e380ac-v2|\
- cf-e385ac|\
- cf-e520n|\
- cf-e530n|\
- cpe505n|\
- cpe830|\
- cpe870|\
- dap-1330-a1|\
- dgl-5500-a1|\
- dhp-1565-a1|\
- dir-505-a1|\
- dir-600-a1|\
- dir-615-c1|\
- dir-615-e1|\
- dir-615-e4|\
- dir-615-i1|\
- dir-825-c1|\
- dir-835-a1|\
- dlan-hotspot|\
- dlan-pro-1200-ac|\
- dlan-pro-500-wp|\
- dr342|\
- dr531|\
- dragino2|\
- e1700ac-v2|\
- e558-v2|\
- e600g-v2|\
- e600gac-v2|\
- e750a-v4|\
- e750g-v8|\
- ebr-2310-c1|\
- ens202ext|\
- epg5000|\
- esr1750|\
- esr900|\
- ew-balin|\
- ew-dorin|\
- ew-dorin-router|\
- gl-ar150|\
- gl-ar300m|\
- gl-ar300|\
- gl-ar750|\
- gl-ar750s|\
- gl-domino|\
- gl-mifi|\
- gl-usb150|\
- hiwifi-hc6361|\
- hornet-ub-x2|\
- jwap230|\
- lbe-m5|\
- lima|\
- loco-m-xw|\
- mzk-w04nu|\
- mzk-w300nh|\
- n5q|\
- nanostation-m|\
- nanostation-m-xw|\
- nbg460n_550n_550nh|\
- pqi-air-pen|\
- r36a|\
- r602n|\
- rme-eg200|\
- rocket-m|\
- rocket-m-ti|\
- rocket-m-xw|\
- rw2458n|\
- sc1750|\
- sc300m|\
- sc450|\
- sr3200|\
- t830|\
- tew-632brp|\
- tew-712br|\
- tew-732br|\
- tew-823dru|\
- tl-wr1043n-v5|\
- tl-wr942n-v1|\
- unifi|\
- unifi-outdoor|\
- unifiac-lite|\
- unifiac-pro|\
- wam250|\
- weio|\
- whr-g301n|\
- whr-hp-g300n|\
- whr-hp-gn|\
- wlae-ag300n|\
- wndap360|\
- wpj342|\
- wpj344|\
- wpj531|\
- wpj558|\
- wpj563|\
- wrt400n|\
- wrtnode2q|\
- wzr-450hp2|\
- wzr-hp-ag300h|\
- wzr-hp-g300nh|\
- wzr-hp-g300nh2|\
- wzr-hp-g450h|\
- xd3200)
- [ "$magic" != "2705" ] && {
- echo "Invalid image type."
- return 1
- }
-
- return 0
- ;;
- alfa-ap96|\
- alfa-nx|\
- ap121|\
- ap121-mini|\
- ap135-020|\
- ap136-010|\
- ap136-020|\
- ap147-010|\
- ap152|\
- ap91-5g|\
- ap96|\
- bhr-4grv2|\
- bxu2000n-2-a1|\
- db120|\
- dr344|\
- dw33d|\
- f9k1115v2|\
- hornet-ub|\
- mr12|\
- mr16|\
- zbt-we1526|\
- zcn-1523h-2|\
- zcn-1523h-5)
- [ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && {
- echo "Invalid image type."
- return 1
- }
-
- return 0
- ;;
- all0258n|\
- all0315n|\
- cap324|\
- cap4200ag|\
- cr3000|\
- cr5000)
- platform_check_image_allnet "$1" && return 0
- return 1
- ;;
- all0305|\
- eap300v2|\
- eap7660d|\
- ja76pf|\
- ja76pf2|\
- jwap003|\
- ls-sr71|\
- pb42|\
- pb44|\
- routerstation|\
- routerstation-pro|\
- wp543|\
- wpe72)
- [ "$magic" != "4349" ] && {
- echo "Invalid image. Use *-sysupgrade.bin files on this board"
- return 1
- }
-
- local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null)
- local md5_chk=$(fwtool -q -t -i /dev/null "$1"; dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}"
-
- if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then
- return 0
- else
- echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)"
- return 1
- fi
-
- return 0
- ;;
- antminer-s1|\
- antminer-s3|\
- antrouter-r1|\
- archer-c5|\
- archer-c7|\
- el-m150|\
- el-mini|\
- gl-inet|\
- lan-turtle|\
- mc-mac1200r|\
- minibox-v1|\
- minibox-v3.2|\
- omy-g1|\
- omy-x1|\
- onion-omega|\
- oolite-v1|\
- oolite-v5.2|\
- oolite-v5.2-dev|\
- packet-squirrel|\
- re355|\
- re450|\
- rut900|\
- smart-300|\
- som9331|\
- tellstick-znet-lite|\
- tl-mr10u|\
- tl-mr11u|\
- tl-mr12u|\
- tl-mr13u|\
- tl-mr3020|\
- tl-mr3040|\
- tl-mr3040-v2|\
- tl-mr3220|\
- tl-mr3220-v2|\
- tl-mr3420|\
- tl-mr3420-v2|\
- tl-mr6400|\
- tl-wa701nd-v2|\
- tl-wa7210n-v2|\
- tl-wa750re|\
- tl-wa7510n|\
- tl-wa801nd-v2|\
- tl-wa801nd-v3|\
- tl-wa830re-v2|\
- tl-wa850re|\
- tl-wa850re-v2|\
- tl-wa855re-v1|\
- tl-wa860re|\
- tl-wa901nd|\
- tl-wa901nd-v2|\
- tl-wa901nd-v3|\
- tl-wa901nd-v4|\
- tl-wa901nd-v5|\
- tl-wdr3320-v2|\
- tl-wdr3500|\
- tl-wdr4300|\
- tl-wdr4900-v2|\
- tl-wdr6500-v2|\
- tl-wpa8630|\
- tl-wr1041n-v2|\
- tl-wr1043nd|\
- tl-wr1043nd-v2|\
- tl-wr1043nd-v4|\
- tl-wr2543n|\
- tl-wr703n|\
- tl-wr710n|\
- tl-wr720n-v3|\
- tl-wr740n-v6|\
- tl-wr741nd|\
- tl-wr741nd-v4|\
- tl-wr802n-v1|\
- tl-wr802n-v2|\
- tl-wr810n|\
- tl-wr810n-v2|\
- tl-wr840n-v2|\
- tl-wr840n-v3|\
- tl-wr841n-v1|\
- tl-wr841n-v7|\
- tl-wr841n-v8|\
- tl-wr841n-v9|\
- tl-wr841n-v11|\
- tl-wr842n-v2|\
- tl-wr842n-v3|\
- tl-wr902ac-v1|\
- tl-wr940n-v4|\
- tl-wr940n-v6|\
- tl-wr941nd|\
- tl-wr941nd-v5|\
- tl-wr941nd-v6|\
- ts-d084|\
- wifi-pineapple-nano)
- local magic_ver="0100"
-
- case "$board" in
- tl-wdr3320-v2|tl-wdr6500-v2)
- magic_ver="0200"
- ;;
- esac
-
- [ "$magic" != "$magic_ver" ] && {
- echo "Invalid image type."
- return 1
- }
-
- local hwid
- local mid
- local imagehwid
- local imagemid
-
- hwid=$(tplink_get_hwid)
- mid=$(tplink_get_mid)
- imagehwid=$(tplink_get_image_hwid "$1")
- imagemid=$(tplink_get_image_mid "$1")
-
- [ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && {
- echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid."
- return 1
- }
-
- local boot_size
-
- boot_size=$(tplink_get_image_boot_size "$1")
- [ "$boot_size" != "00000000" ] && {
- echo "Invalid image, it contains a bootloader."
- return 1
- }
-
- return 0
- ;;
- bsb|\
- dir-825-b1|\
- tew-673gru)
- dir825b_check_image "$1" && return 0
- ;;
- rb-411|\
- rb-411u|\
- rb-433|\
- rb-433u|\
- rb-435g|\
- rb-450|\
- rb-450g|\
- rb-493|\
- rb-493g|\
- rb-750|\
- rb-750gl|\
- rb-751|\
- rb-751g|\
- rb-911g-2hpnd|\
- rb-911g-5hpnd|\
- rb-911g-5hpacd|\
- rb-912uag-2hpnd|\
- rb-912uag-5hpnd|\
- rb-921gs-5hpacd-r2|\
- rb-922uags-5hpacd|\
- rb-951g-2hnd|\
- rb-951ui-2hnd|\
- rb-2011l|\
- rb-2011il|\
- rb-2011ils|\
- rb-2011uas|\
- rb-2011uas-2hnd|\
- rb-2011uias|\
- rb-2011uias-2hnd|\
- rb-2011uias-2hnd-r2|\
- rb-sxt2n|\
- rb-sxt5n)
- nand_do_platform_check routerboard $1
- return $?
- ;;
- c-60|\
- hiveap-121|\
- nbg6716|\
- r6100|\
- rambutan|\
- wi2a-ac200i|\
- wndr3700v4|\
- wndr4300)
- nand_do_platform_check $board $1
- return $?
- ;;
- cpe210|\
- cpe510|\
- eap120|\
- wbs210|\
- wbs510)
- tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0
- return 1
- ;;
- cpe210-v2|\
- cpe210-v3)
- tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0
- return 1
- ;;
- cpe510-v2)
- tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0
- return 1
- ;;
- a40|\
- a60|\
- mr1750|\
- mr1750v2|\
- mr600|\
- mr600v2|\
- mr900|\
- mr900v2|\
- om2p|\
- om2p-hs|\
- om2p-hsv2|\
- om2p-hsv3|\
- om2p-hsv4|\
- om2p-lc|\
- om2pv2|\
- om2pv4|\
- om5p|\
- om5p-ac|\
- om5p-acv2|\
- om5p-an)
- platform_check_image_openmesh "$magic_long" "$1" && return 0
- return 1
- ;;
- mr18|\
- z1)
- merakinand_do_platform_check $board $1
- return $?
- ;;
- dir-869-a1|\
- mynet-n600|\
- mynet-n750|\
- qihoo-c301)
- [ "$magic_long" != "5ea3a417" ] && {
- echo "Invalid image, bad magic: $magic_long"
- return 1
- }
-
- local typemagic=$(seama_get_type_magic "$1")
- [ "$typemagic" != "6669726d" ] && {
- echo "Invalid image, bad type: $typemagic"
- return 1
- }
-
- return 0
- ;;
- e2100l|\
- mynet-rext|\
- wrt160nl)
- cybertan_check_image "$1" && return 0
- return 1
- ;;
- nbg6616|\
- uap-pro|\
- unifi-outdoor-plus)
- [ "$magic_long" != "19852003" ] && {
- echo "Invalid image type."
- return 1
- }
-
- return 0
- ;;
- tube2h)
- alfa_check_image "$1" && return 0
- return 1
- ;;
- wndr3700|\
- wnr1000-v2|\
- wnr2000-v3|\
- wnr612-v2|\
- wpn824n)
- local hw_magic
-
- hw_magic="$(ar71xx_get_mtd_part_magic firmware)"
- [ "$magic_long" != "$hw_magic" ] && {
- echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long."
- return 1
- }
-
- return 0
- ;;
- wnr2000-v4)
- [ "$magic_long" != "32303034" ] && {
- echo "Invalid image type."
- return 1
- }
-
- return 0
- ;;
- wnr2200)
- [ "$magic_long" != "32323030" ] && {
- echo "Invalid image type."
- return 1
- }
-
- return 0
- ;;
- dap-2695-a1)
- local magic=$(wrgg_get_image_magic "$1")
- [ "$magic" != "21030820" ] && {
- echo "Invalid image, bad type: $magic"
- return 1
- }
-
- return 0;
- ;;
- # these boards use metadata images
- fritz300e|\
- fritz4020|\
- fritz450e|\
- koala|\
- rb-750-r2|\
- rb-750p-pbr2|\
- rb-750up-r2|\
- rb-911-2hn|\
- rb-911-5hn|\
- rb-931-2nd|\
- rb-941-2nd|\
- rb-951ui-2nd|\
- rb-952ui-5ac2nd|\
- rb-962uigs-5hact2hnt|\
- rb-lhg-5nd|\
- rb-map-2nd|\
- rb-mapl-2nd|\
- rb-sxt-2nd-r3|\
- rb-wap-2nd|\
- rb-wapg-5hact2hnd|\
- rb-wapr-2nd)
- return 0
- ;;
- esac
-
- echo "Sysupgrade is not yet supported on $board."
- return 1
-}
-
-platform_do_upgrade_mikrotik_rb() {
- CI_KERNPART=none
- local fw_mtd=$(find_mtd_part kernel)
- fw_mtd="${fw_mtd/block/}"
- [ -n "$fw_mtd" ] || return
-
- local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
- board_dir=${board_dir%/}
- [ -n "$board_dir" ] || return
-
- mtd erase kernel
- tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" -
-
- nand_do_upgrade "$1"
-}
-
-platform_do_upgrade_nokia() {
- 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
-
- nand_do_upgrade "$1"
-}
-
-platform_do_upgrade() {
- local board=$(board_name)
-
- case "$board" in
- rb-750-r2|\
- rb-750p-pbr2|\
- rb-750up-r2|\
- rb-911-2hn|\
- rb-911-5hn|\
- rb-931-2nd|\
- rb-941-2nd|\
- rb-951ui-2nd|\
- rb-952ui-5ac2nd|\
- rb-962uigs-5hact2hnt|\
- rb-lhg-5nd|\
- rb-map-2nd|\
- rb-mapl-2nd|\
- rb-sxt-2nd-r3|\
- rb-wap-2nd|\
- rb-wapg-5hact2hnd|\
- rb-wapr-2nd)
- # erase firmware if booted from initramfs
- [ -z "$(rootfs_type)" ] && mtd erase firmware
- ;;
- esac
-
- case "$board" in
- all0258n)
- platform_do_upgrade_allnet "0x9f050000" "$1"
- ;;
- all0305|\
- eap7660d|\
- ja76pf|\
- ja76pf2|\
- jwap003|\
- ls-sr71|\
- pb42|\
- pb44|\
- routerstation|\
- routerstation-pro)
- platform_do_upgrade_combined "$1"
- ;;
- all0315n)
- platform_do_upgrade_allnet "0x9f080000" "$1"
- ;;
- cap4200ag|\
- eap300v2|\
- ens202ext)
- platform_do_upgrade_allnet "0xbf0a0000" "$1"
- ;;
- dir-825-b1|\
- tew-673gru)
- platform_do_upgrade_dir825b "$1"
- ;;
- a40|\
- a60|\
- mr1750|\
- mr1750v2|\
- mr600|\
- mr600v2|\
- mr900|\
- mr900v2|\
- om2p|\
- om2p-hs|\
- om2p-hsv2|\
- om2p-hsv3|\
- om2p-hsv4|\
- om2p-lc|\
- om2pv2|\
- om2pv4|\
- om5p|\
- om5p-ac|\
- om5p-acv2|\
- om5p-an)
- platform_do_upgrade_openmesh "$1"
- ;;
- c-60|\
- hiveap-121|\
- nbg6716|\
- r6100|\
- rambutan|\
- wndr3700v4|\
- wndr4300)
- nand_do_upgrade "$1"
- ;;
- mr18|\
- z1)
- merakinand_do_upgrade "$1"
- ;;
- rb-411|\
- rb-411u|\
- rb-433|\
- rb-433u|\
- rb-435g|\
- rb-450|\
- rb-450g|\
- rb-493|\
- rb-493g|\
- rb-750|\
- rb-750gl|\
- rb-751|\
- rb-751g|\
- rb-911g-2hpnd|\
- rb-911g-5hpacd|\
- rb-911g-5hpnd|\
- rb-912uag-2hpnd|\
- rb-912uag-5hpnd|\
- rb-921gs-5hpacd-r2|\
- rb-922uags-5hpacd|\
- rb-951g-2hnd|\
- rb-951ui-2hnd|\
- rb-2011il|\
- rb-2011ils|\
- rb-2011l|\
- rb-2011uas|\
- rb-2011uas-2hnd|\
- rb-2011uias|\
- rb-2011uias-2hnd|\
- rb-2011uias-2hnd-r2|\
- rb-sxt2n|\
- rb-sxt5n)
- platform_do_upgrade_mikrotik_rb "$1"
- ;;
- uap-pro|\
- unifi-outdoor-plus)
- MTD_CONFIG_ARGS="-s 0x180000"
- default_do_upgrade "$1"
- ;;
- wi2a-ac200i)
- platform_do_upgrade_nokia "$1"
- ;;
- wp543|\
- wpe72)
- platform_do_upgrade_compex "$1"
- ;;
- *)
- default_do_upgrade "$1"
- ;;
- esac
-}
+++ /dev/null
-CONFIG_AG71XX=y
-CONFIG_AG71XX_AR8216_SUPPORT=y
-# CONFIG_AG71XX_DEBUG is not set
-# CONFIG_AG71XX_DEBUG_FS is not set
-CONFIG_AR8216_PHY=y
-CONFIG_AR8216_PHY_LEDS=y
-CONFIG_ARCH_BINFMT_ELF_STATE=y
-CONFIG_ARCH_CLOCKSOURCE_DATA=y
-CONFIG_ARCH_DISCARD_MEMBLOCK=y
-CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
-# CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set
-CONFIG_ARCH_HAS_RESET_CONTROLLER=y
-# CONFIG_ARCH_HAS_SG_CHAIN is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
-CONFIG_ARCH_SUPPORTS_UPROBES=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_USE_BUILTIN_BSWAP=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-CONFIG_AT803X_PHY=y
-CONFIG_ATH79=y
-# CONFIG_ATH79_DEV_AP9X_PCI is not set
-# CONFIG_ATH79_DEV_DSA is not set
-# CONFIG_ATH79_DEV_ETH is not set
-# CONFIG_ATH79_DEV_GPIO_BUTTONS is not set
-# CONFIG_ATH79_DEV_LEDS_GPIO is not set
-# CONFIG_ATH79_DEV_M25P80 is not set
-# CONFIG_ATH79_DEV_SPI is not set
-# CONFIG_ATH79_DEV_USB is not set
-# CONFIG_ATH79_MACH_A60 is not set
-# CONFIG_ATH79_MACH_ALFA_AP120C is not set
-# CONFIG_ATH79_MACH_ALFA_AP96 is not set
-# CONFIG_ATH79_MACH_ALFA_NX is not set
-# CONFIG_ATH79_MACH_ALL0258N is not set
-# CONFIG_ATH79_MACH_ALL0315N is not set
-# CONFIG_ATH79_MACH_ANTMINER_S1 is not set
-# CONFIG_ATH79_MACH_ANTMINER_S3 is not set
-# CONFIG_ATH79_MACH_ANTROUTER_R1 is not set
-# CONFIG_ATH79_MACH_AP121 is not set
-# CONFIG_ATH79_MACH_AP121F is not set
-# CONFIG_ATH79_MACH_AP132 is not set
-# CONFIG_ATH79_MACH_AP136 is not set
-# CONFIG_ATH79_MACH_AP143 is not set
-# CONFIG_ATH79_MACH_AP147 is not set
-# CONFIG_ATH79_MACH_AP152 is not set
-# CONFIG_ATH79_MACH_AP531B0 is not set
-# CONFIG_ATH79_MACH_AP81 is not set
-# CONFIG_ATH79_MACH_AP90Q is not set
-# CONFIG_ATH79_MACH_AP91_5G is not set
-# CONFIG_ATH79_MACH_AP96 is not set
-# CONFIG_ATH79_MACH_ARCHER_C25_V1 is not set
-# CONFIG_ATH79_MACH_ARCHER_C58_V1 is not set
-# CONFIG_ATH79_MACH_ARCHER_C59_V1 is not set
-# CONFIG_ATH79_MACH_ARCHER_C59_V2 is not set
-# CONFIG_ATH79_MACH_ARCHER_C60_V1 is not set
-# CONFIG_ATH79_MACH_ARCHER_C60_V2 is not set
-# CONFIG_ATH79_MACH_ARCHER_C7 is not set
-# CONFIG_ATH79_MACH_ARDUINO_YUN is not set
-# CONFIG_ATH79_MACH_AW_NR580 is not set
-# CONFIG_ATH79_MACH_BHR_4GRV2 is not set
-# CONFIG_ATH79_MACH_BHU_BXU2000N2_A is not set
-# CONFIG_ATH79_MACH_BSB is not set
-# CONFIG_ATH79_MACH_C55 is not set
-# CONFIG_ATH79_MACH_C60 is not set
-# CONFIG_ATH79_MACH_CAP324 is not set
-# CONFIG_ATH79_MACH_CAP4200AG is not set
-# CONFIG_ATH79_MACH_CARAMBOLA2 is not set
-# CONFIG_ATH79_MACH_CF_E316N_V2 is not set
-# CONFIG_ATH79_MACH_CF_E320N_V2 is not set
-# CONFIG_ATH79_MACH_CF_E355AC is not set
-# CONFIG_ATH79_MACH_CF_E375AC is not set
-# CONFIG_ATH79_MACH_CF_E380AC_V1 is not set
-# CONFIG_ATH79_MACH_CF_E380AC_V2 is not set
-# CONFIG_ATH79_MACH_CF_E520N is not set
-# CONFIG_ATH79_MACH_CF_E530N is not set
-# CONFIG_ATH79_MACH_CPE505N is not set
-# CONFIG_ATH79_MACH_CPE510 is not set
-# CONFIG_ATH79_MACH_CPE830 is not set
-# CONFIG_ATH79_MACH_CPE870 is not set
-# CONFIG_ATH79_MACH_CR3000 is not set
-# CONFIG_ATH79_MACH_CR5000 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
-# CONFIG_ATH79_MACH_DGL_5500_A1 is not set
-# CONFIG_ATH79_MACH_DHP_1565_A1 is not set
-# CONFIG_ATH79_MACH_DIR_505_A1 is not set
-# CONFIG_ATH79_MACH_DIR_600_A1 is not set
-# CONFIG_ATH79_MACH_DIR_615_C1 is not set
-# CONFIG_ATH79_MACH_DIR_615_I1 is not set
-# CONFIG_ATH79_MACH_DIR_825_B1 is not set
-# CONFIG_ATH79_MACH_DIR_825_C1 is not set
-# CONFIG_ATH79_MACH_DIR_869_A1 is not set
-# CONFIG_ATH79_MACH_DLAN_HOTSPOT is not set
-# CONFIG_ATH79_MACH_DLAN_PRO_1200_AC is not set
-# CONFIG_ATH79_MACH_DLAN_PRO_500_WP is not set
-# CONFIG_ATH79_MACH_DOMYWIFI_DW33D is not set
-# CONFIG_ATH79_MACH_DR342 is not set
-# CONFIG_ATH79_MACH_DR344 is not set
-# CONFIG_ATH79_MACH_DR531 is not set
-# CONFIG_ATH79_MACH_DRAGINO2 is not set
-# CONFIG_ATH79_MACH_E1700AC_V2 is not set
-# CONFIG_ATH79_MACH_E2100L is not set
-# CONFIG_ATH79_MACH_E558_V2 is not set
-# CONFIG_ATH79_MACH_E600G_V2 is not set
-# CONFIG_ATH79_MACH_E750A_V4 is not set
-# CONFIG_ATH79_MACH_E750G_V8 is not set
-# CONFIG_ATH79_MACH_EAP120 is not set
-# CONFIG_ATH79_MACH_EAP300V2 is not set
-# CONFIG_ATH79_MACH_EAP7660D is not set
-# CONFIG_ATH79_MACH_EL_M150 is not set
-# CONFIG_ATH79_MACH_EL_MINI is not set
-# CONFIG_ATH79_MACH_ENS202EXT is not set
-# CONFIG_ATH79_MACH_EPG5000 is not set
-# CONFIG_ATH79_MACH_ESR1750 is not set
-# CONFIG_ATH79_MACH_ESR900 is not set
-# CONFIG_ATH79_MACH_EW_BALIN is not set
-# CONFIG_ATH79_MACH_EW_DORIN is not set
-# CONFIG_ATH79_MACH_F9K1115V2 is not set
-# CONFIG_ATH79_MACH_FRITZ300E is not set
-# CONFIG_ATH79_MACH_FRITZ4020 is not set
-# CONFIG_ATH79_MACH_FRITZ450E is not set
-# CONFIG_ATH79_MACH_GL_AR150 is not set
-# CONFIG_ATH79_MACH_GL_AR300 is not set
-# CONFIG_ATH79_MACH_GL_AR300M is not set
-# CONFIG_ATH79_MACH_GL_AR750 is not set
-# CONFIG_ATH79_MACH_GL_AR750S is not set
-# CONFIG_ATH79_MACH_GL_DOMINO is not set
-# CONFIG_ATH79_MACH_GL_INET is not set
-# CONFIG_ATH79_MACH_GL_MIFI is not set
-# CONFIG_ATH79_MACH_GL_USB150 is not set
-# CONFIG_ATH79_MACH_GS_MINIBOX_V32 is not set
-# CONFIG_ATH79_MACH_GS_OOLITE_V1 is not set
-# CONFIG_ATH79_MACH_GS_OOLITE_V5_2 is not set
-# CONFIG_ATH79_MACH_HIVEAP_121 is not set
-# CONFIG_ATH79_MACH_HIWIFI_HC6361 is not set
-# CONFIG_ATH79_MACH_HORNET_UB is not set
-# CONFIG_ATH79_MACH_JA76PF is not set
-# CONFIG_ATH79_MACH_JWAP003 is not set
-# CONFIG_ATH79_MACH_JWAP230 is not set
-# CONFIG_ATH79_MACH_KOALA is not set
-# CONFIG_ATH79_MACH_LAN_TURTLE is not set
-# CONFIG_ATH79_MACH_LIMA is not set
-# CONFIG_ATH79_MACH_MC_MAC1200R is not set
-# CONFIG_ATH79_MACH_MR12 is not set
-# CONFIG_ATH79_MACH_MR16 is not set
-# CONFIG_ATH79_MACH_MR1750 is not set
-# CONFIG_ATH79_MACH_MR18 is not set
-# CONFIG_ATH79_MACH_MR600 is not set
-# CONFIG_ATH79_MACH_MR900 is not set
-# CONFIG_ATH79_MACH_MYNET_N600 is not set
-# CONFIG_ATH79_MACH_MYNET_N750 is not set
-# CONFIG_ATH79_MACH_MYNET_REXT is not set
-# CONFIG_ATH79_MACH_MZK_W04NU is not set
-# CONFIG_ATH79_MACH_MZK_W300NH is not set
-# CONFIG_ATH79_MACH_N5Q is not set
-# CONFIG_ATH79_MACH_NBG460N is not set
-# CONFIG_ATH79_MACH_NBG6716 is not set
-# CONFIG_ATH79_MACH_OM2P is not set
-# CONFIG_ATH79_MACH_OM5P is not set
-# CONFIG_ATH79_MACH_OM5P_AC is not set
-# CONFIG_ATH79_MACH_OM5P_ACv2 is not set
-# CONFIG_ATH79_MACH_OMY_G1 is not set
-# CONFIG_ATH79_MACH_OMY_X1 is not set
-# CONFIG_ATH79_MACH_ONION_OMEGA is not set
-# CONFIG_ATH79_MACH_PB42 is not set
-# CONFIG_ATH79_MACH_PB44 is not set
-# CONFIG_ATH79_MACH_PQI_AIR_PEN is not set
-# CONFIG_ATH79_MACH_QIHOO_C301 is not set
-# CONFIG_ATH79_MACH_R36A is not set
-# CONFIG_ATH79_MACH_R602N is not set
-# CONFIG_ATH79_MACH_R6100 is not set
-# CONFIG_ATH79_MACH_RAMBUTAN is not set
-# CONFIG_ATH79_MACH_RB2011 is not set
-# CONFIG_ATH79_MACH_RB4XX is not set
-# CONFIG_ATH79_MACH_RB750 is not set
-# CONFIG_ATH79_MACH_RB91X is not set
-# CONFIG_ATH79_MACH_RB922 is not set
-# CONFIG_ATH79_MACH_RB95X is not set
-# CONFIG_ATH79_MACH_RBSPI is not set
-# CONFIG_ATH79_MACH_RBSXTLITE is not set
-# CONFIG_ATH79_MACH_RE355 is not set
-# CONFIG_ATH79_MACH_RE450 is not set
-# CONFIG_ATH79_MACH_RME_EG200 is not set
-# CONFIG_ATH79_MACH_RUT9XX is not set
-# CONFIG_ATH79_MACH_RW2458N is not set
-# CONFIG_ATH79_MACH_SC1750 is not set
-# CONFIG_ATH79_MACH_SC300M is not set
-# CONFIG_ATH79_MACH_SC450 is not set
-# CONFIG_ATH79_MACH_SMART_300 is not set
-# CONFIG_ATH79_MACH_SOM9331 is not set
-# CONFIG_ATH79_MACH_SR3200 is not set
-# CONFIG_ATH79_MACH_T830 is not set
-# CONFIG_ATH79_MACH_TELLSTICK_ZNET_LITE is not set
-# CONFIG_ATH79_MACH_TEW_632BRP is not set
-# CONFIG_ATH79_MACH_TEW_673GRU is not set
-# CONFIG_ATH79_MACH_TEW_712BR is not set
-# CONFIG_ATH79_MACH_TEW_732BR is not set
-# CONFIG_ATH79_MACH_TEW_823DRU is not set
-# CONFIG_ATH79_MACH_TL_MR11U is not set
-# CONFIG_ATH79_MACH_TL_MR13U is not set
-# CONFIG_ATH79_MACH_TL_MR3020 is not set
-# CONFIG_ATH79_MACH_TL_MR3X20 is not set
-# CONFIG_ATH79_MACH_TL_MR6400 is not set
-# CONFIG_ATH79_MACH_TL_WA701ND_V2 is not set
-# CONFIG_ATH79_MACH_TL_WA7210N_V2 is not set
-# CONFIG_ATH79_MACH_TL_WA801ND_V3 is not set
-# CONFIG_ATH79_MACH_TL_WA830RE_V2 is not set
-# CONFIG_ATH79_MACH_TL_WA850RE_V2 is not set
-# CONFIG_ATH79_MACH_TL_WA855RE_V1 is not set
-# CONFIG_ATH79_MACH_TL_WA901ND is not set
-# CONFIG_ATH79_MACH_TL_WA901ND_V2 is not set
-# CONFIG_ATH79_MACH_TL_WA901ND_V4 is not set
-# CONFIG_ATH79_MACH_TL_WAX50RE is not set
-# CONFIG_ATH79_MACH_TL_WDR3320_V2 is not set
-# CONFIG_ATH79_MACH_TL_WDR3500 is not set
-# CONFIG_ATH79_MACH_TL_WDR4300 is not set
-# CONFIG_ATH79_MACH_TL_WDR6500_V2 is not set
-# CONFIG_ATH79_MACH_TL_WPA8630 is not set
-# CONFIG_ATH79_MACH_TL_WR1041N_V2 is not set
-# CONFIG_ATH79_MACH_TL_WR1043ND is not set
-# CONFIG_ATH79_MACH_TL_WR1043ND_V2 is not set
-# CONFIG_ATH79_MACH_TL_WR1043ND_V4 is not set
-# CONFIG_ATH79_MACH_TL_WR1043N_V5 is not set
-# CONFIG_ATH79_MACH_TL_WR2543N is not set
-# CONFIG_ATH79_MACH_TL_WR703N is not set
-# CONFIG_ATH79_MACH_TL_WR720N_V3 is not set
-# CONFIG_ATH79_MACH_TL_WR741ND is not set
-# CONFIG_ATH79_MACH_TL_WR741ND_V4 is not set
-# CONFIG_ATH79_MACH_TL_WR802N_V1 is not set
-# CONFIG_ATH79_MACH_TL_WR802N_V2 is not set
-# CONFIG_ATH79_MACH_TL_WR810N is not set
-# CONFIG_ATH79_MACH_TL_WR810N_V2 is not set
-# CONFIG_ATH79_MACH_TL_WR840N_V2 is not set
-# CONFIG_ATH79_MACH_TL_WR841N_V1 is not set
-# CONFIG_ATH79_MACH_TL_WR841N_V8 is not set
-# CONFIG_ATH79_MACH_TL_WR841N_V9 is not set
-# CONFIG_ATH79_MACH_TL_WR902AC_V1 is not set
-# CONFIG_ATH79_MACH_TL_WR940N_V4 is not set
-# CONFIG_ATH79_MACH_TL_WR941ND is not set
-# CONFIG_ATH79_MACH_TL_WR941ND_V6 is not set
-# CONFIG_ATH79_MACH_TL_WR942N_V1 is not set
-# CONFIG_ATH79_MACH_TS_D084 is not set
-# CONFIG_ATH79_MACH_TUBE2H is not set
-# CONFIG_ATH79_MACH_UBNT is not set
-# CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set
-# CONFIG_ATH79_MACH_UBNT_XM is not set
-# CONFIG_ATH79_MACH_WAM250 is not set
-# CONFIG_ATH79_MACH_WEIO is not set
-# CONFIG_ATH79_MACH_WHR_HP_G300N is not set
-# CONFIG_ATH79_MACH_WI2A_AC200I is not set
-# CONFIG_ATH79_MACH_WIFI_PINEAPPLE_NANO is not set
-# CONFIG_ATH79_MACH_WLAE_AG300N is not set
-# CONFIG_ATH79_MACH_WLR8100 is not set
-# CONFIG_ATH79_MACH_WNDAP360 is not set
-# CONFIG_ATH79_MACH_WNDR3700 is not set
-# CONFIG_ATH79_MACH_WNDR4300 is not set
-# CONFIG_ATH79_MACH_WNR2000 is not set
-# CONFIG_ATH79_MACH_WNR2000_V3 is not set
-# CONFIG_ATH79_MACH_WNR2000_V4 is not set
-# CONFIG_ATH79_MACH_WNR2200 is not set
-# CONFIG_ATH79_MACH_WP543 is not set
-# CONFIG_ATH79_MACH_WPE72 is not set
-# CONFIG_ATH79_MACH_WPJ342 is not set
-# CONFIG_ATH79_MACH_WPJ344 is not set
-# CONFIG_ATH79_MACH_WPJ531 is not set
-# CONFIG_ATH79_MACH_WPJ558 is not set
-# CONFIG_ATH79_MACH_WPJ563 is not set
-# CONFIG_ATH79_MACH_WRT160NL is not set
-# CONFIG_ATH79_MACH_WRT400N is not set
-# CONFIG_ATH79_MACH_WRTNODE2Q is not set
-# CONFIG_ATH79_MACH_WZR_450HP2 is not set
-# CONFIG_ATH79_MACH_WZR_HP_AG300H is not set
-# CONFIG_ATH79_MACH_WZR_HP_G300NH is not set
-# CONFIG_ATH79_MACH_WZR_HP_G300NH2 is not set
-# CONFIG_ATH79_MACH_WZR_HP_G450H is not set
-# CONFIG_ATH79_MACH_XD3200 is not set
-# CONFIG_ATH79_MACH_Z1 is not set
-# CONFIG_ATH79_MACH_ZBT_WE1526 is not set
-# CONFIG_ATH79_MACH_ZCN_1523H is not set
-# CONFIG_ATH79_NVRAM is not set
-# CONFIG_ATH79_PCI_ATH9K_FIXUP is not set
-# CONFIG_ATH79_ROUTERBOOT is not set
-CONFIG_ATH79_WDT=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLKDEV_LOOKUP=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs noinitrd"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-# CONFIG_COMMON_CLK_BOSTON is not set
-CONFIG_COMMON_CLK=y
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_RIXI=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R2=y
-CONFIG_CPU_MIPSR2=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_R4K_FPU=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CPU_SUPPORTS_MSA=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_WORKQUEUE=y
-CONFIG_CSRC_R4K=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ETHERNET_PACKET_MANGLE=y
-CONFIG_FIXED_PHY=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_IO=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIOLIB_IRQCHIP=y
-CONFIG_GPIO_74X164=y
-CONFIG_GPIO_ATH79=y
-CONFIG_GPIO_GENERIC=y
-# CONFIG_GPIO_LATCH is not set
-CONFIG_GPIO_NXP_74HC153=y
-CONFIG_GPIO_PCF857X=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-# CONFIG_HAVE_ARCH_BITREVERSE is not set
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_HAVE_CBPF_JIT=y
-CONFIG_HAVE_CC_STACKPROTECTOR=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_CLK_PREPARE=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
-CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
-CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
-CONFIG_HAVE_NET_DSA=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_ALGOBIT=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_GPIO=y
-CONFIG_IMAGE_CMDLINE_HACK=y
-CONFIG_INITRAMFS_ROOT_GID=0
-CONFIG_INITRAMFS_ROOT_UID=0
-CONFIG_INITRAMFS_SOURCE="../../root"
-CONFIG_INTEL_XWAY_PHY=y
-CONFIG_IP17XX_PHY=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_LEDS_GPIO=y
-CONFIG_MARVELL_PHY=y
-CONFIG_MDIO_BITBANG=y
-CONFIG_MDIO_BOARDINFO=y
-CONFIG_MDIO_GPIO=y
-CONFIG_MICREL_PHY=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CLOCK_VSYSCALL=y
-# CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set
-CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER=y
-# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-CONFIG_MIPS_MACHINE=y
-CONFIG_MIPS_SPRAM=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_I2 is not set
-# CONFIG_MTD_CFI_INTELEXT is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_CYBERTAN_PARTS=y
-CONFIG_MTD_M25P80=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-CONFIG_MTD_MYLOADER_PARTS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_MTD_SPLIT_EVA_FW=y
-CONFIG_MTD_SPLIT_FIRMWARE=y
-CONFIG_MTD_SPLIT_LZMA_FW=y
-CONFIG_MTD_SPLIT_MINOR_FW=y
-CONFIG_MTD_SPLIT_SEAMA_FW=y
-CONFIG_MTD_SPLIT_TPLINK_FW=y
-CONFIG_MTD_SPLIT_UIMAGE_FW=y
-CONFIG_MTD_SPLIT_WRGG_FW=y
-CONFIG_MTD_TPLINK_PARTS=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6063=y
-CONFIG_NET_DSA_TAG_TRAILER=y
-CONFIG_NET_SWITCHDEV=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-# CONFIG_NO_IOPORT_MAP is not set
-# CONFIG_OF is not set
-# CONFIG_PCI_AR724X is not set
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_RATIONAL=y
-# CONFIG_RCU_STALL_COMMON is not set
-CONFIG_RTL8306_PHY=y
-CONFIG_RTL8366RB_PHY=y
-CONFIG_RTL8366S_PHY=y
-CONFIG_RTL8366_SMI=y
-CONFIG_RTL8367_PHY=y
-# CONFIG_SCHED_INFO is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SERIAL_8250_FSL is not set
-CONFIG_SERIAL_8250_NR_UARTS=1
-CONFIG_SERIAL_8250_RUNTIME_UARTS=1
-# CONFIG_SOC_AR71XX is not set
-# CONFIG_SOC_AR724X is not set
-# CONFIG_SOC_AR913X is not set
-# CONFIG_SOC_AR933X is not set
-# CONFIG_SOC_AR934X is not set
-# CONFIG_SOC_QCA953X is not set
-# CONFIG_SOC_QCA955X is not set
-# CONFIG_SOC_QCA956X is not set
-CONFIG_SPI=y
-CONFIG_SPI_ATH79=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
-# CONFIG_SPI_RB4XX is not set
-# CONFIG_SPI_VSC7385 is not set
-CONFIG_SRCU=y
-CONFIG_SWCONFIG=y
-CONFIG_SWCONFIG_LEDS=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R2=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_SYS_SUPPORTS_ZBOOT_UART_PROM=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_USB_SUPPORT=y
+++ /dev/null
-config ATH79_MACH_A60
- bool "OpenMesh A40/A60 board support"
- select SOC_QCA955X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- 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
- bool "ALFA Network AP120C board support"
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_AP121F
- bool "ALFA Network AP121F support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ALFA_AP96
- bool "ALFA Network AP96 board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_HORNET_UB
- bool "ALFA Network Hornet-UB board support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ALFA_NX
- bool "ALFA Network N2/N5 board support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_TUBE2H
- bool "ALFA Network Tube2H board support"
- select SOC_AR933X
- 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_SC1750
- bool "Abicom SC1750 board support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_SC300M
- bool "Abicom SC300M board support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_SC450
- bool "Abicom SC450 board support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ALL0258N
- bool "Allnet ALL0258N support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_ALL0315N
- bool "Allnet ALL0315N support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_ANTMINER_S1
- bool "Bitmain Antminer S1 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ANTMINER_S3
- bool "Bitmain Antminer S3 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ANTROUTER_R1
- bool "Bitmain Antrouter R1 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ARDUINO_YUN
- bool "Arduino Yun"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_AP132
- bool "Atheros AP132 reference board"
- select SOC_QCA955X
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_AP143
- bool "Atheros AP143 reference board"
- select SOC_QCA953X
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_SPI
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_AP147
- bool "Atheros AP147 reference board"
- select SOC_QCA953X
- 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_AP152
- bool "Atheros AP152 reference board"
- 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
- 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_SPI
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_AP90Q
- bool "YunCore AP80Q/AP90Q support"
- select SOC_QCA953X
- 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_AP91_5G
- bool "ALFA Network AP91-5G support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_AP96
- bool "Atheros AP96 board support"
- select SOC_AR71XX
- 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_USB
-
-config ATH79_MACH_PB42
- bool "Atheros PB42 board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
-
-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_C60
- bool "AirTight Networks C-60 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
- select ATH79_DEV_NFC
- select ATH79_DEV_USB
-
-config ATH79_MACH_AW_NR580
- bool "AzureWave AW-NR580 board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_F9K1115V2
- bool "Belkin AC1750DB board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_EPG5000
- bool "EnGenius EPG5000 board 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_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_ESR1750
- bool "EnGenius ESR1750 board 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_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_PQI_AIR_PEN
- bool "PQI Air Pen"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_SOM9331
- bool "SOM9331 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_SR3200
- bool "YunCore SR3200 support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_BHR_4GRV2
- bool "Buffalo BHR-4GRV2 board support"
- select SOC_QCA955X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_WHR_HP_G300N
- bool "Buffalo WHR-HP-G300N board support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_WLAE_AG300N
- bool "Buffalo WLAE-AG300N board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_WLR8100
- bool "Sitecom WLR-8100 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WZR_HP_AG300H
- bool "Buffalo WZR-HP-AG300H board support"
- select SOC_AR71XX
- 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_USB
-
-config ATH79_MACH_WZR_HP_G300NH
- bool "Buffalo WZR-HP-G300NH board support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select RTL8366_SMI
-
-config ATH79_MACH_WZR_HP_G300NH2
- bool "Buffalo WZR-HP-G300NH2 board support"
- select SOC_AR724X
- 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_USB
-
-config ATH79_MACH_WZR_HP_G450H
- bool "Buffalo WZR-HP-G450H board support"
- select SOC_AR724X
- select ATH79_DEV_ETH
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_WZR_450HP2
- bool "Buffalo WZR-450HP2 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WP543
- bool "Compex WP543/WPJ543 board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select MYLOADER
-
-config ATH79_MACH_WPE72
- bool "Compex WPE72/WPE72NX board support"
- select SOC_AR724X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select MYLOADER
-
-config ATH79_MACH_WPJ342
- bool "Compex WPJ342 board support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WPJ344
- bool "Compex WPJ344 board support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WPJ531
- bool "Compex WPJ531 board support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WPJ558
- bool "Compex WPJ558 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WPJ563
- bool "Compex WPJ563 board support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_XD3200
- bool "YunCore XD3200 support"
- select SOC_QCA956X
- 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_DGL_5500_A1
- bool "D-Link DGL-5500 A1 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_WMAC
- select ATH79_DEV_USB
-
-config ATH79_MACH_DHP_1565_A1
- bool "D-Link DHP-1565 rev. A1 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_DIR_505_A1
- bool "D-Link DIR-505-A1 support"
- select SOC_AR933X
- 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_DIR_600_A1
- bool "D-Link DIR-600 A1/DIR-615 E1/DIR-615 E4 support"
- select SOC_AR724X
- 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_NVRAM
-
-config ATH79_MACH_DIR_615_C1
- bool "D-Link DIR-615 rev. C1 support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_DIR_615_I1
- bool "D-Link DIR-615 rev. I1 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_DIR_825_B1
- bool "D-Link DIR-825 rev. B1 board support"
- select SOC_AR71XX
- 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_USB
-
-config ATH79_MACH_DIR_825_C1
- bool "D-Link DIR-825 rev. C1/DIR-835 rev. A1 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_DIR_869_A1
- bool "D-Link DIR-869 rev. A1"
- select SOC_QCA956X
- 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
- select ATH79_NVRAM
-
-config ATH79_MACH_DLAN_HOTSPOT
- bool "devolo dLAN Hotspot support"
- select SOC_AR933X
- 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_DLAN_PRO_500_WP
- bool "devolo dLAN pro 500 Wireless+ support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_SPI
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_DEV_USB
-
-config ATH79_MACH_DLAN_PRO_1200_AC
- bool "devolo dLAN pro 1200+ WiFi ac 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_SPI
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_DEV_NFC
- select ATH79_DEV_USB
-
-config ATH79_MACH_DOMYWIFI_DW33D
- bool "DomyWifi DW33D support"
- select SOC_QCA955X
- 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_NFC
- select ATH79_DEV_WMAC
- select ATH79_DEV_USB
-
-config ATH79_MACH_DR342
- bool "Wallys DR342 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_DR344
- bool "Wallys DR344 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_DR531
- bool "Wallys DR531 board support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_DRAGINO2
- bool "DRAGINO V2 support"
- select SOC_AR933X
- select ATH79_DEV_M25P80
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
- select ATH79_DEV_USB
-
-config ATH79_MACH_E1700AC_V2
- bool "Qxwlan E1700AC v2 support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_E2100L
- bool "Linksys E2100L board support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_E558_V2
- bool "Qxwlan E558 v2 support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_E600G_V2
- bool "Qxwlan E600G/E600GAC v2 support"
- select SOC_QCA953X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_E750A_V4
- bool "Qxwlan E750A v4 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_E750G_V8
- bool "Qxwlan E750G v8 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ESR900
- bool "EnGenius ESR900 board 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_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_EW_BALIN
- bool "embedded wireless Balin Platform support"
- select SOC_AR934X
- select ATH79_DEV_M25P80
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
- select ATH79_DEV_USB
- select ATH79_DEV_AP9X_PCI if PCI
-
-config ATH79_MACH_EW_DORIN
- bool "embedded wireless Dorin Platform support"
- select SOC_AR933X
- select ATH79_DEV_M25P80
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
-
-config ATH79_MACH_EL_M150
- bool "EasyLink EL-M150 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_EL_MINI
- bool "EasyLink EL-MINI support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_AR150
- bool "GL AR150 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_AR300
- bool "GL_AR300 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_AR300M
- bool "GL_AR300M support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_AR750
- bool "GL.iNet GL-AR750 support"
- select SOC_QCA953X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_AR750S
- bool "GL.iNet GL-AR750S support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_DOMINO
- bool "DOMINO support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_MIFI
- bool "GL MIFI support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_INET
- bool "GL-INET support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GL_USB150
- bool "GL.iNet GL-USB150 support"
- select SOC_AR933X
- 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_EAP120
- bool "TP-LINK EAP120 support"
- select SOC_AR934X
- 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_ENS202EXT
- bool "EnGenius ENS202EXT support"
- select SOC_AR934X
- 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_EAP300V2
- bool "EnGenius EAP300 v2 support"
- select SOC_AR934X
- 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_GS_MINIBOX_V32
- bool "Gainstrong Minibox V3.2 support"
- select SOC_QCA953X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_SPI
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_GS_OOLITE_V1
- bool "GainStrong Oolite/Minibox V1.0 support"
- select SOC_AR933X
- select ARH79_DEV_ETH
- select ARH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_GS_OOLITE_V5_2
- bool "GainStrong Oolite V5.2 support"
- select SOC_QCA953X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_HIVEAP_121
- bool "Aerohive HiveAP-121 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_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_HIWIFI_HC6361
- bool "HiWiFi HC6361 board support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_JA76PF
- bool "jjPlus JA76PF board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_JWAP003
- bool "jjPlus JWAP003 board support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_JWAP230
- bool "jjPlus JWAP230 board support"
- select SOC_QCA955X
- select ATH79_DEV_ETH
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_KOALA
- bool "OCEDO Koala board support"
- select SOC_QCA955X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_ETH
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WAM250
- bool "Samsung WAM250 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WIFI_PINEAPPLE_NANO
- bool "Hak5 WiFi Pineapple NANO support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WRT160NL
- bool "Linksys WRT160NL board support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_WRT400N
- bool "Linksys WRT400N board support"
- select SOC_AR71XX
- 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
-
-config ATH79_MACH_WRTNODE2Q
- bool "WRTnode2Q board support"
- select SOC_QCA953X
- 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_R36A
- bool "ALFA Network R36A support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_R602N
- bool "P&W R602N support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_R6100
- bool "NETGEAR R6100 board 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_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_MC_MAC1200R
- bool "MERCURY MAC1200R board 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_RB4XX
- bool "MikroTik RouterBOARD 4xx series support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_USB
-
-config ATH79_MACH_RB750
- bool "MikroTik RouterBOARD 750 support"
- select SOC_AR724X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_USB
- select ATH79_ROUTERBOOT
-
-config ATH79_MACH_RB91X
- bool "MikroTik RouterBOARD 91X support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_SPI
- select ATH79_DEV_WMAC
- select ATH79_DEV_USB
- select ATH79_ROUTERBOOT
-
-config ATH79_MACH_RB922
- bool "MikroTik RouterBOARD 922 support"
- select SOC_QCA955X
- select ATH79_DEV_ETH
- select ATH79_DEV_M25P80
- select ATH79_DEV_NFC
- select ATH79_DEV_USB
- select ATH79_ROUTERBOOT
- select RLE_DECOMPRESS
-
-config ATH79_MACH_RB95X
- bool "MikroTik RouterBOARD 95X support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_NFC
- select ATH79_DEV_WMAC
- select ATH79_DEV_USB
- select ATH79_ROUTERBOOT
-
-config ATH79_MACH_RB2011
- bool "MikroTik RouterBOARD 2011 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_M25P80
- select ATH79_DEV_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_ROUTERBOOT
-
-config ATH79_MACH_RBSPI
- bool "MikroTik RouterBOARD SPI-NOR support"
- select SOC_AR934X
- select SOC_QCA953X
- select SOC_QCA955X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_ROUTERBOOT
- help
- Say 'Y' here if you want your kernel to support the
- MikroTik ROuterBOARD 911-2Hn (911 Lite2)
- MikroTik ROuterBOARD 911-5Hn (911 Lite5)
- MikroTik RouterBOARD mAP
- MikroTik RouterBOARD mAP lite
- MikroTik RouterBOARD hAP mini
- MikroTik RouterBOARD hAP lite
- MikroTik RouterBOARD hAP
- MikroTik RouterBOARD hAP ac
- MikroTik RouterBOARD hAP ac lite
- MikroTik RouterBOARD hEX PoE lite
- MikroTik RouterBOARD hEX lite
- MikroTik RouterBOARD Powerbox
- MikroTik RouterBOARD LHG 5
- MikroTik RouterBOARD cAP (EXPERIMENTAL)
- MikroTik RouterBOARD SXT Lite 2 r3
- MikroTik RouterBOARD wAP
- MikroTik RouterBOARD wAP R-2nD
-
-config ATH79_MACH_RBSXTLITE
- bool "MikroTik RouterBOARD SXT Lite"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_NFC
- select ATH79_DEV_WMAC
- select ATH79_ROUTERBOOT
-
-config ATH79_MACH_SMART_300
- bool "NC-LINK SMART-300 board support"
- select SOC_AR934X
- 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_T830
- bool "YunCore T830 support"
- select SOC_QCA953X
- select ARH79_DEV_ETH
- select ARH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TELLSTICK_ZNET_LITE
- bool "TellStick ZNet Lite"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WNDAP360
- bool "NETGEAR WNDAP360 board support"
- select SOC_AR71XX
- 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
-
-config ATH79_MACH_WNDR3700
- bool "NETGEAR WNDR3700 board support"
- select SOC_AR71XX
- 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_USB
-
-config ATH79_MACH_WNDR4300
- bool "NETGEAR WNDR3700v4/WNDR4300 board 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_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_WNR2000
- bool "NETGEAR WNR2000 board support"
- select SOC_AR913X
- 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_WNR2000_V3
- bool "NETGEAR WNR2000 V3/WNR612 v2/WNR1000 v2/WPN824N board support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_WNR2200
- bool "NETGEAR WNR2200 board support"
- select SOC_AR724X
- 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_USB
-
-config ATH79_MACH_WNR2000_V4
- bool "NETGEAR WNR2000 V4"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_OM2P
- bool "OpenMesh OM2P board support"
- select SOC_AR724X
- select SOC_AR933X
- select SOC_QCA953X
- 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_OM5P
- bool "OpenMesh OM5P board 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_OM5P_AC
- bool "OpenMesh OM5P-AC board support"
- select SOC_QCA955X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_OM5P_ACv2
- bool "OpenMesh OM5P-ACv2 board support"
- select SOC_QCA955X
- 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_OMY_G1
- bool "OMYlink OMY G1 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_OMY_X1
- bool "OMYlink OMY X1 support"
- select SOC_AR934X
- 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_ONION_OMEGA
- bool "ONION OMEGA support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_MR12
- bool "Meraki MR12 board support"
- select SOC_AR724X
- 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_MR16
- bool "Meraki MR16 board support"
- select SOC_AR71XX
- 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_MR18
- bool "Meraki MR18 board support"
- select SOC_QCA955X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_NFC
- select ATH79_DEV_WMAC
- select LEDS_NU801
-
-config ATH79_MACH_MR600
- bool "OpenMesh MR600 board 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_MZK_W04NU
- bool "Planex MZK-W04NU board support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_MZK_W300NH
- bool "Planex MZK-W300NH board support"
- select SOC_AR913X
- 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_RE355
- bool "TP-LINK RE355 board support"
- select SOC_QCA955X
- 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_RE450
- bool "TP-LINK RE450 board support"
- select SOC_QCA955X
- 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_RME_EG200
- bool "eTactica EG200 board supprt"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_RUT9XX
- bool "Teltonika RUT900 series support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select GPIO_PCA953X
-
-config ATH79_MACH_RW2458N
- bool "Redwave RW2458N board support"
- select SOC_AR724X
- 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_USB
-
-config ATH79_MACH_CAP324
- bool "PowerCloud Systems CAP324 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_CAP4200AG
- bool "Senao CAP4200AG 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_CR3000
- bool "PowerCloud Systems CR3000 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_CR5000
- bool "PowerCloud CR5000 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_MR1750
- bool "OpenMesh MR1750 board support"
- select SOC_QCA955X
- 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_MR900
- bool "OpenMesh MR900 board support"
- select SOC_QCA955X
- 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_EAP7660D
- bool "Senao EAP7660D support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_BSB
- bool "Smart Electronics Black Swift board"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ARCHER_C25_V1
- bool "TP-LINK Archer C25 v1 support"
- select SOC_QCA956X
- 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_ARCHER_C58_V1
- bool "TP-LINK Archer C58 v1 support"
- select SOC_QCA956X
- 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_ARCHER_C59_V1
- bool "TP-LINK Archer C59 v1 support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ARCHER_C59_V2
- bool "TP-LINK Archer C59 v2 support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ARCHER_C60_V1
- bool "TP-LINK Archer C60 v1 support"
- select SOC_QCA956X
- 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_ARCHER_C60_V2
- bool "TP-LINK Archer C60 v2 support"
- select SOC_QCA956X
- 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_ARCHER_C7
- bool "TP-LINK Archer C5/C7/TL-WDR4900 v2 board support"
- select SOC_QCA955X
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CPE505N
- bool "P&W CPE505N support"
- select SOC_QCA953X
- 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_CPE510
- bool "TP-LINK CPE510 support"
- select SOC_AR934X
- select SOC_QCA953X
- 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_CPE830
- bool "YunCore CPE830 support"
- select SOC_QCA953X
- 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_CPE870
- bool "YunCore CPE870 support"
- select SOC_AR934X
- 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_TL_MR11U
- bool "TP-LINK TL-MR11U/TL-MR3040 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_MR13U
- bool "TP-LINK TL-MR13U support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_MR3020
- bool "TP-LINK TL-MR3020 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_MR3X20
- bool "TP-LINK TL-MR3220/3420 support"
- select SOC_AR724X
- 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_USB
-
-config ATH79_MACH_TL_MR6400
- bool "TP-LINK TL-MR6400 support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WAX50RE
- bool "TP-LINK TL-WA750/850RE support"
- select SOC_AR934X
- 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_TL_WA701ND_V2
- bool "TP-LINK TL-WA701ND v2 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WA7210N_V2
- bool "TP-LINK TL-WA7210N v2 support"
- select SOC_AR724X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WA801ND_V3
- bool "TP-LINK TL-WA801ND v3 support"
- select SOC_QCA953X
- 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_TL_WA830RE_V2
- bool "TP-LINK TL-WA830RE v2 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WA850RE_V2
- bool "TP-LINK TL-WA850RE v2 support"
- select SOC_QCA953X
- 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_TL_WA855RE_V1
- bool "TP-LINK TL-WA855RE V1 support"
- select SOC_QCA953X
- 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_TL_WA901ND
- bool "TP-LINK TL-WA901ND/TL-WA7510N support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_TL_WA901ND_V2
- bool "TP-LINK TL-WA901ND v2 support"
- select SOC_AR913X
- 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_TL_WA901ND_V4
- bool "TP-LINK TL-WA901ND v4 support"
- select SOC_QCA956X
- 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_TL_WDR3320_V2
- bool "TP-LINK TL-WDR3320 v2 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WDR3500
- bool "TP-LINK TL-WDR3500 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WDR4300
- bool "TP-LINK TL-WDR3600/4300/4310 board 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WDR6500_V2
- bool "TP-LINK TL-WDR6500 v2 board support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR703N
- bool "TP-LINK TL-WR703N/TL-WR710N/TL-MR10U support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR720N_V3
- bool "TP-LINK TL-WR720N v3/v4 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR741ND
- bool "TP-LINK TL-WR741ND support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_TL_WR741ND_V4
- bool "TP-LINK TL-WR741ND v4/TL-MR3220 v2 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR802N_V1
- bool "TP-LINK TL-WR802N v1 support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_TL_WR802N_V2
- bool "TP-LINK TL-WR802N v2 support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_TL_WR810N
- bool "TP-LINK TL-WR810N support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR810N_V2
- bool "TP-LINK TL-WR810N v2 support"
- select SOC_QCA953X
- 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_TL_WR840N_V2
- bool "TP-LINK TL-WR840N v2/v3 support"
- select SOC_QCA953X
- 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_TL_WR841N_V1
- bool "TP-LINK TL-WR841N v1 support"
- select SOC_AR71XX
- select ATH79_DEV_DSA
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_TL_WR841N_V8
- bool "TP-LINK TL-WR841N/ND v8/TL-MR3420 v2 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR841N_V9
- bool "TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3/TL-WR740N/ND v6 support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR902AC_V1
- bool "TP-LINK TL-WR902AC v1 support"
- select SOC_QCA953X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR941ND
- bool "TP-LINK TL-WR941ND support"
- select SOC_AR913X
- select ATH79_DEV_DSA
- 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_TL_WR941ND_V6
- bool "TP-LINK TL-WR941ND v6 support"
- select SOC_QCA956X
- 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_TL_WR940N_V4
- bool "TP-LINK TL-WR940N v4 support"
- select SOC_QCA956X
- 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_TL_WR942N_V1
- bool "TP-LINK TL-WR942N v1 support"
- select SOC_QCA956X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_TL_WR1041N_V2
- bool "TP-LINK TL-WR1041N v2 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR1043N_V5
- bool "TP-LINK TL-WR1043N v5 support"
- select SOC_QCA956X
- 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_TL_WR1043ND
- bool "TP-LINK TL-WR1043ND support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR1043ND_V2
- bool "TP-LINK TL-WR1043ND v2 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR1043ND_V4
- bool "TP-LINK TL-WR1043ND v4 support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TL_WR2543N
- bool "TP-LINK TL-WR2543N/ND support"
- select SOC_AR724X
- 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_USB
-
-config ATH79_MACH_TS_D084
- bool "PISEN TS-D084 support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_TEW_632BRP
- bool "TRENDnet TEW-632BRP support"
- select SOC_AR913X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_TEW_673GRU
- bool "TRENDnet TEW-673GRU support"
- select SOC_AR71XX
- 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_USB
-
-config ATH79_MACH_TEW_712BR
- bool "TRENDnet TEW-712BR support"
- select SOC_AR933X
- 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_TEW_732BR
- bool "TRENDnet TEW-732BR support"
- select SOC_AR934X
- 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_TEW_823DRU
- bool "TRENDnet TEW-823DRU 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_UBNT
- bool "Ubiquiti AR71xx based boards support"
- select SOC_AR71XX
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_UBNT_UNIFIAC
- bool "Ubiquiti UniFi AC (LITE/LR/MESH/PRO/MESH-PRO) support"
- select SOC_QCA956X
- 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
- select ATH79_DEV_USB
-
-config ATH79_MACH_WEIO
- bool "WeIO board"
- select SOC_AR933X
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_MYNET_N600
- bool "WD My Net N600 board support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_MYNET_N750
- bool "WD My Net N750 board support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_MYNET_REXT
- bool "WD My Net Wi-Fi Range Extender board 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
- select ATH79_NVRAM
-
-config ATH79_MACH_Z1
- bool "Meraki Z1 board 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_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select LEDS_NU801
-
-config ATH79_MACH_ZBT_WE1526
- bool "Zbtlink ZBT-WE1526 board support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_ZCN_1523H
- bool "Zcomax ZCN-1523H support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_N5Q
- bool "ALFA Network N5Q support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_NBG460N
- bool "Zyxel NBG460N/550N/550NH board support"
- select SOC_AR913X
- 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_NBG6716
- bool "Zyxel NBG6616/NBG6716 board 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_USB
- select ATH79_DEV_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_CARAMBOLA2
- bool "8devices Carambola2 board"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_LAN_TURTLE
- bool "Hak5 LAN Turtle and Packet Squirrel support"
- select SOC_AR933X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
-
-config ATH79_MACH_LIMA
- bool "8devices Lima board"
- select SOC_QCA953X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_M25P80
- select ATH79_DEV_SPI
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
- select ATH79_DEV_ETH
-
-config ATH79_MACH_RAMBUTAN
- bool "8devices Rambutan board"
- select SOC_QCA955X
- select ATH79_DEV_AP9X_PCI if PCI
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_NFC
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E316N_V2
- bool "COMFAST CF-E316N v2 support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E320N_V2
- bool "COMFAST CF-E320N v2 support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E355AC
- bool "COMFAST CF-E355AC v1/v2 support"
- select SOC_QCA953X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E375AC
- bool "COMFAST CF-E375AC support"
- select SOC_QCA956X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E380AC_V1
- bool "COMFAST CF-E380AC v1 support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E380AC_V2
- bool "COMFAST CF-E380AC v2 support"
- select SOC_QCA955X
- 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_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E520N
- bool "COMFAST CF-E520N support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_CF_E530N
- bool "COMFAST CF-E530N support"
- select SOC_QCA953X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_BHU_BXU2000N2_A
- bool "BHU BXU2000n-2 rev. A support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_USB
- select ATH79_DEV_WMAC
-
-config ATH79_MACH_QIHOO_C301
- bool "Qihoo 360 C301 board support"
- select SOC_AR934X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_M25P80
- select ATH79_DEV_WMAC
- select ATH79_DEV_USB
- select ATH79_NVRAM
-
-config ATH79_MACH_DAP_1330_A1
- bool "D-Link DAP-1330 rev. A1 support"
- select SOC_QCA953X
- 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_DAP_2695_A1
- bool "D-Link DAP-2695 rev. A1 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_WMAC
- select ATH79_NVRAM
-
-config ATH79_MACH_TL_WPA8630
- bool "TP-Link TL-WPA8630 support"
- select SOC_QCA956X
- 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_FRITZ300E
- bool "AVM FRITZ!WLAN Repeater 300E support"
- select SOC_AR724X
- 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
-
-config ATH79_MACH_FRITZ4020
- bool "AVM FRITZ!Box 4020 support"
- select SOC_QCA956X
- select ATH79_DEV_ETH
- select ATH79_DEV_GPIO_BUTTONS
- select ATH79_DEV_LEDS_GPIO
- select ATH79_DEV_USB
- select ATH79_DEV_M25P80
-
-config ATH79_MACH_FRITZ450E
- bool "AVM FRITZ!WLAN Repeater 450E 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_WMAC
+++ /dev/null
-#
-# Makefile for the Atheros AR71XX/AR724X/AR913X specific parts of the kernel
-#
-# Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org>
-# Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
-#
-# 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.
-
-obj-y := prom.o setup.o irq.o common.o clock.o gpio.o
-
-obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-obj-$(CONFIG_PCI) += pci.o
-
-#
-# Devices
-#
-obj-y += dev-common.o
-obj-$(CONFIG_ATH79_DEV_AP9X_PCI) += dev-ap9x-pci.o
-obj-$(CONFIG_ATH79_DEV_DSA) += dev-dsa.o
-obj-$(CONFIG_ATH79_DEV_ETH) += dev-eth.o
-obj-$(CONFIG_ATH79_DEV_GPIO_BUTTONS) += dev-gpio-buttons.o
-obj-$(CONFIG_ATH79_DEV_LEDS_GPIO) += dev-leds-gpio.o
-obj-$(CONFIG_ATH79_DEV_M25P80) += dev-m25p80.o
-obj-$(CONFIG_ATH79_DEV_NFC) += dev-nfc.o
-obj-$(CONFIG_ATH79_DEV_SPI) += dev-spi.o
-obj-$(CONFIG_ATH79_DEV_USB) += dev-usb.o
-obj-$(CONFIG_ATH79_DEV_WMAC) += dev-wmac.o
-
-#
-# Miscellaneous objects
-#
-obj-$(CONFIG_ATH79_NVRAM) += nvram.o
-obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += pci-ath9k-fixup.o
-obj-$(CONFIG_ATH79_ROUTERBOOT) += routerboot.o
-
-#
-# Machines
-#
-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_AP96) += mach-alfa-ap96.o
-obj-$(CONFIG_ATH79_MACH_ALFA_NX) += mach-alfa-nx.o
-obj-$(CONFIG_ATH79_MACH_ALL0258N) += mach-all0258n.o
-obj-$(CONFIG_ATH79_MACH_ALL0315N) += mach-all0315n.o
-obj-$(CONFIG_ATH79_MACH_ANTMINER_S1) += mach-antminer-s1.o
-obj-$(CONFIG_ATH79_MACH_ANTMINER_S3) += mach-antminer-s3.o
-obj-$(CONFIG_ATH79_MACH_ANTROUTER_R1) += mach-antrouter-r1.o
-obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o
-obj-$(CONFIG_ATH79_MACH_AP121F) += mach-ap121f.o
-obj-$(CONFIG_ATH79_MACH_AP132) += mach-ap132.o
-obj-$(CONFIG_ATH79_MACH_AP136) += mach-ap136.o
-obj-$(CONFIG_ATH79_MACH_AP143) += mach-ap143.o
-obj-$(CONFIG_ATH79_MACH_AP147) += mach-ap147.o
-obj-$(CONFIG_ATH79_MACH_AP152) += mach-ap152.o
-obj-$(CONFIG_ATH79_MACH_AP531B0) += mach-ap531b0.o
-obj-$(CONFIG_ATH79_MACH_AP90Q) += mach-ap90q.o
-obj-$(CONFIG_ATH79_MACH_AP91_5G) += mach-ap91-5g.o
-obj-$(CONFIG_ATH79_MACH_AP96) += mach-ap96.o
-obj-$(CONFIG_ATH79_MACH_ARCHER_C25_V1) += mach-archer-c25-v1.o
-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_C60_V1) += mach-archer-c60-v1.o
-obj-$(CONFIG_ATH79_MACH_ARCHER_C60_V2) += mach-archer-c60-v1.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_ARCHER_C7) += mach-archer-c7-v5.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_BHR_4GRV2) += mach-bhr-4grv2.o
-obj-$(CONFIG_ATH79_MACH_BHU_BXU2000N2_A) += mach-bhu-bxu2000n2-a.o
-obj-$(CONFIG_ATH79_MACH_BSB) += mach-bsb.o
-obj-$(CONFIG_ATH79_MACH_C55) += mach-c55.o
-obj-$(CONFIG_ATH79_MACH_C60) += mach-c60.o
-obj-$(CONFIG_ATH79_MACH_CAP324) += mach-cap324.o
-obj-$(CONFIG_ATH79_MACH_CAP4200AG) += mach-cap4200ag.o
-obj-$(CONFIG_ATH79_MACH_CARAMBOLA2) += mach-carambola2.o
-obj-$(CONFIG_ATH79_MACH_CF_E316N_V2) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E320N_V2) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E355AC) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E375AC) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E380AC_V1) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E380AC_V2) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E520N) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CF_E530N) += mach-cf-e316n-v2.o
-obj-$(CONFIG_ATH79_MACH_CPE505N) += mach-r602n.o
-obj-$(CONFIG_ATH79_MACH_CPE510) += mach-cpe510.o
-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_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
-obj-$(CONFIG_ATH79_MACH_DGL_5500_A1) += mach-dgl-5500-a1.o
-obj-$(CONFIG_ATH79_MACH_DHP_1565_A1) += mach-dhp-1565-a1.o
-obj-$(CONFIG_ATH79_MACH_DIR_505_A1) += mach-dir-505-a1.o
-obj-$(CONFIG_ATH79_MACH_DIR_600_A1) += mach-dir-600-a1.o
-obj-$(CONFIG_ATH79_MACH_DIR_615_C1) += mach-dir-615-c1.o
-obj-$(CONFIG_ATH79_MACH_DIR_615_I1) += mach-dir-615-i1.o
-obj-$(CONFIG_ATH79_MACH_DIR_825_B1) += mach-dir-825-b1.o
-obj-$(CONFIG_ATH79_MACH_DIR_825_C1) += mach-dir-825-c1.o
-obj-$(CONFIG_ATH79_MACH_DIR_869_A1) += mach-dir-869-a1.o
-obj-$(CONFIG_ATH79_MACH_DLAN_HOTSPOT) += mach-dlan-hotspot.o
-obj-$(CONFIG_ATH79_MACH_DLAN_PRO_1200_AC) += mach-dlan-pro-1200-ac.o
-obj-$(CONFIG_ATH79_MACH_DLAN_PRO_500_WP) += mach-dlan-pro-500-wp.o
-obj-$(CONFIG_ATH79_MACH_DOMYWIFI_DW33D) += mach-domywifi-dw33d.o
-obj-$(CONFIG_ATH79_MACH_DR342) += mach-dr344.o
-obj-$(CONFIG_ATH79_MACH_DR344) += mach-dr344.o
-obj-$(CONFIG_ATH79_MACH_DR531) += mach-dr531.o
-obj-$(CONFIG_ATH79_MACH_DRAGINO2) += mach-dragino2.o
-obj-$(CONFIG_ATH79_MACH_E1700AC_V2) += mach-e1700ac-v2.o
-obj-$(CONFIG_ATH79_MACH_E558_V2) += mach-e558-v2.o
-obj-$(CONFIG_ATH79_MACH_E600G_V2) += mach-e600g-v2.o
-obj-$(CONFIG_ATH79_MACH_E750A_V4) += mach-e750a-v4.o
-obj-$(CONFIG_ATH79_MACH_E750G_V8) += mach-e750g-v8.o
-obj-$(CONFIG_ATH79_MACH_EAP120) += mach-eap120.o
-obj-$(CONFIG_ATH79_MACH_EAP300V2) += mach-eap300v2.o
-obj-$(CONFIG_ATH79_MACH_EAP7660D) += mach-eap7660d.o
-obj-$(CONFIG_ATH79_MACH_EL_M150) += mach-el-m150.o
-obj-$(CONFIG_ATH79_MACH_EL_MINI) += mach-el-mini.o
-obj-$(CONFIG_ATH79_MACH_ENS202EXT) += mach-ens202ext.o
-obj-$(CONFIG_ATH79_MACH_EPG5000) += mach-epg5000.o
-obj-$(CONFIG_ATH79_MACH_ESR1750) += mach-esr1750.o
-obj-$(CONFIG_ATH79_MACH_ESR900) += mach-esr900.o
-obj-$(CONFIG_ATH79_MACH_EW_BALIN) += mach-ew-balin.o
-obj-$(CONFIG_ATH79_MACH_EW_DORIN) += mach-ew-dorin.o
-obj-$(CONFIG_ATH79_MACH_F9K1115V2) += mach-f9k1115v2.o
-obj-$(CONFIG_ATH79_MACH_FRITZ300E) += mach-fritz300e.o
-obj-$(CONFIG_ATH79_MACH_FRITZ4020) += mach-fritz4020.o
-obj-$(CONFIG_ATH79_MACH_FRITZ450E) += mach-fritz450e.o
-obj-$(CONFIG_ATH79_MACH_GL_AR150) += mach-gl-ar150.o
-obj-$(CONFIG_ATH79_MACH_GL_AR300) += mach-gl-ar300.o
-obj-$(CONFIG_ATH79_MACH_GL_AR300M) += mach-gl-ar300m.o
-obj-$(CONFIG_ATH79_MACH_GL_AR750) += mach-gl-ar750.o
-obj-$(CONFIG_ATH79_MACH_GL_AR750S) += mach-gl-ar750s.o
-obj-$(CONFIG_ATH79_MACH_GL_DOMINO) += mach-gl-domino.o
-obj-$(CONFIG_ATH79_MACH_GL_INET) += mach-gl-inet.o
-obj-$(CONFIG_ATH79_MACH_GL_MIFI) += mach-gl-mifi.o
-obj-$(CONFIG_ATH79_MACH_GL_USB150) += mach-gl-usb150.o
-obj-$(CONFIG_ATH79_MACH_GS_MINIBOX_V32) += mach-gs-minibox-v32.o
-obj-$(CONFIG_ATH79_MACH_GS_OOLITE_V1) += mach-gs-oolite-v1.o
-obj-$(CONFIG_ATH79_MACH_GS_OOLITE_V5_2) += mach-gs-oolite-v5-2.o
-obj-$(CONFIG_ATH79_MACH_HIVEAP_121) += mach-hiveap-121.o
-obj-$(CONFIG_ATH79_MACH_HIWIFI_HC6361) += mach-hiwifi-hc6361.o
-obj-$(CONFIG_ATH79_MACH_HORNET_UB) += mach-hornet-ub.o
-obj-$(CONFIG_ATH79_MACH_JA76PF) += mach-ja76pf.o
-obj-$(CONFIG_ATH79_MACH_JWAP003) += mach-jwap003.o
-obj-$(CONFIG_ATH79_MACH_JWAP230) += mach-jwap230.o
-obj-$(CONFIG_ATH79_MACH_KOALA) += mach-koala.o
-obj-$(CONFIG_ATH79_MACH_LAN_TURTLE) += mach-lan-turtle.o
-obj-$(CONFIG_ATH79_MACH_LIMA) += mach-lima.o
-obj-$(CONFIG_ATH79_MACH_MC_MAC1200R) += mach-mc-mac1200r.o
-obj-$(CONFIG_ATH79_MACH_MR12) += mach-mr12.o
-obj-$(CONFIG_ATH79_MACH_MR16) += mach-mr16.o
-obj-$(CONFIG_ATH79_MACH_MR1750) += mach-mr1750.o
-obj-$(CONFIG_ATH79_MACH_MR18) += mach-mr18.o
-obj-$(CONFIG_ATH79_MACH_MR600) += mach-mr600.o
-obj-$(CONFIG_ATH79_MACH_MR900) += mach-mr900.o
-obj-$(CONFIG_ATH79_MACH_MYNET_N600) += mach-mynet-n600.o
-obj-$(CONFIG_ATH79_MACH_MYNET_N750) += mach-mynet-n750.o
-obj-$(CONFIG_ATH79_MACH_MYNET_REXT) += mach-mynet-rext.o
-obj-$(CONFIG_ATH79_MACH_MZK_W04NU) += mach-mzk-w04nu.o
-obj-$(CONFIG_ATH79_MACH_MZK_W300NH) += mach-mzk-w300nh.o
-obj-$(CONFIG_ATH79_MACH_N5Q) += mach-n5q.o
-obj-$(CONFIG_ATH79_MACH_NBG460N) += mach-nbg460n.o
-obj-$(CONFIG_ATH79_MACH_NBG6716) += mach-nbg6716.o
-obj-$(CONFIG_ATH79_MACH_RAMBUTAN) += mach-rambutan.o
-obj-$(CONFIG_ATH79_MACH_OM2P) += mach-om2p.o
-obj-$(CONFIG_ATH79_MACH_OM5P) += mach-om5p.o
-obj-$(CONFIG_ATH79_MACH_OM5P_AC) += mach-om5pac.o
-obj-$(CONFIG_ATH79_MACH_OM5P_ACv2) += mach-om5pacv2.o
-obj-$(CONFIG_ATH79_MACH_OMY_G1) += mach-omy-g1.o
-obj-$(CONFIG_ATH79_MACH_OMY_X1) += mach-omy-x1.o
-obj-$(CONFIG_ATH79_MACH_ONION_OMEGA) += mach-onion-omega.o
-obj-$(CONFIG_ATH79_MACH_PB42) += mach-pb42.o
-obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o
-obj-$(CONFIG_ATH79_MACH_PQI_AIR_PEN) += mach-pqi-air-pen.o
-obj-$(CONFIG_ATH79_MACH_QIHOO_C301) += mach-qihoo-c301.o
-obj-$(CONFIG_ATH79_MACH_R36A) += mach-r36a.o
-obj-$(CONFIG_ATH79_MACH_R602N) += mach-r602n.o
-obj-$(CONFIG_ATH79_MACH_R6100) += mach-r6100.o
-obj-$(CONFIG_ATH79_MACH_RB2011) += mach-rb2011.o
-obj-$(CONFIG_ATH79_MACH_RB4XX) += mach-rb4xx.o
-obj-$(CONFIG_ATH79_MACH_RB750) += mach-rb750.o
-obj-$(CONFIG_ATH79_MACH_RB91X) += mach-rb91x.o
-obj-$(CONFIG_ATH79_MACH_RB922) += mach-rb922.o
-obj-$(CONFIG_ATH79_MACH_RB941) += mach-rb941.o
-obj-$(CONFIG_ATH79_MACH_RB95X) += mach-rb95x.o
-obj-$(CONFIG_ATH79_MACH_RBSPI) += mach-rbspi.o
-obj-$(CONFIG_ATH79_MACH_RBSXTLITE) += mach-rbsxtlite.o
-obj-$(CONFIG_ATH79_MACH_RE355) += mach-re450.o
-obj-$(CONFIG_ATH79_MACH_RE450) += mach-re450.o
-obj-$(CONFIG_ATH79_MACH_RME_EG200) += mach-rme-eg200.o
-obj-$(CONFIG_ATH79_MACH_RUT9XX) += mach-rut9xx.o
-obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o
-obj-$(CONFIG_ATH79_MACH_SC1750) += mach-sc1750.o
-obj-$(CONFIG_ATH79_MACH_SC300M) += mach-sc300m.o
-obj-$(CONFIG_ATH79_MACH_SC450) += mach-sc450.o
-obj-$(CONFIG_ATH79_MACH_SMART_300) += mach-smart-300.o
-obj-$(CONFIG_ATH79_MACH_SOM9331) += mach-som9331.o
-obj-$(CONFIG_ATH79_MACH_SR3200) += mach-sr3200.o
-obj-$(CONFIG_ATH79_MACH_T830) += mach-t830.o
-obj-$(CONFIG_ATH79_MACH_TELLSTICK_ZNET_LITE) += mach-tellstick-znet-lite.o
-obj-$(CONFIG_ATH79_MACH_TEW_632BRP) += mach-tew-632brp.o
-obj-$(CONFIG_ATH79_MACH_TEW_673GRU) += mach-tew-673gru.o
-obj-$(CONFIG_ATH79_MACH_TEW_712BR) += mach-tew-712br.o
-obj-$(CONFIG_ATH79_MACH_TEW_732BR) += mach-tew-732br.o
-obj-$(CONFIG_ATH79_MACH_TEW_823DRU) += mach-tew-823dru.o
-obj-$(CONFIG_ATH79_MACH_TL_MR11U) += mach-tl-mr11u.o
-obj-$(CONFIG_ATH79_MACH_TL_MR13U) += mach-tl-mr13u.o
-obj-$(CONFIG_ATH79_MACH_TL_MR3020) += mach-tl-mr3020.o
-obj-$(CONFIG_ATH79_MACH_TL_MR3X20) += mach-tl-mr3x20.o
-obj-$(CONFIG_ATH79_MACH_TL_MR6400) += mach-tl-mr6400.o
-obj-$(CONFIG_ATH79_MACH_TL_WA701ND_V2) += mach-tl-wa701nd-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WA7210N_V2) += mach-tl-wa7210n-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WA801ND_V3) += mach-tl-wa801nd-v3.o
-obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2) += mach-tl-wa830re-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WA850RE_V2) += mach-tl-wax50re.o
-obj-$(CONFIG_ATH79_MACH_TL_WA855RE_V1) += mach-tl-wax50re.o
-obj-$(CONFIG_ATH79_MACH_TL_WA901ND) += mach-tl-wa901nd.o
-obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V4) += mach-tl-wa901nd-v4.o
-obj-$(CONFIG_ATH79_MACH_TL_WAX50RE) += mach-tl-wax50re.o
-obj-$(CONFIG_ATH79_MACH_TL_WDR3320_V2) += mach-tl-wdr3320-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WDR3500) += mach-tl-wdr3500.o
-obj-$(CONFIG_ATH79_MACH_TL_WDR4300) += mach-tl-wdr4300.o
-obj-$(CONFIG_ATH79_MACH_TL_WDR6500_V2) += mach-tl-wdr6500-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WPA8630) += mach-tl-wpa8630.o
-obj-$(CONFIG_ATH79_MACH_TL_WR1041N_V2) += mach-tl-wr1041n-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WR1043ND) += mach-tl-wr1043nd.o
-obj-$(CONFIG_ATH79_MACH_TL_WR1043ND_V2) += mach-tl-wr1043nd-v2.o
-obj-$(CONFIG_ATH79_MACH_TL_WR1043ND_V4) += mach-tl-wr1043nd-v4.o
-obj-$(CONFIG_ATH79_MACH_TL_WR2543N) += mach-tl-wr2543n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR703N) += mach-tl-wr703n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR720N_V3) += mach-tl-wr720n-v3.o
-obj-$(CONFIG_ATH79_MACH_TL_WR741ND) += mach-tl-wr741nd.o
-obj-$(CONFIG_ATH79_MACH_TL_WR741ND_V4) += mach-tl-wr741nd-v4.o
-obj-$(CONFIG_ATH79_MACH_TL_WR802N_V1) += mach-tl-wr802n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR802N_V2) += mach-tl-wr802n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR810N) += mach-tl-wr810n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR810N_V2) += mach-tl-wr810n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR840N_V2) += mach-tl-wr841n-v9.o
-obj-$(CONFIG_ATH79_MACH_TL_WR841N_V1) += mach-tl-wr841n.o
-obj-$(CONFIG_ATH79_MACH_TL_WR841N_V8) += mach-tl-wr841n-v8.o
-obj-$(CONFIG_ATH79_MACH_TL_WR841N_V9) += mach-tl-wr841n-v9.o
-obj-$(CONFIG_ATH79_MACH_TL_WR902AC_V1) += mach-tl-wr902ac-v1.o
-obj-$(CONFIG_ATH79_MACH_TL_WR941ND) += mach-tl-wr941nd.o
-obj-$(CONFIG_ATH79_MACH_TL_WR941ND_V6) += mach-tl-wr941nd-v6.o
-obj-$(CONFIG_ATH79_MACH_TL_WR940N_V4) += mach-tl-wr940n-v4.o
-obj-$(CONFIG_ATH79_MACH_TL_WR942N_V1) += mach-tl-wr942n-v1.o
-obj-$(CONFIG_ATH79_MACH_TS_D084) += mach-ts-d084.o
-obj-$(CONFIG_ATH79_MACH_TUBE2H) += mach-tube2h.o
-obj-$(CONFIG_ATH79_MACH_UBNT) += mach-ubnt.o
-obj-$(CONFIG_ATH79_MACH_UBNT_UNIFIAC) += mach-ubnt-unifiac.o
-obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o
-obj-$(CONFIG_ATH79_MACH_WAM250) += mach-wam250.o
-obj-$(CONFIG_ATH79_MACH_WEIO) += mach-weio.o
-obj-$(CONFIG_ATH79_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o
-obj-$(CONFIG_ATH79_MACH_WIFI_PINEAPPLE_NANO) += mach-wifi-pineapple-nano.o
-obj-$(CONFIG_ATH79_MACH_WLAE_AG300N) += mach-wlae-ag300n.o
-obj-$(CONFIG_ATH79_MACH_WLR8100) += mach-wlr8100.o
-obj-$(CONFIG_ATH79_MACH_WNDAP360) += mach-wndap360.o
-obj-$(CONFIG_ATH79_MACH_WNDR3700) += mach-wndr3700.o
-obj-$(CONFIG_ATH79_MACH_WNDR4300) += mach-wndr4300.o
-obj-$(CONFIG_ATH79_MACH_WNR2000) += mach-wnr2000.o
-obj-$(CONFIG_ATH79_MACH_WNR2000_V3) += mach-wnr2000-v3.o
-obj-$(CONFIG_ATH79_MACH_WNR2000_V4) += mach-wnr2000-v4.o
-obj-$(CONFIG_ATH79_MACH_WNR2200) += mach-wnr2200.o
-obj-$(CONFIG_ATH79_MACH_WP543) += mach-wp543.o
-obj-$(CONFIG_ATH79_MACH_WPE72) += mach-wpe72.o
-obj-$(CONFIG_ATH79_MACH_WPJ342) += mach-wpj342.o
-obj-$(CONFIG_ATH79_MACH_WPJ344) += mach-wpj344.o
-obj-$(CONFIG_ATH79_MACH_WPJ531) += mach-wpj531.o
-obj-$(CONFIG_ATH79_MACH_WPJ558) += mach-wpj558.o
-obj-$(CONFIG_ATH79_MACH_WPJ563) += mach-wpj563.o
-obj-$(CONFIG_ATH79_MACH_WRT160NL) += mach-wrt160nl.o
-obj-$(CONFIG_ATH79_MACH_WRT400N) += mach-wrt400n.o
-obj-$(CONFIG_ATH79_MACH_WRTNODE2Q) += mach-wrtnode2q.o
-obj-$(CONFIG_ATH79_MACH_WZR_450HP2) += mach-wzr-450hp2.o
-obj-$(CONFIG_ATH79_MACH_WZR_HP_AG300H) += mach-wzr-hp-ag300h.o
-obj-$(CONFIG_ATH79_MACH_WZR_HP_G300NH) += mach-wzr-hp-g300nh.o
-obj-$(CONFIG_ATH79_MACH_WZR_HP_G300NH2) += mach-wzr-hp-g300nh2.o
-obj-$(CONFIG_ATH79_MACH_WZR_HP_G450H) += mach-wzr-hp-g450h.o
-obj-$(CONFIG_ATH79_MACH_XD3200) += mach-sr3200.o
-obj-$(CONFIG_ATH79_MACH_Z1) += mach-z1.o
-obj-$(CONFIG_ATH79_MACH_ZBT_WE1526) += mach-zbt-we1526.o
-obj-$(CONFIG_ATH79_MACH_ZCN_1523H) += mach-zcn-1523h.o
+++ /dev/null
-/*
- * Atheros AP9X reference board PCI initialization
- *
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/ath9k_platform.h>
-#include <linux/delay.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-ap9x-pci.h"
-#include "pci-ath9k-fixup.h"
-#include "pci.h"
-
-static struct ath9k_platform_data ap9x_wmac0_data = {
- .led_pin = -1,
-};
-static struct ath9k_platform_data ap9x_wmac1_data = {
- .led_pin = -1,
-};
-static char ap9x_wmac0_mac[6];
-static char ap9x_wmac1_mac[6];
-
-__init void ap9x_pci_setup_wmac_led_pin(unsigned wmac, int pin)
-{
- switch (wmac) {
- case 0:
- ap9x_wmac0_data.led_pin = pin;
- break;
- case 1:
- ap9x_wmac1_data.led_pin = pin;
- break;
- }
-}
-
-__init struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac)
-{
- switch (wmac) {
- case 0:
- return &ap9x_wmac0_data;
-
- case 1:
- return &ap9x_wmac1_data;
- }
-
- return NULL;
-}
-
-__init void ap9x_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val)
-{
- switch (wmac) {
- case 0:
- ap9x_wmac0_data.gpio_mask = mask;
- ap9x_wmac0_data.gpio_val = val;
- break;
- case 1:
- ap9x_wmac1_data.gpio_mask = mask;
- ap9x_wmac1_data.gpio_val = val;
- break;
- }
-}
-
-__init void ap9x_pci_setup_wmac_leds(unsigned wmac, struct gpio_led *leds,
- int num_leds)
-{
- switch (wmac) {
- case 0:
- ap9x_wmac0_data.leds = leds;
- ap9x_wmac0_data.num_leds = num_leds;
- break;
- case 1:
- ap9x_wmac1_data.leds = leds;
- ap9x_wmac1_data.num_leds = num_leds;
- break;
- }
-}
-
-__init void ap9x_pci_setup_wmac_btns(unsigned wmac,
- struct gpio_keys_button *btns,
- unsigned num_btns, unsigned poll_interval)
-{
- struct ath9k_platform_data *ap9x_wmac_data;
-
- if (!(ap9x_wmac_data = ap9x_pci_get_wmac_data(wmac)))
- return;
-
- ap9x_wmac_data->btns = btns;
- ap9x_wmac_data->num_btns = num_btns;
- ap9x_wmac_data->btn_poll_interval = poll_interval;
-}
-
-static int ap91_pci_plat_dev_init(struct pci_dev *dev)
-{
- switch (PCI_SLOT(dev->devfn)) {
- case 0:
- dev->dev.platform_data = &ap9x_wmac0_data;
- break;
- }
-
- return 0;
-}
-
-__init void ap91_pci_init(u8 *cal_data, u8 *mac_addr)
-{
- if (cal_data)
- memcpy(ap9x_wmac0_data.eeprom_data, cal_data,
- sizeof(ap9x_wmac0_data.eeprom_data));
-
- if (mac_addr) {
- memcpy(ap9x_wmac0_mac, mac_addr, sizeof(ap9x_wmac0_mac));
- ap9x_wmac0_data.macaddr = ap9x_wmac0_mac;
- }
-
- ath79_pci_set_plat_dev_init(ap91_pci_plat_dev_init);
- ath79_register_pci();
-
- pci_enable_ath9k_fixup(0, ap9x_wmac0_data.eeprom_data);
-}
-
-__init void ap91_pci_init_simple(void)
-{
- ap91_pci_init(NULL, NULL);
- ap9x_wmac0_data.eeprom_name = "pci_wmac0.eeprom";
-}
-
-static int ap94_pci_plat_dev_init(struct pci_dev *dev)
-{
- switch (PCI_SLOT(dev->devfn)) {
- case 17:
- dev->dev.platform_data = &ap9x_wmac0_data;
- break;
-
- case 18:
- dev->dev.platform_data = &ap9x_wmac1_data;
- break;
- }
-
- return 0;
-}
-
-__init void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,
- u8 *cal_data1, u8 *mac_addr1)
-{
- if (cal_data0)
- memcpy(ap9x_wmac0_data.eeprom_data, cal_data0,
- sizeof(ap9x_wmac0_data.eeprom_data));
-
- if (cal_data1)
- memcpy(ap9x_wmac1_data.eeprom_data, cal_data1,
- sizeof(ap9x_wmac1_data.eeprom_data));
-
- if (mac_addr0) {
- memcpy(ap9x_wmac0_mac, mac_addr0, sizeof(ap9x_wmac0_mac));
- ap9x_wmac0_data.macaddr = ap9x_wmac0_mac;
- }
-
- if (mac_addr1) {
- memcpy(ap9x_wmac1_mac, mac_addr1, sizeof(ap9x_wmac1_mac));
- ap9x_wmac1_data.macaddr = ap9x_wmac1_mac;
- }
-
- ath79_pci_set_plat_dev_init(ap94_pci_plat_dev_init);
- ath79_register_pci();
-
- pci_enable_ath9k_fixup(17, ap9x_wmac0_data.eeprom_data);
- pci_enable_ath9k_fixup(18, ap9x_wmac1_data.eeprom_data);
-}
+++ /dev/null
-/*
- * Atheros AP9X reference board PCI initialization
- *
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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.
- */
-
-#ifndef _ATH79_DEV_AP9X_PCI_H
-#define _ATH79_DEV_AP9X_PCI_H
-
-struct gpio_led;
-struct gpio_keys_button;
-struct ath9k_platform_data;
-
-#if defined(CONFIG_ATH79_DEV_AP9X_PCI)
-void ap9x_pci_setup_wmac_led_pin(unsigned wmac, int pin);
-void ap9x_pci_setup_wmac_gpio(unsigned wmac, u32 mask, u32 val);
-void ap9x_pci_setup_wmac_leds(unsigned wmac, struct gpio_led *leds,
- int num_leds);
-void ap9x_pci_setup_wmac_btns(unsigned wmac, struct gpio_keys_button *btns,
- unsigned num_btns, unsigned poll_interval);
-struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac);
-
-void ap91_pci_init(u8 *cal_data, u8 *mac_addr);
-void ap91_pci_init_simple(void);
-void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,
- u8 *cal_data1, u8 *mac_addr1);
-
-#else
-static inline void ap9x_pci_setup_wmac_led_pin(unsigned wmac, int pin) {}
-static inline void ap9x_pci_setup_wmac_gpio(unsigned wmac,
- u32 mask, u32 val) {}
-static inline void ap9x_pci_setup_wmac_leds(unsigned wmac,
- struct gpio_led *leds,
- int num_leds) {}
-static inline void ap9x_pci_setup_wmac_btns(unsigned wmac,
- struct gpio_keys_button *btns,
- unsigned num_btns,
- unsigned poll_interval) {}
-static inline struct ath9k_platform_data *ap9x_pci_get_wmac_data(unsigned wmac)
-{
- return NULL;
-}
-
-static inline void ap91_pci_init(u8 *cal_data, u8 *mac_addr) {}
-static inline void ap91_pci_init_simple(void) {}
-static inline void ap94_pci_init(u8 *cal_data0, u8 *mac_addr0,
- u8 *cal_data1, u8 *mac_addr1) {}
-#endif
-
-#endif /* _ATH79_DEV_AP9X_PCI_H */
-
+++ /dev/null
-/*
- * Atheros AR71xx DSA switch device support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/init.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-dsa.h"
-
-static struct platform_device ar71xx_dsa_switch_device = {
- .name = "dsa",
- .id = 0,
-};
-
-void __init ath79_register_dsa(struct device *netdev,
- struct device *miidev,
- struct dsa_platform_data *d)
-{
- int i;
-
- d->netdev = netdev;
- for (i = 0; i < d->nr_chips; i++)
- d->chip[i].host_dev = miidev;
-
- ar71xx_dsa_switch_device.dev.platform_data = d;
- platform_device_register(&ar71xx_dsa_switch_device);
-}
+++ /dev/null
-/*
- * Atheros AR71xx DSA switch device support
- *
- * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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.
- */
-
-#ifndef _ATH79_DEV_DSA_H
-#define _ATH79_DEV_DSA_H
-
-#include <net/dsa.h>
-
-void ath79_register_dsa(struct device *netdev,
- struct device *miidev,
- struct dsa_platform_data *d);
-
-#endif /* _ATH79_DEV_DSA_H */
+++ /dev/null
-/*
- * Atheros AR71xx SoC platform devices
- *
- * Copyright (C) 2010-2011 Jaiganesh Narayanan <jnarayanan@atheros.com>
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * Parts of this file are based on Atheros 2.6.15 BSP
- * Parts of this file are based on Atheros 2.6.31 BSP
- *
- * 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 <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/etherdevice.h>
-#include <linux/platform_device.h>
-#include <linux/serial_8250.h>
-#include <linux/clk.h>
-#include <linux/sizes.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/irq.h>
-
-#include "common.h"
-#include "dev-eth.h"
-
-unsigned char ath79_mac_base[ETH_ALEN] __initdata;
-
-static struct resource ath79_mdio0_resources[] = {
- {
- .name = "mdio_base",
- .flags = IORESOURCE_MEM,
- .start = AR71XX_GE0_BASE,
- .end = AR71XX_GE0_BASE + 0x200 - 1,
- }
-};
-
-struct ag71xx_mdio_platform_data ath79_mdio0_data;
-
-struct platform_device ath79_mdio0_device = {
- .name = "ag71xx-mdio",
- .id = 0,
- .resource = ath79_mdio0_resources,
- .num_resources = ARRAY_SIZE(ath79_mdio0_resources),
- .dev = {
- .platform_data = &ath79_mdio0_data,
- },
-};
-
-static struct resource ath79_mdio1_resources[] = {
- {
- .name = "mdio_base",
- .flags = IORESOURCE_MEM,
- .start = AR71XX_GE1_BASE,
- .end = AR71XX_GE1_BASE + 0x200 - 1,
- }
-};
-
-struct ag71xx_mdio_platform_data ath79_mdio1_data;
-
-struct platform_device ath79_mdio1_device = {
- .name = "ag71xx-mdio",
- .id = 1,
- .resource = ath79_mdio1_resources,
- .num_resources = ARRAY_SIZE(ath79_mdio1_resources),
- .dev = {
- .platform_data = &ath79_mdio1_data,
- },
-};
-
-static void ath79_set_pll(u32 cfg_reg, u32 pll_reg, u32 pll_val, u32 shift)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
-
- t = __raw_readl(base + cfg_reg);
- t &= ~(3 << shift);
- t |= (2 << shift);
- __raw_writel(t, base + cfg_reg);
- udelay(100);
-
- __raw_writel(pll_val, base + pll_reg);
-
- t |= (3 << shift);
- __raw_writel(t, base + cfg_reg);
- udelay(100);
-
- t &= ~(3 << shift);
- __raw_writel(t, base + cfg_reg);
- udelay(100);
-
- printk(KERN_DEBUG "ar71xx: pll_reg %#x: %#x\n",
- (unsigned int)(base + pll_reg), __raw_readl(base + pll_reg));
-
- iounmap(base);
-}
-
-static void __init ath79_mii_ctrl_set_if(unsigned int reg,
- unsigned int mii_if)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(AR71XX_MII_BASE, AR71XX_MII_SIZE);
-
- t = __raw_readl(base + reg);
- t &= ~(AR71XX_MII_CTRL_IF_MASK);
- t |= (mii_if & AR71XX_MII_CTRL_IF_MASK);
- __raw_writel(t, base + reg);
-
- iounmap(base);
-}
-
-static void ath79_mii_ctrl_set_speed(unsigned int reg, unsigned int speed)
-{
- void __iomem *base;
- unsigned int mii_speed;
- u32 t;
-
- switch (speed) {
- case SPEED_10:
- mii_speed = AR71XX_MII_CTRL_SPEED_10;
- break;
- case SPEED_100:
- mii_speed = AR71XX_MII_CTRL_SPEED_100;
- break;
- case SPEED_1000:
- mii_speed = AR71XX_MII_CTRL_SPEED_1000;
- break;
- default:
- BUG();
- }
-
- base = ioremap(AR71XX_MII_BASE, AR71XX_MII_SIZE);
-
- t = __raw_readl(base + reg);
- t &= ~(AR71XX_MII_CTRL_SPEED_MASK << AR71XX_MII_CTRL_SPEED_SHIFT);
- t |= mii_speed << AR71XX_MII_CTRL_SPEED_SHIFT;
- __raw_writel(t, base + reg);
-
- iounmap(base);
-}
-
-static unsigned long ar934x_get_mdio_ref_clock(void)
-{
- void __iomem *base;
- unsigned long ret;
- u32 t;
-
- base = ioremap(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
-
- ret = 0;
- t = __raw_readl(base + AR934X_PLL_SWITCH_CLOCK_CONTROL_REG);
- if (t & AR934X_PLL_SWITCH_CLOCK_CONTROL_MDIO_CLK_SEL) {
- ret = 100 * 1000 * 1000;
- } else {
- struct clk *clk;
-
- clk = clk_get(NULL, "ref");
- if (!IS_ERR(clk))
- ret = clk_get_rate(clk);
- }
-
- iounmap(base);
-
- return ret;
-}
-
-void __init ath79_register_mdio(unsigned int id, u32 phy_mask)
-{
- struct platform_device *mdio_dev;
- struct ag71xx_mdio_platform_data *mdio_data;
- unsigned int max_id;
-
- if (ath79_soc == ATH79_SOC_AR9341 ||
- ath79_soc == ATH79_SOC_AR9342 ||
- ath79_soc == ATH79_SOC_AR9344 ||
- ath79_soc == ATH79_SOC_QCA9556 ||
- ath79_soc == ATH79_SOC_QCA9558 ||
- ath79_soc == ATH79_SOC_QCA956X)
- max_id = 1;
- else
- max_id = 0;
-
- if (id > max_id) {
- printk(KERN_ERR "ar71xx: invalid MDIO id %u\n", id);
- return;
- }
-
- switch (ath79_soc) {
- case ATH79_SOC_AR7241:
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_TP9343:
- mdio_dev = &ath79_mdio1_device;
- mdio_data = &ath79_mdio1_data;
- break;
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- case ATH79_SOC_QCA956X:
- if (id == 0) {
- mdio_dev = &ath79_mdio0_device;
- mdio_data = &ath79_mdio0_data;
- } else {
- mdio_dev = &ath79_mdio1_device;
- mdio_data = &ath79_mdio1_data;
- }
- break;
-
- case ATH79_SOC_AR7242:
- ath79_set_pll(AR71XX_PLL_REG_SEC_CONFIG,
- AR7242_PLL_REG_ETH0_INT_CLOCK, 0x62000000,
- AR71XX_ETH0_PLL_SHIFT);
- /* fall through */
- default:
- mdio_dev = &ath79_mdio0_device;
- mdio_data = &ath79_mdio0_data;
- break;
- }
-
- mdio_data->phy_mask = phy_mask;
-
- switch (ath79_soc) {
- case ATH79_SOC_AR7240:
- mdio_data->is_ar7240 = 1;
- /* fall through */
- case ATH79_SOC_AR7241:
- mdio_data->builtin_switch = 1;
- break;
-
- case ATH79_SOC_AR9330:
- mdio_data->is_ar9330 = 1;
- /* fall through */
- case ATH79_SOC_AR9331:
- mdio_data->builtin_switch = 1;
- break;
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- if (id == 1) {
- mdio_data->builtin_switch = 1;
- mdio_data->ref_clock = ar934x_get_mdio_ref_clock();
- mdio_data->mdio_clock = 6250000;
- }
- mdio_data->is_ar934x = 1;
- break;
-
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_TP9343:
- mdio_data->builtin_switch = 1;
- break;
-
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- mdio_data->is_ar934x = 1;
- break;
-
- case ATH79_SOC_QCA956X:
- if (id == 1)
- mdio_data->builtin_switch = 1;
- mdio_data->is_ar934x = 1;
- break;
-
- default:
- break;
- }
-
- platform_device_register(mdio_dev);
-}
-
-struct ath79_eth_pll_data ath79_eth0_pll_data;
-struct ath79_eth_pll_data ath79_eth1_pll_data;
-
-static u32 ath79_get_eth_pll(unsigned int mac, int speed)
-{
- struct ath79_eth_pll_data *pll_data;
- u32 pll_val;
-
- switch (mac) {
- case 0:
- pll_data = &ath79_eth0_pll_data;
- break;
- case 1:
- pll_data = &ath79_eth1_pll_data;
- break;
- default:
- BUG();
- }
-
- switch (speed) {
- case SPEED_10:
- pll_val = pll_data->pll_10;
- break;
- case SPEED_100:
- pll_val = pll_data->pll_100;
- break;
- case SPEED_1000:
- pll_val = pll_data->pll_1000;
- break;
- default:
- BUG();
- }
-
- return pll_val;
-}
-
-static void ath79_set_speed_ge0(int speed)
-{
- u32 val = ath79_get_eth_pll(0, speed);
-
- ath79_set_pll(AR71XX_PLL_REG_SEC_CONFIG, AR71XX_PLL_REG_ETH0_INT_CLOCK,
- val, AR71XX_ETH0_PLL_SHIFT);
- ath79_mii_ctrl_set_speed(AR71XX_MII_REG_MII0_CTRL, speed);
-}
-
-static void ath79_set_speed_ge1(int speed)
-{
- u32 val = ath79_get_eth_pll(1, speed);
-
- ath79_set_pll(AR71XX_PLL_REG_SEC_CONFIG, AR71XX_PLL_REG_ETH1_INT_CLOCK,
- val, AR71XX_ETH1_PLL_SHIFT);
- ath79_mii_ctrl_set_speed(AR71XX_MII_REG_MII1_CTRL, speed);
-}
-
-static void ar7242_set_speed_ge0(int speed)
-{
- u32 val = ath79_get_eth_pll(0, speed);
- void __iomem *base;
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
- __raw_writel(val, base + AR7242_PLL_REG_ETH0_INT_CLOCK);
- iounmap(base);
-}
-
-static void ar91xx_set_speed_ge0(int speed)
-{
- u32 val = ath79_get_eth_pll(0, speed);
-
- ath79_set_pll(AR913X_PLL_REG_ETH_CONFIG, AR913X_PLL_REG_ETH0_INT_CLOCK,
- val, AR913X_ETH0_PLL_SHIFT);
- ath79_mii_ctrl_set_speed(AR71XX_MII_REG_MII0_CTRL, speed);
-}
-
-static void ar91xx_set_speed_ge1(int speed)
-{
- u32 val = ath79_get_eth_pll(1, speed);
-
- ath79_set_pll(AR913X_PLL_REG_ETH_CONFIG, AR913X_PLL_REG_ETH1_INT_CLOCK,
- val, AR913X_ETH1_PLL_SHIFT);
- ath79_mii_ctrl_set_speed(AR71XX_MII_REG_MII1_CTRL, speed);
-}
-
-static void ar934x_set_speed_ge0(int speed)
-{
- void __iomem *base;
- u32 val = ath79_get_eth_pll(0, speed);
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
- __raw_writel(val, base + AR934X_PLL_ETH_XMII_CONTROL_REG);
- iounmap(base);
-}
-
-static void qca955x_set_speed_xmii(int speed)
-{
- void __iomem *base;
- u32 val = ath79_get_eth_pll(0, speed);
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
- __raw_writel(val, base + QCA955X_PLL_ETH_XMII_CONTROL_REG);
- iounmap(base);
-}
-
-static void qca955x_set_speed_sgmii(int id, int speed)
-{
- void __iomem *base;
- u32 val = ath79_get_eth_pll(id, speed);
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
- __raw_writel(val, base + QCA955X_PLL_ETH_SGMII_CONTROL_REG);
- iounmap(base);
-}
-
-static void qca9556_set_speed_sgmii(int speed)
-{
- qca955x_set_speed_sgmii(0, speed);
-}
-
-static void qca9558_set_speed_sgmii(int speed)
-{
- qca955x_set_speed_sgmii(1, speed);
-}
-
-static void qca956x_set_speed_sgmii(int speed)
-{
- void __iomem *base;
- u32 val = ath79_get_eth_pll(0, speed);
-
- base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
- __raw_writel(val, base + QCA955X_PLL_ETH_SGMII_CONTROL_REG);
- iounmap(base);
-}
-
-static void ath79_set_speed_dummy(int speed)
-{
-}
-
-static void ath79_ddr_flush_ge0(void)
-{
- ath79_ddr_wb_flush(0);
-}
-
-static void ath79_ddr_flush_ge1(void)
-{
- ath79_ddr_wb_flush(1);
-}
-
-static struct resource ath79_eth0_resources[] = {
- {
- .name = "mac_base",
- .flags = IORESOURCE_MEM,
- .start = AR71XX_GE0_BASE,
- .end = AR71XX_GE0_BASE + 0x200 - 1,
- }, {
- .name = "mac_irq",
- .flags = IORESOURCE_IRQ,
- .start = ATH79_CPU_IRQ(4),
- .end = ATH79_CPU_IRQ(4),
- },
-};
-
-struct ag71xx_platform_data ath79_eth0_data = {
- .reset_bit = AR71XX_RESET_GE0_MAC,
-};
-
-struct platform_device ath79_eth0_device = {
- .name = "ag71xx",
- .id = 0,
- .resource = ath79_eth0_resources,
- .num_resources = ARRAY_SIZE(ath79_eth0_resources),
- .dev = {
- .platform_data = &ath79_eth0_data,
- },
-};
-
-static struct resource ath79_eth1_resources[] = {
- {
- .name = "mac_base",
- .flags = IORESOURCE_MEM,
- .start = AR71XX_GE1_BASE,
- .end = AR71XX_GE1_BASE + 0x200 - 1,
- }, {
- .name = "mac_irq",
- .flags = IORESOURCE_IRQ,
- .start = ATH79_CPU_IRQ(5),
- .end = ATH79_CPU_IRQ(5),
- },
-};
-
-struct ag71xx_platform_data ath79_eth1_data = {
- .reset_bit = AR71XX_RESET_GE1_MAC,
-};
-
-struct platform_device ath79_eth1_device = {
- .name = "ag71xx",
- .id = 1,
- .resource = ath79_eth1_resources,
- .num_resources = ARRAY_SIZE(ath79_eth1_resources),
- .dev = {
- .platform_data = &ath79_eth1_data,
- },
-};
-
-struct ag71xx_switch_platform_data ath79_switch_data;
-
-#define AR71XX_PLL_VAL_1000 0x00110000
-#define AR71XX_PLL_VAL_100 0x00001099
-#define AR71XX_PLL_VAL_10 0x00991099
-
-#define AR724X_PLL_VAL_1000 0x00110000
-#define AR724X_PLL_VAL_100 0x00001099
-#define AR724X_PLL_VAL_10 0x00991099
-
-#define AR7242_PLL_VAL_1000 0x16000000
-#define AR7242_PLL_VAL_100 0x00000101
-#define AR7242_PLL_VAL_10 0x00001616
-
-#define AR913X_PLL_VAL_1000 0x1a000000
-#define AR913X_PLL_VAL_100 0x13000a44
-#define AR913X_PLL_VAL_10 0x00441099
-
-#define AR933X_PLL_VAL_1000 0x00110000
-#define AR933X_PLL_VAL_100 0x00001099
-#define AR933X_PLL_VAL_10 0x00991099
-
-#define AR934X_PLL_VAL_1000 0x16000000
-#define AR934X_PLL_VAL_100 0x00000101
-#define AR934X_PLL_VAL_10 0x00001616
-
-#define QCA956X_PLL_VAL_1000 0x03000000
-#define QCA956X_PLL_VAL_100 0x00000101
-#define QCA956X_PLL_VAL_10 0x00001919
-
-static void __init ath79_init_eth_pll_data(unsigned int id)
-{
- struct ath79_eth_pll_data *pll_data;
- u32 pll_10, pll_100, pll_1000;
-
- switch (id) {
- case 0:
- pll_data = &ath79_eth0_pll_data;
- break;
- case 1:
- pll_data = &ath79_eth1_pll_data;
- break;
- default:
- BUG();
- }
-
- switch (ath79_soc) {
- case ATH79_SOC_AR7130:
- case ATH79_SOC_AR7141:
- case ATH79_SOC_AR7161:
- pll_10 = AR71XX_PLL_VAL_10;
- pll_100 = AR71XX_PLL_VAL_100;
- pll_1000 = AR71XX_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_AR7240:
- case ATH79_SOC_AR7241:
- pll_10 = AR724X_PLL_VAL_10;
- pll_100 = AR724X_PLL_VAL_100;
- pll_1000 = AR724X_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_AR7242:
- pll_10 = AR7242_PLL_VAL_10;
- pll_100 = AR7242_PLL_VAL_100;
- pll_1000 = AR7242_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_AR9130:
- case ATH79_SOC_AR9132:
- pll_10 = AR913X_PLL_VAL_10;
- pll_100 = AR913X_PLL_VAL_100;
- pll_1000 = AR913X_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- pll_10 = AR933X_PLL_VAL_10;
- pll_100 = AR933X_PLL_VAL_100;
- pll_1000 = AR933X_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- case ATH79_SOC_TP9343:
- pll_10 = AR934X_PLL_VAL_10;
- pll_100 = AR934X_PLL_VAL_100;
- pll_1000 = AR934X_PLL_VAL_1000;
- break;
-
- case ATH79_SOC_QCA956X:
- pll_10 = QCA956X_PLL_VAL_10;
- pll_100 = QCA956X_PLL_VAL_100;
- pll_1000 = QCA956X_PLL_VAL_1000;
- break;
-
- default:
- BUG();
- }
-
- if (!pll_data->pll_10)
- pll_data->pll_10 = pll_10;
-
- if (!pll_data->pll_100)
- pll_data->pll_100 = pll_100;
-
- if (!pll_data->pll_1000)
- pll_data->pll_1000 = pll_1000;
-}
-
-static int __init ath79_setup_phy_if_mode(unsigned int id,
- struct ag71xx_platform_data *pdata)
-{
- unsigned int mii_if;
-
- switch (id) {
- case 0:
- switch (ath79_soc) {
- case ATH79_SOC_AR7130:
- case ATH79_SOC_AR7141:
- case ATH79_SOC_AR7161:
- case ATH79_SOC_AR9130:
- case ATH79_SOC_AR9132:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_MII:
- mii_if = AR71XX_MII0_CTRL_IF_MII;
- break;
- case PHY_INTERFACE_MODE_GMII:
- mii_if = AR71XX_MII0_CTRL_IF_GMII;
- break;
- case PHY_INTERFACE_MODE_RGMII:
- mii_if = AR71XX_MII0_CTRL_IF_RGMII;
- break;
- case PHY_INTERFACE_MODE_RMII:
- mii_if = AR71XX_MII0_CTRL_IF_RMII;
- break;
- default:
- return -EINVAL;
- }
- ath79_mii_ctrl_set_if(AR71XX_MII_REG_MII0_CTRL, mii_if);
- break;
-
- case ATH79_SOC_AR7240:
- case ATH79_SOC_AR7241:
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_TP9343:
- pdata->phy_if_mode = PHY_INTERFACE_MODE_MII;
- break;
-
- case ATH79_SOC_AR7242:
- /* FIXME */
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_MII:
- case PHY_INTERFACE_MODE_GMII:
- case PHY_INTERFACE_MODE_RGMII:
- case PHY_INTERFACE_MODE_RMII:
- break;
- default:
- return -EINVAL;
- }
- break;
-
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- case ATH79_SOC_QCA956X:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_MII:
- case PHY_INTERFACE_MODE_RGMII:
- case PHY_INTERFACE_MODE_SGMII:
- break;
- default:
- return -EINVAL;
- }
- break;
-
- default:
- BUG();
- }
- break;
- case 1:
- switch (ath79_soc) {
- case ATH79_SOC_AR7130:
- case ATH79_SOC_AR7141:
- case ATH79_SOC_AR7161:
- case ATH79_SOC_AR9130:
- case ATH79_SOC_AR9132:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_RMII:
- mii_if = AR71XX_MII1_CTRL_IF_RMII;
- break;
- case PHY_INTERFACE_MODE_RGMII:
- mii_if = AR71XX_MII1_CTRL_IF_RGMII;
- break;
- default:
- return -EINVAL;
- }
- ath79_mii_ctrl_set_if(AR71XX_MII_REG_MII1_CTRL, mii_if);
- break;
-
- case ATH79_SOC_AR7240:
- case ATH79_SOC_AR7241:
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- case ATH79_SOC_TP9343:
- pdata->phy_if_mode = PHY_INTERFACE_MODE_GMII;
- break;
-
- case ATH79_SOC_AR7242:
- /* FIXME */
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_QCA956X:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_MII:
- case PHY_INTERFACE_MODE_GMII:
- break;
- default:
- return -EINVAL;
- }
- break;
-
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_MII:
- case PHY_INTERFACE_MODE_RGMII:
- case PHY_INTERFACE_MODE_SGMII:
- break;
- default:
- return -EINVAL;
- }
- break;
-
- default:
- BUG();
- }
- break;
- }
-
- return 0;
-}
-
-void __init ath79_setup_ar933x_phy4_switch(bool mac, bool mdio)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(AR933X_GMAC_BASE, AR933X_GMAC_SIZE);
-
- t = __raw_readl(base + AR933X_GMAC_REG_ETH_CFG);
- t &= ~(AR933X_ETH_CFG_SW_PHY_SWAP | AR933X_ETH_CFG_SW_PHY_ADDR_SWAP);
- if (mac)
- t |= AR933X_ETH_CFG_SW_PHY_SWAP;
- if (mdio)
- t |= AR933X_ETH_CFG_SW_PHY_ADDR_SWAP;
- __raw_writel(t, base + AR933X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-void __init ath79_setup_ar934x_eth_cfg(u32 mask)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(AR934X_GMAC_BASE, AR934X_GMAC_SIZE);
-
- t = __raw_readl(base + AR934X_GMAC_REG_ETH_CFG);
-
- t &= ~(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_MII_GMAC0 |
- AR934X_ETH_CFG_GMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE |
- AR934X_ETH_CFG_SW_PHY_SWAP);
-
- t |= mask;
-
- __raw_writel(t, base + AR934X_GMAC_REG_ETH_CFG);
- /* flush write */
- __raw_readl(base + AR934X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-void __init ath79_setup_ar934x_eth_rx_delay(unsigned int rxd,
- unsigned int rxdv)
-{
- void __iomem *base;
- u32 t;
-
- rxd &= AR934X_ETH_CFG_RXD_DELAY_MASK;
- rxdv &= AR934X_ETH_CFG_RDV_DELAY_MASK;
-
- base = ioremap(AR934X_GMAC_BASE, AR934X_GMAC_SIZE);
-
- t = __raw_readl(base + AR934X_GMAC_REG_ETH_CFG);
-
- t &= ~(AR934X_ETH_CFG_RXD_DELAY_MASK << AR934X_ETH_CFG_RXD_DELAY_SHIFT |
- AR934X_ETH_CFG_RDV_DELAY_MASK << AR934X_ETH_CFG_RDV_DELAY_SHIFT);
-
- t |= (rxd << AR934X_ETH_CFG_RXD_DELAY_SHIFT |
- rxdv << AR934X_ETH_CFG_RDV_DELAY_SHIFT);
-
- __raw_writel(t, base + AR934X_GMAC_REG_ETH_CFG);
- /* flush write */
- __raw_readl(base + AR934X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-void __init ath79_setup_qca955x_eth_cfg(u32 mask)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = __raw_readl(base + QCA955X_GMAC_REG_ETH_CFG);
-
- t &= ~(QCA955X_ETH_CFG_RGMII_EN | QCA955X_ETH_CFG_GE0_SGMII);
-
- t |= mask;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-void __init ath79_setup_qca956x_eth_cfg(u32 mask)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA956X_GMAC_BASE, QCA956X_GMAC_SIZE);
-
- t = __raw_readl(base + QCA956X_GMAC_REG_ETH_CFG);
-
- t &= ~(QCA956X_ETH_CFG_SW_ONLY_MODE |
- QCA956X_ETH_CFG_SW_PHY_SWAP);
-
- t |= mask;
-
- __raw_writel(t, base + QCA956X_GMAC_REG_ETH_CFG);
- /* flush write */
- __raw_readl(base + QCA956X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static int ath79_eth_instance __initdata;
-void __init ath79_register_eth(unsigned int id)
-{
- struct platform_device *pdev;
- struct ag71xx_platform_data *pdata;
- int err;
-
- if (id > 1) {
- printk(KERN_ERR "ar71xx: invalid ethernet id %d\n", id);
- return;
- }
-
- ath79_init_eth_pll_data(id);
-
- if (id == 0)
- pdev = &ath79_eth0_device;
- else
- pdev = &ath79_eth1_device;
-
- pdata = pdev->dev.platform_data;
-
- pdata->max_frame_len = 1540;
- pdata->desc_pktlen_mask = 0xfff;
-
- err = ath79_setup_phy_if_mode(id, pdata);
- if (err) {
- printk(KERN_ERR
- "ar71xx: invalid PHY interface mode for GE%u\n", id);
- return;
- }
-
- if (id == 0)
- pdata->ddr_flush = ath79_ddr_flush_ge0;
- else
- pdata->ddr_flush = ath79_ddr_flush_ge1;
-
- switch (ath79_soc) {
- case ATH79_SOC_AR7130:
- if (id == 0)
- pdata->set_speed = ath79_set_speed_ge0;
- else
- pdata->set_speed = ath79_set_speed_ge1;
- break;
-
- case ATH79_SOC_AR7141:
- case ATH79_SOC_AR7161:
- if (id == 0)
- pdata->set_speed = ath79_set_speed_ge0;
- else
- pdata->set_speed = ath79_set_speed_ge1;
- pdata->has_gbit = 1;
- break;
-
- case ATH79_SOC_AR7242:
- if (id == 0) {
- pdata->reset_bit |= AR724X_RESET_GE0_MDIO |
- AR71XX_RESET_GE0_PHY;
- pdata->set_speed = ar7242_set_speed_ge0;
- } else {
- pdata->reset_bit |= AR724X_RESET_GE1_MDIO |
- AR71XX_RESET_GE1_PHY;
- pdata->set_speed = ath79_set_speed_dummy;
- }
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
- break;
-
- case ATH79_SOC_AR7241:
- if (id == 0)
- pdata->reset_bit |= AR724X_RESET_GE0_MDIO;
- else
- pdata->reset_bit |= AR724X_RESET_GE1_MDIO;
- /* fall through */
- case ATH79_SOC_AR7240:
- if (id == 0) {
- pdata->reset_bit |= AR71XX_RESET_GE0_PHY;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->phy_mask = BIT(4);
- } else {
- pdata->reset_bit |= AR71XX_RESET_GE1_PHY;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->speed = SPEED_1000;
- pdata->duplex = DUPLEX_FULL;
- pdata->switch_data = &ath79_switch_data;
- pdata->use_flow_control = 1;
-
- ath79_switch_data.phy_poll_mask |= BIT(4);
- }
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
- if (ath79_soc == ATH79_SOC_AR7240)
- pdata->is_ar7240 = 1;
- break;
-
- case ATH79_SOC_AR9132:
- pdata->has_gbit = 1;
- /* fall through */
- case ATH79_SOC_AR9130:
- if (id == 0)
- pdata->set_speed = ar91xx_set_speed_ge0;
- else
- pdata->set_speed = ar91xx_set_speed_ge1;
- pdata->is_ar91xx = 1;
- break;
-
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- if (id == 0) {
- pdata->reset_bit = AR933X_RESET_GE0_MAC |
- AR933X_RESET_GE0_MDIO;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->phy_mask = BIT(4);
- } else {
- pdata->reset_bit = AR933X_RESET_GE1_MAC |
- AR933X_RESET_GE1_MDIO;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->speed = SPEED_1000;
- pdata->has_gbit = 1;
- pdata->duplex = DUPLEX_FULL;
- pdata->switch_data = &ath79_switch_data;
- pdata->use_flow_control = 1;
-
- ath79_switch_data.phy_poll_mask |= BIT(4);
- }
-
- pdata->is_ar724x = 1;
- break;
-
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- case ATH79_SOC_QCA9533:
- if (id == 0) {
- pdata->reset_bit = AR934X_RESET_GE0_MAC |
- AR934X_RESET_GE0_MDIO;
- pdata->set_speed = ar934x_set_speed_ge0;
-
- if (ath79_soc == ATH79_SOC_QCA9533)
- pdata->disable_inline_checksum_engine = 1;
- } else {
- pdata->reset_bit = AR934X_RESET_GE1_MAC |
- AR934X_RESET_GE1_MDIO;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->switch_data = &ath79_switch_data;
-
- /* reset the built-in switch */
- ath79_device_reset_set(AR934X_RESET_ETH_SWITCH);
- ath79_device_reset_clear(AR934X_RESET_ETH_SWITCH);
- }
-
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
-
- pdata->max_frame_len = SZ_16K - 1;
- pdata->desc_pktlen_mask = SZ_16K - 1;
- break;
-
- case ATH79_SOC_TP9343:
- if (id == 0) {
- pdata->reset_bit = AR933X_RESET_GE0_MAC |
- AR933X_RESET_GE0_MDIO;
- pdata->set_speed = ath79_set_speed_dummy;
-
- if (!pdata->phy_mask)
- pdata->phy_mask = BIT(4);
- } else {
- pdata->reset_bit = AR933X_RESET_GE1_MAC |
- AR933X_RESET_GE1_MDIO;
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->speed = SPEED_1000;
- pdata->duplex = DUPLEX_FULL;
- pdata->switch_data = &ath79_switch_data;
- pdata->use_flow_control = 1;
-
- ath79_switch_data.phy_poll_mask |= BIT(4);
- }
-
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
- break;
-
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- if (id == 0) {
- pdata->reset_bit = QCA955X_RESET_GE0_MAC |
- QCA955X_RESET_GE0_MDIO;
- pdata->set_speed = qca955x_set_speed_xmii;
-
- /* QCA9556 only has SGMII interface */
- if (ath79_soc == ATH79_SOC_QCA9556)
- pdata->set_speed = qca9556_set_speed_sgmii;
- } else {
- pdata->reset_bit = QCA955X_RESET_GE1_MAC |
- QCA955X_RESET_GE1_MDIO;
- pdata->set_speed = qca9558_set_speed_sgmii;
- }
-
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
-
- /*
- * Limit the maximum frame length to 4095 bytes.
- * Although the documentation says that the hardware
- * limit is 16383 bytes but that does not work in
- * practice. It seems that the hardware only updates
- * the lowest 12 bits of the packet length field
- * in the RX descriptor.
- */
- pdata->max_frame_len = SZ_4K - 1;
- pdata->desc_pktlen_mask = SZ_16K - 1;
- break;
-
- case ATH79_SOC_QCA956X:
- if (id == 0) {
- pdata->reset_bit = QCA955X_RESET_GE0_MAC |
- QCA955X_RESET_GE0_MDIO;
-
- if (pdata->phy_if_mode == PHY_INTERFACE_MODE_SGMII)
- pdata->set_speed = qca956x_set_speed_sgmii;
- else
- pdata->set_speed = ar934x_set_speed_ge0;
-
- pdata->disable_inline_checksum_engine = 1;
- } else {
- pdata->reset_bit = QCA955X_RESET_GE1_MAC |
- QCA955X_RESET_GE1_MDIO;
-
- pdata->set_speed = ath79_set_speed_dummy;
-
- pdata->switch_data = &ath79_switch_data;
-
- pdata->speed = SPEED_1000;
- pdata->duplex = DUPLEX_FULL;
- pdata->use_flow_control = 1;
-
- /* reset the built-in switch */
- ath79_device_reset_set(AR934X_RESET_ETH_SWITCH);
- ath79_device_reset_clear(AR934X_RESET_ETH_SWITCH);
- }
-
- pdata->has_gbit = 1;
- pdata->is_ar724x = 1;
- break;
-
- default:
- BUG();
- }
-
- switch (pdata->phy_if_mode) {
- case PHY_INTERFACE_MODE_GMII:
- case PHY_INTERFACE_MODE_RGMII:
- case PHY_INTERFACE_MODE_SGMII:
- if (!pdata->has_gbit) {
- printk(KERN_ERR "ar71xx: no gbit available on eth%d\n",
- id);
- return;
- }
- /* fallthrough */
- default:
- break;
- }
-
- if (!is_valid_ether_addr(pdata->mac_addr)) {
- random_ether_addr(pdata->mac_addr);
- printk(KERN_DEBUG
- "ar71xx: using random MAC address for eth%d\n",
- ath79_eth_instance);
- }
-
- if (pdata->mii_bus_dev == NULL) {
- switch (ath79_soc) {
- case ATH79_SOC_AR9341:
- case ATH79_SOC_AR9342:
- case ATH79_SOC_AR9344:
- if (id == 0)
- pdata->mii_bus_dev = &ath79_mdio0_device.dev;
- else
- pdata->mii_bus_dev = &ath79_mdio1_device.dev;
- break;
-
- case ATH79_SOC_AR7241:
- case ATH79_SOC_AR9330:
- case ATH79_SOC_AR9331:
- case ATH79_SOC_QCA9533:
- case ATH79_SOC_TP9343:
- pdata->mii_bus_dev = &ath79_mdio1_device.dev;
- break;
-
- case ATH79_SOC_QCA9556:
- case ATH79_SOC_QCA9558:
- /* don't assign any MDIO device by default */
- break;
-
- case ATH79_SOC_QCA956X:
- if (pdata->phy_if_mode != PHY_INTERFACE_MODE_SGMII)
- pdata->mii_bus_dev = &ath79_mdio1_device.dev;
- break;
-
- default:
- pdata->mii_bus_dev = &ath79_mdio0_device.dev;
- break;
- }
- }
-
- /* Reset the device */
- ath79_device_reset_set(pdata->reset_bit);
- msleep(100);
-
- ath79_device_reset_clear(pdata->reset_bit);
- msleep(100);
-
- platform_device_register(pdev);
- ath79_eth_instance++;
-}
-
-void __init ath79_set_mac_base(unsigned char *mac)
-{
- memcpy(ath79_mac_base, mac, ETH_ALEN);
-}
-
-void __init ath79_parse_ascii_mac(char *mac_str, u8 *mac)
-{
- int t;
-
- t = sscanf(mac_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
- &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
-
- if (t != ETH_ALEN)
- t = sscanf(mac_str, "%02hhx.%02hhx.%02hhx.%02hhx.%02hhx.%02hhx",
- &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
-
- if (t != ETH_ALEN || !is_valid_ether_addr(mac)) {
- memset(mac, 0, ETH_ALEN);
- printk(KERN_DEBUG "ar71xx: invalid mac address \"%s\"\n",
- mac_str);
- }
-}
-
-void __init ath79_extract_mac_reverse(u8 *ptr, u8 *out)
-{
- int i;
-
- for (i = 0; i < ETH_ALEN; i++) {
- out[i] = ptr[ETH_ALEN-i-1];
- }
-}
-
-static void __init ath79_set_mac_base_ascii(char *str)
-{
- u8 mac[ETH_ALEN];
-
- ath79_parse_ascii_mac(str, mac);
- ath79_set_mac_base(mac);
-}
-
-static int __init ath79_ethaddr_setup(char *str)
-{
- ath79_set_mac_base_ascii(str);
- return 1;
-}
-__setup("ethaddr=", ath79_ethaddr_setup);
-
-static int __init ath79_kmac_setup(char *str)
-{
- ath79_set_mac_base_ascii(str);
- return 1;
-}
-__setup("kmac=", ath79_kmac_setup);
-
-void __init ath79_init_mac(unsigned char *dst, const unsigned char *src,
- int offset)
-{
- int t;
-
- if (!dst)
- return;
-
- if (!src || !is_valid_ether_addr(src)) {
- memset(dst, '\0', ETH_ALEN);
- return;
- }
-
- t = (((u32) src[3]) << 16) + (((u32) src[4]) << 8) + ((u32) src[5]);
- t += offset;
-
- dst[0] = src[0];
- dst[1] = src[1];
- dst[2] = src[2];
- dst[3] = (t >> 16) & 0xff;
- dst[4] = (t >> 8) & 0xff;
- dst[5] = t & 0xff;
-}
-
-void __init ath79_init_local_mac(unsigned char *dst, const unsigned char *src)
-{
- int i;
-
- if (!dst)
- return;
-
- if (!src || !is_valid_ether_addr(src)) {
- memset(dst, '\0', ETH_ALEN);
- return;
- }
-
- for (i = 0; i < ETH_ALEN; i++)
- dst[i] = src[i];
- dst[0] |= 0x02;
-}
+++ /dev/null
-/*
- * Atheros AR71xx SoC device definitions
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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.
- */
-
-#ifndef _ATH79_DEV_ETH_H
-#define _ATH79_DEV_ETH_H
-
-#include <asm/mach-ath79/ag71xx_platform.h>
-
-struct platform_device;
-
-extern unsigned char ath79_mac_base[] __initdata;
-void ath79_parse_ascii_mac(char *mac_str, u8 *mac);
-void ath79_extract_mac_reverse(u8 *ptr, u8 *out);
-void ath79_init_mac(unsigned char *dst, const unsigned char *src,
- int offset);
-void ath79_init_local_mac(unsigned char *dst, const unsigned char *src);
-
-struct ath79_eth_pll_data {
- u32 pll_10;
- u32 pll_100;
- u32 pll_1000;
-};
-
-extern struct ath79_eth_pll_data ath79_eth0_pll_data;
-extern struct ath79_eth_pll_data ath79_eth1_pll_data;
-
-extern struct ag71xx_platform_data ath79_eth0_data;
-extern struct ag71xx_platform_data ath79_eth1_data;
-extern struct platform_device ath79_eth0_device;
-extern struct platform_device ath79_eth1_device;
-void ath79_register_eth(unsigned int id);
-
-extern struct ag71xx_switch_platform_data ath79_switch_data;
-
-extern struct ag71xx_mdio_platform_data ath79_mdio0_data;
-extern struct ag71xx_mdio_platform_data ath79_mdio1_data;
-extern struct platform_device ath79_mdio0_device;
-extern struct platform_device ath79_mdio1_device;
-void ath79_register_mdio(unsigned int id, u32 phy_mask);
-
-void ath79_setup_ar933x_phy4_switch(bool mac, bool mdio);
-void ath79_setup_ar934x_eth_cfg(u32 mask);
-void ath79_setup_ar934x_eth_rx_delay(unsigned int rxd, unsigned int rxdv);
-void ath79_setup_qca955x_eth_cfg(u32 mask);
-void ath79_setup_qca956x_eth_cfg(u32 mask);
-
-#endif /* _ATH79_DEV_ETH_H */
+++ /dev/null
-/*
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/init.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/concat.h>
-
-#include "dev-spi.h"
-#include "dev-m25p80.h"
-
-static struct spi_board_info ath79_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- },
- {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- }
-};
-
-static struct ath79_spi_platform_data ath79_spi_data;
-
-void __init ath79_register_m25p80(struct flash_platform_data *pdata)
-{
- ath79_spi_data.bus_num = 0;
- ath79_spi_data.num_chipselect = 1;
- ath79_spi_info[0].platform_data = pdata;
- ath79_register_spi(&ath79_spi_data, ath79_spi_info, 1);
-}
-
-static struct flash_platform_data *multi_pdata;
-
-static struct mtd_info *concat_devs[2] = { NULL, NULL };
-static struct work_struct mtd_concat_work;
-
-static void mtd_concat_add_work(struct work_struct *work)
-{
- struct mtd_info *mtd;
-
- mtd = mtd_concat_create(concat_devs, ARRAY_SIZE(concat_devs), "flash");
-
- mtd_device_register(mtd, multi_pdata->parts, multi_pdata->nr_parts);
-}
-
-static void mtd_concat_add(struct mtd_info *mtd)
-{
- static bool registered = false;
-
- if (registered)
- return;
-
- if (!strcmp(mtd->name, "spi0.0"))
- concat_devs[0] = mtd;
- else if (!strcmp(mtd->name, "spi0.1"))
- concat_devs[1] = mtd;
- else
- return;
-
- if (!concat_devs[0] || !concat_devs[1])
- return;
-
- registered = true;
- INIT_WORK(&mtd_concat_work, mtd_concat_add_work);
- schedule_work(&mtd_concat_work);
-}
-
-static void mtd_concat_remove(struct mtd_info *mtd)
-{
-}
-
-static void add_mtd_concat_notifier(void)
-{
- static struct mtd_notifier not = {
- .add = mtd_concat_add,
- .remove = mtd_concat_remove,
- };
-
- register_mtd_user(¬);
-}
-
-void __init ath79_register_m25p80_multi(struct flash_platform_data *pdata)
-{
- multi_pdata = pdata;
- add_mtd_concat_notifier();
- ath79_spi_data.bus_num = 0;
- ath79_spi_data.num_chipselect = 2;
- ath79_register_spi(&ath79_spi_data, ath79_spi_info, 2);
-}
+++ /dev/null
-/*
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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.
- */
-
-#ifndef _ATH79_DEV_M25P80_H
-#define _ATH79_DEV_M25P80_H
-
-#include <linux/spi/flash.h>
-
-void ath79_register_m25p80(struct flash_platform_data *pdata) __init;
-void ath79_register_m25p80_multi(struct flash_platform_data *pdata) __init;
-
-#endif /* _ATH79_DEV_M25P80_H */
+++ /dev/null
-/*
- * Atheros AR934X SoCs built-in NAND flash controller support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/init.h>
-#include <linux/irq.h>
-#include <linux/dma-mapping.h>
-#include <linux/etherdevice.h>
-#include <linux/platform_device.h>
-#include <linux/platform/ar934x_nfc.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "dev-nfc.h"
-
-static struct resource ath79_nfc_resources[2];
-static u64 ar934x_nfc_dmamask = DMA_BIT_MASK(32);
-static struct ar934x_nfc_platform_data ath79_nfc_data;
-
-static struct platform_device ath79_nfc_device = {
- .name = AR934X_NFC_DRIVER_NAME,
- .id = -1,
- .resource = ath79_nfc_resources,
- .num_resources = ARRAY_SIZE(ath79_nfc_resources),
- .dev = {
- .dma_mask = &ar934x_nfc_dmamask,
- .coherent_dma_mask = DMA_BIT_MASK(32),
- .platform_data = &ath79_nfc_data,
- },
-};
-
-static void __init ath79_nfc_init_resource(struct resource res[2],
- unsigned long base,
- unsigned long size,
- int irq)
-{
- memset(res, 0, sizeof(struct resource) * 2);
-
- res[0].flags = IORESOURCE_MEM;
- res[0].start = base;
- res[0].end = base + size - 1;
-
- res[1].flags = IORESOURCE_IRQ;
- res[1].start = irq;
- res[1].end = irq;
-}
-
-static void ar934x_nfc_hw_reset(bool active)
-{
- if (active) {
- ath79_device_reset_set(AR934X_RESET_NANDF);
- udelay(100);
-
- ath79_device_reset_set(AR934X_RESET_ETH_SWITCH_ANALOG);
- udelay(250);
- } else {
- ath79_device_reset_clear(AR934X_RESET_ETH_SWITCH_ANALOG);
- udelay(250);
-
- ath79_device_reset_clear(AR934X_RESET_NANDF);
- udelay(100);
- }
-}
-
-static void ar934x_nfc_setup(void)
-{
- ath79_nfc_data.hw_reset = ar934x_nfc_hw_reset;
-
- ath79_nfc_init_resource(ath79_nfc_resources,
- AR934X_NFC_BASE, AR934X_NFC_SIZE,
- ATH79_MISC_IRQ(21));
-
- platform_device_register(&ath79_nfc_device);
-}
-
-static void qca955x_nfc_hw_reset(bool active)
-{
- if (active) {
- ath79_device_reset_set(QCA955X_RESET_NANDF);
- udelay(250);
- } else {
- ath79_device_reset_clear(QCA955X_RESET_NANDF);
- udelay(100);
- }
-}
-
-static void qca955x_nfc_setup(void)
-{
- ath79_nfc_data.hw_reset = qca955x_nfc_hw_reset;
-
- ath79_nfc_init_resource(ath79_nfc_resources,
- QCA955X_NFC_BASE, QCA955X_NFC_SIZE,
- ATH79_MISC_IRQ(21));
-
- platform_device_register(&ath79_nfc_device);
-}
-
-void __init ath79_nfc_set_select_chip(void (*f)(int chip_no))
-{
- ath79_nfc_data.select_chip = f;
-}
-
-void __init ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd))
-{
- ath79_nfc_data.scan_fixup = f;
-}
-
-void __init ath79_nfc_set_swap_dma(bool enable)
-{
- ath79_nfc_data.swap_dma = enable;
-}
-
-void __init ath79_nfc_set_ecc_mode(enum ar934x_nfc_ecc_mode mode)
-{
- ath79_nfc_data.ecc_mode = mode;
-}
-
-void __init ath79_nfc_set_parts(struct mtd_partition *parts, int nr_parts)
-{
- ath79_nfc_data.parts = parts;
- ath79_nfc_data.nr_parts = nr_parts;
-}
-
-void __init ath79_register_nfc(void)
-{
- if (soc_is_ar934x())
- ar934x_nfc_setup();
- else if (soc_is_qca955x())
- qca955x_nfc_setup();
- else
- BUG();
-}
+++ /dev/null
-/*
- * Atheros AR934X SoCs built-in NAND Flash Controller support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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.
- */
-
-#ifndef _ATH79_DEV_NFC_H
-#define _ATH79_DEV_NFC_H
-
-struct mtd_partition;
-enum ar934x_nfc_ecc_mode;
-
-#ifdef CONFIG_ATH79_DEV_NFC
-void ath79_nfc_set_parts(struct mtd_partition *parts, int nr_parts);
-void ath79_nfc_set_select_chip(void (*f)(int chip_no));
-void ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd));
-void ath79_nfc_set_swap_dma(bool enable);
-void ath79_nfc_set_ecc_mode(enum ar934x_nfc_ecc_mode mode);
-void ath79_register_nfc(void);
-#else
-static inline void ath79_nfc_set_parts(struct mtd_partition *parts,
- int nr_parts) {}
-static inline void ath79_nfc_set_select_chip(void (*f)(int chip_no)) {}
-static inline void ath79_nfc_set_scan_fixup(int (*f)(struct mtd_info *mtd)) {}
-static inline void ath79_nfc_set_swap_dma(bool enable) {}
-static inline void ath79_nfc_set_ecc_mode(enum ar934x_nfc_ecc_mode mode) {}
-static inline void ath79_register_nfc(void) {}
-#endif
-
-#endif /* _ATH79_DEV_NFC_H */
+++ /dev/null
-/*
- * OpenMesh A60 support
- *
- * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
- * Copyright (C) 2014-2017 Sven Eckelmann <sven@open-mesh.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-gpio-buttons.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-#include "dev-usb.h"
-
-#define A60_GPIO_LED_RED 22
-#define A60_GPIO_LED_GREEN 23
-#define A60_GPIO_LED_BLUE 13
-
-#define A60_GPIO_BTN_RESET 17
-
-#define A60_KEYS_POLL_INTERVAL 20 /* msecs */
-#define A60_KEYS_DEBOUNCE_INTERVAL (3 * A60_KEYS_POLL_INTERVAL)
-
-#define A60_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led a40_leds_gpio[] __initdata = {
- {
- .name = "a40:red:status",
- .gpio = A60_GPIO_LED_RED,
- }, {
- .name = "a40:green:status",
- .gpio = A60_GPIO_LED_GREEN,
- }, {
- .name = "a40:blue:status",
- .gpio = A60_GPIO_LED_BLUE,
- }
-};
-
-static struct gpio_led a60_leds_gpio[] __initdata = {
- {
- .name = "a60:red:status",
- .gpio = A60_GPIO_LED_RED,
- }, {
- .name = "a60:green:status",
- .gpio = A60_GPIO_LED_GREEN,
- }, {
- .name = "a60:blue:status",
- .gpio = A60_GPIO_LED_BLUE,
- }
-};
-
-static struct gpio_keys_button a60_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = A60_KEYS_DEBOUNCE_INTERVAL,
- .gpio = A60_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data a60_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info a60_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 1,
- .platform_data = &a60_at803x_data,
- },
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 2,
- .platform_data = &a60_at803x_data,
- },
-};
-
-static void __init a60_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init a60_setup_common(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_register_usb();
-
- ath79_register_m25p80(NULL);
- ath79_register_gpio_keys_polled(-1, A60_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(a60_gpio_keys),
- a60_gpio_keys);
-
- ath79_init_mac(mac, art, 0x02);
- ath79_register_wmac(art + A60_WMAC_CALDATA_OFFSET, mac);
-
- a60_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(a60_mdio0_info, ARRAY_SIZE(a60_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
-
- /* GMAC0 is connected to the PHY1 */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(1);
- ath79_eth0_pll_data.pll_1000 = 0x82000101;
- ath79_eth0_pll_data.pll_100 = 0x80000101;
- ath79_eth0_pll_data.pll_10 = 0x80001313;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to MDIO1 in SGMII mode */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth1_data.phy_mask = BIT(2);
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_eth1_pll_data.pll_100 = 0x80000101;
- ath79_eth1_pll_data.pll_10 = 0x80001313;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_register_eth(1);
-
- ath79_register_pci();
-}
-
-static void __init a40_setup(void)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(a40_leds_gpio), a40_leds_gpio);
- a60_setup_common();
-}
-
-MIPS_MACHINE(ATH79_MACH_A40, "A40", "OpenMesh A40", a40_setup);
-
-static void __init a60_setup(void)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(a60_leds_gpio), a60_leds_gpio);
- a60_setup_common();
-}
-
-MIPS_MACHINE(ATH79_MACH_A60, "A60", "OpenMesh A60", a60_setup);
+++ /dev/null
-/*
- * ALFA Network AP120C board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2016 Luka Perkov <luka@openwrt.org>
- *
- * 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 <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/spi/spi.h>
-#include <linux/ar8216_platform.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-ap9x-pci.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define ALFA_AP120C_GPIO_LED 0
-
-#define ALFA_AP120C_GPIO_BUTTON_WIFI 16
-
-#define ALFA_AP120C_GPIO_WATCH_DOG 20
-
-#define ALFA_AP120C_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ALFA_AP120C_KEYS_DEBOUNCE_INTERVAL (3 * ALFA_AP120C_KEYS_POLL_INTERVAL)
-
-#define ALFA_AP120C_MAC_OFFSET 0x1002
-#define ALFA_AP120C_CAL0_OFFSET 0x1000
-
-static struct gpio_keys_button alfa_ap120c_gpio_keys[] __initdata = {
- {
- .desc = "Wireless button",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = ALFA_AP120C_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ALFA_AP120C_GPIO_BUTTON_WIFI,
- .active_low = 1,
- }
-};
-
-static struct gpio_led alfa_ap120c_leds_gpio[] __initdata = {
- {
- .name = "ap120c:red:wlan",
- .gpio = ALFA_AP120C_GPIO_LED,
- .active_low = 0,
- }
-};
-
-static struct ar8327_pad_cfg ap120c_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data ap120c_ar8327_data = {
- .pad0_cfg = &ap120c_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info ap120c_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &ap120c_ar8327_data,
- },
-};
-
-static struct flash_platform_data flash __initdata = { NULL, NULL, 0 };
-
-#define ALFA_AP120C_LAN_PHYMASK BIT(5)
-#define ALFA_AP120C_MDIO_PHYMASK ALFA_AP120C_LAN_PHYMASK
-
-static void __init alfa_ap120c_init(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac[ETH_ALEN];
-
- struct ath9k_platform_data *pdata;
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(alfa_ap120c_leds_gpio),
- alfa_ap120c_leds_gpio);
- ath79_register_gpio_keys_polled(-1, ALFA_AP120C_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(alfa_ap120c_gpio_keys),
- alfa_ap120c_gpio_keys);
-
- ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN |
- AR71XX_GPIO_FUNC_SPI_CS2_EN);
-
- ath79_register_m25p80_multi(&flash);
-
- ath79_init_mac(mac, art + ALFA_AP120C_MAC_OFFSET, 1);
- ath79_register_wmac(art + ALFA_AP120C_CAL0_OFFSET, mac);
-
- ath79_init_mac(mac, art + ALFA_AP120C_MAC_OFFSET, 2);
- ap91_pci_init(NULL, mac);
- pdata = ap9x_pci_get_wmac_data(0);
- if (!pdata) {
- pr_err("ap120c: unable to get address of wlan data\n");
- return;
- }
- pdata->use_eeprom = true;
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- BIT(15) | BIT(17) | BIT(19) | BIT(21));
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + ALFA_AP120C_MAC_OFFSET, 0);
-
- mdiobus_register_board_info(ap120c_mdio0_info, ARRAY_SIZE(ap120c_mdio0_info));
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = ALFA_AP120C_LAN_PHYMASK;
-
- ath79_eth0_pll_data.pll_1000 = 0x42000000;
- ath79_eth0_pll_data.pll_10 = 0x00001313;
-
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_ALFA_AP120C, "ALFA-AP120C", "ALFA Network AP120C",
- alfa_ap120c_init);
+++ /dev/null
-/*
- * ALFA Network AP96 board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/init.h>
-#include <linux/bitops.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/mmc/host.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/mmc_spi.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-spi.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define ALFA_AP96_GPIO_PCIE_RESET 2
-#define ALFA_AP96_GPIO_SIM_DETECT 3
-#define ALFA_AP96_GPIO_MICROSD_CD 4
-#define ALFA_AP96_GPIO_PCIE_W_DISABLE 5
-
-#define ALFA_AP96_GPIO_BUTTON_RESET 11
-
-#define ALFA_AP96_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ALFA_AP96_KEYS_DEBOUNCE_INTERVAL (3 * ALFA_AP96_KEYS_POLL_INTERVAL)
-
-static struct gpio_keys_button alfa_ap96_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ALFA_AP96_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ALFA_AP96_GPIO_BUTTON_RESET,
- .active_low = 1,
- }
-};
-
-static struct mmc_spi_platform_data alfa_ap96_mmc_data = {
- .flags = MMC_SPI_USE_CD_GPIO,
- .cd_gpio = ALFA_AP96_GPIO_MICROSD_CD,
- .cd_debounce = 1,
- .caps = MMC_CAP_NEEDS_POLL,
- .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
-};
-
-static struct spi_board_info alfa_ap96_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- }, {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 25000000,
- .modalias = "mmc_spi",
- .platform_data = &alfa_ap96_mmc_data,
- }, {
- .bus_num = 0,
- .chip_select = 2,
- .max_speed_hz = 6250000,
- .modalias = "rtc-pcf2123",
- },
-};
-
-static struct ath79_spi_platform_data alfa_ap96_spi_data = {
- .bus_num = 0,
- .num_chipselect = 3,
-};
-
-static void __init alfa_ap96_gpio_setup(void)
-{
- ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN |
- AR71XX_GPIO_FUNC_SPI_CS2_EN);
-
- gpio_request(ALFA_AP96_GPIO_MICROSD_CD, "microSD CD");
- gpio_direction_input(ALFA_AP96_GPIO_MICROSD_CD);
- gpio_request(ALFA_AP96_GPIO_PCIE_RESET, "PCIe reset");
- gpio_direction_output(ALFA_AP96_GPIO_PCIE_RESET, 1);
- gpio_request(ALFA_AP96_GPIO_PCIE_W_DISABLE, "PCIe write disable");
- gpio_direction_output(ALFA_AP96_GPIO_PCIE_W_DISABLE, 1);
-}
-
-#define ALFA_AP96_WAN_PHYMASK BIT(4)
-#define ALFA_AP96_LAN_PHYMASK BIT(5)
-#define ALFA_AP96_MDIO_PHYMASK (ALFA_AP96_LAN_PHYMASK | ALFA_AP96_WAN_PHYMASK)
-
-static void __init alfa_ap96_init(void)
-{
- alfa_ap96_gpio_setup();
-
- ath79_register_mdio(0, ~ALFA_AP96_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = ALFA_AP96_WAN_PHYMASK;
- ath79_eth1_pll_data.pll_1000 = 0x110000;
-
- ath79_register_eth(0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = ALFA_AP96_LAN_PHYMASK;
- ath79_eth1_pll_data.pll_1000 = 0x110000;
-
- ath79_register_eth(1);
-
- ath79_register_pci();
- ath79_register_spi(&alfa_ap96_spi_data, alfa_ap96_spi_info,
- ARRAY_SIZE(alfa_ap96_spi_info));
-
- ath79_register_gpio_keys_polled(-1, ALFA_AP96_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(alfa_ap96_gpio_keys),
- alfa_ap96_gpio_keys);
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_ALFA_AP96, "ALFA-AP96", "ALFA Network AP96",
- alfa_ap96_init);
+++ /dev/null
-/*
- * ALFA Network N2/N5 board support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "machtypes.h"
-
-#define ALFA_NX_GPIO_LED_2 17
-#define ALFA_NX_GPIO_LED_3 16
-#define ALFA_NX_GPIO_LED_5 12
-#define ALFA_NX_GPIO_LED_6 8
-#define ALFA_NX_GPIO_LED_7 6
-#define ALFA_NX_GPIO_LED_8 7
-
-#define ALFA_NX_GPIO_BTN_RESET 11
-
-#define ALFA_NX_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ALFA_NX_KEYS_DEBOUNCE_INTERVAL (3 * ALFA_NX_KEYS_POLL_INTERVAL)
-
-#define ALFA_NX_MAC0_OFFSET 0
-#define ALFA_NX_MAC1_OFFSET 6
-#define ALFA_NX_CALDATA_OFFSET 0x1000
-
-static struct gpio_keys_button alfa_nx_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ALFA_NX_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ALFA_NX_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct gpio_led alfa_nx_leds_gpio[] __initdata = {
- {
- .name = "alfa:green:led_2",
- .gpio = ALFA_NX_GPIO_LED_2,
- .active_low = 1,
- }, {
- .name = "alfa:green:led_3",
- .gpio = ALFA_NX_GPIO_LED_3,
- .active_low = 1,
- }, {
- .name = "alfa:red:led_5",
- .gpio = ALFA_NX_GPIO_LED_5,
- .active_low = 1,
- }, {
- .name = "alfa:amber:led_6",
- .gpio = ALFA_NX_GPIO_LED_6,
- .active_low = 1,
- }, {
- .name = "alfa:green:led_7",
- .gpio = ALFA_NX_GPIO_LED_7,
- .active_low = 1,
- }, {
- .name = "alfa:green:led_8",
- .gpio = ALFA_NX_GPIO_LED_8,
- .active_low = 1,
- }
-};
-
-static void __init alfa_nx_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_JTAG_DISABLE,
- AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(0, ARRAY_SIZE(alfa_nx_leds_gpio),
- alfa_nx_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ALFA_NX_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(alfa_nx_gpio_keys),
- alfa_nx_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + ALFA_NX_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr,
- art + ALFA_NX_MAC1_OFFSET, 0);
-
- /* WAN port */
- ath79_register_eth(0);
- /* LAN port */
- ath79_register_eth(1);
-
- ap91_pci_init(art + ALFA_NX_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_ALFA_NX, "ALFA-NX", "ALFA Network N2/N5",
- alfa_nx_setup);
+++ /dev/null
-/*
- * Allnet ALL0258N support
- *
- * Copyright (C) 2011 Daniel Golle <dgolle@allnet.de>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "machtypes.h"
-
-/* found via /sys/gpio/... try and error */
-#define ALL0258N_GPIO_BTN_RESET 1
-#define ALL0258N_GPIO_LED_RSSIHIGH 13
-#define ALL0258N_GPIO_LED_RSSIMEDIUM 15
-#define ALL0258N_GPIO_LED_RSSILOW 14
-
-/* defaults taken from others machs */
-#define ALL0258N_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ALL0258N_KEYS_DEBOUNCE_INTERVAL (3 * ALL0258N_KEYS_POLL_INTERVAL)
-
-/* showed up in the original firmware's bootlog */
-#define ALL0258N_SEC_PHYMASK BIT(3)
-
-static struct gpio_led all0258n_leds_gpio[] __initdata = {
- {
- .name = "all0258n:green:rssihigh",
- .gpio = ALL0258N_GPIO_LED_RSSIHIGH,
- .active_low = 1,
- }, {
- .name = "all0258n:yellow:rssimedium",
- .gpio = ALL0258N_GPIO_LED_RSSIMEDIUM,
- .active_low = 1,
- }, {
- .name = "all0258n:red:rssilow",
- .gpio = ALL0258N_GPIO_LED_RSSILOW,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button all0258n_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ALL0258N_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ALL0258N_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init all0258n_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f7f0000);
- u8 *ee = (u8 *) KSEG1ADDR(0x1f7f1000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(all0258n_leds_gpio),
- all0258n_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ALL0258N_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(all0258n_gpio_keys),
- all0258n_gpio_keys);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- ath79_eth1_data.phy_mask = ALL0258N_SEC_PHYMASK;
-
- ath79_register_mdio(0, 0x0);
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ap91_pci_init(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ALL0258N, "ALL0258N", "Allnet ALL0258N",
- all0258n_setup);
+++ /dev/null
-/*
- * Allnet ALL0315N support
- *
- * Copyright (C) 2012 Daniel Golle <dgolle@allnet.de>
- *
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-m25p80.h"
-#include "dev-leds-gpio.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define ALL0315N_GPIO_BTN_RESET 0
-#define ALL0315N_GPIO_LED_RSSIHIGH 14
-#define ALL0315N_GPIO_LED_RSSIMEDIUM 15
-#define ALL0315N_GPIO_LED_RSSILOW 16
-
-#define ALL0315N_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ALL0315N_KEYS_DEBOUNCE_INTERVAL (3 * ALL0315N_KEYS_POLL_INTERVAL)
-
-static struct gpio_led all0315n_leds_gpio[] __initdata = {
- {
- .name = "all0315n:green:rssihigh",
- .gpio = ALL0315N_GPIO_LED_RSSIHIGH,
- .active_low = 1,
- }, {
- .name = "all0315n:yellow:rssimedium",
- .gpio = ALL0315N_GPIO_LED_RSSIMEDIUM,
- .active_low = 1,
- }, {
- .name = "all0315n:red:rssilow",
- .gpio = ALL0315N_GPIO_LED_RSSILOW,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button all0315n_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ALL0315N_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ALL0315N_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init all0315n_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1ffc0000);
- u8 *ee = (u8 *) KSEG1ADDR(0x1ffc1000);
-
- ath79_register_m25p80(NULL);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(all0315n_leds_gpio),
- all0315n_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ALL0315N_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(all0315n_gpio_keys),
- all0315n_gpio_keys);
-
- ap9x_pci_setup_wmac_led_pin(0, 1);
- ap91_pci_init(ee, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_ALL0315N, "ALL0315N", "Allnet ALL0315N",
- all0315n_setup);
+++ /dev/null
-/*
- * Bitmain Antminer S1 board support
- *
- * Copyright (C) 2015 L. D. Pinney <ldpinney@gmail.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "dev-usb.h"
-
-#define ANTMINER_S1_GPIO_BTN_RESET 11
-
-#define ANTMINER_S1_GPIO_LED_SYSTEM 23
-#define ANTMINER_S1_GPIO_LED_WLAN 0
-#define ANTMINER_S1_GPIO_USB_POWER 26
-
-#define ANTMINER_S1_KEYSPOLL_INTERVAL 20 /* msecs */
-#define ANTMINER_S1_KEYSDEBOUNCE_INTERVAL (3 * ANTMINER_S1_KEYSPOLL_INTERVAL)
-
-static const char *ANTMINER_S1_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data ANTMINER_S1_flash_data = {
- .part_probes = ANTMINER_S1_part_probes,
-};
-
-static struct gpio_led ANTMINER_S1_leds_gpio[] __initdata = {
- {
- .name = "antminer-s1:green:system",
- .gpio = ANTMINER_S1_GPIO_LED_SYSTEM,
- .active_low = 0,
- },{
- .name = "antminer-s1:green:wlan",
- .gpio = ANTMINER_S1_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button ANTMINER_S1_GPIO_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ANTMINER_S1_KEYSDEBOUNCE_INTERVAL,
- .gpio = ANTMINER_S1_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init antminer_s1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ANTMINER_S1_leds_gpio),
- ANTMINER_S1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ANTMINER_S1_KEYSPOLL_INTERVAL,
- ARRAY_SIZE(ANTMINER_S1_GPIO_keys),
- ANTMINER_S1_GPIO_keys);
-
- gpio_request_one(ANTMINER_S1_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_register_m25p80(&ANTMINER_S1_flash_data);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ANTMINER_S1, "ANTMINER-S1",
- "Antminer-S1", antminer_s1_setup);
+++ /dev/null
-/*
- * Bitmain Antminer S3 board support
- *
- * Copyright (C) 2015 L. D. Pinney <ldpinney@gmail.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "dev-usb.h"
-
-#define ANTMINER_S3_GPIO_LED_WLAN 0
-#define ANTMINER_S3_GPIO_LED_SYSTEM 17
-#define ANTMINER_S3_GPIO_LED_LAN 22
-#define ANTMINER_S3_GPIO_USB_POWER 26
-
-#define ANTMINER_S3_GPIO_BTN_RESET 11
-
-#define ANTMINER_S3_KEYSPOLL_INTERVAL 88 /* msecs */
-#define ANTMINER_S3_KEYSDEBOUNCE_INTERVAL (3 * ANTMINER_S3_KEYSPOLL_INTERVAL)
-
-static const char *ANTMINER_S3_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data ANTMINER_S3_flash_data = {
- .part_probes = ANTMINER_S3_part_probes,
-};
-
-static struct gpio_led ANTMINER_S3_leds_gpio[] __initdata = {
- {
- .name = "antminer-s3:green:wlan",
- .gpio = ANTMINER_S3_GPIO_LED_WLAN,
- .active_low = 0,
- },{
- .name = "antminer-s3:green:system",
- .gpio = ANTMINER_S3_GPIO_LED_SYSTEM,
- .active_low = 0,
- },{
- .name = "antminer-s3:yellow:lan",
- .gpio = ANTMINER_S3_GPIO_LED_LAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button ANTMINER_S3_GPIO_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ANTMINER_S3_KEYSDEBOUNCE_INTERVAL,
- .gpio = ANTMINER_S3_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init antminer_s3_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ANTMINER_S3_leds_gpio),
- ANTMINER_S3_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ANTMINER_S3_KEYSPOLL_INTERVAL,
- ARRAY_SIZE(ANTMINER_S3_GPIO_keys),
- ANTMINER_S3_GPIO_keys);
-
- gpio_request_one(ANTMINER_S3_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_register_m25p80(&ANTMINER_S3_flash_data);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ANTMINER_S3, "ANTMINER-S3",
- "Antminer-S3", antminer_s3_setup);
+++ /dev/null
-/*
- * Bitmain Antrouter R1 board support
- *
- * Copyright (C) 2015 L. D. Pinney <ldpinney@gmail.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "dev-usb.h"
-
-#define ANTROUTER_R1_GPIO_BTN_RESET 11
-
-#define ANTROUTER_R1_GPIO_LED_WLAN 0
-#define ANTROUTER_R1_GPIO_LED_BTC 22
-#define ANTROUTER_R1_GPIO_USB_POWER 18
-
-#define ANTROUTER_R1_KEYSPOLL_INTERVAL 44 /* msecs */
-#define ANTROUTER_R1_KEYSDEBOUNCE_INTERVAL (4 * ANTROUTER_R1_KEYSPOLL_INTERVAL)
-
-static const char *ANTROUTER_R1_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data ANTROUTER_R1_flash_data = {
- .part_probes = ANTROUTER_R1_part_probes,
-};
-
-static struct gpio_led ANTROUTER_R1_leds_gpio[] __initdata = {
- {
- .name = "antrouter-r1:green:wlan",
- .gpio = ANTROUTER_R1_GPIO_LED_WLAN,
- .active_low = 0,
- },{
- .name = "antrouter-r1:green:system",
- .gpio = ANTROUTER_R1_GPIO_LED_BTC,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button ANTROUTER_R1_GPIO_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ANTROUTER_R1_KEYSDEBOUNCE_INTERVAL,
- .gpio = ANTROUTER_R1_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init antrouter_r1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ANTROUTER_R1_leds_gpio),
- ANTROUTER_R1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ANTROUTER_R1_KEYSPOLL_INTERVAL,
- ARRAY_SIZE(ANTROUTER_R1_GPIO_keys),
- ANTROUTER_R1_GPIO_keys);
-
- gpio_request_one(ANTROUTER_R1_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_register_m25p80(&ANTROUTER_R1_flash_data);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ANTROUTER_R1, "ANTROUTER-R1",
- "Antrouter-R1", antrouter_r1_setup);
+++ /dev/null
-/*
- * ALFA Network AP121F board support
- *
- * Copyright (C) 2017 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define AP121F_GPIO_LED_LAN 17
-#define AP121F_GPIO_LED_VPN 27
-#define AP121F_GPIO_LED_WLAN 0
-
-#define AP121F_GPIO_MICROSD_EN 26
-
-#define AP121F_GPIO_BTN_RESET 12
-#define AP121F_GPIO_BTN_SWITCH 21
-
-#define AP121F_KEYS_POLL_INTERVAL 20
-#define AP121F_KEYS_DEBOUNCE_INTERVAL (3 * AP121F_KEYS_POLL_INTERVAL)
-
-#define AP121F_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led ap121f_leds_gpio[] __initdata = {
- {
- .name = "ap121f:green:lan",
- .gpio = AP121F_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "ap121f:green:vpn",
- .gpio = AP121F_GPIO_LED_VPN,
- .active_low = 1,
- }, {
- .name = "ap121f:green:wlan",
- .gpio = AP121F_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button ap121f_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP121F_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP121F_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "switch",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = AP121F_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP121F_GPIO_BTN_SWITCH,
- .active_low = 0,
- },
-};
-
-static void __init ap121f_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f040000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* LAN */
- ath79_register_mdio(0, 0x0);
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap121f_leds_gpio),
- ap121f_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, AP121F_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap121f_gpio_keys),
- ap121f_gpio_keys);
-
- gpio_request_one(AP121F_GPIO_MICROSD_EN,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "microSD enable");
-
- ath79_register_wmac(art + AP121F_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_AP121F, "AP121F", "ALFA Network AP121F", ap121f_setup);
+++ /dev/null
-/*
- * Atheros AP132 reference board support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2013 Embedded Wireless GmbH <info@embeddedwireless.de>
- *
- * 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/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define AP132_GPIO_LED_USB 4
-#define AP132_GPIO_LED_WLAN_5G 12
-#define AP132_GPIO_LED_WLAN_2G 13
-#define AP132_GPIO_LED_STATUS_RED 14
-#define AP132_GPIO_LED_WPS_RED 15
-
-#define AP132_GPIO_BTN_WPS 16
-
-#define AP132_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP132_KEYS_DEBOUNCE_INTERVAL (3 * AP132_KEYS_POLL_INTERVAL)
-
-#define AP132_MAC0_OFFSET 0
-#define AP132_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led ap132_leds_gpio[] __initdata = {
- {
- .name = "ap132:red:status",
- .gpio = AP132_GPIO_LED_STATUS_RED,
- .active_low = 1,
- },
- {
- .name = "ap132:red:wps",
- .gpio = AP132_GPIO_LED_WPS_RED,
- .active_low = 1,
- },
- {
- .name = "ap132:red:wlan-2g",
- .gpio = AP132_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "ap132:red:usb",
- .gpio = AP132_GPIO_LED_USB,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ap132_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AP132_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP132_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg ap132_ar8327_pad0_cfg;
-
-static struct ar8327_platform_data ap132_ar8327_data = {
- .pad0_cfg = &ap132_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info ap132_mdio1_info[] = {
- {
- .bus_id = "ag71xx-mdio.1",
- .mdio_addr = 0,
- .platform_data = &ap132_ar8327_data,
- },
-};
-
-static void __init ap132_mdio_setup(void)
-{
- void __iomem *base;
- u32 t;
-
-#define GPIO_IN_ENABLE3_ADDRESS 0x0050
-#define GPIO_IN_ENABLE3_MII_GE1_MDI_MASK 0x00ff0000
-#define GPIO_IN_ENABLE3_MII_GE1_MDI_LSB 16
-#define GPIO_IN_ENABLE3_MII_GE1_MDI_SET(x) (((x) << GPIO_IN_ENABLE3_MII_GE1_MDI_LSB) & GPIO_IN_ENABLE3_MII_GE1_MDI_MASK)
-#define GPIO_OUT_FUNCTION4_ADDRESS 0x003c
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_MASK 0xff000000
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_LSB 24
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_SET(x) (((x) << GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_LSB) & GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_MASK)
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_MASK 0x0000ff00
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_LSB 8
-#define GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_SET(x) (((x) << GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_LSB) & GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_MASK)
-
- base = ioremap(AR71XX_GPIO_BASE, AR71XX_GPIO_SIZE);
-
- t = __raw_readl(base + GPIO_IN_ENABLE3_ADDRESS);
- t &= ~GPIO_IN_ENABLE3_MII_GE1_MDI_MASK;
- t |= GPIO_IN_ENABLE3_MII_GE1_MDI_SET(19);
- __raw_writel(t, base + GPIO_IN_ENABLE3_ADDRESS);
-
-
- __raw_writel(__raw_readl(base + AR71XX_GPIO_REG_OE) & ~(1 << 19), base + AR71XX_GPIO_REG_OE);
-
- __raw_writel(__raw_readl(base + AR71XX_GPIO_REG_OE) & ~(1 << 17), base + AR71XX_GPIO_REG_OE);
-
-
- t = __raw_readl(base + GPIO_OUT_FUNCTION4_ADDRESS);
- t &= ~(GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_MASK | GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_MASK);
- t |= GPIO_OUT_FUNCTION4_ENABLE_GPIO_19_SET(0x20) | GPIO_OUT_FUNCTION4_ENABLE_GPIO_17_SET(0x21);
- __raw_writel(t, base + GPIO_OUT_FUNCTION4_ADDRESS);
-
- iounmap(base);
-
-}
-
-static void __init ap132_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap132_leds_gpio),
- ap132_leds_gpio);
- ath79_register_gpio_keys_polled(-1, AP132_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap132_gpio_keys),
- ap132_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_wmac(art + AP132_WMAC_CALDATA_OFFSET, NULL);
-
- /* GMAC0 of the AR8327 switch is connected to GMAC1 via SGMII */
- ap132_ar8327_pad0_cfg.mode = AR8327_PAD_MAC_SGMII;
- ap132_ar8327_pad0_cfg.sgmii_delay_en = true;
-
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ap132_mdio_setup();
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, art + AP132_MAC0_OFFSET, 0);
-
- mdiobus_register_board_info(ap132_mdio1_info,
- ARRAY_SIZE(ap132_mdio1_info));
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_mask = BIT(0);
- ath79_eth1_data.mii_bus_dev = &ath79_mdio1_device.dev;
-
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP132, "AP132",
- "Atheros AP132 reference board",
- ap132_setup);
-
+++ /dev/null
-/*
- * Atheros AP143 reference board support
- *
- * Copyright (c) 2013-2015 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 <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define AP143_GPIO_LED_WLAN 12
-#define AP143_GPIO_LED_WPS 13
-#define AP143_GPIO_LED_STATUS 13
-
-#define AP143_GPIO_LED_WAN 4
-#define AP143_GPIO_LED_LAN1 16
-#define AP143_GPIO_LED_LAN2 15
-#define AP143_GPIO_LED_LAN3 14
-#define AP143_GPIO_LED_LAN4 11
-
-#define AP143_GPIO_BTN_WPS 17
-
-#define AP143_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP143_KEYS_DEBOUNCE_INTERVAL (3 * AP143_KEYS_POLL_INTERVAL)
-
-#define AP143_MAC0_OFFSET 0
-#define AP143_MAC1_OFFSET 6
-#define AP143_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led ap143_leds_gpio[] __initdata = {
- {
- .name = "ap143:green:status",
- .gpio = AP143_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "ap143:green:wlan",
- .gpio = AP143_GPIO_LED_WLAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ap143_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AP143_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP143_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static void __init ap143_gpio_led_setup(void)
-{
- ath79_gpio_direction_select(AP143_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(AP143_GPIO_LED_LAN1, true);
- ath79_gpio_direction_select(AP143_GPIO_LED_LAN2, true);
- ath79_gpio_direction_select(AP143_GPIO_LED_LAN3, true);
- ath79_gpio_direction_select(AP143_GPIO_LED_LAN4, true);
-
- ath79_gpio_output_select(AP143_GPIO_LED_WAN,
- QCA953X_GPIO_OUT_MUX_LED_LINK5);
- ath79_gpio_output_select(AP143_GPIO_LED_LAN1,
- QCA953X_GPIO_OUT_MUX_LED_LINK1);
- ath79_gpio_output_select(AP143_GPIO_LED_LAN2,
- QCA953X_GPIO_OUT_MUX_LED_LINK2);
- ath79_gpio_output_select(AP143_GPIO_LED_LAN3,
- QCA953X_GPIO_OUT_MUX_LED_LINK3);
- ath79_gpio_output_select(AP143_GPIO_LED_LAN4,
- QCA953X_GPIO_OUT_MUX_LED_LINK4);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap143_leds_gpio),
- ap143_leds_gpio);
- ath79_register_gpio_keys_polled(-1, AP143_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap143_gpio_keys),
- ap143_gpio_keys);
-}
-
-static void __init ap143_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ap143_gpio_led_setup();
-
- ath79_register_usb();
-
- ath79_wmac_set_led_pin(AP143_GPIO_LED_WLAN);
- ath79_register_wmac(art + AP143_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + AP143_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + AP143_MAC1_OFFSET, 0);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP143, "AP143", "Qualcomm Atheros AP143 reference board",
- ap143_setup);
+++ /dev/null
-/*
- * Atheros AP147 reference board support
- *
- * Copyright (C) 2014 Matthias Schiffer <mschiffer@universe-factory.net>
- * Copyright (C) 2015 Sven Eckelmann <sven@open-mesh.com>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define AP147_GPIO_LED_WAN 4
-#define AP147_GPIO_LED_LAN1 16
-#define AP147_GPIO_LED_LAN2 15
-#define AP147_GPIO_LED_LAN3 14
-#define AP147_GPIO_LED_LAN4 11
-#define AP147_GPIO_LED_STATUS 13
-#define AP147_GPIO_LED_WLAN_2G 12
-
-#define AP147_GPIO_BTN_WPS 17
-
-#define AP147_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP147_KEYS_DEBOUNCE_INTERVAL (3 * AP147_KEYS_POLL_INTERVAL)
-
-#define AP147_MAC0_OFFSET 0x1000
-
-static struct gpio_led ap147_leds_gpio[] __initdata = {
- {
- .name = "ap147:green:status",
- .gpio = AP147_GPIO_LED_STATUS,
- .active_low = 1,
- }, {
- .name = "ap147:green:wlan-2g",
- .gpio = AP147_GPIO_LED_WLAN_2G,
- .active_low = 1,
- }, {
- .name = "ap147:green:lan1",
- .gpio = AP147_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "ap147:green:lan2",
- .gpio = AP147_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "ap147:green:lan3",
- .gpio = AP147_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "ap147:green:lan4",
- .gpio = AP147_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "ap147:green:wan",
- .gpio = AP147_GPIO_LED_WAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button ap147_gpio_keys[] __initdata = {
- {
- .desc = "wps button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AP147_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP147_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static void __init ap147_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap147_leds_gpio),
- ap147_leds_gpio);
- ath79_register_gpio_keys_polled(-1, AP147_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap147_gpio_keys),
- ap147_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_pci();
-
- ath79_register_wmac(art + AP147_MAC0_OFFSET, NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 0);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 1);
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP147_010, "AP147-010", "Atheros AP147-010 reference board", ap147_setup);
+++ /dev/null
-
-/*
- * Qualcomm Atheros AP152 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 AP152_GPIO_LED_USB0 7
-#define AP152_GPIO_LED_USB1 8
-
-#define AP152_GPIO_BTN_RESET 2
-#define AP152_GPIO_BTN_WPS 1
-#define AP152_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP152_KEYS_DEBOUNCE_INTERVAL (3 * AP152_KEYS_POLL_INTERVAL)
-
-#define AP152_MAC0_OFFSET 0
-#define AP152_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led ap152_leds_gpio[] __initdata = {
- {
- .name = "ap152:green:usb0",
- .gpio = AP152_GPIO_LED_USB0,
- .active_low = 1,
- },
- {
- .name = "ap152:green:usb1",
- .gpio = AP152_GPIO_LED_USB1,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button ap152_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AP152_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP152_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP152_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP152_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg ap152_ar8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data ap152_ar8337_data = {
- .pad0_cfg = &ap152_ar8337_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info ap152_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &ap152_ar8337_data,
- },
-};
-
-static void __init ap152_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap152_leds_gpio),
- ap152_leds_gpio);
- ath79_register_gpio_keys_polled(-1, AP152_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap152_gpio_keys),
- ap152_gpio_keys);
-
- ath79_register_usb();
-
- platform_device_register(&ath79_mdio0_device);
-
- mdiobus_register_board_info(ap152_mdio0_info,
- ARRAY_SIZE(ap152_mdio0_info));
-
- ath79_register_wmac(art + AP152_WMAC_CALDATA_OFFSET, NULL);
- ath79_register_pci();
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + AP152_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_AP152, "AP152", "Qualcomm Atheros AP152 reference board",
- ap152_setup);
+++ /dev/null
-/*
- * Rockeetech AP531B0 11ng wireless AP board support
- *
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2016 Shuanglin Liu <roboidler@gmail.com>
- *
- * 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 <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-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-#include "dev-ap9x-pci.h"
-
-#define AP531B0_GPIO_LED_WLAN 12
-#define AP531B0_GPIO_LED_STATUS 11
-
-#define AP531B0_GPIO_RST_BTN 17
-
-#define AP531B0_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP531B0_KEYS_DEBOUNCE_INTERVAL (3 * AP531B0_KEYS_POLL_INTERVAL)
-
-#define AP531B0_WMAC_CALDATA_OFFSET 0x1000
-
-
-static struct gpio_led ap531b0_leds_gpio[] __initdata = {
- {
- .name = "ap531b0:green:status",
- .gpio = AP531B0_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "ap531b0:green:wlan",
- .gpio = AP531B0_GPIO_LED_WLAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ap531b0_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP531B0_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP531B0_GPIO_RST_BTN,
- .active_low = 1,
- },
-};
-
-
-static void __init ap531b0_gpio_led_setup(void)
-{
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap531b0_leds_gpio),
- ap531b0_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, AP531B0_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap531b0_gpio_keys),
- ap531b0_gpio_keys);
-}
-
-static void __init ap531b0_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 *pmac;
-
- ath79_register_m25p80(NULL);
- ap531b0_gpio_led_setup();
- ath79_register_usb();
- ath79_register_pci();
-
- ath79_register_mdio(0, 0x0);
-
- pmac = art + AP531B0_WMAC_CALDATA_OFFSET + 2;
- ath79_init_mac(ath79_eth0_data.mac_addr, pmac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, pmac, 2);
-
- ath79_register_wmac(art + AP531B0_WMAC_CALDATA_OFFSET, pmac);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP531B0, "AP531B0", "Rockeetech AP531B0",
- ap531b0_setup);
+++ /dev/null
-/*
- * Support for YunCore boards:
- * - AP80Q/AP90Q
- * - CPE830
- *
- * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-/* AP90Q */
-#define AP90Q_GPIO_LED_WAN 4
-#define AP90Q_GPIO_LED_WLAN 12
-#define AP90Q_GPIO_LED_LAN 16
-
-#define AP90Q_GPIO_BTN_RESET 17
-
-#define AP90Q_KEYS_POLL_INTERVAL 20
-#define AP90Q_KEYS_DEBOUNCE_INTERVAL (3 * AP90Q_KEYS_POLL_INTERVAL)
-
-static struct gpio_led ap90q_leds_gpio[] __initdata = {
- {
- .name = "ap90q:green:lan",
- .gpio = AP90Q_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "ap90q:green:wan",
- .gpio = AP90Q_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "ap90q:green:wlan",
- .gpio = AP90Q_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button ap90q_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP90Q_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP90Q_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* CPE830 */
-#define CPE830_GPIO_LED_LINK4 0
-#define CPE830_GPIO_LED_LINK1 1
-#define CPE830_GPIO_LED_LINK2 2
-#define CPE830_GPIO_LED_LINK3 3
-#define CPE830_GPIO_LED_WAN 4
-#define CPE830_GPIO_LED_WLAN 12
-#define CPE830_GPIO_LED_LAN 16
-
-#define CPE830_GPIO_BTN_RESET 17
-
-static struct gpio_led cpe830_leds_gpio[] __initdata = {
- {
- .name = "cpe830:green:lan",
- .gpio = CPE830_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:wan",
- .gpio = CPE830_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:wlan",
- .gpio = CPE830_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:link1",
- .gpio = CPE830_GPIO_LED_LINK1,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:link2",
- .gpio = CPE830_GPIO_LED_LINK2,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:link3",
- .gpio = CPE830_GPIO_LED_LINK3,
- .active_low = 1,
- },
- {
- .name = "cpe830:green:link4",
- .gpio = CPE830_GPIO_LED_LINK4,
- .active_low = 1,
- },
-};
-
-static void __init ap90q_cpe830_common_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask |= BIT(4);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_wmac(art, NULL);
-
- /* For LED on GPIO4 */
- ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_gpio_direction_select(AP90Q_GPIO_LED_LAN, true);
- ath79_gpio_direction_select(AP90Q_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(AP90Q_GPIO_LED_WLAN, true);
-
- /* Mute LEDs on boot */
- gpio_set_value(AP90Q_GPIO_LED_LAN, 1);
- gpio_set_value(AP90Q_GPIO_LED_WAN, 1);
-
- ath79_gpio_output_select(AP90Q_GPIO_LED_LAN, 0);
- ath79_gpio_output_select(AP90Q_GPIO_LED_WAN, 0);
- ath79_gpio_output_select(AP90Q_GPIO_LED_WLAN, 0);
-
- ath79_register_gpio_keys_polled(-1, AP90Q_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap90q_gpio_keys),
- ap90q_gpio_keys);
-}
-
-static void __init ap90q_setup(void)
-{
- ap90q_cpe830_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap90q_leds_gpio),
- ap90q_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP90Q, "AP90Q", "YunCore AP80Q/AP90Q", ap90q_setup);
-
-static void __init cpe830_setup(void)
-{
- ap90q_cpe830_common_setup();
-
- ath79_gpio_direction_select(CPE830_GPIO_LED_LINK1, true);
- ath79_gpio_direction_select(CPE830_GPIO_LED_LINK2, true);
- ath79_gpio_direction_select(CPE830_GPIO_LED_LINK3, true);
- ath79_gpio_direction_select(CPE830_GPIO_LED_LINK4, true);
-
- /* Mute LEDs on boot */
- gpio_set_value(CPE830_GPIO_LED_LINK1, 1);
- gpio_set_value(CPE830_GPIO_LED_LINK2, 1);
- gpio_set_value(CPE830_GPIO_LED_LINK3, 1);
- gpio_set_value(CPE830_GPIO_LED_LINK4, 1);
-
- ath79_gpio_output_select(CPE830_GPIO_LED_LINK1, 0);
- ath79_gpio_output_select(CPE830_GPIO_LED_LINK2, 0);
- ath79_gpio_output_select(CPE830_GPIO_LED_LINK3, 0);
- ath79_gpio_output_select(CPE830_GPIO_LED_LINK4, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe830_leds_gpio),
- cpe830_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CPE830, "CPE830", "YunCore CPE830", cpe830_setup);
+++ /dev/null
-/*
- * ALFA Network AP91-5G board support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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 "machtypes.h"
-
-#define AP91_5G_GPIO_LED_LAN 17
-#define AP91_5G_GPIO_LED_SIGNAL1 12
-#define AP91_5G_GPIO_LED_SIGNAL2 8
-#define AP91_5G_GPIO_LED_SIGNAL3 6
-#define AP91_5G_GPIO_LED_SIGNAL4 7
-
-#define AP91_5G_GPIO_WDT_EN 1
-#define AP91_5G_GPIO_WDT_IN 0
-
-#define AP91_5G_GPIO_BTN_RESET 11
-
-#define AP91_5G_KEYS_POLL_INTERVAL 20
-#define AP91_5G_KEYS_DEBOUNCE_INTERVAL (3 * AP91_5G_KEYS_POLL_INTERVAL)
-
-#define AP91_5G_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led ap91_5g_leds_gpio[] __initdata = {
- {
- .name = "ap91-5g:green:lan",
- .gpio = AP91_5G_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "ap91-5g:red:signal1",
- .gpio = AP91_5G_GPIO_LED_SIGNAL1,
- .active_low = 1,
- }, {
- .name = "ap91-5g:orange:signal2",
- .gpio = AP91_5G_GPIO_LED_SIGNAL2,
- .active_low = 1,
- }, {
- .name = "ap91-5g:green:signal3",
- .gpio = AP91_5G_GPIO_LED_SIGNAL3,
- .active_low = 1,
- }, {
- .name = "ap91-5g:green:signal4",
- .gpio = AP91_5G_GPIO_LED_SIGNAL4,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button ap91_5g_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP91_5G_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP91_5G_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init ap91_5g_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_JTAG_DISABLE,
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- gpio_set_value(AP91_5G_GPIO_LED_LAN, 1);
- gpio_set_value(AP91_5G_GPIO_LED_SIGNAL3, 1);
- gpio_set_value(AP91_5G_GPIO_LED_SIGNAL4, 1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap91_5g_leds_gpio),
- ap91_5g_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, AP91_5G_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap91_5g_gpio_keys),
- ap91_5g_gpio_keys);
-
- gpio_request_one(AP91_5G_GPIO_WDT_IN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT input");
-
- gpio_request_one(AP91_5G_GPIO_WDT_EN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT enable");
-
- ap91_pci_init(art + AP91_5G_WMAC_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP91_5G, "AP91-5G", "ALFA Network AP91-5G",
- ap91_5g_setup);
+++ /dev/null
-/*
- * Atheros AP96 board support
- *
- * Copyright (C) 2009 Marco Porsch
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2010 Atheros Communications
- *
- * 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 <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/mach-ath79/ath79.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-usb.h"
-#include "machtypes.h"
-
-#define AP96_GPIO_LED_12_GREEN 0
-#define AP96_GPIO_LED_3_GREEN 1
-#define AP96_GPIO_LED_2_GREEN 2
-#define AP96_GPIO_LED_WPS_GREEN 4
-#define AP96_GPIO_LED_5_GREEN 5
-#define AP96_GPIO_LED_4_ORANGE 6
-
-/* Reset button - next to the power connector */
-#define AP96_GPIO_BTN_RESET 3
-/* WPS button - next to a led on right */
-#define AP96_GPIO_BTN_WPS 8
-
-#define AP96_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AP96_KEYS_DEBOUNCE_INTERVAL (3 * AP96_KEYS_POLL_INTERVAL)
-
-#define AP96_WMAC0_MAC_OFFSET 0x120c
-#define AP96_WMAC1_MAC_OFFSET 0x520c
-#define AP96_CALDATA0_OFFSET 0x1000
-#define AP96_CALDATA1_OFFSET 0x5000
-
-/*
- * AP96 has 12 unlabeled leds in the front; these are numbered from 1 to 12
- * below (from left to right on the board). Led 1 seems to be on whenever the
- * board is powered. Led 11 shows LAN link activity actity. Led 3 is orange;
- * others are green.
- *
- * In addition, there is one led next to a button on the right side for WPS.
- */
-static struct gpio_led ap96_leds_gpio[] __initdata = {
- {
- .name = "ap96:green:led2",
- .gpio = AP96_GPIO_LED_2_GREEN,
- .active_low = 1,
- }, {
- .name = "ap96:green:led3",
- .gpio = AP96_GPIO_LED_3_GREEN,
- .active_low = 1,
- }, {
- .name = "ap96:orange:led4",
- .gpio = AP96_GPIO_LED_4_ORANGE,
- .active_low = 1,
- }, {
- .name = "ap96:green:led5",
- .gpio = AP96_GPIO_LED_5_GREEN,
- .active_low = 1,
- }, {
- .name = "ap96:green:led12",
- .gpio = AP96_GPIO_LED_12_GREEN,
- .active_low = 1,
- }, { /* next to a button on right */
- .name = "ap96:green:wps",
- .gpio = AP96_GPIO_LED_WPS_GREEN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ap96_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AP96_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP96_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AP96_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AP96_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-#define AP96_WAN_PHYMASK 0x10
-#define AP96_LAN_PHYMASK 0x0f
-
-static void __init ap96_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_mdio(0, ~(AP96_WAN_PHYMASK | AP96_LAN_PHYMASK));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = AP96_LAN_PHYMASK;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = AP96_WAN_PHYMASK;
-
- ath79_eth1_pll_data.pll_1000 = 0x1f000000;
-
- ath79_register_eth(1);
-
- ath79_register_usb();
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ap96_leds_gpio),
- ap96_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, AP96_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ap96_gpio_keys),
- ap96_gpio_keys);
-
- ap94_pci_init(art + AP96_CALDATA0_OFFSET,
- art + AP96_WMAC0_MAC_OFFSET,
- art + AP96_CALDATA1_OFFSET,
- art + AP96_WMAC1_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_AP96, "AP96", "Atheros AP96", ap96_setup);
+++ /dev/null
-/*
- * TP-Link Archer C25 v1 board support
- *
- * Copyright (C) 2017 Ludwig Thomeczek <ledesrc@wxorx.net>
- * based on mach-archer-c60/C59-v1.c
- * Copyright (C) 2016 Henryk Heisig <hyniu@o2.pl>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/gpio.h>
-
-#include "common.h"
-#include "dev-m25p80.h"
-#include "machtypes.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-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/74x164.h>
-
-#define ARCHER_C25_GPIO_SHIFT_OE 21 /* OE, Output Enable */
-#define ARCHER_C25_GPIO_SHIFT_SER 14 /* DS, Data Serial Input */
-#define ARCHER_C25_GPIO_SHIFT_SRCLK 15 /* SHCP, Shift Reg Clock Input */
-#define ARCHER_C25_GPIO_SHIFT_SRCLR 19 /* MR, Master Reset */
-#define ARCHER_C25_GPIO_SHIFT_RCLK 16 /* STCP, Storage Reg Clock Input */
-
-#define ARCHER_C25_74HC_GPIO_BASE 32
-#define ARCHER_C25_74HC_GPIO_LED_WAN_AMBER (ARCHER_C25_74HC_GPIO_BASE + 4)
-#define ARCHER_C25_74HC_GPIO_LED_WAN_GREEN (ARCHER_C25_74HC_GPIO_BASE + 5)
-#define ARCHER_C25_74HC_GPIO_LED_WLAN2 (ARCHER_C25_74HC_GPIO_BASE + 6)
-#define ARCHER_C25_74HC_GPIO_LED_WLAN5 (ARCHER_C25_74HC_GPIO_BASE + 7)
-#define ARCHER_C25_74HC_GPIO_LED_LAN1 (ARCHER_C25_74HC_GPIO_BASE + 0)
-#define ARCHER_C25_74HC_GPIO_LED_LAN2 (ARCHER_C25_74HC_GPIO_BASE + 1)
-#define ARCHER_C25_74HC_GPIO_LED_LAN3 (ARCHER_C25_74HC_GPIO_BASE + 2)
-#define ARCHER_C25_74HC_GPIO_LED_LAN4 (ARCHER_C25_74HC_GPIO_BASE + 3)
-
-#define ARCHER_C25_V1_SSR_BIT_0 0
-#define ARCHER_C25_V1_SSR_BIT_1 1
-#define ARCHER_C25_V1_SSR_BIT_2 2
-#define ARCHER_C25_V1_SSR_BIT_3 3
-#define ARCHER_C25_V1_SSR_BIT_4 4
-#define ARCHER_C25_V1_SSR_BIT_5 5
-#define ARCHER_C25_V1_SSR_BIT_6 6
-#define ARCHER_C25_V1_SSR_BIT_7 7
-
-
-#define ARCHER_C25_V1_KEYS_POLL_INTERVAL 20
-#define ARCHER_C25_V1_KEYS_DEBOUNCE_INTERVAL \
- (3 * ARCHER_C25_V1_KEYS_POLL_INTERVAL)
-
-#define ARCHER_C25_V1_GPIO_BTN_RESET 1
-#define ARCHER_C25_V1_GPIO_BTN_RFKILL 22
-
-#define ARCHER_C25_V1_GPIO_LED_POWER 17
-#define ARCHER_C25_V1_GPIO_LED_WPS 2
-
-#define ARCHER_C25_V1_WMAC_CALDATA_OFFSET 0x1000
-
-static struct spi_gpio_platform_data archer_c25_v1_spi_data = {
- .sck = ARCHER_C25_GPIO_SHIFT_SRCLK,
- .miso = SPI_GPIO_NO_MISO,
- .mosi = ARCHER_C25_GPIO_SHIFT_SER,
- .num_chipselect = 1,
-};
-
-static u8 archer_c25_v1_ssr_initdata[] = {
- BIT(ARCHER_C25_V1_SSR_BIT_7) |
- BIT(ARCHER_C25_V1_SSR_BIT_6) |
- BIT(ARCHER_C25_V1_SSR_BIT_5) |
- BIT(ARCHER_C25_V1_SSR_BIT_4) |
- BIT(ARCHER_C25_V1_SSR_BIT_3) |
- BIT(ARCHER_C25_V1_SSR_BIT_2) |
- BIT(ARCHER_C25_V1_SSR_BIT_1)
-};
-
-static struct gen_74x164_chip_platform_data archer_c25_v1_ssr_data = {
- .base = ARCHER_C25_74HC_GPIO_BASE,
- .num_registers = ARRAY_SIZE(archer_c25_v1_ssr_initdata),
- .init_data = archer_c25_v1_ssr_initdata,
-};
-
-static struct platform_device archer_c25_v1_spi_device = {
- .name = "spi_gpio",
- .id = 1,
- .dev = {
- .platform_data = &archer_c25_v1_spi_data,
- },
-};
-
-static struct spi_board_info archer_c25_v1_spi_info[] = {
- {
- .bus_num = 1,
- .chip_select = 0,
- .max_speed_hz = 10000000,
- .modalias = "74x164",
- .platform_data = &archer_c25_v1_ssr_data,
- .controller_data = (void *) ARCHER_C25_GPIO_SHIFT_RCLK,
- },
-};
-
-static struct gpio_led archer_c25_v1_leds_gpio[] __initdata = {
- {
- .name = "archer-c25-v1:green:power",
- .gpio = ARCHER_C25_V1_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:wps",
- .gpio = ARCHER_C25_V1_GPIO_LED_WPS,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:wlan2g",
- .gpio = ARCHER_C25_74HC_GPIO_LED_WLAN2,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:wlan5g",
- .gpio = ARCHER_C25_74HC_GPIO_LED_WLAN5,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:lan1",
- .gpio = ARCHER_C25_74HC_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:lan2",
- .gpio = ARCHER_C25_74HC_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:lan3",
- .gpio = ARCHER_C25_74HC_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:lan4",
- .gpio = ARCHER_C25_74HC_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:green:wan",
- .gpio = ARCHER_C25_74HC_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- }, {
- .name = "archer-c25-v1:amber:wan",
- .gpio = ARCHER_C25_74HC_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button archer_c25_v1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ARCHER_C25_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C25_V1_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "RFKILL button",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = ARCHER_C25_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C25_V1_GPIO_BTN_RFKILL,
- .active_low = 1,
- },
-};
-
-static void __init archer_c25_v1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f7e0008);
- u8 *art = (u8 *) KSEG1ADDR(0x1f7f0000);
-
- ath79_register_m25p80(NULL);
-
- spi_register_board_info(archer_c25_v1_spi_info,
- ARRAY_SIZE(archer_c25_v1_spi_info));
-
- platform_device_register(&archer_c25_v1_spi_device);
-
- gpio_request_one(ARCHER_C25_GPIO_SHIFT_OE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "LED control");
-
- gpio_request_one(ARCHER_C25_GPIO_SHIFT_SRCLR,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "LED reset");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c25_v1_leds_gpio),
- archer_c25_v1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ARCHER_C25_V1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c25_v1_gpio_keys),
- archer_c25_v1_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_register_wmac(art + ARCHER_C25_V1_WMAC_CALDATA_OFFSET, mac);
- ap91_pci_init(NULL, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C25_V1, "ARCHER-C25-V1", "TP-LINK Archer C25 v1",
- archer_c25_v1_setup);
+++ /dev/null
-/*
- * TP-Link Archer C58/C59 v1 board support
- *
- * Copyright (C) 2017 Henryk Heisig <hyniu@o2.pl>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/gpio.h>
-#include <linux/init.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/74x164.h>
-
-#include "common.h"
-#include "dev-m25p80.h"
-#include "machtypes.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-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-
-#define ARCHER_C59_V1_KEYS_POLL_INTERVAL 20
-#define ARCHER_C59_V1_KEYS_DEBOUNCE_INTERVAL (3 * ARCHER_C59_V1_KEYS_POLL_INTERVAL)
-
-#define ARCHER_C59_V1_GPIO_BTN_RESET 21
-#define ARCHER_C59_V1_GPIO_BTN_RFKILL 2
-#define ARCHER_C59_V1_GPIO_BTN_WPS 1
-
-#define ARCHER_C59_V1_GPIO_USB_POWER 22
-
-#define ARCHER_C59_GPIO_SHIFT_OE 16
-#define ARCHER_C59_GPIO_SHIFT_SER 17
-#define ARCHER_C59_GPIO_SHIFT_SRCLK 18
-#define ARCHER_C59_GPIO_SHIFT_SRCLR 19
-#define ARCHER_C59_GPIO_SHIFT_RCLK 20
-
-#define ARCHER_C59_74HC_GPIO_BASE 32
-#define ARCHER_C59_74HC_GPIO_LED_POWER (ARCHER_C59_74HC_GPIO_BASE + 0)
-#define ARCHER_C59_74HC_GPIO_LED_WLAN2 (ARCHER_C59_74HC_GPIO_BASE + 1)
-#define ARCHER_C59_74HC_GPIO_LED_WLAN5 (ARCHER_C59_74HC_GPIO_BASE + 2)
-#define ARCHER_C59_74HC_GPIO_LED_LAN (ARCHER_C59_74HC_GPIO_BASE + 3)
-#define ARCHER_C59_74HC_GPIO_LED_WAN_GREEN (ARCHER_C59_74HC_GPIO_BASE + 4)
-#define ARCHER_C59_74HC_GPIO_LED_WAN_AMBER (ARCHER_C59_74HC_GPIO_BASE + 5)
-#define ARCHER_C59_74HC_GPIO_LED_WPS (ARCHER_C59_74HC_GPIO_BASE + 6)
-#define ARCHER_C59_74HC_GPIO_LED_USB (ARCHER_C59_74HC_GPIO_BASE + 7)
-
-#define ARCHER_C59_V1_SSR_BIT_0 0
-#define ARCHER_C59_V1_SSR_BIT_1 1
-#define ARCHER_C59_V1_SSR_BIT_2 2
-#define ARCHER_C59_V1_SSR_BIT_3 3
-#define ARCHER_C59_V1_SSR_BIT_4 4
-#define ARCHER_C59_V1_SSR_BIT_5 5
-#define ARCHER_C59_V1_SSR_BIT_6 6
-#define ARCHER_C59_V1_SSR_BIT_7 7
-
-#define ARCHER_C59_V1_WMAC_CALDATA_OFFSET 0x1000
-#define ARCHER_C59_V1_PCI_CALDATA_OFFSET 0x5000
-
-static struct gpio_led archer_c58_v1_leds_gpio[] __initdata = {
- {
- .name = "archer-c58-v1:green:power",
- .gpio = ARCHER_C59_74HC_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:green:wlan2g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN2,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:green:wlan5g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN5,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:green:lan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:green:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:amber:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "archer-c58-v1:green:wps",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WPS,
- .active_low = 1,
- },
-};
-
-static struct gpio_led archer_c59_v1_leds_gpio[] __initdata = {
- {
- .name = "archer-c59-v1:green:power",
- .gpio = ARCHER_C59_74HC_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:wlan2g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN2,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:wlan5g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN5,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:lan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:amber:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:wps",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v1:green:usb",
- .gpio = ARCHER_C59_74HC_GPIO_LED_USB,
- .active_low = 1,
- },
-};
-
-static struct gpio_led archer_c59_v2_leds_gpio[] __initdata = {
- {
- .name = "archer-c59-v2:green:power",
- .gpio = ARCHER_C59_74HC_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:wlan2g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN2,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:wlan5g",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WLAN5,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:lan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:amber:wan",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:wps",
- .gpio = ARCHER_C59_74HC_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "archer-c59-v2:green:usb",
- .gpio = ARCHER_C59_74HC_GPIO_LED_USB,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button archer_c59_v1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ARCHER_C59_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C59_V1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL button",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = ARCHER_C59_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C59_V1_GPIO_BTN_RFKILL,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ARCHER_C59_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C59_V1_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct spi_gpio_platform_data archer_c59_v1_spi_data = {
- .sck = ARCHER_C59_GPIO_SHIFT_SRCLK,
- .miso = SPI_GPIO_NO_MISO,
- .mosi = ARCHER_C59_GPIO_SHIFT_SER,
- .num_chipselect = 1,
-};
-
-static u8 archer_c59_v1_ssr_initdata[] = {
- BIT(ARCHER_C59_V1_SSR_BIT_7) |
- BIT(ARCHER_C59_V1_SSR_BIT_6) |
- BIT(ARCHER_C59_V1_SSR_BIT_5) |
- BIT(ARCHER_C59_V1_SSR_BIT_4) |
- BIT(ARCHER_C59_V1_SSR_BIT_3) |
- BIT(ARCHER_C59_V1_SSR_BIT_2) |
- BIT(ARCHER_C59_V1_SSR_BIT_1)
-};
-
-static struct gen_74x164_chip_platform_data archer_c59_v1_ssr_data = {
- .base = ARCHER_C59_74HC_GPIO_BASE,
- .num_registers = ARRAY_SIZE(archer_c59_v1_ssr_initdata),
- .init_data = archer_c59_v1_ssr_initdata,
-};
-
-static struct platform_device archer_c59_v1_spi_device = {
- .name = "spi_gpio",
- .id = 1,
- .dev = {
- .platform_data = &archer_c59_v1_spi_data,
- },
-};
-
-static struct spi_board_info archer_c59_v1_spi_info[] = {
- {
- .bus_num = 1,
- .chip_select = 0,
- .max_speed_hz = 10000000,
- .modalias = "74x164",
- .platform_data = &archer_c59_v1_ssr_data,
- .controller_data = (void *) ARCHER_C59_GPIO_SHIFT_RCLK,
- },
-};
-
-static void __init archer_c5x_v1_setup(u32 macLocation)
-{
- u8 *mac = (u8 *) KSEG1ADDR(macLocation);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
- spi_register_board_info(archer_c59_v1_spi_info,
- ARRAY_SIZE(archer_c59_v1_spi_info));
- platform_device_register(&archer_c59_v1_spi_device);
-
- ath79_register_gpio_keys_polled(-1, ARCHER_C59_V1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c59_v1_gpio_keys),
- archer_c59_v1_gpio_keys);
-
- ath79_setup_qca956x_eth_cfg(QCA956X_ETH_CFG_SW_PHY_SWAP |
- QCA956X_ETH_CFG_SW_PHY_ADDR_SWAP);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(0);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_register_wmac(art + ARCHER_C59_V1_WMAC_CALDATA_OFFSET, mac);
- ap91_pci_init(art + ARCHER_C59_V1_PCI_CALDATA_OFFSET, NULL);
-
- ath79_register_usb();
- gpio_request_one(ARCHER_C59_V1_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- gpio_request_one(ARCHER_C59_GPIO_SHIFT_OE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "LED control");
- gpio_request_one(ARCHER_C59_GPIO_SHIFT_SRCLR,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "LED reset");
-}
-
-static void __init archer_c58_v1_setup(void)
-{
- archer_c5x_v1_setup(0x1f010008);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c58_v1_leds_gpio),
- archer_c58_v1_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C58_V1, "ARCHER-C58-V1",
- "TP-LINK Archer C58 v1", archer_c58_v1_setup);
-
-static void __init archer_c59_v1_setup(void)
-{
- archer_c5x_v1_setup(0x1f010008);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c59_v1_leds_gpio),
- archer_c59_v1_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C59_V1, "ARCHER-C59-V1",
- "TP-LINK Archer C59 v1", archer_c59_v1_setup);
-
-static void __init archer_c59_v2_setup(void)
-{
- archer_c5x_v1_setup(0x1f030008);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c59_v2_leds_gpio),
- archer_c59_v2_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C59_V2, "ARCHER-C59-V2",
- "TP-LINK Archer C59 v2", archer_c59_v2_setup);
+++ /dev/null
-/*
- * TP-Link Archer C60 v1 board support
- *
- * Copyright (C) 2017 Henryk Heisig <hyniu@o2.pl>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/gpio.h>
-
-#include "common.h"
-#include "dev-m25p80.h"
-#include "machtypes.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-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-
-#define ARCHER_C60_V1_GPIO_LED_LAN 2
-#define ARCHER_C60_V1_GPIO_LED_POWER 16
-#define ARCHER_C60_V1_GPIO_LED_WLAN2 17
-#define ARCHER_C60_V1_GPIO_LED_WLAN5 18
-#define ARCHER_C60_V1_GPIO_LED_WPS 19
-#define ARCHER_C60_V1_GPIO_LED_WAN_GREEN 20
-#define ARCHER_C60_V1_GPIO_LED_WAN_AMBER 22
-
-
-#define ARCHER_C60_V1_KEYS_POLL_INTERVAL 20
-#define ARCHER_C60_V1_KEYS_DEBOUNCE_INTERVAL (3 * ARCHER_C60_V1_KEYS_POLL_INTERVAL)
-
-#define ARCHER_C60_V1_GPIO_BTN_RESET 21
-#define ARCHER_C60_V1_GPIO_BTN_RFKILL 1
-
-
-
-#define ARCHER_C60_V1_WMAC_CALDATA_OFFSET 0x1000
-#define ARCHER_C60_V1_PCI_CALDATA_OFFSET 0x5000
-
-static struct gpio_led archer_c60_v1_leds_gpio[] __initdata = {
- {
- .name = "archer-c60-v1:green:power",
- .gpio = ARCHER_C60_V1_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:green:wlan2g",
- .gpio = ARCHER_C60_V1_GPIO_LED_WLAN2,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:green:wlan5g",
- .gpio = ARCHER_C60_V1_GPIO_LED_WLAN5,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:green:lan",
- .gpio = ARCHER_C60_V1_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:green:wan",
- .gpio = ARCHER_C60_V1_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:amber:wan",
- .gpio = ARCHER_C60_V1_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v1:green:wps",
- .gpio = ARCHER_C60_V1_GPIO_LED_WPS,
- .active_low = 1,
- },
-};
-
-static struct gpio_led archer_c60_v2_leds_gpio[] __initdata = {
- {
- .name = "archer-c60-v2:green:power",
- .gpio = ARCHER_C60_V1_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:green:wlan2g",
- .gpio = ARCHER_C60_V1_GPIO_LED_WLAN2,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:green:wlan5g",
- .gpio = ARCHER_C60_V1_GPIO_LED_WLAN5,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:green:lan",
- .gpio = ARCHER_C60_V1_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:green:wan",
- .gpio = ARCHER_C60_V1_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:amber:wan",
- .gpio = ARCHER_C60_V1_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "archer-c60-v2:green:wps",
- .gpio = ARCHER_C60_V1_GPIO_LED_WPS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button archer_c60_v1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ARCHER_C60_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C60_V1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL button",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = ARCHER_C60_V1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C60_V1_GPIO_BTN_RFKILL,
- .active_low = 1,
- },
-};
-
-static void __init archer_c60_v1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f010008);
- u8 *art = (u8 *) KSEG1ADDR(0x1f7f0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c60_v1_leds_gpio),
- archer_c60_v1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ARCHER_C60_V1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c60_v1_gpio_keys),
- archer_c60_v1_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_register_wmac(art + ARCHER_C60_V1_WMAC_CALDATA_OFFSET, mac);
- ap91_pci_init(art + ARCHER_C60_V1_PCI_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C60_V1, "ARCHER-C60-V1",
- "TP-LINK Archer C60 v1", archer_c60_v1_setup);
-
-static void __init archer_c60_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fb08);
- u8 *art = (u8 *) KSEG1ADDR(0x1f7f0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c60_v2_leds_gpio),
- archer_c60_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ARCHER_C60_V1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c60_v1_gpio_keys),
- archer_c60_v1_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_register_wmac(art + ARCHER_C60_V1_WMAC_CALDATA_OFFSET, mac);
- ap91_pci_init(art + ARCHER_C60_V1_PCI_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C60_V2, "ARCHER-C60-V2",
- "TP-LINK Archer C60 v2", archer_c60_v2_setup);
+++ /dev/null
-
-/*
- * 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 32
-#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 = 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",
- .mdio_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);
+++ /dev/null
-/*
- * Atheros ARCHER_C7 reference board support
- *
- * Copyright (c) 2018 Arvid E. Picciani <aep@exys.org>
- * 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_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_USB 7
-#define ARCHER_C7_GPIO_LED_WPS 1
-#define ARCHER_C7_GPIO_LED_LAN1 8
-#define ARCHER_C7_GPIO_LED_LAN2 17
-#define ARCHER_C7_GPIO_LED_LAN3 16
-#define ARCHER_C7_GPIO_LED_LAN4 15
-#define ARCHER_C7_GPIO_LED_WAN_GREEN 21
-#define ARCHER_C7_GPIO_LED_WAN_AMBER 20
-#define ARCHER_C7_GPIO_LED_WLAN2 14
-#define ARCHER_C7_GPIO_USB_PWR 19
-
-#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 gpio_led archer_c7_v5_leds_gpio[] __initdata = {
- {
- .name = "archer-c7-v5:green:power",
- .gpio = ARCHER_C7_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:wps",
- .gpio = ARCHER_C7_GPIO_LED_WPS,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:wlan2g",
- .gpio = ARCHER_C7_GPIO_LED_WLAN2,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:wlan5g",
- .gpio = ARCHER_C7_GPIO_LED_WLAN5,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:lan1",
- .gpio = ARCHER_C7_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:lan2",
- .gpio = ARCHER_C7_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:lan3",
- .gpio = ARCHER_C7_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:lan4",
- .gpio = ARCHER_C7_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:wan",
- .gpio = ARCHER_C7_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:amber:wan",
- .gpio = ARCHER_C7_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- }, {
- .name = "archer-c7-v5:green:usb",
- .gpio = ARCHER_C7_GPIO_LED_USB,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button archer_c7_v5_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_v5_ar8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data archer_c7_v5_ar8337_data = {
- .pad0_cfg = &archer_c7_v5_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_v5_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &archer_c7_v5_ar8337_data,
- },
-};
-
-
-static void __init archer_c7_v5_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f050000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1f060008);
-
- ath79_register_m25p80(NULL);
-
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_v5_leds_gpio),
- archer_c7_v5_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c7_v5_gpio_keys),
- archer_c7_v5_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_v5_mdio0_info,
- ARRAY_SIZE(archer_c7_v5_mdio0_info));
-
- gpio_request_one(ARCHER_C7_GPIO_USB_PWR,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- 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_V5, "ARCHER-C7-V5", "TP-LINK Archer C7 v5",
- archer_c7_v5_setup);
+++ /dev/null
-/*
- * TP-LINK Archer C5/C7/TL-WDR4900 v2 board support
- *
- * Copyright (c) 2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2014 施康成 <tenninjas@tenninjas.ca>
- * Copyright (c) 2014 Imre Kaloz <kaloz@openwrt.org>
- *
- * Based on the Qualcomm Atheros AP135/AP136 reference board support code
- * Copyright (c) 2012 Qualcomm Atheros
- *
- * 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/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define ARCHER_C7_GPIO_LED_WLAN2G 12
-#define ARCHER_C7_GPIO_LED_SYSTEM 14
-#define ARCHER_C7_GPIO_LED_QSS 15
-#define ARCHER_C7_GPIO_LED_WLAN5G 17
-#define ARCHER_C7_GPIO_LED_USB1 18
-#define ARCHER_C7_GPIO_LED_USB2 19
-
-#define ARCHER_C7_GPIO_BTN_RFKILL 23
-#define ARCHER_C7_V2_GPIO_BTN_RFKILL 23
-#define ARCHER_C7_GPIO_BTN_RESET 16
-
-#define ARCHER_C7_GPIO_USB1_POWER 22
-#define ARCHER_C7_GPIO_USB2_POWER 21
-
-#define ARCHER_C7_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ARCHER_C7_KEYS_DEBOUNCE_INTERVAL (3 * ARCHER_C7_KEYS_POLL_INTERVAL)
-
-#define ARCHER_C7_WMAC_CALDATA_OFFSET 0x1000
-#define ARCHER_C7_PCIE_CALDATA_OFFSET 0x5000
-
-static const char *archer_c7_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data archer_c7_flash_data = {
- .part_probes = archer_c7_part_probes,
-};
-
-static struct gpio_led archer_c7_leds_gpio[] __initdata = {
- {
- .name = "tp-link:green:qss",
- .gpio = ARCHER_C7_GPIO_LED_QSS,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:system",
- .gpio = ARCHER_C7_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:wlan2g",
- .gpio = ARCHER_C7_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:wlan5g",
- .gpio = ARCHER_C7_GPIO_LED_WLAN5G,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:usb1",
- .gpio = ARCHER_C7_GPIO_LED_USB1,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:usb2",
- .gpio = ARCHER_C7_GPIO_LED_USB2,
- .active_low = 1,
- },
-};
-
-static struct gpio_led wdr4900_leds_gpio[] __initdata = {
- {
- .name = "tp-link:blue:qss",
- .gpio = ARCHER_C7_GPIO_LED_QSS,
- .active_low = 1,
- },
- {
- .name = "tp-link:blue:system",
- .gpio = ARCHER_C7_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "tp-link:blue:wlan2g",
- .gpio = ARCHER_C7_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:usb1",
- .gpio = ARCHER_C7_GPIO_LED_USB1,
- .active_low = 1,
- },
- {
- .name = "tp-link:green:usb2",
- .gpio = ARCHER_C7_GPIO_LED_USB2,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button archer_c7_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C7_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL switch",
- .type = EV_SW,
- .code = KEY_RFKILL,
- .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C7_GPIO_BTN_RFKILL,
- },
-};
-
-static struct gpio_keys_button archer_c7_v2_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C7_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL switch",
- .type = EV_SW,
- .code = KEY_RFKILL,
- .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C7_V2_GPIO_BTN_RFKILL,
- },
-};
-
-static struct gpio_keys_button wdr4900_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ARCHER_C7_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ARCHER_C7_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static const struct ar8327_led_info archer_c7_leds_ar8327[] = {
- AR8327_LED_INFO(PHY0_0, HW, "tp-link:green:wan"),
- AR8327_LED_INFO(PHY1_0, HW, "tp-link:green:lan1"),
- AR8327_LED_INFO(PHY2_0, HW, "tp-link:green:lan2"),
- AR8327_LED_INFO(PHY3_0, HW, "tp-link:green:lan3"),
- AR8327_LED_INFO(PHY4_0, HW, "tp-link:green:lan4"),
-};
-
-/* GMAC0 of the AR8327 switch is connected to the QCA9558 SoC via SGMII */
-static struct ar8327_pad_cfg archer_c7_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-/* GMAC6 of the AR8327 switch is connected to the QCA9558 SoC via RGMII */
-static struct ar8327_pad_cfg archer_c7_ar8327_pad6_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_led_cfg archer_c7_ar8327_led_cfg = {
- .led_ctrl0 = 0xc737c737,
- .led_ctrl1 = 0x00000000,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x0030c300,
- .open_drain = false,
-};
-
-static struct ar8327_platform_data archer_c7_ar8327_data = {
- .pad0_cfg = &archer_c7_ar8327_pad0_cfg,
- .pad6_cfg = &archer_c7_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &archer_c7_ar8327_led_cfg,
- .num_leds = ARRAY_SIZE(archer_c7_leds_ar8327),
- .leds = archer_c7_leds_ar8327,
-};
-
-static struct mdio_board_info archer_c7_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &archer_c7_ar8327_data,
- },
-};
-
-static void __init common_setup(bool pcie_slot)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
- u8 tmpmac2[ETH_ALEN];
-
- ath79_register_m25p80(&archer_c7_flash_data);
-
- if (pcie_slot) {
- ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, mac);
- ath79_register_pci();
- } else {
- ath79_init_mac(tmpmac, mac, -1);
- ath79_register_wmac(art + ARCHER_C7_WMAC_CALDATA_OFFSET, tmpmac);
-
- ath79_init_mac(tmpmac2, mac, -2);
- ap9x_pci_setup_wmac_led_pin(0, 0);
- ap91_pci_init(art + ARCHER_C7_PCIE_CALDATA_OFFSET, tmpmac2);
- }
-
- mdiobus_register_board_info(archer_c7_mdio0_info,
- ARRAY_SIZE(archer_c7_mdio0_info));
- ath79_register_mdio(0, 0x0);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* GMAC0 is connected to the RMGII interface */
- 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 = 0x56000000;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_eth(1);
-
- gpio_request_one(ARCHER_C7_GPIO_USB1_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB1 power");
- gpio_request_one(ARCHER_C7_GPIO_USB2_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB2 power");
- ath79_register_usb();
-}
-
-static void __init archer_c5_setup(void)
-{
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c7_gpio_keys),
- archer_c7_gpio_keys);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
- archer_c7_leds_gpio);
- common_setup(true);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C5, "ARCHER-C5", "TP-LINK Archer C5",
- archer_c5_setup);
-
-static void __init archer_c7_setup(void)
-{
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c7_gpio_keys),
- archer_c7_gpio_keys);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
- archer_c7_leds_gpio);
- common_setup(true);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C7, "ARCHER-C7", "TP-LINK Archer C7",
- archer_c7_setup);
-
-static void __init archer_c7_v2_setup(void)
-{
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(archer_c7_v2_gpio_keys),
- archer_c7_v2_gpio_keys);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(archer_c7_leds_gpio),
- archer_c7_leds_gpio);
- common_setup(true);
-}
-
-MIPS_MACHINE(ATH79_MACH_ARCHER_C7_V2, "ARCHER-C7-V2", "TP-LINK Archer C7",
- archer_c7_v2_setup);
-
-static void __init tl_wdr4900_v2_setup(void)
-{
- ath79_register_gpio_keys_polled(-1, ARCHER_C7_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(wdr4900_gpio_keys),
- wdr4900_gpio_keys);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(wdr4900_leds_gpio),
- wdr4900_leds_gpio);
- common_setup(false);
-}
-
-MIPS_MACHINE(ATH79_MACH_TL_WDR4900_V2, "TL-WDR4900-v2", "TP-LINK TL-WDR4900 v2",
- tl_wdr4900_v2_setup)
-
+++ /dev/null
-/*
- * Arduino Yun support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2015 Hauke Mehrtens <hauke@hauke-m.de>
- *
- * 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 "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-#include <linux/gpio.h>
-#include "common.h"
-
-// Uncomment to have reset on gpio18 instead of gipo7
-#define DS2_B
-
-#define DS_GPIO_LED_WLAN 0
-#define DS_GPIO_LED_USB 1
-
-#define DS_GPIO_OE 21
-#define DS_GPIO_AVR_RESET 18
-
-// Maintained to have the console in the previous version of DS2 working
-#define DS_GPIO_AVR_RESET_DS2 7
-
-#define DS_GPIO_OE2 22
-#define DS_GPIO_UART_ENA 23
-#define DS_GPIO_CONF_BTN 20
-
-#define DS_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DS_KEYS_DEBOUNCE_INTERVAL (3 * DS_KEYS_POLL_INTERVAL)
-
-#define DS_MAC0_OFFSET 0x0000
-#define DS_MAC1_OFFSET 0x0006
-#define DS_CALDATA_OFFSET 0x1000
-#define DS_WMAC_MAC_OFFSET 0x1002
-
-
-static struct gpio_led ds_leds_gpio[] __initdata = {
- {
- .name = "arduino:white:usb",
- .gpio = DS_GPIO_LED_USB,
- .active_low = 0,
- },
- {
- .name = "arduino:blue:wlan",
- .gpio = DS_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button ds_gpio_keys[] __initdata = {
- {
- .desc = "configuration button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DS_GPIO_CONF_BTN,
- .active_low = 1,
- },
-};
-
-static void __init ds_common_setup(void)
-{
- static u8 mac[6];
-
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- ath79_register_m25p80(NULL);
-
- if (ar93xx_wmac_read_mac_address(mac)) {
- ath79_register_wmac(NULL, NULL);
- } else {
- ath79_register_wmac(art + DS_CALDATA_OFFSET,
- art + DS_WMAC_MAC_OFFSET);
- memcpy(mac, art + DS_WMAC_MAC_OFFSET, sizeof(mac));
- }
-
- mac[3] |= 0x08;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
-
- mac[3] &= 0xF7;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-}
-
-static void __init ds_setup(void)
-{
- u32 t;
-
- ds_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ds_leds_gpio),
- ds_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DS_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ds_gpio_keys),
- ds_gpio_keys);
- ath79_register_usb();
-
- /* use the swtich_led directly form sysfs */
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN);
-
- //Disable the Function for some pins to have GPIO functionality active
- // GPIO6-7-8 and GPIO11
- ath79_gpio_function_setup(AR933X_GPIO_FUNC_JTAG_DISABLE | AR933X_GPIO_FUNC_I2S_MCK_EN, 0);
-
- ath79_gpio_function2_setup(AR933X_GPIO_FUNC2_JUMPSTART_DISABLE, 0);
-
- printk("Setting DogStick2 GPIO\n");
-
- t = ath79_reset_rr(AR933X_RESET_REG_BOOTSTRAP);
- t |= AR933X_BOOTSTRAP_MDIO_GPIO_EN;
- ath79_reset_wr(AR933X_RESET_REG_BOOTSTRAP, t);
-
- // Put the avr reset to high
- if (gpio_request_one(DS_GPIO_AVR_RESET_DS2,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED, "OE-1") != 0)
- printk("Error setting GPIO OE\n");
- gpio_unexport(DS_GPIO_AVR_RESET_DS2);
- gpio_free(DS_GPIO_AVR_RESET_DS2);
-
- // enable OE of level shifter
- if (gpio_request_one(DS_GPIO_OE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED, "OE-1") != 0)
- printk("Error setting GPIO OE\n");
-
- if (gpio_request_one(DS_GPIO_UART_ENA,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED, "UART-ENA") != 0)
- printk("Error setting GPIO Uart Enable\n");
-
- // enable OE of level shifter
- if (gpio_request_one(DS_GPIO_OE2,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED, "OE-2") != 0)
- printk("Error setting GPIO OE2\n");
-}
-
-MIPS_MACHINE(ATH79_MACH_ARDUINO_YUN, "Yun", "Arduino Yun", ds_setup);
+++ /dev/null
-/*
- * AzureWave AW-NR580 board support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-m25p80.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define AW_NR580_GPIO_LED_READY_RED 0
-#define AW_NR580_GPIO_LED_WLAN 1
-#define AW_NR580_GPIO_LED_READY_GREEN 2
-#define AW_NR580_GPIO_LED_WPS_GREEN 4
-#define AW_NR580_GPIO_LED_WPS_AMBER 5
-
-#define AW_NR580_GPIO_BTN_WPS 3
-#define AW_NR580_GPIO_BTN_RESET 11
-
-#define AW_NR580_KEYS_POLL_INTERVAL 20 /* msecs */
-#define AW_NR580_KEYS_DEBOUNCE_INTERVAL (3 * AW_NR580_KEYS_POLL_INTERVAL)
-
-static struct gpio_led aw_nr580_leds_gpio[] __initdata = {
- {
- .name = "aw-nr580:red:ready",
- .gpio = AW_NR580_GPIO_LED_READY_RED,
- .active_low = 0,
- }, {
- .name = "aw-nr580:green:ready",
- .gpio = AW_NR580_GPIO_LED_READY_GREEN,
- .active_low = 0,
- }, {
- .name = "aw-nr580:green:wps",
- .gpio = AW_NR580_GPIO_LED_WPS_GREEN,
- .active_low = 0,
- }, {
- .name = "aw-nr580:amber:wps",
- .gpio = AW_NR580_GPIO_LED_WPS_AMBER,
- .active_low = 0,
- }, {
- .name = "aw-nr580:green:wlan",
- .gpio = AW_NR580_GPIO_LED_WLAN,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button aw_nr580_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = AW_NR580_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AW_NR580_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = AW_NR580_KEYS_DEBOUNCE_INTERVAL,
- .gpio = AW_NR580_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static const char *aw_nr580_part_probes[] = {
- "RedBoot",
- NULL,
-};
-
-static struct flash_platform_data aw_nr580_flash_data = {
- .part_probes = aw_nr580_part_probes,
-};
-
-static void __init aw_nr580_setup(void)
-{
- ath79_register_mdio(0, 0x0);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
-
- ath79_register_pci();
-
- ath79_register_m25p80(&aw_nr580_flash_data);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(aw_nr580_leds_gpio),
- aw_nr580_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, AW_NR580_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(aw_nr580_gpio_keys),
- aw_nr580_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_AW_NR580, "AW-NR580", "AzureWave AW-NR580",
- aw_nr580_setup);
+++ /dev/null
-/*
- * Buffalo BHR-4GRV2 board support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2016 FUKAUMI Naoki <naobsd@gmail.com>
- *
- * Based on mach-ap136.c and mach-wzr-450hp2.c
- *
- * 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/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "machtypes.h"
-
-#define BHR_4GRV2_GPIO_LED_VPN_RED 3
-#define BHR_4GRV2_GPIO_LED_VPN_GREEN 18
-#define BHR_4GRV2_GPIO_LED_POWER_GREEN 19
-#define BHR_4GRV2_GPIO_LED_DIAG_RED 20
-
-#define BHR_4GRV2_GPIO_BTN_RESET 17
-#define BHR_4GRV2_GPIO_BTN_ECO 21
-
-#define BHR_4GRV2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define BHR_4GRV2_KEYS_DEBOUNCE_INTERVAL (3 * BHR_4GRV2_KEYS_POLL_INTERVAL)
-#define BHR_4GRV2_MAC0_OFFSET 0
-#define BHR_4GRV2_MAC1_OFFSET 6
-
-static struct gpio_led bhr_4grv2_leds_gpio[] __initdata = {
- {
- .name = "buffalo:red:vpn",
- .gpio = BHR_4GRV2_GPIO_LED_VPN_RED,
- .active_low = 1,
- },
- {
- .name = "buffalo:green:vpn",
- .gpio = BHR_4GRV2_GPIO_LED_VPN_GREEN,
- .active_low = 1,
- },
- {
- .name = "buffalo:green:power",
- .gpio = BHR_4GRV2_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- },
- {
- .name = "buffalo:red:diag",
- .gpio = BHR_4GRV2_GPIO_LED_DIAG_RED,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button bhr_4grv2_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = BHR_4GRV2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = BHR_4GRV2_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "ECO button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = BHR_4GRV2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = BHR_4GRV2_GPIO_BTN_ECO,
- .active_low = 1,
- },
-};
-
-/* GMAC0 of the AR8327 switch is connected to GMAC1 via SGMII */
-static struct ar8327_pad_cfg bhr_4grv2_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-/* GMAC6 of the AR8327 switch is connected to GMAC0 via RGMII */
-static struct ar8327_pad_cfg bhr_4grv2_ar8327_pad6_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data bhr_4grv2_ar8327_data = {
- .pad0_cfg = &bhr_4grv2_ar8327_pad0_cfg,
- .pad6_cfg = &bhr_4grv2_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info bhr_4grv2_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &bhr_4grv2_ar8327_data,
- },
-};
-
-static void __init bhr_4grv2_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(bhr_4grv2_leds_gpio),
- bhr_4grv2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, BHR_4GRV2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(bhr_4grv2_gpio_keys),
- bhr_4grv2_gpio_keys);
-
- mdiobus_register_board_info(bhr_4grv2_mdio0_info,
- ARRAY_SIZE(bhr_4grv2_mdio0_info));
- ath79_register_mdio(0, 0x0);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* GMAC0 is connected to the RGMII interface */
- 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 = 0x56000000;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + BHR_4GRV2_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, art + BHR_4GRV2_MAC1_OFFSET, 0);
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_BHR_4GRV2, "BHR-4GRV2",
- "Buffalo BHR-4GRV2", bhr_4grv2_setup);
+++ /dev/null
-/*
- * BHU BXU2000n-2 A1 board support
- *
- * Copyright (C) 2013 Terry Yang <yangbo@bhunetworks.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define BHU_BXU2000N2_A1_GPIO_LED_WLAN 13
-#define BHU_BXU2000N2_A1_GPIO_LED_WAN 19
-#define BHU_BXU2000N2_A1_GPIO_LED_LAN 21
-#define BHU_BXU2000N2_A1_GPIO_LED_SYSTEM 14
-
-#define BHU_BXU2000N2_A1_GPIO_BTN_RESET 17
-
-#define BHU_BXU2000N2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define BHU_BXU2000N2_KEYS_DEBOUNCE_INTERVAL \
- (3 * BHU_BXU2000N2_KEYS_POLL_INTERVAL)
-
-static const char *bhu_bxu2000n2_part_probes[] = {
- "cmdlinepart",
- NULL,
-};
-
-static struct flash_platform_data bhu_bxu2000n2_flash_data = {
- .part_probes = bhu_bxu2000n2_part_probes,
-};
-
-static struct gpio_led bhu_bxu2000n2_a1_leds_gpio[] __initdata = {
- {
- .name = "bhu:green:status",
- .gpio = BHU_BXU2000N2_A1_GPIO_LED_SYSTEM,
- .active_low = 1,
- }, {
- .name = "bhu:green:lan",
- .gpio = BHU_BXU2000N2_A1_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "bhu:green:wan",
- .gpio = BHU_BXU2000N2_A1_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "bhu:green:wlan",
- .gpio = BHU_BXU2000N2_A1_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button bhu_bxu2000n2_a1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = BHU_BXU2000N2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = BHU_BXU2000N2_A1_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init bhu_ap123_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_m25p80(&bhu_bxu2000n2_flash_data);
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
-
- /* GMAC0 is connected to the PHY4 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch. Only use PHY3 */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.phy_mask = BIT(3);
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, ee+2);
-}
-
-static void __init bhu_bxu2000n2_a1_setup(void)
-{
- bhu_ap123_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(bhu_bxu2000n2_a1_leds_gpio),
- bhu_bxu2000n2_a1_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, BHU_BXU2000N2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(bhu_bxu2000n2_a1_gpio_keys),
- bhu_bxu2000n2_a1_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_BHU_BXU2000N2_A1, "BXU2000n-2-A1",
- "BHU BXU2000n-2 rev. A1",
- bhu_bxu2000n2_a1_setup);
-
+++ /dev/null
-/*
- * Smart Electronics Black Swift board support
- *
- * Copyright (C) 2014 Dmitriy Zherebkov dzh@black-swift.com
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define BSB_GPIO_LED_SYS 27
-
-#define BSB_GPIO_BTN_RESET 11
-
-#define BSB_KEYS_POLL_INTERVAL 20 /* msecs */
-#define BSB_KEYS_DEBOUNCE_INTERVAL (3 * BSB_KEYS_POLL_INTERVAL)
-
-#define BSB_MAC_OFFSET 0x0000
-#define BSB_CALDATA_OFFSET 0x1000
-
-static struct gpio_led bsb_leds_gpio[] __initdata = {
- {
- .name = "bsb:red:sys",
- .gpio = BSB_GPIO_LED_SYS,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button bsb_gpio_keys[] __initdata = {
- {
- .desc = "reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = BSB_KEYS_DEBOUNCE_INTERVAL,
- .gpio = BSB_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init bsb_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false,false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(bsb_leds_gpio),
- bsb_leds_gpio);
- ath79_register_gpio_keys_polled(-1, BSB_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(bsb_gpio_keys),
- bsb_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_m25p80(NULL);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + BSB_MAC_OFFSET, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + BSB_MAC_OFFSET, 2);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(art + BSB_CALDATA_OFFSET,
- art + BSB_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_BSB, "BSB", "Smart Electronics Black Swift board",
- bsb_setup);
-
+++ /dev/null
-/*
- * AirTight Networks C-55 board support
- *
- * Copyright (C) 2014-2015 Chris Blake <chrisrblake93@gmail.com>
- *
- * Based on Senao CAP4200AG board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#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(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);
+++ /dev/null
-/*
- * AirTight Networks C-60 board support
- *
- * Copyright (C) 2016 Christian Lamparter <chunkeey@googlemail.com>
- *
- * Based on AirTight Networks C-55 board support
- *
- * Copyright (C) 2014-2015 Chris Blake <chrisrblake93@gmail.com>
- *
- * 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 <linux/version.h>
-#include <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/platform_device.h>
-#include <linux/platform/ar934x_nfc.h>
-#include <linux/ar8216_platform.h>
-#include <linux/ath9k_platform.h>
-#include <linux/version.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#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 "dev-usb.h"
-#include "dev-nfc.h"
-#include "machtypes.h"
-
-#define C60_GPIO_LED_PWR_AMBER 11
-#define C60_GPIO_LED_WLAN2_GREEN 12
-#define C60_GPIO_LED_WLAN2_AMBER 13
-#define C60_GPIO_LED_PWR_GREEN 16
-
-#define C60_GPIO_BTN_RESET 17
-
-/* GPIOs of the AR9300 PCIe chip */
-#define C60_GPIO_WMAC_LED_WLAN1_AMBER 0
-#define C60_GPIO_WMAC_LED_WLAN1_GREEN 3
-
-#define C60_KEYS_POLL_INTERVAL 20 /* msecs */
-#define C60_KEYS_DEBOUNCE_INTERVAL (3 * C60_KEYS_POLL_INTERVAL)
-
-#define C60_ART_ADDR 0x1f7f0000
-#define C60_ART_SIZE 0xffff
-#define C60_MAC_OFFSET 0
-#define C60_WMAC_CALDATA_OFFSET 0x1000
-#define C60_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led c60_leds_gpio[] __initdata = {
- {
- .name = "c-60:amber:pwr",
- .gpio = C60_GPIO_LED_PWR_AMBER,
- .active_low = 1,
- },
- {
- .name = "c-60:green:pwr",
- .gpio = C60_GPIO_LED_PWR_GREEN,
- .active_low = 1,
- },
- {
- .name = "c-60:green:wlan2",
- .gpio = C60_GPIO_LED_WLAN2_GREEN,
- .active_low = 1,
- },
- {
- .name = "c-60:amber:wlan2",
- .gpio = C60_GPIO_LED_WLAN2_AMBER,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button c60_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = C60_KEYS_DEBOUNCE_INTERVAL,
- .gpio = C60_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg c60_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data c60_ar8327_data = {
- .pad0_cfg = &c60_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- }
-};
-
-static struct mdio_board_info c60_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &c60_ar8327_data,
- },
-};
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
-static struct nand_ecclayout c60_nand_ecclayout = {
- .eccbytes = 7,
- .eccpos = { 4, 8, 9, 10, 13, 14, 15 },
- .oobavail = 9,
- .oobfree = { { 0, 3 }, { 6, 2 }, { 11, 2 }, }
-};
-
-#else
-
-static int c60_ooblayout_ecc(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 4;
- oobregion->length = 1;
- return 0;
- case 1:
- oobregion->offset = 8;
- oobregion->length = 3;
- return 0;
- case 2:
- oobregion->offset = 13;
- oobregion->length = 3;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static int c60_ooblayout_free(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 0;
- oobregion->length = 3;
- return 0;
- case 1:
- oobregion->offset = 6;
- oobregion->length = 2;
- return 0;
- case 2:
- oobregion->offset = 11;
- oobregion->length = 2;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static const struct mtd_ooblayout_ops c60_nand_ecclayout_ops = {
- .ecc = c60_ooblayout_ecc,
- .free = c60_ooblayout_free,
-};
-#endif /* < 4.6 */
-
-static int c60_nand_scan_fixup(struct mtd_info *mtd)
-{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- struct nand_chip *chip = mtd->priv;
-#else
- struct nand_chip *chip = mtd_to_nand(mtd);
-#endif
-
- chip->ecc.size = 512;
- chip->ecc.strength = 4;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- chip->ecc.layout = &c60_nand_ecclayout;
-#else
- mtd_set_ooblayout(mtd, &c60_nand_ecclayout_ops);
-#endif
- return 0;
-}
-
-static struct gpio_led c60_wmac0_leds_gpio[] = {
- {
- .name = "c-60:amber:wlan1",
- .gpio = C60_GPIO_WMAC_LED_WLAN1_AMBER,
- .active_low = 1,
- },
- {
- .name = "c-60:green:wlan1",
- .gpio = C60_GPIO_WMAC_LED_WLAN1_GREEN,
- .active_low = 1,
- },
-};
-
-static void __init c60_setup(void)
-{
- u8 tmpmac[6];
- u8 *art = (u8 *) KSEG1ADDR(C60_ART_ADDR);
-
- /* NAND */
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_SOFT_BCH);
- ath79_nfc_set_scan_fixup(c60_nand_scan_fixup);
- ath79_register_nfc();
-
- /* SPI Storage*/
- ath79_register_m25p80(NULL);
-
- /* AR8327 Switch Ethernet */
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- mdiobus_register_board_info(c60_mdio0_info,
- ARRAY_SIZE(c60_mdio0_info));
-
- ath79_register_mdio(0, 0x0);
-
- /* GMAC0 is connected to an AR8327N switch */
- ath79_init_mac(ath79_eth0_data.mac_addr, art + C60_MAC_OFFSET, 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_register_leds_gpio(-1, ARRAY_SIZE(c60_leds_gpio),
- c60_leds_gpio);
- ath79_register_gpio_keys_polled(-1, C60_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(c60_gpio_keys),
- c60_gpio_keys);
- ap9x_pci_setup_wmac_leds(0, c60_wmac0_leds_gpio,
- ARRAY_SIZE(c60_wmac0_leds_gpio));
- /* USB */
- ath79_register_usb();
-
- /* WiFi */
- ath79_init_mac(tmpmac, art + C60_MAC_OFFSET, 1);
- ap91_pci_init(art + C60_PCIE_CALDATA_OFFSET, tmpmac);
- ath79_init_mac(tmpmac, art + C60_MAC_OFFSET, 2);
- ath79_register_wmac(art + C60_WMAC_CALDATA_OFFSET, tmpmac);
-}
-MIPS_MACHINE(ATH79_MACH_C60, "C-60", "AirTight Networks C-60",
- c60_setup);
+++ /dev/null
-/*
- * PowerCloud Systems CAP324 board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2012-2013 PowerCloud Systems
- * Copyright (C) 2015 Daniel Dickinson
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define CAP324_GPIO_LED_POWER_GREEN 12
-#define CAP324_GPIO_LED_POWER_AMBER 13
-#define CAP324_GPIO_LED_LAN_GREEN 14
-#define CAP324_GPIO_LED_LAN_AMBER 15
-#define CAP324_GPIO_LED_WLAN_GREEN 18
-#define CAP324_GPIO_LED_WLAN_AMBER 19
-
-#define CAP324_GPIO_BTN_RESET 17
-
-#define CAP324_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CAP324_KEYS_DEBOUNCE_INTERVAL (3 * CAP324_KEYS_POLL_INTERVAL)
-
-#define CAP324_MAC_OFFSET 0
-#define CAP324_WMAC_CALDATA_OFFSET 0x1000
-#define CAP324_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led cap324_leds_gpio[] __initdata = {
- {
- .name = "pcs:green:power",
- .gpio = CAP324_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- },
- {
- .name = "pcs:amber:power",
- .gpio = CAP324_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "pcs:green:lan",
- .gpio = CAP324_GPIO_LED_LAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "pcs:amber:lan",
- .gpio = CAP324_GPIO_LED_LAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "pcs:green:wlan",
- .gpio = CAP324_GPIO_LED_WLAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "pcs:amber:wlan",
- .gpio = CAP324_GPIO_LED_WLAN_AMBER,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cap324_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CAP324_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CAP324_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init cap324_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_gpio_output_select(CAP324_GPIO_LED_LAN_GREEN,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(CAP324_GPIO_LED_LAN_AMBER,
- AR934X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cap324_leds_gpio),
- cap324_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CAP324_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cap324_gpio_keys),
- cap324_gpio_keys);
-
- ath79_init_mac(mac, art + CAP324_MAC_OFFSET, -2);
- ath79_wmac_disable_2ghz();
- ath79_register_wmac(art + CAP324_WMAC_CALDATA_OFFSET, mac);
-
- ath79_init_mac(mac, art + CAP324_MAC_OFFSET, -1);
- ap91_pci_init(art + CAP324_PCIE_CALDATA_OFFSET, mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + CAP324_MAC_OFFSET, 0);
-
- /* GMAC0 is connected to an external PHY */
- 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);
-}
-
-MIPS_MACHINE(ATH79_MACH_CAP324, "CAP324", "PowerCloud Systems CAP324",
- cap324_setup);
+++ /dev/null
-/*
- * Senao CAP4200AG board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define CAP4200AG_GPIO_LED_PWR_GREEN 12
-#define CAP4200AG_GPIO_LED_PWR_AMBER 13
-#define CAP4200AG_GPIO_LED_LAN_GREEN 14
-#define CAP4200AG_GPIO_LED_LAN_AMBER 15
-#define CAP4200AG_GPIO_LED_WLAN_GREEN 18
-#define CAP4200AG_GPIO_LED_WLAN_AMBER 19
-
-#define CAP4200AG_GPIO_BTN_RESET 17
-
-#define CAP4200AG_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CAP4200AG_KEYS_DEBOUNCE_INTERVAL (3 * CAP4200AG_KEYS_POLL_INTERVAL)
-
-#define CAP4200AG_MAC_OFFSET 0
-#define CAP4200AG_WMAC_CALDATA_OFFSET 0x1000
-#define CAP4200AG_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led cap4200ag_leds_gpio[] __initdata = {
- {
- .name = "senao:green:pwr",
- .gpio = CAP4200AG_GPIO_LED_PWR_GREEN,
- .active_low = 1,
- },
- {
- .name = "senao:amber:pwr",
- .gpio = CAP4200AG_GPIO_LED_PWR_AMBER,
- .active_low = 1,
- },
- {
- .name = "senao:green:lan",
- .gpio = CAP4200AG_GPIO_LED_LAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "senao:amber:lan",
- .gpio = CAP4200AG_GPIO_LED_LAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "senao:green:wlan",
- .gpio = CAP4200AG_GPIO_LED_WLAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "senao:amber:wlan",
- .gpio = CAP4200AG_GPIO_LED_WLAN_AMBER,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cap4200ag_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CAP4200AG_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CAP4200AG_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init cap4200ag_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_gpio_output_select(CAP4200AG_GPIO_LED_LAN_GREEN,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(CAP4200AG_GPIO_LED_LAN_AMBER,
- AR934X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cap4200ag_leds_gpio),
- cap4200ag_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CAP4200AG_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cap4200ag_gpio_keys),
- cap4200ag_gpio_keys);
-
- ath79_init_mac(mac, art + CAP4200AG_MAC_OFFSET, -1);
- ath79_wmac_disable_2ghz();
- ath79_register_wmac(art + CAP4200AG_WMAC_CALDATA_OFFSET, mac);
-
- ath79_init_mac(mac, art + CAP4200AG_MAC_OFFSET, -2);
- ap91_pci_init(art + CAP4200AG_PCIE_CALDATA_OFFSET, mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + CAP4200AG_MAC_OFFSET, -2);
-
- /* GMAC0 is connected to an external PHY */
- 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);
-}
-
-MIPS_MACHINE(ATH79_MACH_CAP4200AG, "CAP4200AG", "Senao CAP4200AG",
- cap4200ag_setup);
+++ /dev/null
-/*
- * 8devices Carambola2 board support
- *
- * Copyright (C) 2013 Darius Augulis <darius@8devices.com>
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define CARAMBOLA2_GPIO_LED_WLAN 0
-#define CARAMBOLA2_GPIO_LED_ETH0 14
-#define CARAMBOLA2_GPIO_LED_ETH1 13
-
-#define CARAMBOLA2_GPIO_BTN_JUMPSTART 11
-
-#define CARAMBOLA2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CARAMBOLA2_KEYS_DEBOUNCE_INTERVAL (3 * CARAMBOLA2_KEYS_POLL_INTERVAL)
-
-#define CARAMBOLA2_MAC0_OFFSET 0x0000
-#define CARAMBOLA2_MAC1_OFFSET 0x0006
-#define CARAMBOLA2_CALDATA_OFFSET 0x1000
-#define CARAMBOLA2_WMAC_MAC_OFFSET 0x1002
-
-static struct gpio_led carambola2_leds_gpio[] __initdata = {
- {
- .name = "carambola2:green:wlan",
- .gpio = CARAMBOLA2_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "carambola2:orange:eth0",
- .gpio = CARAMBOLA2_GPIO_LED_ETH0,
- .active_low = 0,
- }, {
- .name = "carambola2:orange:eth1",
- .gpio = CARAMBOLA2_GPIO_LED_ETH1,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button carambola2_gpio_keys[] __initdata = {
- {
- .desc = "jumpstart button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = CARAMBOLA2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CARAMBOLA2_GPIO_BTN_JUMPSTART,
- .active_low = 1,
- },
-};
-
-static void __init carambola2_common_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
- ath79_register_wmac(art + CARAMBOLA2_CALDATA_OFFSET,
- art + CARAMBOLA2_WMAC_MAC_OFFSET);
-
- ath79_setup_ar933x_phy4_switch(true, true);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + CARAMBOLA2_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + CARAMBOLA2_MAC1_OFFSET, 0);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-}
-
-static void __init carambola2_setup(void)
-{
- carambola2_common_setup();
-
- ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(carambola2_leds_gpio),
- carambola2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CARAMBOLA2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(carambola2_gpio_keys),
- carambola2_gpio_keys);
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_CARAMBOLA2, "CARAMBOLA2", "8devices Carambola2 board",
- carambola2_setup);
+++ /dev/null
-/*
- * Support for COMFAST boards:
- * - CF-E316N v2 (AR9341)
- * - CF-E320N v2 (QCA9531)
- * - CF-E355AC v1 (QCA9531 + QCA9882)
- * - CF-E355AC v2 (QCA9531 + QCA9886)
- * - CF-E375AC (QCA9563 + QCA9886 + QCA8337)
- * - CF-E380AC v1/v2 (QCA9558)
- * - CF-E385AC (QCA9558 + QCA9984 + QCA8337)
- * - CF-E520N/CF-E530N (QCA9531)
- *
- * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com>
- * Copyright (C) 2016 Gareth Parker <gareth41@orcon.net.nz>
- * Copyright (C) 2015 Paul Fertser <fercerpav@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/ar8216_platform.h>
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/platform_device.h>
-#include <linux/timer.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-wmac.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define CF_EXXXN_KEYS_POLL_INTERVAL 20
-#define CF_EXXXN_KEYS_DEBOUNCE_INTERVAL (3 * CF_EXXXN_KEYS_POLL_INTERVAL)
-
-/* CF-E316N v2 */
-#define CF_E316N_V2_GPIO_LED_DIAG_B 0
-#define CF_E316N_V2_GPIO_LED_DIAG_R 2
-#define CF_E316N_V2_GPIO_LED_DIAG_G 3
-#define CF_E316N_V2_GPIO_LED_WLAN 12
-#define CF_E316N_V2_GPIO_LED_WAN 17
-#define CF_E316N_V2_GPIO_LED_LAN 19
-
-#define CF_E316N_V2_GPIO_EXT_WDT 16
-
-#define CF_E316N_V2_GPIO_EXTERNAL_PA0 13
-#define CF_E316N_V2_GPIO_EXTERNAL_PA1 14
-
-#define CF_E316N_V2_GPIO_BTN_RESET 20
-
-static struct gpio_led cf_e316n_v2_leds_gpio[] __initdata = {
- {
- .name = "cf-e316n-v2:blue:diag",
- .gpio = CF_E316N_V2_GPIO_LED_DIAG_B,
- .active_low = 0,
- }, {
- .name = "cf-e316n-v2:red:diag",
- .gpio = CF_E316N_V2_GPIO_LED_DIAG_R,
- .active_low = 0,
- }, {
- .name = "cf-e316n-v2:green:diag",
- .gpio = CF_E316N_V2_GPIO_LED_DIAG_G,
- .active_low = 0,
- }, {
- .name = "cf-e316n-v2:blue:wlan",
- .gpio = CF_E316N_V2_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "cf-e316n-v2:blue:wan",
- .gpio = CF_E316N_V2_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "cf-e316n-v2:blue:lan",
- .gpio = CF_E316N_V2_GPIO_LED_LAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cf_e316n_v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CF_EXXXN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CF_E316N_V2_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* CF-E320N v2 */
-#define CF_E320N_V2_GPIO_LED_WLAN 0
-#define CF_E320N_V2_GPIO_LED_WAN 2
-#define CF_E320N_V2_GPIO_LED_LAN 3
-
-#define CF_E320N_V2_GPIO_HEADER_J9_1 14
-#define CF_E320N_V2_GPIO_HEADER_J9_2 12
-#define CF_E320N_V2_GPIO_HEADER_J9_3 11
-#define CF_E320N_V2_GPIO_HEADER_J9_4 16
-
-#define CF_E320N_V2_GPIO_EXT_WDT 13
-
-#define CF_E320N_V2_GPIO_BTN_RESET 17
-
-static struct gpio_led cf_e320n_v2_leds_gpio[] __initdata = {
- {
- .name = "cf-e320n-v2:green:lan",
- .gpio = CF_E320N_V2_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e320n-v2:red:wan",
- .gpio = CF_E320N_V2_GPIO_LED_WAN,
- .active_low = 0,
- }, {
- .name = "cf-e320n-v2:blue:wlan",
- .gpio = CF_E320N_V2_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button cf_e320n_v2_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CF_EXXXN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CF_E320N_V2_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* CF-E355AC v1/v2 */
-#define CF_E355AC_GPIO_LED_LAN 3
-#define CF_E355AC_GPIO_LED_WLAN2G 0
-#define CF_E355AC_GPIO_LED_WLAN5G 2
-
-#define CF_E355AC_GPIO_EXT_WDT 13
-
-#define CF_E355AC_GPIO_BTN_RESET 17
-
-static struct gpio_led cf_e355ac_v1_leds_gpio[] __initdata = {
- {
- .name = "cf-e355ac-v1:green:lan",
- .gpio = CF_E355AC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e355ac-v1:blue:wlan2g",
- .gpio = CF_E355AC_GPIO_LED_WLAN2G,
- .active_low = 0,
- }, {
- .name = "cf-e355ac-v1:red:wlan5g",
- .gpio = CF_E355AC_GPIO_LED_WLAN5G,
- .active_low = 0,
- },
-};
-
-static struct gpio_led cf_e355ac_v2_leds_gpio[] __initdata = {
- {
- .name = "cf-e355ac-v2:green:lan",
- .gpio = CF_E355AC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e355ac-v2:blue:wlan2g",
- .gpio = CF_E355AC_GPIO_LED_WLAN2G,
- .active_low = 0,
- }, {
- .name = "cf-e355ac-v2:red:wlan5g",
- .gpio = CF_E355AC_GPIO_LED_WLAN5G,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button cf_e355ac_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CF_EXXXN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CF_E355AC_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* CF-E375AC */
-#define CF_E375AC_GPIO_LED_LAN 17
-#define CF_E375AC_GPIO_LED_WLAN2G 16
-#define CF_E375AC_GPIO_LED_WLAN5G 15
-
-#define CF_E375AC_GPIO_EXT_WDT 6
-
-#define CF_E375AC_GPIO_BTN_RESET 2
-
-static struct gpio_led cf_e375ac_leds_gpio[] __initdata = {
- {
- .name = "cf-e375ac:green:lan",
- .gpio = CF_E375AC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e375ac:red:wlan5g",
- .gpio = CF_E375AC_GPIO_LED_WLAN5G,
- .active_low = 0,
- }, {
- .name = "cf-e375ac:blue:wlan2g",
- .gpio = CF_E375AC_GPIO_LED_WLAN2G,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button cf_e375ac_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CF_EXXXN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CF_E375AC_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg cf_e375ac_ar8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data cf_e375ac_ar8337_data = {
- .pad0_cfg = &cf_e375ac_ar8337_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info cf_e375ac_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &cf_e375ac_ar8337_data,
- },
-};
-
-/* CF-E380AC v1/v2, CF-E385AC */
-#define CF_E38XAC_GPIO_LED_LAN 0
-#define CF_E38XAC_GPIO_LED_WLAN2G 2
-#define CF_E38XAC_GPIO_LED_WLAN5G 3
-
-#define CF_E38XAC_GPIO_EXT_WDT 17
-
-#define CF_E38XAC_GPIO_BTN_RESET 19
-
-static struct gpio_led cf_e380ac_v1_leds_gpio[] __initdata = {
- {
- .name = "cf-e380ac-v1:green:lan",
- .gpio = CF_E38XAC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e380ac-v1:blue:wlan2g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN2G,
- .active_low = 0,
- }, {
- .name = "cf-e380ac-v1:red:wlan5g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN5G,
- .active_low = 0,
- },
-};
-
-static struct gpio_led cf_e380ac_v2_leds_gpio[] __initdata = {
- {
- .name = "cf-e380ac-v2:green:lan",
- .gpio = CF_E38XAC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e380ac-v2:blue:wlan2g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN2G,
- .active_low = 0,
- }, {
- .name = "cf-e380ac-v2:red:wlan5g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN5G,
- .active_low = 0,
- },
-};
-
-static struct gpio_led cf_e385ac_leds_gpio[] __initdata = {
- {
- .name = "cf-e385ac:green:lan",
- .gpio = CF_E38XAC_GPIO_LED_LAN,
- .active_low = 0,
- }, {
- .name = "cf-e385ac:blue:wlan2g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN2G,
- .active_low = 0,
- }, {
- .name = "cf-e385ac:red:wlan5g",
- .gpio = CF_E38XAC_GPIO_LED_WLAN5G,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button cf_e38xac_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CF_EXXXN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CF_E38XAC_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data cf_e380ac_v1v2_at803x_data = {
- .disable_smarteee = 1,
-};
-
-static struct mdio_board_info cf_e380ac_v1v2_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &cf_e380ac_v1v2_at803x_data,
- },
-};
-
-/* CF-E520N/CF-E530N */
-#define CF_E5X0N_GPIO_LED_WAN 11
-#define CF_E5X0N_GPIO_BTN_RESET 17
-
-static struct gpio_led cf_e520n_leds_gpio[] __initdata = {
- {
- .name = "cf-e520n:blue:wan",
- .gpio = CF_E5X0N_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_led cf_e530n_leds_gpio[] __initdata = {
- {
- .name = "cf-e530n:blue:wan",
- .gpio = CF_E5X0N_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-/*
- * Some COMFAST devices include external hardware watchdog chip,
- * Pericon Technology PT7A7514, connected to a selected GPIO
- * and WiSoC RESET_L input. Watchdog time-out is ~1.6 s.
- */
-#define CF_EXXXN_EXT_WDT_TIMEOUT_MS 500
-
-static struct timer_list gpio_wdt_timer;
-
-static void gpio_wdt_toggle(unsigned long gpio)
-{
- static int state;
-
- state = !state;
- gpio_set_value(gpio, state);
-
- mod_timer(&gpio_wdt_timer,
- jiffies + msecs_to_jiffies(CF_EXXXN_EXT_WDT_TIMEOUT_MS));
-}
-
-static void __init cf_exxxn_common_setup(unsigned long art_ofs, int gpio_wdt)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f001000 + art_ofs);
-
- if (gpio_wdt > -1) {
- gpio_request_one(gpio_wdt, GPIOF_OUT_INIT_HIGH,
- "PT7A7514 watchdog");
-
- setup_timer(&gpio_wdt_timer, gpio_wdt_toggle, gpio_wdt);
- gpio_wdt_toggle(gpio_wdt);
- }
-
- ath79_register_m25p80(NULL);
-
- ath79_register_wmac(art, NULL);
-
- ath79_register_usb();
-}
-
-static void __init cf_e316n_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f010000);
-
- cf_exxxn_common_setup(0x10000, CF_E316N_V2_GPIO_EXT_WDT);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- /* GMAC0 is connected to the PHY0 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 2);
- ath79_register_eth(1);
-
- /* Enable 2x Skyworks SE2576L WLAN power amplifiers */
- gpio_request_one(CF_E316N_V2_GPIO_EXTERNAL_PA0, GPIOF_OUT_INIT_HIGH,
- "WLAN PA0");
- gpio_request_one(CF_E316N_V2_GPIO_EXTERNAL_PA1, GPIOF_OUT_INIT_HIGH,
- "WLAN PA1");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e316n_v2_leds_gpio),
- cf_e316n_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e316n_v2_gpio_keys),
- cf_e316n_v2_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E316N_V2, "CF-E316N-V2", "COMFAST CF-E316N v2",
- cf_e316n_v2_setup);
-
-static void __init cf_exxxn_qca953x_eth_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f010000);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask |= BIT(4);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 2);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-}
-
-static void __init cf_e320n_v2_setup(void)
-{
- cf_exxxn_common_setup(0x10000, CF_E320N_V2_GPIO_EXT_WDT);
-
- cf_exxxn_qca953x_eth_setup();
-
- /* Disable JTAG (enables GPIO0-3) */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_direction_select(CF_E320N_V2_GPIO_LED_LAN, true);
- ath79_gpio_direction_select(CF_E320N_V2_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(CF_E320N_V2_GPIO_LED_WLAN, true);
-
- ath79_gpio_output_select(CF_E320N_V2_GPIO_LED_LAN, 0);
- ath79_gpio_output_select(CF_E320N_V2_GPIO_LED_WAN, 0);
- ath79_gpio_output_select(CF_E320N_V2_GPIO_LED_WLAN, 0);
-
- /* Enable GPIO function for GPIOs in J9 header */
- ath79_gpio_output_select(CF_E320N_V2_GPIO_HEADER_J9_1, 0);
- ath79_gpio_output_select(CF_E320N_V2_GPIO_HEADER_J9_2, 0);
- ath79_gpio_output_select(CF_E320N_V2_GPIO_HEADER_J9_3, 0);
- ath79_gpio_output_select(CF_E320N_V2_GPIO_HEADER_J9_4, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e320n_v2_leds_gpio),
- cf_e320n_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e320n_v2_gpio_keys),
- cf_e320n_v2_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E320N_V2, "CF-E320N-V2", "COMFAST CF-E320N v2",
- cf_e320n_v2_setup);
-
-static void __init cf_e355ac_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f010000);
-
- /* Disable JTAG, enabling GPIOs 0-3 */
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE, 0);
-
- cf_exxxn_common_setup(0x10000, CF_E355AC_GPIO_EXT_WDT);
-
- cf_exxxn_qca953x_eth_setup();
-
- ath79_gpio_output_select(CF_E355AC_GPIO_LED_LAN, 0);
- ath79_gpio_output_select(CF_E355AC_GPIO_LED_WLAN2G, 0);
- ath79_gpio_output_select(CF_E355AC_GPIO_LED_WLAN5G, 0);
-
- ap91_pci_init(art + 0x5000, NULL);
-
- ath79_register_gpio_keys_polled(1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e355ac_gpio_keys),
- cf_e355ac_gpio_keys);
-}
-
-static void __init cf_e355ac_v1_setup(void)
-{
- cf_e355ac_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e355ac_v1_leds_gpio),
- cf_e355ac_v1_leds_gpio);
-}
-
-static void __init cf_e355ac_v2_setup(void)
-{
- cf_e355ac_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e355ac_v2_leds_gpio),
- cf_e355ac_v2_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E355AC, "CF-E355AC-V1", "COMFAST CF-E355AC v1",
- cf_e355ac_v1_setup);
-
-MIPS_MACHINE(ATH79_MACH_CF_E355AC_V2, "CF-E355AC-V2", "COMFAST CF-E355AC v2",
- cf_e355ac_v2_setup);
-
-static void __init cf_e375ac_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f040000);
-
- /* Disable JTAG, enabling GPIOs 0-3 */
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE, 0);
-
- cf_exxxn_common_setup(0x40000, CF_E375AC_GPIO_EXT_WDT);
-
- ath79_gpio_output_select(CF_E375AC_GPIO_LED_LAN, 0);
- ath79_gpio_output_select(CF_E375AC_GPIO_LED_WLAN2G, 0);
- ath79_gpio_output_select(CF_E375AC_GPIO_LED_WLAN5G, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e375ac_leds_gpio),
- cf_e375ac_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e375ac_gpio_keys),
- cf_e375ac_gpio_keys);
-
- platform_device_register(&ath79_mdio0_device);
-
- mdiobus_register_board_info(cf_e375ac_mdio0_info,
- ARRAY_SIZE(cf_e375ac_mdio0_info));
-
- /* 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_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E375AC, "CF-E375AC", "COMFAST CF-E375AC",
- cf_e375ac_setup);
-
-static void __init cf_e38xac_common_setup(unsigned long art_ofs)
-{
- cf_exxxn_common_setup(art_ofs, CF_E38XAC_GPIO_EXT_WDT);
-
- ath79_register_pci();
-
- /* Disable JTAG (enables GPIO0-3) */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_direction_select(CF_E38XAC_GPIO_LED_LAN, true);
- ath79_gpio_direction_select(CF_E38XAC_GPIO_LED_WLAN2G, true);
- ath79_gpio_direction_select(CF_E38XAC_GPIO_LED_WLAN5G, true);
-
- ath79_gpio_output_select(CF_E38XAC_GPIO_LED_LAN, 0);
- ath79_gpio_output_select(CF_E38XAC_GPIO_LED_WLAN2G, 0);
- ath79_gpio_output_select(CF_E38XAC_GPIO_LED_WLAN5G, 0);
-
- /* For J7-4 */
- ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_register_gpio_keys_polled(-1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e38xac_gpio_keys),
- cf_e38xac_gpio_keys);
-}
-
-static void __init cf_e380ac_v1v2_common_setup(unsigned long art_ofs)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f000000 + art_ofs);
-
- cf_e38xac_common_setup(art_ofs);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(cf_e380ac_v1v2_mdio0_info,
- ARRAY_SIZE(cf_e380ac_v1v2_mdio0_info));
-
- /* LAN */
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_pll_data.pll_1000 = 0xbe000000;
- ath79_eth0_pll_data.pll_100 = 0xb0000101;
- ath79_eth0_pll_data.pll_10 = 0xb0001313;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-}
-
-static void __init cf_e380ac_v1_setup(void)
-{
- cf_e380ac_v1v2_common_setup(0x20000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e380ac_v1_leds_gpio),
- cf_e380ac_v1_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E380AC_V1, "CF-E380AC-V1", "COMFAST CF-E380AC v1",
- cf_e380ac_v1_setup);
-
-static void __init cf_e380ac_v2_setup(void)
-{
- cf_e380ac_v1v2_common_setup(0x40000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e380ac_v2_leds_gpio),
- cf_e380ac_v2_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E380AC_V2, "CF-E380AC-V2", "COMFAST CF-E380AC v2",
- cf_e380ac_v2_setup);
-
-/* QCA8337 GMAC0 is connected with QCA9558 over RGMII */
-static struct ar8327_pad_cfg cf_e385ac_qca8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL1,
-};
-
-/* QCA8337 GMAC6 is connected with QCA9558 over SGMII */
-static struct ar8327_pad_cfg cf_e385ac_qca8337_pad6_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_platform_data cf_e385ac_qca8337_data = {
- .pad0_cfg = &cf_e385ac_qca8337_pad0_cfg,
- .pad6_cfg = &cf_e385ac_qca8337_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info cf_e385ac_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &cf_e385ac_qca8337_data,
- },
-};
-
-static void __init cf_e385ac_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f040000);
-
- cf_e38xac_common_setup(0x40000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e385ac_leds_gpio),
- cf_e385ac_leds_gpio);
-
- mdiobus_register_board_info(cf_e385ac_mdio0_info,
- ARRAY_SIZE(cf_e385ac_mdio0_info));
- ath79_register_mdio(0, 0x0);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* QCA9558 GMAC0 is connected to RMGII interface */
- 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 = 0x96000000;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- /* QCA9558 GMAC1 is connected to SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E385AC, "CF-E385AC", "COMFAST CF-E385AC",
- cf_e385ac_setup);
-
-static void __init cf_e5x0n_gpio_setup(void)
-{
- ath79_gpio_direction_select(CF_E5X0N_GPIO_LED_WAN, true);
-
- ath79_gpio_output_select(CF_E5X0N_GPIO_LED_WAN, 0);
-
- ath79_register_gpio_keys_polled(-1, CF_EXXXN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cf_e320n_v2_gpio_keys),
- cf_e320n_v2_gpio_keys);
-}
-
-static void __init cf_e520n_setup(void)
-{
- cf_exxxn_common_setup(0x10000, -1);
-
- cf_exxxn_qca953x_eth_setup();
-
- cf_e5x0n_gpio_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e520n_leds_gpio),
- cf_e520n_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E520N, "CF-E520N", "COMFAST CF-E520N",
- cf_e520n_setup);
-
-static void __init cf_e530n_setup(void)
-{
- cf_exxxn_common_setup(0x10000, -1);
-
- cf_exxxn_qca953x_eth_setup();
-
- cf_e5x0n_gpio_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cf_e530n_leds_gpio),
- cf_e530n_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_CF_E530N, "CF-E530N", "COMFAST CF-E530N",
- cf_e530n_setup);
+++ /dev/null
-/*
- * TP-LINK CPE210/210 v2/220/510/520 board support
- *
- * Copyright (C) 2014 Matthias Schiffer <mschiffer@universe-factory.net>
- * Copyright (C) 2017 Robert Marko <robimarko@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-
-#define CPE510_GPIO_LED_LAN0 11
-#define CPE510_GPIO_LED_LAN1 12
-#define CPE510_GPIO_LED_L1 13
-#define CPE510_GPIO_LED_L2 14
-#define CPE510_GPIO_LED_L3 15
-#define CPE510_GPIO_LED_L4 16
-
-/* All LEDs/button except for link4 are the same for CPE and WBS series */
-#define WBS510_GPIO_LED_L4 2
-
-#define CPE510_GPIO_EXTERNAL_LNA0 18
-#define CPE510_GPIO_EXTERNAL_LNA1 19
-
-#define CPE510_GPIO_BTN_RESET 4
-
-#define CPE510_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CPE510_KEYS_DEBOUNCE_INTERVAL (3 * CPE510_KEYS_POLL_INTERVAL)
-
-/* CPE210 v2 reset GPIO */
-#define CPE210_V2_GPIO_BTN_RESET 17
-
-static struct gpio_led cpe510_leds_gpio[] __initdata = {
- {
- .name = "tp-link:green:lan0",
- .gpio = CPE510_GPIO_LED_LAN0,
- .active_low = 1,
- }, {
- .name = "tp-link:green:lan1",
- .gpio = CPE510_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link1",
- .gpio = CPE510_GPIO_LED_L1,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link2",
- .gpio = CPE510_GPIO_LED_L2,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link3",
- .gpio = CPE510_GPIO_LED_L3,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link4",
- .gpio = CPE510_GPIO_LED_L4,
- .active_low = 1,
- },
-};
-
-static struct gpio_led wbs510_leds_gpio[] __initdata = {
- {
- .name = "tp-link:green:lan0",
- .gpio = CPE510_GPIO_LED_LAN0,
- .active_low = 1,
- }, {
- .name = "tp-link:green:lan1",
- .gpio = CPE510_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link1",
- .gpio = CPE510_GPIO_LED_L1,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link2",
- .gpio = CPE510_GPIO_LED_L2,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link3",
- .gpio = CPE510_GPIO_LED_L3,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link4",
- .gpio = WBS510_GPIO_LED_L4,
- .active_low = 1,
- },
-};
-
-static struct gpio_led cpe210_v2_leds_gpio[] __initdata = {
- {
- .name = "tp-link:green:lan0",
- .gpio = CPE510_GPIO_LED_LAN0,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link1",
- .gpio = CPE510_GPIO_LED_L1,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link2",
- .gpio = CPE510_GPIO_LED_L2,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link3",
- .gpio = CPE510_GPIO_LED_L3,
- .active_low = 1,
- }, {
- .name = "tp-link:green:link4",
- .gpio = CPE510_GPIO_LED_L4,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cpe510_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CPE510_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CPE510_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button cpe210_v2_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CPE510_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CPE210_V2_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init cpe_setup(u8 *mac)
-{
- /* Disable JTAG, enabling GPIOs 0-3 */
- /* Configure OBS4 line, for GPIO 4*/
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
- AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_register_gpio_keys_polled(1, CPE510_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cpe510_gpio_keys),
- cpe510_gpio_keys);
-
- ath79_wmac_set_ext_lna_gpio(0, CPE510_GPIO_EXTERNAL_LNA0);
- ath79_wmac_set_ext_lna_gpio(1, CPE510_GPIO_EXTERNAL_LNA1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_mdio(1, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-}
-
-
-static void __init cpe210_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
- cpe510_leds_gpio);
-
- cpe_setup(mac);
-
- ath79_register_wmac(ee, mac);
-}
-
-static void __init cpe510_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe510_leds_gpio),
- cpe510_leds_gpio);
-
- cpe_setup(mac);
-
- ath79_register_wmac(ee, mac);
-}
-
-static void __init wbs_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(wbs510_leds_gpio),
- wbs510_leds_gpio);
-
- cpe_setup(mac);
-
- ath79_register_wmac(ee, mac);
-}
-
-static void __init cpe210_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe210_v2_leds_gpio),
- cpe210_v2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CPE510_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cpe210_v2_gpio_keys),
- cpe210_v2_gpio_keys);
- ath79_register_m25p80(NULL);
- ath79_register_mdio(0, 0x0);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
- ath79_register_wmac(ee, mac);
-}
-
-static void __init cpe510_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f830008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe210_v2_leds_gpio),
- cpe210_v2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CPE510_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cpe510_gpio_keys),
- cpe510_gpio_keys);
-
- ath79_register_m25p80(NULL);
- ath79_register_mdio(1, 0x0);
-
- /* LAN port */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_CPE210, "CPE210", "TP-LINK CPE210/220",
- cpe210_setup);
-
-MIPS_MACHINE(ATH79_MACH_CPE210_V2, "CPE210V2", "TP-LINK CPE210 v2",
- cpe210_v2_setup);
-
-MIPS_MACHINE(ATH79_MACH_CPE210_V3, "CPE210V3", "TP-LINK CPE210 v3",
- cpe210_v2_setup);
-
-MIPS_MACHINE(ATH79_MACH_CPE510, "CPE510", "TP-LINK CPE510/520",
- cpe510_setup);
-
-MIPS_MACHINE(ATH79_MACH_CPE510_V2, "CPE510V2", "TP-LINK CPE510 v2",
- cpe510_v2_setup);
-
-MIPS_MACHINE(ATH79_MACH_WBS210, "WBS210", "TP-LINK WBS210",
- wbs_setup);
-
-MIPS_MACHINE(ATH79_MACH_WBS510, "WBS510", "TP-LINK WBS510",
- wbs_setup);
+++ /dev/null
-/*
- * YunCore CPE870 board support
- *
- * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define CPE870_GPIO_LED_LINK1 0
-#define CPE870_GPIO_LED_LINK2 1
-#define CPE870_GPIO_LED_LINK3 2
-#define CPE870_GPIO_LED_LINK4 3
-#define CPE870_GPIO_LED_WLAN 13
-#define CPE870_GPIO_LED_WAN 19
-#define CPE870_GPIO_LED_LAN 20
-
-#define CPE870_GPIO_BTN_RESET 16
-
-#define CPE870_KEYS_POLL_INTERVAL 20
-#define CPE870_KEYS_DEBOUNCE_INTERVAL (3 * CPE870_KEYS_POLL_INTERVAL)
-
-static struct gpio_led cpe870_leds_gpio[] __initdata = {
- {
- .name = "cpe870:green:lan",
- .gpio = CPE870_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:wan",
- .gpio = CPE870_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:wlan",
- .gpio = CPE870_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:link1",
- .gpio = CPE870_GPIO_LED_LINK1,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:link2",
- .gpio = CPE870_GPIO_LED_LINK2,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:link3",
- .gpio = CPE870_GPIO_LED_LINK3,
- .active_low = 1,
- },
- {
- .name = "cpe870:green:link4",
- .gpio = CPE870_GPIO_LED_LINK4,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cpe870_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CPE870_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CPE870_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init cpe870_gpio_setup(void)
-{
- /* Disable JTAG (enables GPIO0-3) */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_direction_select(CPE870_GPIO_LED_LINK1, true);
- ath79_gpio_direction_select(CPE870_GPIO_LED_LINK2, true);
- ath79_gpio_direction_select(CPE870_GPIO_LED_LINK3, true);
- ath79_gpio_direction_select(CPE870_GPIO_LED_LINK4, true);
-
- /* Mute LEDs on boot */
- gpio_set_value(CPE870_GPIO_LED_LAN, 1);
- gpio_set_value(CPE870_GPIO_LED_WAN, 1);
- gpio_set_value(CPE870_GPIO_LED_LINK1, 1);
- gpio_set_value(CPE870_GPIO_LED_LINK2, 1);
- gpio_set_value(CPE870_GPIO_LED_LINK3, 1);
- gpio_set_value(CPE870_GPIO_LED_LINK4, 1);
-
- ath79_gpio_output_select(CPE870_GPIO_LED_LINK1, 0);
- ath79_gpio_output_select(CPE870_GPIO_LED_LINK2, 0);
- ath79_gpio_output_select(CPE870_GPIO_LED_LINK3, 0);
- ath79_gpio_output_select(CPE870_GPIO_LED_LINK4, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe870_leds_gpio),
- cpe870_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, CPE870_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cpe870_gpio_keys),
- cpe870_gpio_keys);
-}
-
-static void __init cpe870_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- cpe870_gpio_setup();
-
- ath79_register_mdio(1, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_CPE870, "CPE870", "YunCore CPE870", cpe870_setup);
+++ /dev/null
-/*
- * PowerCloud Systems CR3000 support
- *
- * Copyright (c) 2011 Qualcomm Atheros
- * Copyright (c) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2012-2013 PowerCloud Systems
- * Copyright (c) 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
- *
- * 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/gpio.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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 CR3000_GPIO_LED_WLAN_2G 13
-#define CR3000_GPIO_LED_POWER_AMBER 15
-#define CR3000_GPIO_LED_WAN 18
-#define CR3000_GPIO_LED_LAN1 19
-#define CR3000_GPIO_LED_LAN2 20
-#define CR3000_GPIO_LED_LAN3 21
-#define CR3000_GPIO_LED_LAN4 22
-
-#define CR3000_GPIO_BTN_WPS 16
-#define CR3000_GPIO_BTN_RESET 17
-
-#define CR3000_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CR3000_KEYS_DEBOUNCE_INTERVAL (3 * CR3000_KEYS_POLL_INTERVAL)
-
-#define CR3000_MAC0_OFFSET 0
-#define CR3000_MAC1_OFFSET 6
-#define CR3000_WMAC_CALDATA_OFFSET 0x1000
-#define CR3000_WMAC_MAC_OFFSET 0x1002
-
-static struct gpio_led cr3000_leds_gpio[] __initdata = {
- {
- .name = "pcs:amber:power",
- .gpio = CR3000_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:wlan",
- .gpio = CR3000_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:wan",
- .gpio = CR3000_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:lan1",
- .gpio = CR3000_GPIO_LED_LAN1,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:lan2",
- .gpio = CR3000_GPIO_LED_LAN2,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:lan3",
- .gpio = CR3000_GPIO_LED_LAN3,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:lan4",
- .gpio = CR3000_GPIO_LED_LAN4,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cr3000_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = CR3000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CR3000_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = CR3000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CR3000_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init cr3000_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cr3000_leds_gpio),
- cr3000_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, CR3000_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cr3000_gpio_keys),
- cr3000_gpio_keys);
-
- /* WLAN 2GHz onboard */
- ath79_register_wmac(art + CR3000_WMAC_CALDATA_OFFSET, art + CR3000_WMAC_MAC_OFFSET);
-
- /* FE Lan on first 4-ports of internal switch and attached to GMAC1
- * WAN Fast Ethernet interface attached to GMAC0
- * Could be configured as a 5-port switch, but we use
- * the SoC capabilities to attach port 5 to a separate PHY/MAC
- * theoretically this leaves future possibility of using SoC
- * acceleration/offloading.
- */
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- /* GMAC0 attached to PHY4 (port 5 of the internal switch) */
- ath79_switch_data.phy4_mii_en = 1;
- /* For switch carrier ignore port 5 (wan) */
- ath79_switch_data.phy_poll_mask = 0x1;
-
- /* Register MII bus */
- ath79_register_mdio(1, 0x0);
-
- /* GMAC0 attached to PHY4 (port 5 of the internal switch) */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = 0x1;
-
- /* LAN */
- ath79_init_mac(ath79_eth1_data.mac_addr, art + CR3000_MAC0_OFFSET, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- /* Wan */
- ath79_init_mac(ath79_eth0_data.mac_addr, art + CR3000_MAC0_OFFSET, 1);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_CR3000, "CR3000", "PowerCloud Systems CR3000",
- cr3000_setup);
+++ /dev/null
-/*
- * PowerCloud Systems CR5000 support
- *
- * Copyright (c) 2011 Qualcomm Atheros
- * Copyright (c) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2012-2013 PowerCloud Systems
- * Copyright (c) 2015 Daniel Dickinson <openwrt@daniel.thecshore.com>
- *
- * 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/gpio.h>
-#include <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define CR5000_GPIO_LED_WLAN_2G 14
-#define CR5000_GPIO_LED_WPS 12
-#define CR5000_GPIO_LED_POWER_AMBER 4
-/* GPIO2 has to have JTAG disabled as it is also to
- * power led
- */
-#define CR5000_GPIO_LED_POWER_ENABLE 2
-#define CR5000_GPIO_BTN_WPS 16
-#define CR5000_GPIO_BTN_RESET 17
-
-#define CR5000_KEYS_POLL_INTERVAL 20 /* msecs */
-#define CR5000_KEYS_DEBOUNCE_INTERVAL (3 * CR5000_KEYS_POLL_INTERVAL)
-
-#define CR5000_MAC0_OFFSET 0
-#define CR5000_WMAC_CALDATA_OFFSET 0x1000
-#define CR5000_WMAC_MAC_OFFSET 0x1002
-#define CR5000_PCIE_CALDATA_OFFSET 0x5000
-#define CR5000_PCIE_WMAC_OFFSET 0x5002
-
-static struct gpio_led cr5000_leds_gpio[] __initdata = {
- {
- .name = "pcs:amber:power",
- .gpio = CR5000_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "pcs:white:wps",
- .gpio = CR5000_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "pcs:blue:wlan",
- .gpio = CR5000_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button cr5000_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = CR5000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CR5000_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = CR5000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = CR5000_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg cr5000_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_led_cfg cr5000_ar8327_led_cfg = {
- .led_ctrl0 = 0xcc35cc35,
- .led_ctrl1 = 0xca35ca35,
- .led_ctrl2 = 0xc935c935,
- .led_ctrl3 = 0x03ffff00,
- .open_drain = true,
-};
-
-static struct ar8327_platform_data cr5000_ar8327_data = {
- .pad0_cfg = &cr5000_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &cr5000_ar8327_led_cfg,
-};
-
-static struct mdio_board_info cr5000_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &cr5000_ar8327_data,
- },
-};
-
-static void __init cr5000_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- struct ath9k_platform_data *pdata;
-
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
- gpio_request_one(CR5000_GPIO_LED_POWER_ENABLE,
- GPIOF_OUT_INIT_LOW, "Power LED enable");
- ath79_gpio_output_select(CR5000_GPIO_LED_POWER_AMBER, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(CR5000_GPIO_LED_WLAN_2G, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(CR5000_GPIO_LED_WPS, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cr5000_leds_gpio),
- cr5000_leds_gpio);
- ath79_register_gpio_keys_polled(-1, CR5000_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(cr5000_gpio_keys),
- cr5000_gpio_keys);
- ath79_register_usb();
- ath79_register_wmac(art + CR5000_WMAC_CALDATA_OFFSET, art + CR5000_WMAC_MAC_OFFSET);
- ap91_pci_init(NULL, art + CR5000_PCIE_WMAC_OFFSET);
- pdata = ap9x_pci_get_wmac_data(0);
- if (pdata)
- pdata->use_eeprom = true;
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + CR5000_MAC0_OFFSET, 0);
-
- mdiobus_register_board_info(cr5000_mdio0_info,
- ARRAY_SIZE(cr5000_mdio0_info));
-
- /* GMAC0 is connected to an AR8327 switch */
- 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);
-}
-
-MIPS_MACHINE(ATH79_MACH_CR5000, "CR5000", "PowerCloud Systems CR5000",
- cr5000_setup);
+++ /dev/null
-/*
- * D-Link DAP-1330
- *
- * Copyright (c) 2013-2015 The Linux Foundation. All rights reserved.
- * Copyright (c) 2017 Nicolò Veronese <nicveronese@gmail.com>
- * Copyright (c) 2017 Federico Cappon <dududede371@gmail.com>
- *
- * 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/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#include <linux/kernel.h>
-#include <linux/vmalloc.h>
-#include <linux/errno.h>
-#include <linux/init.h>
-#include <linux/string.h>
-
-#define DAP_1330_GPIO_LED_GREEN_POWER 13
-#define DAP_1330_GPIO_LED_RED_POWER 3
-#define DAP_1330_GPIO_LED_GREEN_WIFI 14
-#define DAP_1330_GPIO_LED_RED_WIFI 11
-#define DAP_1330_GPIO_LED_SIGNAL1 15
-#define DAP_1330_GPIO_LED_SIGNAL2 16
-
-#define DAP_1330_GPIO_BTN_WPS 2
-#define DAP_1330_GPIO_BTN_RESET 17
-
-#define DAP_1330_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DAP_1330_KEYS_DEBOUNCE_INTERVAL (3 * DAP_1330_KEYS_POLL_INTERVAL)
-
-#define DAP1330_MAC_ADDR 0x1f020001
-
-#define DAP1330_WMAC_CALDATA_ADDR 0x1f010000
-#define DAP_1330_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led dap_1330_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DAP_1330_GPIO_LED_GREEN_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:red:power",
- .gpio = DAP_1330_GPIO_LED_RED_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:green:wifi",
- .gpio = DAP_1330_GPIO_LED_GREEN_WIFI,
- .active_low = 1,
- },
- {
- .name = "d-link:red:wifi",
- .gpio = DAP_1330_GPIO_LED_RED_WIFI,
- .active_low = 1,
- },
- {
- .name = "d-link:green:signal1",
- .gpio = DAP_1330_GPIO_LED_SIGNAL1,
- .active_low = 1,
- },
- {
- .name = "d-link:green:signal2",
- .gpio = DAP_1330_GPIO_LED_SIGNAL2,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dap_1330_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DAP_1330_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DAP_1330_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DAP_1330_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DAP_1330_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init dap_1330_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(DAP1330_WMAC_CALDATA_ADDR);
- u8 *mac_ptr = (u8 *) KSEG1ADDR(DAP1330_MAC_ADDR);
- u8 mac[ETH_ALEN];
-
- ath79_parse_ascii_mac((char *) mac_ptr, mac);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dap_1330_leds_gpio),
- dap_1330_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DAP_1330_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dap_1330_gpio_keys),
- dap_1330_gpio_keys);
-
- ath79_register_wmac(art + DAP_1330_WMAC_CALDATA_OFFSET, mac);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_DAP_1330_A1, "DAP-1330-A1",
- "D-Link DAP-1330 Rev. A1", dap_1330_setup);
+++ /dev/null
-/*
- * D-Link DAP-2695 rev. A1 support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2016 Stijn Tintel <stijn@linux-ipv6.be>
- *
- * 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/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define DAP2695_GPIO_LED_GREEN_POWER 23
-#define DAP2695_GPIO_LED_RED_POWER 14
-#define DAP2695_GPIO_LED_WLAN_2G 13
-
-#define DAP2695_GPIO_BTN_RESET 17
-
-#define DAP2695_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DAP2695_KEYS_DEBOUNCE_INTERVAL (3 * DAP2695_KEYS_POLL_INTERVAL)
-
-#define DAP2695_NVRAM_ADDR 0x1f040000
-#define DAP2695_NVRAM_SIZE 0x10000
-
-#define DAP2695_MAC0_OFFSET 1
-#define DAP2695_MAC1_OFFSET 2
-#define DAP2695_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led dap2695_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DAP2695_GPIO_LED_GREEN_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:red:power",
- .gpio = DAP2695_GPIO_LED_RED_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:green:wlan2g",
- .gpio = DAP2695_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dap2695_gpio_keys[] __initdata = {
- {
- .desc = "Soft reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DAP2695_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DAP2695_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg dap2695_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .mac06_exchange_dis = true,
-};
-
-static struct ar8327_pad_cfg dap2695_ar8327_pad6_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data dap2695_ar8327_data = {
- .pad0_cfg = &dap2695_ar8327_pad0_cfg,
- .pad6_cfg = &dap2695_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info dap2695_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dap2695_ar8327_data,
- },
-};
-
-static struct flash_platform_data dap2695_flash_data = {
- .type = "mx25l12805d",
-};
-
-static void dap2695_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(DAP2695_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, DAP2695_NVRAM_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-static void __init dap2695_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac0[ETH_ALEN], mac1[ETH_ALEN], wmac0[ETH_ALEN];
-
- dap2695_get_mac("lanmac=", mac0);
- dap2695_get_mac("wanmac=", mac1);
- dap2695_get_mac("wlanmac=", wmac0);
-
- ath79_register_m25p80(&dap2695_flash_data);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dap2695_leds_gpio),
- dap2695_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DAP2695_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dap2695_gpio_keys),
- dap2695_gpio_keys);
-
- ath79_register_wmac(art + DAP2695_WMAC_CALDATA_OFFSET, wmac0);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(dap2695_mdio0_info,
- ARRAY_SIZE(dap2695_mdio0_info));
-
- /* GMAC0 is connected to the RGMII interface */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac0, DAP2695_MAC0_OFFSET);
- 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 = 0x56000000;
-
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_init_mac(ath79_eth1_data.mac_addr, mac1, DAP2695_MAC1_OFFSET);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_register_eth(1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_DAP_2695_A1, "DAP-2695-A1",
- "D-Link DAP-2695 rev. A1",
- dap2695_setup);
+++ /dev/null
-/*
- * D-Link DGL-5500 board support
- *
- * Copyright (C) 2014 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2014 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DGL_5500_A1_GPIO_LED_POWER_ORANGE 14
-#define DGL_5500_A1_GPIO_LED_POWER_GREEN 19
-#define DGL_5500_A1_GPIO_LED_PLANET_GREEN 22
-#define DGL_5500_A1_GPIO_LED_PLANET_ORANGE 23
-
-#define DGL_5500_A1_GPIO_BTN_WPS 16
-#define DGL_5500_A1_GPIO_BTN_RESET 17
-
-#define DGL_5500_A1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DGL_5500_A1_KEYS_DEBOUNCE_INTERVAL \
- (3 * DGL_5500_A1_KEYS_POLL_INTERVAL)
-
-#define DGL_5500_A1_WMAC_CALDATA_OFFSET 0x1000
-
-#define DGL_5500_A1_LAN_MAC_OFFSET 0x04
-#define DGL_5500_A1_WAN_MAC_OFFSET 0x16
-
-static struct gpio_led dgl_5500_a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DGL_5500_A1_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- },
- {
- .name = "d-link:orange:power",
- .gpio = DGL_5500_A1_GPIO_LED_POWER_ORANGE,
- .active_low = 1,
- },
- {
- .name = "d-link:green:planet",
- .gpio = DGL_5500_A1_GPIO_LED_PLANET_GREEN,
- .active_low = 1,
- },
- {
- .name = "d-link:orange:planet",
- .gpio = DGL_5500_A1_GPIO_LED_PLANET_ORANGE,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dgl_5500_a1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DGL_5500_A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DGL_5500_A1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DGL_5500_A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DGL_5500_A1_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg dgl_5500_a1_ar8327_pad0_cfg = {
- /* Use the SGMII interface for the GMAC0 of the AR8327 switch */
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data dgl_5500_a1_ar8327_data = {
- .pad0_cfg = &dgl_5500_a1_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info dgl_5500_a1_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dgl_5500_a1_ar8327_data,
- },
-};
-
-static void __init dgl_5500_a1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1ffe0000);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 lan_mac[ETH_ALEN];
-
- ath79_parse_ascii_mac(mac + DGL_5500_A1_LAN_MAC_OFFSET, lan_mac);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dgl_5500_a1_leds_gpio),
- dgl_5500_a1_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DGL_5500_A1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dgl_5500_a1_gpio_keys),
- dgl_5500_a1_gpio_keys);
-
- ath79_register_wmac(art + DGL_5500_A1_WMAC_CALDATA_OFFSET, lan_mac);
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(dgl_5500_a1_mdio0_info,
- ARRAY_SIZE(dgl_5500_a1_mdio0_info));
-
- ath79_init_mac(ath79_eth1_data.mac_addr, lan_mac, 0);
-
- /* GMAC1 is connected to an AR8327N switch via the SMGII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.phy_mask = BIT(0);
- ath79_eth1_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_register_eth(1);
-
- ath79_register_usb();
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_DGL_5500_A1, "DGL-5500-A1", "D-Link DGL-5500 rev. A1",
- dgl_5500_a1_setup);
+++ /dev/null
-/*
- * D-Link DHP-1565 rev. A1 board support
- *
- * Copyright (C) 2014 Jacek Kikiewicz
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DHP1565A1_GPIO_LED_BLUE_USB 11
-#define DHP1565A1_GPIO_LED_AMBER_POWER 14
-#define DHP1565A1_GPIO_LED_BLUE_POWER 22
-#define DHP1565A1_GPIO_LED_BLUE_WPS 15
-#define DHP1565A1_GPIO_LED_AMBER_PLANET 19
-#define DHP1565A1_GPIO_LED_BLUE_PLANET 18
-#define DHP1565A1_GPIO_LED_WLAN_2G 13
-
-#define DHP1565A1_GPIO_WAN_LED_ENABLE 20
-
-#define DHP1565A1_GPIO_BTN_RESET 17
-#define DHP1565A1_GPIO_BTN_WPS 16
-
-#define DHP1565A1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DHP1565A1_KEYS_DEBOUNCE_INTERVAL (3 * DHP1565A1_KEYS_POLL_INTERVAL)
-
-#define DHP1565A1_MAC0_OFFSET 0xFFA0
-#define DHP1565A1_MAC1_OFFSET 0xFFB4
-#define DHP1565A1_WMAC0_OFFSET 0x5
-#define DHP1565A1_WMAC_CALDATA_OFFSET 0x1000
-#define DHP1565A1_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led dhp1565a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:amber:power",
- .gpio = DHP1565A1_GPIO_LED_AMBER_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:green:power",
- .gpio = DHP1565A1_GPIO_LED_BLUE_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:amber:planet",
- .gpio = DHP1565A1_GPIO_LED_AMBER_PLANET,
- .active_low = 1,
- },
- {
- .name = "d-link:green:planet",
- .gpio = DHP1565A1_GPIO_LED_BLUE_PLANET,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dhp1565a1_gpio_keys[] __initdata = {
- {
- .desc = "Soft reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DHP1565A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DHP1565A1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DHP1565A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DHP1565A1_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg dhp1565a1_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data dhp1565a1_ar8327_data = {
- .pad0_cfg = &dhp1565a1_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info dhp1565a1_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dhp1565a1_ar8327_data,
- },
-};
-
-static void __init dhp1565a1_generic_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1ffe0000);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac0[ETH_ALEN], mac1[ETH_ALEN];
- u8 wmac0[ETH_ALEN];
-
- ath79_parse_ascii_mac(mac + DHP1565A1_MAC0_OFFSET, mac0);
- ath79_parse_ascii_mac(mac + DHP1565A1_MAC1_OFFSET, mac1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_gpio_keys_polled(-1, DHP1565A1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dhp1565a1_gpio_keys),
- dhp1565a1_gpio_keys);
-
- ath79_init_mac(wmac0, mac0, 0);
- ath79_register_wmac(art + DHP1565A1_WMAC_CALDATA_OFFSET, wmac0);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- mdiobus_register_board_info(dhp1565a1_mdio0_info,
- ARRAY_SIZE(dhp1565a1_mdio0_info));
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac0, 1);
-
- /* GMAC0 is connected to an AR8327N switch */
- 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);
-
- ath79_register_usb();
-}
-
-static void __init dhp1565a1_setup(void)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dhp1565a1_leds_gpio),
- dhp1565a1_leds_gpio);
-
- dhp1565a1_generic_setup();
-}
-
-MIPS_MACHINE(ATH79_MACH_DHP_1565_A1, "DHP-1565-A1",
- "D-Link DHP-1565 rev. A1",
- dhp1565a1_setup);
+++ /dev/null
-/*
- * DLink DIR-505 A1 board support
- *
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-
-#define DIR_505A1_GPIO_BTN_WPS 11 /* verify */
-#define DIR_505A1_GPIO_BTN_RESET 12 /* verify */
-
-#define DIR_505A1_GPIO_LED_RED 26 /* unused, fyi */
-#define DIR_505A1_GPIO_LED_GREEN 27
-
-#define DIR_505A1_GPIO_WAN_LED_ENABLE 1
-
-#define DIR_505A1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR_505A1_KEYS_DEBOUNCE_INTERVAL (3 * DIR_505A1_KEYS_POLL_INTERVAL)
-
-#define DIR_505A1_ART_ADDRESS 0x1f010000
-#define DIR_505A1_CALDATA_OFFSET 0x1000
-
-#define DIR_505A1_MAC_PART_ADDRESS 0x1f020000
-#define DIR_505A1_LAN_MAC_OFFSET 0x04
-#define DIR_505A1_WAN_MAC_OFFSET 0x16
-
-static struct gpio_led dir_505_a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DIR_505A1_GPIO_LED_GREEN,
- .active_low = 1,
- }, {
- .name = "d-link:red:status",
- .gpio = DIR_505A1_GPIO_LED_RED,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dir_505_a1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR_505A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_505A1_GPIO_BTN_RESET,
- .active_low = 0,
- }, {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR_505A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_505A1_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static void __init dir_505_a1_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(DIR_505A1_ART_ADDRESS);
- u8 *mac = (u8 *) KSEG1ADDR(DIR_505A1_MAC_PART_ADDRESS);
- u8 lan_mac[ETH_ALEN];
- u8 wan_mac[ETH_ALEN];
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- gpio_request_one(DIR_505A1_GPIO_WAN_LED_ENABLE,
- GPIOF_OUT_INIT_LOW, "WAN LED enable");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir_505_a1_leds_gpio),
- dir_505_a1_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, DIR_505A1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir_505_a1_gpio_keys),
- dir_505_a1_gpio_keys);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_usb();
-
- ath79_parse_ascii_mac(mac + DIR_505A1_LAN_MAC_OFFSET, lan_mac);
- ath79_parse_ascii_mac(mac + DIR_505A1_WAN_MAC_OFFSET, wan_mac);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, wan_mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, lan_mac, 0);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_register_wmac(art + DIR_505A1_CALDATA_OFFSET, lan_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_505_A1, "DIR-505-A1",
- "D-Link DIR-505 rev. A1", dir_505_a1_setup);
+++ /dev/null
-/*
- * D-Link DIR-600 rev. A1 board support
- *
- * Copyright (C) 2010-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2012 Vadim Girlin <vadimgirlin@gmail.com>
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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 "machtypes.h"
-#include "nvram.h"
-
-#define DIR_600_A1_GPIO_LED_WPS 0
-#define DIR_600_A1_GPIO_LED_POWER_AMBER 1
-#define DIR_600_A1_GPIO_LED_POWER_GREEN 6
-#define DIR_600_A1_GPIO_LED_LAN1 13
-#define DIR_600_A1_GPIO_LED_LAN2 14
-#define DIR_600_A1_GPIO_LED_LAN3 15
-#define DIR_600_A1_GPIO_LED_LAN4 16
-#define DIR_600_A1_GPIO_LED_WAN_AMBER 7
-#define DIR_600_A1_GPIO_LED_WAN_GREEN 17
-
-#define DIR_600_A1_GPIO_BTN_RESET 8
-#define DIR_600_A1_GPIO_BTN_WPS 12
-
-#define DIR_600_A1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR_600_A1_KEYS_DEBOUNCE_INTERVAL (3 * DIR_600_A1_KEYS_POLL_INTERVAL)
-
-#define DIR_600_A1_NVRAM_ADDR 0x1f030000
-#define DIR_600_A1_NVRAM_SIZE 0x10000
-
-static struct gpio_led dir_600_a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DIR_600_A1_GPIO_LED_POWER_GREEN,
- }, {
- .name = "d-link:amber:power",
- .gpio = DIR_600_A1_GPIO_LED_POWER_AMBER,
- }, {
- .name = "d-link:amber:wan",
- .gpio = DIR_600_A1_GPIO_LED_WAN_AMBER,
- }, {
- .name = "d-link:green:wan",
- .gpio = DIR_600_A1_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- }, {
- .name = "d-link:green:lan1",
- .gpio = DIR_600_A1_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "d-link:green:lan2",
- .gpio = DIR_600_A1_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "d-link:green:lan3",
- .gpio = DIR_600_A1_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "d-link:green:lan4",
- .gpio = DIR_600_A1_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "d-link:blue:wps",
- .gpio = DIR_600_A1_GPIO_LED_WPS,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dir_600_a1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR_600_A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_600_A1_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR_600_A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_600_A1_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static void __init dir_600_a1_setup(void)
-{
- const char *nvram = (char *) KSEG1ADDR(DIR_600_A1_NVRAM_ADDR);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 mac_buff[6];
- u8 *mac = NULL;
-
- if (ath79_nvram_parse_mac_addr(nvram, DIR_600_A1_NVRAM_SIZE,
- "lan_mac=", mac_buff) == 0) {
- ath79_init_mac(ath79_eth0_data.mac_addr, mac_buff, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac_buff, 1);
- mac = mac_buff;
- }
-
- ath79_register_m25p80(NULL);
-
- ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir_600_a1_leds_gpio),
- dir_600_a1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DIR_600_A1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir_600_a1_gpio_keys),
- dir_600_a1_gpio_keys);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-
- ap91_pci_init(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_600_A1, "DIR-600-A1", "D-Link DIR-600 rev. A1",
- dir_600_a1_setup);
-
-MIPS_MACHINE(ATH79_MACH_EBR_2310_C1, "EBR-2310-C1", "D-Link EBR-2310 rev. C1",
- dir_600_a1_setup);
-
-static void __init dir_615_e1_setup(void)
-{
- dir_600_a1_setup();
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_615_E1, "DIR-615-E1", "D-Link DIR-615 rev. E1",
- dir_615_e1_setup);
-
-static void __init dir_615_e4_setup(void)
-{
- dir_600_a1_setup();
- ap9x_pci_setup_wmac_led_pin(0, 1);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_615_E4, "DIR-615-E4", "D-Link DIR-615 rev. E4",
- dir_615_e4_setup);
+++ /dev/null
-/*
- * D-Link DIR-615 rev C1 board support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define DIR_615C1_GPIO_LED_ORANGE_STATUS 1 /* ORANGE:STATUS:TRICOLOR */
-#define DIR_615C1_GPIO_LED_BLUE_WPS 3 /* BLUE:WPS */
-#define DIR_615C1_GPIO_LED_GREEN_WAN 4 /* GREEN:WAN:TRICOLOR */
-#define DIR_615C1_GPIO_LED_GREEN_WANCPU 5 /* GREEN:WAN:CPU:TRICOLOR */
-#define DIR_615C1_GPIO_LED_GREEN_WLAN 6 /* GREEN:WLAN */
-#define DIR_615C1_GPIO_LED_GREEN_STATUS 14 /* GREEN:STATUS:TRICOLOR */
-#define DIR_615C1_GPIO_LED_ORANGE_WAN 15 /* ORANGE:WAN:TRICOLOR */
-
-/* buttons may need refinement */
-
-#define DIR_615C1_GPIO_BTN_WPS 12
-#define DIR_615C1_GPIO_BTN_RESET 21
-
-#define DIR_615C1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR_615C1_KEYS_DEBOUNCE_INTERVAL (3 * DIR_615C1_KEYS_POLL_INTERVAL)
-
-#define DIR_615C1_CONFIG_ADDR 0x1f020000
-#define DIR_615C1_CONFIG_SIZE 0x10000
-
-#define DIR_615C1_WLAN_MAC_ADDR 0x1f3fffb4
-
-static struct gpio_led dir_615c1_leds_gpio[] __initdata = {
- {
- .name = "d-link:orange:status",
- .gpio = DIR_615C1_GPIO_LED_ORANGE_STATUS,
- .active_low = 1,
- }, {
- .name = "d-link:blue:wps",
- .gpio = DIR_615C1_GPIO_LED_BLUE_WPS,
- .active_low = 1,
- }, {
- .name = "d-link:green:wan",
- .gpio = DIR_615C1_GPIO_LED_GREEN_WAN,
- .active_low = 1,
- }, {
- .name = "d-link:green:wancpu",
- .gpio = DIR_615C1_GPIO_LED_GREEN_WANCPU,
- .active_low = 1,
- }, {
- .name = "d-link:green:wlan",
- .gpio = DIR_615C1_GPIO_LED_GREEN_WLAN,
- .active_low = 1,
- }, {
- .name = "d-link:green:status",
- .gpio = DIR_615C1_GPIO_LED_GREEN_STATUS,
- .active_low = 1,
- }, {
- .name = "d-link:orange:wan",
- .gpio = DIR_615C1_GPIO_LED_ORANGE_WAN,
- .active_low = 1,
- }
-
-};
-
-static struct gpio_keys_button dir_615c1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR_615C1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_615C1_GPIO_BTN_RESET,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR_615C1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_615C1_GPIO_BTN_WPS,
- }
-};
-
-#define DIR_615C1_LAN_PHYMASK BIT(0)
-#define DIR_615C1_WAN_PHYMASK BIT(4)
-#define DIR_615C1_MDIO_MASK (~(DIR_615C1_LAN_PHYMASK | \
- DIR_615C1_WAN_PHYMASK))
-
-static void __init dir_615c1_setup(void)
-{
- const char *config = (char *) KSEG1ADDR(DIR_615C1_CONFIG_ADDR);
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 mac[ETH_ALEN], wlan_mac[ETH_ALEN];
-
- if (ath79_nvram_parse_mac_addr(config, DIR_615C1_CONFIG_SIZE,
- "lan_mac=", mac) == 0) {
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- }
-
- ath79_parse_ascii_mac((char *) KSEG1ADDR(DIR_615C1_WLAN_MAC_ADDR), wlan_mac);
-
- ath79_register_mdio(0, DIR_615C1_MDIO_MASK);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth0_data.phy_mask = DIR_615C1_LAN_PHYMASK;
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = DIR_615C1_WAN_PHYMASK;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir_615c1_leds_gpio),
- dir_615c1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DIR_615C1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir_615c1_gpio_keys),
- dir_615c1_gpio_keys);
-
- ath79_register_wmac(eeprom, wlan_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_615_C1, "DIR-615-C1", "D-Link DIR-615 rev. C1",
- dir_615c1_setup);
+++ /dev/null
-/*
- * D-Link DIR-615 rev. I1 board support
- * Copyright (C) 2013-2015 Jaehoon You <teslamint@gmail.com>
- *
- * based on the DIR-600 rev. A1 board support code
- * Copyright (C) 2010-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2012 Vadim Girlin <vadimgirlin@gmail.com>
- *
- * based on the TP-LINK TL-WR841N/ND v8/TL-MR3420 v2 board support code
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DIR_615_I1_GPIO_LED_WPS 15
-#define DIR_615_I1_GPIO_LED_POWER_AMBER 14
-#define DIR_615_I1_GPIO_LED_POWER_GREEN 4
-#define DIR_615_I1_GPIO_LED_WAN_AMBER 22
-#define DIR_615_I1_GPIO_LED_WAN_GREEN 12
-#define DIR_615_I1_GPIO_LED_WLAN_GREEN 13
-
-#define DIR_615_I1_GPIO_BTN_WPS 16
-#define DIR_615_I1_GPIO_BTN_RESET 17
-
-#define DIR_615_I1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR_615_I1_KEYS_DEBOUNCE_INTERVAL (3 * DIR_615_I1_KEYS_POLL_INTERVAL)
-
-#define DIR_615_I1_LAN_PHYMASK BIT(0)
-#define DIR_615_I1_WAN_PHYMASK BIT(4)
-#define DIR_615_I1_WLAN_MAC_ADDR 0x1fffffb4
-
-static struct gpio_led dir_615_i1_leds_gpio[] __initdata = {
- {
- .name = "d-link:green:power",
- .gpio = DIR_615_I1_GPIO_LED_POWER_GREEN,
- }, {
- .name = "d-link:amber:power",
- .gpio = DIR_615_I1_GPIO_LED_POWER_AMBER,
- }, {
- .name = "d-link:amber:wan",
- .gpio = DIR_615_I1_GPIO_LED_WAN_AMBER,
- }, {
- .name = "d-link:green:wan",
- .gpio = DIR_615_I1_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- }, {
- .name = "d-link:green:wlan",
- .gpio = DIR_615_I1_GPIO_LED_WLAN_GREEN,
- .active_low = 1,
- }, {
- .name = "d-link:blue:wps",
- .gpio = DIR_615_I1_GPIO_LED_WPS,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dir_615_i1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR_615_I1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_615_I1_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR_615_I1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR_615_I1_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static void __init dir_615_i1_setup(void)
-{
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 mac[ETH_ALEN];
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, ~(DIR_615_I1_WAN_PHYMASK));
-
- ath79_parse_ascii_mac((char *) KSEG1ADDR(DIR_615_I1_WLAN_MAC_ADDR), mac);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
-
- /* GMAC0 is connected to the PHY0 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = DIR_615_I1_WAN_PHYMASK;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_mask = DIR_615_I1_LAN_PHYMASK;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(NULL);
-
- /* Disable JTAG, enabling GPIOs 0-3 */
- /* Configure OBS4 line, for GPIO 4*/
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
- AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir_615_i1_leds_gpio),
- dir_615_i1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DIR_615_I1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir_615_i1_gpio_keys),
- dir_615_i1_gpio_keys);
-
- ath79_register_wmac(eeprom, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_615_I1, "DIR-615-I1", "D-Link DIR-615 rev. I1",
- dir_615_i1_setup);
+++ /dev/null
-/*
- * D-Link DIR-825 rev. B1 board support
- *
- * Copyright (C) 2009-2011 Lukas Kuna, Evkanet, s.r.o.
- *
- * based on mach-wndr3700.c
- *
- * 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 <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/rtl8366.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-
-#define DIR825B1_GPIO_LED_BLUE_USB 0
-#define DIR825B1_GPIO_LED_ORANGE_POWER 1
-#define DIR825B1_GPIO_LED_BLUE_POWER 2
-#define DIR825B1_GPIO_LED_BLUE_WPS 4
-#define DIR825B1_GPIO_LED_ORANGE_PLANET 6
-#define DIR825B1_GPIO_LED_BLUE_PLANET 11
-
-#define DIR825B1_GPIO_BTN_RESET 3
-#define DIR825B1_GPIO_BTN_WPS 8
-
-#define DIR825B1_GPIO_RTL8366_SDA 5
-#define DIR825B1_GPIO_RTL8366_SCK 7
-
-#define DIR825B1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR825B1_KEYS_DEBOUNCE_INTERVAL (3 * DIR825B1_KEYS_POLL_INTERVAL)
-
-#define DIR825B1_CAL0_OFFSET 0x1000
-#define DIR825B1_CAL1_OFFSET 0x5000
-#define DIR825B1_MAC0_OFFSET 0xffa0
-#define DIR825B1_MAC1_OFFSET 0xffb4
-
-#define DIR825B1_CAL_LOCATION_0 0x1f660000
-#define DIR825B1_CAL_LOCATION_1 0x1f7f0000
-
-static struct gpio_led dir825b1_leds_gpio[] __initdata = {
- {
- .name = "d-link:blue:usb",
- .gpio = DIR825B1_GPIO_LED_BLUE_USB,
- .active_low = 1,
- }, {
- .name = "d-link:orange:power",
- .gpio = DIR825B1_GPIO_LED_ORANGE_POWER,
- .active_low = 1,
- }, {
- .name = "d-link:blue:power",
- .gpio = DIR825B1_GPIO_LED_BLUE_POWER,
- .active_low = 1,
- }, {
- .name = "d-link:blue:wps",
- .gpio = DIR825B1_GPIO_LED_BLUE_WPS,
- .active_low = 1,
- }, {
- .name = "d-link:orange:planet",
- .gpio = DIR825B1_GPIO_LED_ORANGE_PLANET,
- .active_low = 1,
- }, {
- .name = "d-link:blue:planet",
- .gpio = DIR825B1_GPIO_LED_BLUE_PLANET,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dir825b1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR825B1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR825B1_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR825B1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR825B1_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static struct rtl8366_initval dir825b1_rtl8366s_initvals[] = {
- { .reg = 0x06, .val = 0x0108 },
-};
-
-static struct rtl8366_platform_data dir825b1_rtl8366s_data = {
- .gpio_sda = DIR825B1_GPIO_RTL8366_SDA,
- .gpio_sck = DIR825B1_GPIO_RTL8366_SCK,
- .num_initvals = ARRAY_SIZE(dir825b1_rtl8366s_initvals),
- .initvals = dir825b1_rtl8366s_initvals,
-};
-
-static struct platform_device dir825b1_rtl8366s_device = {
- .name = RTL8366S_DRIVER_NAME,
- .id = -1,
- .dev = {
- .platform_data = &dir825b1_rtl8366s_data,
- }
-};
-
-static bool __init dir825b1_is_caldata_valid(u8 *p)
-{
- u16 *magic0, *magic1;
-
- magic0 = (u16 *)(p + DIR825B1_CAL0_OFFSET);
- magic1 = (u16 *)(p + DIR825B1_CAL1_OFFSET);
-
- return (*magic0 == 0xa55a && *magic1 == 0xa55a);
-}
-
-static void __init dir825b1_wlan_init(void)
-{
- u8 *caldata;
- u8 mac0[ETH_ALEN], mac1[ETH_ALEN];
- u8 wmac0[ETH_ALEN], wmac1[ETH_ALEN];
-
- caldata = (u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_0);
- if (!dir825b1_is_caldata_valid(caldata)) {
- caldata = (u8 *)KSEG1ADDR(DIR825B1_CAL_LOCATION_1);
- if (!dir825b1_is_caldata_valid(caldata)) {
- pr_err("no calibration data found\n");
- return;
- }
- }
-
- ath79_parse_ascii_mac(caldata + DIR825B1_MAC0_OFFSET, mac0);
- ath79_parse_ascii_mac(caldata + DIR825B1_MAC1_OFFSET, mac1);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac0, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac1, 0);
- ath79_init_mac(wmac0, mac0, 0);
- ath79_init_mac(wmac1, mac1, 1);
-
- ap9x_pci_setup_wmac_led_pin(0, 5);
- ap9x_pci_setup_wmac_led_pin(1, 5);
-
- ap94_pci_init(caldata + DIR825B1_CAL0_OFFSET, wmac0,
- caldata + DIR825B1_CAL1_OFFSET, wmac1);
-}
-
-static void __init dir825b1_setup(void)
-{
- dir825b1_wlan_init();
-
- ath79_register_mdio(0, 0x0);
-
- ath79_eth0_data.mii_bus_dev = &dir825b1_rtl8366s_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_pll_data.pll_1000 = 0x11110000;
-
- ath79_eth1_data.mii_bus_dev = &dir825b1_rtl8366s_device.dev;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = 0x10;
- ath79_eth1_pll_data.pll_1000 = 0x11110000;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir825b1_leds_gpio),
- dir825b1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DIR825B1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir825b1_gpio_keys),
- dir825b1_gpio_keys);
-
- ath79_register_usb();
-
- platform_device_register(&dir825b1_rtl8366s_device);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_825_B1, "DIR-825-B1", "D-Link DIR-825 rev. B1",
- dir825b1_setup);
+++ /dev/null
-/*
- * D-Link DIR-825 rev. C1 board support
- *
- * Copyright (C) 2013 Alexander Stadler
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DIR825C1_GPIO_LED_BLUE_USB 11
-#define DIR825C1_GPIO_LED_AMBER_POWER 14
-#define DIR825C1_GPIO_LED_BLUE_POWER 22
-#define DIR825C1_GPIO_LED_BLUE_WPS 15
-#define DIR825C1_GPIO_LED_AMBER_PLANET 19
-#define DIR825C1_GPIO_LED_BLUE_PLANET 18
-#define DIR825C1_GPIO_LED_WLAN_2G 13
-
-#define DIR825C1_GPIO_WAN_LED_ENABLE 20
-
-#define DIR825C1_GPIO_BTN_RESET 17
-#define DIR825C1_GPIO_BTN_WPS 16
-
-#define DIR825C1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR825C1_KEYS_DEBOUNCE_INTERVAL (3 * DIR825C1_KEYS_POLL_INTERVAL)
-
-#define DIR825C1_MAC0_OFFSET 0x4
-#define DIR825C1_MAC1_OFFSET 0x18
-#define DIR825C1_WMAC_CALDATA_OFFSET 0x1000
-#define DIR825C1_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led dir825c1_leds_gpio[] __initdata = {
- {
- .name = "d-link:blue:usb",
- .gpio = DIR825C1_GPIO_LED_BLUE_USB,
- .active_low = 1,
- },
- {
- .name = "d-link:amber:power",
- .gpio = DIR825C1_GPIO_LED_AMBER_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:blue:power",
- .gpio = DIR825C1_GPIO_LED_BLUE_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:blue:wps",
- .gpio = DIR825C1_GPIO_LED_BLUE_WPS,
- .active_low = 1,
- },
- {
- .name = "d-link:amber:planet",
- .gpio = DIR825C1_GPIO_LED_AMBER_PLANET,
- .active_low = 1,
- },
- {
- .name = "d-link:blue:wlan2g",
- .gpio = DIR825C1_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
-};
-
-static struct gpio_led dir835a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:amber:power",
- .gpio = DIR825C1_GPIO_LED_AMBER_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:green:power",
- .gpio = DIR825C1_GPIO_LED_BLUE_POWER,
- .active_low = 1,
- },
- {
- .name = "d-link:blue:wps",
- .gpio = DIR825C1_GPIO_LED_BLUE_WPS,
- .active_low = 1,
- },
- {
- .name = "d-link:amber:planet",
- .gpio = DIR825C1_GPIO_LED_AMBER_PLANET,
- .active_low = 1,
- },
- {
- .name = "d-link:green:planet",
- .gpio = DIR825C1_GPIO_LED_BLUE_PLANET,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dir825c1_gpio_keys[] __initdata = {
- {
- .desc = "Soft reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR825C1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR825C1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR825C1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR825C1_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg dir825c1_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_led_cfg dir825c1_ar8327_led_cfg = {
- .led_ctrl0 = 0x00000000,
- .led_ctrl1 = 0xc737c737,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x00c30c00,
- .open_drain = true,
-};
-
-static struct ar8327_platform_data dir825c1_ar8327_data = {
- .pad0_cfg = &dir825c1_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &dir825c1_ar8327_led_cfg,
-};
-
-static struct mdio_board_info dir825c1_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dir825c1_ar8327_data,
- },
-};
-
-static void __init dir825c1_generic_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1ffe0000);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 mac0[ETH_ALEN], mac1[ETH_ALEN];
- u8 wmac0[ETH_ALEN], wmac1[ETH_ALEN];
-
- ath79_parse_ascii_mac(mac + DIR825C1_MAC0_OFFSET, mac0);
- ath79_parse_ascii_mac(mac + DIR825C1_MAC1_OFFSET, mac1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_gpio_keys_polled(-1, DIR825C1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir825c1_gpio_keys),
- dir825c1_gpio_keys);
-
- ath79_init_mac(wmac0, mac0, 0);
- ath79_register_wmac(art + DIR825C1_WMAC_CALDATA_OFFSET, wmac0);
-
- ath79_init_mac(wmac1, mac1, 1);
- ap91_pci_init(art + DIR825C1_PCIE_CALDATA_OFFSET, wmac1);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- mdiobus_register_board_info(dir825c1_mdio0_info,
- ARRAY_SIZE(dir825c1_mdio0_info));
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac0, 0);
-
- /* GMAC0 is connected to an AR8327N switch */
- 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);
-
- ath79_register_usb();
-}
-
-static void __init dir825c1_setup(void)
-{
- ath79_gpio_output_select(DIR825C1_GPIO_LED_BLUE_USB,
- AR934X_GPIO_OUT_GPIO);
-
- gpio_request_one(DIR825C1_GPIO_WAN_LED_ENABLE,
- GPIOF_OUT_INIT_LOW, "WAN LED enable");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir825c1_leds_gpio),
- dir825c1_leds_gpio);
-
- ap9x_pci_setup_wmac_led_pin(0, 0);
-
- dir825c1_generic_setup();
-}
-
-static void __init dir835a1_setup(void)
-{
- dir825c1_ar8327_data.led_cfg = NULL;
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir835a1_leds_gpio),
- dir835a1_leds_gpio);
-
- dir825c1_generic_setup();
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_825_C1, "DIR-825-C1",
- "D-Link DIR-825 rev. C1",
- dir825c1_setup);
-
-MIPS_MACHINE(ATH79_MACH_DIR_835_A1, "DIR-835-A1",
- "D-Link DIR-835 rev. A1",
- dir835a1_setup);
+++ /dev/null
-/*
- * D-Link DIR-869 A1 support
- *
- * Copyright (C) 2015-2016 P. Wassi <p.wassi at gmx.at>
- * Copyright (C) 2016 Matthias Schiffer <mschiffer@universe-factory.net>
- *
- * Derived from: mach-ubnt-unifiac.c
- *
- * 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 <linux/gpio.h>
-#include <linux/init.h>
-#include <linux/pci.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/irq.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/ar8216_platform.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-
-#define DIR869A1_GPIO_BTN_RESET 1
-#define DIR869A1_GPIO_BTN_WPS 2
-#define DIR869A1_GPIO_SWITCH_MODE 8
-
-#define DIR869A1_GPIO_ENABLE_SWITCH 11
-
-#define DIR869A1_GPIO_LED_ORANGE 15
-#define DIR869A1_GPIO_LED_WHITE 16
-
-#define DIR869A1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DIR869A1_KEYS_DEBOUNCE_INTERVAL (3 * DIR869A1_KEYS_POLL_INTERVAL)
-
-
-#define DIR869A1_DEVDATA_ADDR 0x1f050000
-#define DIR869A1_DEVDATA_SIZE 0x10000
-
-#define DIR869A1_EEPROM_ADDR 0x1fff0000
-#define DIR869A1_WMAC_CALDATA_OFFSET 0x1000
-#define DIR869A1_PCI_CALDATA_OFFSET 0x5000
-
-
-static struct gpio_led dir869a1_leds_gpio[] __initdata = {
- {
- .name = "d-link:white:status",
- .gpio = DIR869A1_GPIO_LED_WHITE,
- .active_low = 1,
- },
- {
- .name = "d-link:orange:status",
- .gpio = DIR869A1_GPIO_LED_ORANGE,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dir869a1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DIR869A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR869A1_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DIR869A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR869A1_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "mode",
- .type = EV_SW,
- .code = BTN_0,
- .debounce_interval = DIR869A1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DIR869A1_GPIO_SWITCH_MODE,
- .active_low = 0,
- },
-};
-
-
-static struct ar8327_pad_cfg dir869a1_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data dir869a1_ar8327_data = {
- .pad0_cfg = &dir869a1_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-
-static struct mdio_board_info dir869a1_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dir869a1_ar8327_data,
- },
-};
-
-
-static void dir869a1_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(DIR869A1_DEVDATA_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, DIR869A1_DEVDATA_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-static void __init dir869a1_setup(void)
-{
- u8 *eeprom = (u8 *) KSEG1ADDR(DIR869A1_EEPROM_ADDR);
- u8 wlan24mac[ETH_ALEN] = {}, wlan5mac[ETH_ALEN] = {};
-
- ath79_register_m25p80(NULL);
-
- gpio_request_one(DIR869A1_GPIO_ENABLE_SWITCH,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "Switch power");
-
- dir869a1_get_mac("lanmac=", ath79_eth0_data.mac_addr);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(0);
-
- mdiobus_register_board_info(dir869a1_mdio0_info,
- ARRAY_SIZE(dir869a1_mdio0_info));
-
- ath79_register_mdio(0, 0);
- ath79_register_eth(0);
-
- dir869a1_get_mac("wlan24mac=", wlan24mac);
- ath79_register_wmac(eeprom + DIR869A1_WMAC_CALDATA_OFFSET, wlan24mac);
-
- dir869a1_get_mac("wlan5mac=", wlan5mac);
- ap91_pci_init(eeprom + DIR869A1_PCI_CALDATA_OFFSET, wlan5mac);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dir869a1_leds_gpio),
- dir869a1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DIR869A1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dir869a1_gpio_keys),
- dir869a1_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_DIR_869_A1, "DIR-869-A1", "D-Link DIR-869 rev. A1",
- dir869a1_setup);
+++ /dev/null
-/*
- * devolo dLAN Hotspot board support
- *
- * Copyright (C) 2015 Torsten Schnuis <torsten.schnuis@gik.de>
- * Copyright (C) 2015 devolo AG
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DLAN_HOTSPOT_GPIO_LED_WIFI 0
-
-#define DLAN_HOTSPOT_GPIO_BTN_RESET 11
-#define DLAN_HOTSPOT_GPIO_BTN_PLC_PAIRING 12
-#define DLAN_HOTSPOT_GPIO_BTN_WIFI 21
-
-#define DLAN_HOTSPOT_GPIO_PLC_POWER 22
-#define DLAN_HOTSPOT_GPIO_PLC_RESET 20
-#define DLAN_HOTSPOT_GPIO_PLC_DISABLE_LEDS 18
-
-#define DLAN_HOTSPOT_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DLAN_HOTSPOT_KEYS_DEBOUNCE_INTERVAL (3 * DLAN_HOTSPOT_KEYS_POLL_INTERVAL)
-
-#define DLAN_HOTSPOT_ART_ADDRESS 0x1fff0000
-#define DLAN_HOTSPOT_CALDATA_OFFSET 0x00001000
-#define DLAN_HOTSPOT_MAC_ADDRESS_OFFSET 0x00001002
-
-static struct gpio_led dlan_hotspot_leds_gpio[] __initdata = {
- {
- .name = "devolo:green:wifi",
- .gpio = DLAN_HOTSPOT_GPIO_LED_WIFI,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button dlan_hotspot_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DLAN_HOTSPOT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_HOTSPOT_GPIO_BTN_RESET,
- .active_low = 0,
- },
- {
- .desc = "Pairing button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = DLAN_HOTSPOT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_HOTSPOT_GPIO_BTN_PLC_PAIRING,
- .active_low = 0,
- },
- {
- .desc = "WLAN button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DLAN_HOTSPOT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_HOTSPOT_GPIO_BTN_WIFI,
- .active_low = 0,
- }
-};
-
-static void __init dlan_hotspot_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(DLAN_HOTSPOT_ART_ADDRESS);
- u8 *cal = art + DLAN_HOTSPOT_CALDATA_OFFSET;
- u8 *wifi_mac = art + DLAN_HOTSPOT_MAC_ADDRESS_OFFSET;
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dlan_hotspot_leds_gpio),
- dlan_hotspot_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DLAN_HOTSPOT_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dlan_hotspot_gpio_keys),
- dlan_hotspot_gpio_keys);
-
- gpio_request_one(DLAN_HOTSPOT_GPIO_PLC_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "PLC power");
- gpio_request_one(DLAN_HOTSPOT_GPIO_PLC_RESET,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "PLC reset");
- gpio_request_one(DLAN_HOTSPOT_GPIO_PLC_DISABLE_LEDS,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "PLC LEDs");
-
- ath79_register_usb();
-
- ath79_register_m25p80(NULL);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, wifi_mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, wifi_mac, 2);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(cal, wifi_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_DLAN_HOTSPOT, "dLAN-Hotspot",
- "dLAN Hotspot", dlan_hotspot_setup);
+++ /dev/null
-/*
- * devolo dLAN pro 500 Wireless+ support
- *
- * Copyright (c) 2013-2015 devolo AG
- * Copyright (c) 2011-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/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <linux/gpio.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-nfc.h"
-#include "dev-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DLAN_PRO_1200_AC_GPIO_DLAN_POWER_ENABLE 13
-#define DLAN_PRO_1200_AC_GPIO_WLAN_POWER_ENABLE 21
-#define DLAN_PRO_1200_AC_GPIO_LED_WLAN 12
-#define DLAN_PRO_1200_AC_GPIO_LED_DLAN 14
-#define DLAN_PRO_1200_AC_GPIO_LED_DLAN_ERR 15
-
-#define DLAN_PRO_1200_AC_GPIO_BTN_WLAN 20
-#define DLAN_PRO_1200_AC_GPIO_BTN_DLAN 22
-#define DLAN_PRO_1200_AC_GPIO_BTN_RESET 4
-#define DLAN_PRO_1200_AC_GPIO_DLAN_IND 17
-#define DLAN_PRO_1200_AC_GPIO_DLAN_ERR_IND 16
-
-#define DLAN_PRO_1200_AC_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DLAN_PRO_1200_AC_KEYS_DEBOUNCE_INTERVAL (3 * DLAN_PRO_1200_AC_KEYS_POLL_INTERVAL)
-
-#define DLAN_PRO_1200_AC_ART_ADDRESS 0x1fff0000
-#define DLAN_PRO_1200_AC_CALDATA_OFFSET 0x1000
-#define DLAN_PRO_1200_AC_WIFIMAC_OFFSET 0x1002
-#define DLAN_PRO_1200_AC_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led dlan_pro_1200_ac_leds_gpio[] __initdata = {
- {
- .name = "devolo:status:wlan",
- .gpio = DLAN_PRO_1200_AC_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "devolo:status:dlan",
- .gpio = DLAN_PRO_1200_AC_GPIO_LED_DLAN,
- .active_low = 1,
- },
- {
- .name = "devolo:error:dlan",
- .gpio = DLAN_PRO_1200_AC_GPIO_LED_DLAN_ERR,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button dlan_pro_1200_ac_gpio_keys[] __initdata = {
- {
- .desc = "dLAN button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = DLAN_PRO_1200_AC_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_1200_AC_GPIO_BTN_DLAN,
- .active_low = 1,
- },
- {
- .desc = "WLAN button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DLAN_PRO_1200_AC_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_1200_AC_GPIO_BTN_WLAN,
- .active_low = 0,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DLAN_PRO_1200_AC_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_1200_AC_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct ar8327_pad_cfg dlan_pro_1200_ac_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = false,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
- .mac06_exchange_dis = true,
-};
-
-static struct ar8327_pad_cfg dlan_pro_1200_ac_ar8327_pad5_cfg = {
- .mode = 0,
- .txclk_delay_en = 0,
- .rxclk_delay_en = 0,
- .txclk_delay_sel = 0,
- .rxclk_delay_sel = 0,
-};
-
-static struct ar8327_platform_data dlan_pro_1200_ac_ar8327_data = {
- .pad0_cfg = &dlan_pro_1200_ac_ar8327_pad0_cfg,
- .pad5_cfg = &dlan_pro_1200_ac_ar8327_pad5_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info dlan_pro_1200_ac_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dlan_pro_1200_ac_ar8327_data,
- },
-};
-
-static void __init dlan_pro_1200_ac_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(DLAN_PRO_1200_AC_ART_ADDRESS);
- u8 *cal = art + DLAN_PRO_1200_AC_CALDATA_OFFSET;
- u8 *wifi_mac = art + DLAN_PRO_1200_AC_WIFIMAC_OFFSET;
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dlan_pro_1200_ac_leds_gpio),
- dlan_pro_1200_ac_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DLAN_PRO_1200_AC_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dlan_pro_1200_ac_gpio_keys),
- dlan_pro_1200_ac_gpio_keys);
-
- /* dLAN power must be enabled from user-space as soon as the boot-from-host daemon is running */
- gpio_request_one(DLAN_PRO_1200_AC_GPIO_DLAN_POWER_ENABLE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "dLAN power");
-
- /* WLAN power is turned on initially to allow the PCI bus scan to succeed */
- gpio_request_one(DLAN_PRO_1200_AC_GPIO_WLAN_POWER_ENABLE,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "WLAN power");
-
- ath79_register_wmac(cal, wifi_mac);
- ap91_pci_init(art + DLAN_PRO_1200_AC_PCIE_CALDATA_OFFSET, NULL);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, wifi_mac, 2);
-
- mdiobus_register_board_info(dlan_pro_1200_ac_mdio0_info,
- ARRAY_SIZE(dlan_pro_1200_ac_mdio0_info));
-
- /* GMAC0 is connected to an AR8337 */
- 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 = 0x02000000;
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_DLAN_PRO_1200_AC, "dLAN-pro-1200-ac", "devolo dLAN pro 1200+ WiFi ac",
- dlan_pro_1200_ac_setup);
+++ /dev/null
-/*
- * devolo dLAN pro 500 Wireless+ support
- *
- * Copyright (c) 2013-2015 devolo AG
- * Copyright (c) 2011-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/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <linux/gpio.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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 DLAN_PRO_500_WP_GPIO_DLAN_POWER_ENABLE 13
-#define DLAN_PRO_500_WP_GPIO_DLAN_LED_ENABLE 17
-#define DLAN_PRO_500_WP_GPIO_LED_WLAN_5G 11
-#define DLAN_PRO_500_WP_GPIO_LED_WLAN_2G 12
-#define DLAN_PRO_500_WP_GPIO_LED_STATUS 16
-#define DLAN_PRO_500_WP_GPIO_LED_ETH 14
-
-#define DLAN_PRO_500_WP_GPIO_BTN_WPS 20
-#define DLAN_PRO_500_WP_GPIO_BTN_WLAN 22
-#define DLAN_PRO_500_WP_GPIO_BTN_DLAN 21
-#define DLAN_PRO_500_WP_GPIO_BTN_RESET 4
-
-#define DLAN_PRO_500_WP_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DLAN_PRO_500_WP_KEYS_DEBOUNCE_INTERVAL (3 * DLAN_PRO_500_WP_KEYS_POLL_INTERVAL)
-
-#define DLAN_PRO_500_WP_ART_ADDRESS 0x1fff0000
-#define DLAN_PRO_500_WP_CALDATA_OFFSET 0x1000
-#define DLAN_PRO_500_WP_MAC_ADDRESS_OFFSET 0x1002
-#define DLAN_PRO_500_WP_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led dlan_pro_500_wp_leds_gpio[] __initdata = {
- {
- .name = "devolo:green:status",
- .gpio = DLAN_PRO_500_WP_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "devolo:green:eth",
- .gpio = DLAN_PRO_500_WP_GPIO_LED_ETH,
- .active_low = 1,
- },
- {
- .name = "devolo:blue:wlan-5g",
- .gpio = DLAN_PRO_500_WP_GPIO_LED_WLAN_5G,
- .active_low = 1,
- },
- {
- .name = "devolo:green:wlan-2g",
- .gpio = DLAN_PRO_500_WP_GPIO_LED_WLAN_2G,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dlan_pro_500_wp_gpio_keys[] __initdata = {
- {
- .desc = "dLAN button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = DLAN_PRO_500_WP_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_500_WP_GPIO_BTN_DLAN,
- .active_low = 0,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DLAN_PRO_500_WP_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_500_WP_GPIO_BTN_WPS,
- .active_low = 0,
- },
- {
- .desc = "WLAN button",
- .type = EV_KEY,
- .code = BTN_2,
- .debounce_interval = DLAN_PRO_500_WP_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_500_WP_GPIO_BTN_WLAN,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DLAN_PRO_500_WP_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DLAN_PRO_500_WP_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct ar8327_pad_cfg dlan_pro_500_wp_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_PHY_RGMII,
- .txclk_delay_en = false,
- .rxclk_delay_en = false,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL0,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_led_cfg dlan_pro_500_wp_ar8327_led_cfg = {
- .led_ctrl0 = 0x00000000,
- .led_ctrl1 = 0xc737c737,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x00c30c00,
- .open_drain = true,
-};
-
-static struct ar8327_platform_data dlan_pro_500_wp_ar8327_data = {
- .pad0_cfg = &dlan_pro_500_wp_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 0,
- .rxpause = 0,
- },
- .led_cfg = &dlan_pro_500_wp_ar8327_led_cfg,
-};
-
-static struct mdio_board_info dlan_pro_500_wp_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dlan_pro_500_wp_ar8327_data,
- },
-};
-
-static void __init dlan_pro_500_wp_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(DLAN_PRO_500_WP_ART_ADDRESS);
- u8 *cal = art + DLAN_PRO_500_WP_CALDATA_OFFSET;
- u8 *wifi_mac = art + DLAN_PRO_500_WP_MAC_ADDRESS_OFFSET;
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dlan_pro_500_wp_leds_gpio),
- dlan_pro_500_wp_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DLAN_PRO_500_WP_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dlan_pro_500_wp_gpio_keys),
- dlan_pro_500_wp_gpio_keys);
-
- gpio_request_one(DLAN_PRO_500_WP_GPIO_DLAN_POWER_ENABLE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "PLC power");
- gpio_request_one(DLAN_PRO_500_WP_GPIO_DLAN_LED_ENABLE,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "PLC LEDs");
-
- ath79_register_wmac(cal, wifi_mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- ath79_register_mdio(1, 0x0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(dlan_pro_500_wp_mdio0_info,
- ARRAY_SIZE(dlan_pro_500_wp_mdio0_info));
-
- /* GMAC0 is connected to a AR7400 PLC in PHY mode */
- ath79_init_mac(ath79_eth0_data.mac_addr, wifi_mac, 2);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_pll_data.pll_1000 = 0x0e000000;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_init_mac(ath79_eth1_data.mac_addr, wifi_mac, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_DLAN_PRO_500_WP, "dLAN-pro-500-wp", "devolo dLAN pro 500 Wireless+",
- dlan_pro_500_wp_setup);
+++ /dev/null
-/*
- * DomyWifi DW33D support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 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/version.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/platform/ar934x_nfc.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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 DW33D_GPIO_LED_MMC 4
-#define DW33D_GPIO_LED_WLAN_2G 13
-#define DW33D_GPIO_LED_STATUS 14
-#define DW33D_GPIO_LED_USB 15
-#define DW33D_GPIO_LED_INTERNET 22
-
-#define DW33D_GPIO_BTN_RESET 17
-
-#define DW33D_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DW33D_KEYS_DEBOUNCE_INTERVAL (3 * DW33D_KEYS_POLL_INTERVAL)
-
-#define DW33D_MAC0_OFFSET 0
-#define DW33D_MAC1_OFFSET 6
-#define DW33D_WMAC_OFFSET 12
-#define DW33D_WMAC_CALDATA_OFFSET 0x1000
-#define DW33D_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led dw33d_leds_gpio[] __initdata = {
- {
- .name = "dw33d:blue:status",
- .gpio = DW33D_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "dw33d:blue:mmc",
- .gpio = DW33D_GPIO_LED_MMC,
- .active_low = 1,
- },
- {
- .name = "dw33d:blue:usb",
- .gpio = DW33D_GPIO_LED_USB,
- .active_low = 1,
- },
- {
- .name = "dw33d:blue:wlan-2g",
- .gpio = DW33D_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "dw33d:blue:internet",
- .gpio = DW33D_GPIO_LED_INTERNET,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dw33d_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DW33D_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DW33D_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-/* GMAC6 of the QCA8337 switch is connected to the QCA9558 SoC via SGMII */
-static struct ar8327_pad_cfg dw33d_qca8337_pad6_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-/* GMAC0 of the QCA8337 switch is connected to the QCA9558 SoC via RGMII */
-static struct ar8327_pad_cfg dw33d_qca8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data dw33d_qca8337_data = {
- .pad0_cfg = &dw33d_qca8337_pad0_cfg,
- .pad6_cfg = &dw33d_qca8337_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info dw33d_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dw33d_qca8337_data,
- },
-};
-
-static void __init dw33d_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dw33d_leds_gpio),
- dw33d_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DW33D_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dw33d_gpio_keys),
- dw33d_gpio_keys);
-
- ath79_register_usb();
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
- ath79_register_nfc();
- ath79_register_pci();
-
- ath79_register_wmac(art + DW33D_WMAC_CALDATA_OFFSET, art + DW33D_WMAC_OFFSET);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + DW33D_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + DW33D_MAC1_OFFSET, 0);
-
- mdiobus_register_board_info(dw33d_mdio0_info,
- ARRAY_SIZE(dw33d_mdio0_info));
-
- /* GMAC0 is connected to the RMGII interface */
- 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 = 0x56000000;
-
- ath79_register_eth(0);
-
- /* GMAC1 is connected tot eh SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_DOMYWIFI_DW33D, "DW33D",
- "DomyWifi DW33D",
- dw33d_setup);
+++ /dev/null
-/*
- * Wallys DR342/DR344 boards support
- *
- * Copyright (c) 2011 Qualcomm Atheros
- * Copyright (c) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2015 Philippe Duchein <wireless-dev@duchein.net>
- * Copyright (c) 2017 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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/gpio.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "pci.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-eth.h"
-#include "dev-usb.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DR34X_GPIO_LED_SIG1 12
-#define DR34X_GPIO_LED_SIG2 13
-#define DR34X_GPIO_LED_SIG3 14
-#define DR34X_GPIO_LED_SIG4 15
-#define DR34X_GPIO_LED_STATUS 11
-#define DR344_GPIO_LED_LAN 17
-#define DR344_GPIO_EXTERNAL_LNA0 18
-#define DR344_GPIO_EXTERNAL_LNA1 19
-
-#define DR34X_GPIO_BTN_RESET 16
-
-#define DR344_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DR344_KEYS_DEBOUNCE_INTERVAL (3 * DR344_KEYS_POLL_INTERVAL)
-
-#define DR34X_MAC0_OFFSET 0
-#define DR34X_MAC1_OFFSET 8
-#define DR34X_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led dr342_leds_gpio[] __initdata = {
- {
- .name = "dr342:green:status",
- .gpio = DR34X_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "dr342:green:sig1",
- .gpio = DR34X_GPIO_LED_SIG1,
- .active_low = 1,
- },
- {
- .name = "dr342:green:sig2",
- .gpio = DR34X_GPIO_LED_SIG2,
- .active_low = 1,
- },
- {
- .name = "dr342:green:sig3",
- .gpio = DR34X_GPIO_LED_SIG3,
- .active_low = 1,
- },
- {
- .name = "dr342:green:sig4",
- .gpio = DR34X_GPIO_LED_SIG4,
- .active_low = 1,
- }
-};
-
-static struct gpio_led dr344_leds_gpio[] __initdata = {
- {
- .name = "dr344:green:lan",
- .gpio = DR344_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "dr344:green:status",
- .gpio = DR34X_GPIO_LED_STATUS,
- .active_low = 1,
- },
- {
- .name = "dr344:green:sig1",
- .gpio = DR34X_GPIO_LED_SIG1,
- .active_low = 1,
- },
- {
- .name = "dr344:green:sig2",
- .gpio = DR34X_GPIO_LED_SIG2,
- .active_low = 1,
- },
- {
- .name = "dr344:green:sig3",
- .gpio = DR34X_GPIO_LED_SIG3,
- .active_low = 1,
- },
- {
- .name = "dr344:green:sig4",
- .gpio = DR34X_GPIO_LED_SIG4,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button dr34x_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DR344_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DR34X_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data dr34x_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info dr34x_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &dr34x_at803x_data,
- },
-};
-
-static void __init dr34x_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1f03f810);
-
- ath79_register_m25p80(NULL);
-
- ath79_gpio_direction_select(DR34X_GPIO_LED_STATUS, true);
- gpio_set_value(DR34X_GPIO_LED_STATUS, 1);
- ath79_gpio_output_select(DR34X_GPIO_LED_STATUS, 0);
-
- ath79_register_gpio_keys_polled(-1, DR344_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dr34x_gpio_keys),
- dr34x_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_wmac(art + DR34X_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_pci();
-
- mdiobus_register_board_info(dr34x_mdio0_info,
- ARRAY_SIZE(dr34x_mdio0_info));
-
- ath79_register_mdio(0, 0x0);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- /* GMAC0 is connected to an AR8035 Gbps PHY */
- 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 = 0x02000000;
- ath79_eth0_pll_data.pll_100 = 0x0101;
- ath79_eth0_pll_data.pll_10 = 0x1313;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac + DR34X_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-}
-
-static void __init dr342_setup(void)
-{
- dr34x_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dr342_leds_gpio),
- dr342_leds_gpio);
-}
-
-static void __init dr344_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f03f810);
-
- dr34x_setup();
-
- ath79_gpio_direction_select(DR344_GPIO_LED_LAN, true);
- gpio_set_value(DR344_GPIO_LED_LAN, 1);
- ath79_gpio_output_select(DR344_GPIO_LED_LAN, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dr344_leds_gpio),
- dr344_leds_gpio);
-
- ath79_wmac_set_ext_lna_gpio(0, DR344_GPIO_EXTERNAL_LNA0);
- ath79_wmac_set_ext_lna_gpio(1, DR344_GPIO_EXTERNAL_LNA1);
-
- ath79_register_mdio(1, 0x0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac + DR34X_MAC1_OFFSET, 0);
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_DR342, "DR342", "Wallys DR342", dr342_setup);
-MIPS_MACHINE(ATH79_MACH_DR344, "DR344", "Wallys DR344", dr344_setup);
+++ /dev/null
-/*
- * Wallys DR531 board support
- *
- * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com>
- *
- * Based on mach-wpj531.c
- *
- * 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 <linux/pci.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define DR531_GPIO_BUZZER 4
-#define DR531_GPIO_LED_WAN 11
-#define DR531_GPIO_LED_LAN 14
-#define DR531_GPIO_LED_SIG1 12
-#define DR531_GPIO_LED_SIG2 16
-#define DR531_GPIO_LED_SIG3 15
-#define DR531_GPIO_LED_SIG4 13
-
-#define DR531_GPIO_BTN_RESET 17
-
-#define DR531_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DR531_KEYS_DEBOUNCE_INTERVAL (3 * DR531_KEYS_POLL_INTERVAL)
-
-#define DR531_MAC0_OFFSET 0x0
-#define DR531_MAC1_OFFSET 0x8
-#define DR531_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led dr531_leds_gpio[] __initdata = {
- {
- .name = "dr531:green:wan",
- .gpio = DR531_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "dr531:green:lan",
- .gpio = DR531_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "dr531:green:sig1",
- .gpio = DR531_GPIO_LED_SIG1,
- .active_low = 1,
- },
- {
- .name = "dr531:green:sig2",
- .gpio = DR531_GPIO_LED_SIG2,
- .active_low = 1,
- },
- {
- .name = "dr531:green:sig3",
- .gpio = DR531_GPIO_LED_SIG3,
- .active_low = 1,
- },
- {
- .name = "dr531:green:sig4",
- .gpio = DR531_GPIO_LED_SIG4,
- .active_low = 1,
- },
- {
- .name = "dr531:buzzer",
- .gpio = DR531_GPIO_BUZZER,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button dr531_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DR531_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DR531_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init dr531_gpio_setup(void)
-{
- ath79_gpio_direction_select(DR531_GPIO_BUZZER, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_LAN, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_SIG1, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_SIG2, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_SIG3, true);
- ath79_gpio_direction_select(DR531_GPIO_LED_SIG4, true);
-
- ath79_gpio_output_select(DR531_GPIO_BUZZER, 0);
- ath79_gpio_output_select(DR531_GPIO_LED_WAN, 0);
- ath79_gpio_output_select(DR531_GPIO_LED_LAN, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dr531_leds_gpio),
- dr531_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, DR531_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dr531_gpio_keys),
- dr531_gpio_keys);
-}
-
-static void __init dr531_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1f03f810);
-
- ath79_register_m25p80(NULL);
-
- dr531_gpio_setup();
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac + DR531_MAC1_OFFSET, 0);
- ath79_register_eth(0);
-
- /* WAN */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac + DR531_MAC0_OFFSET, 0);
- ath79_register_eth(1);
-
- ath79_register_wmac(art + DR531_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_pci();
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_DR531, "DR531", "Wallys DR531", dr531_setup);
+++ /dev/null
-/*
- * DRAGINO V2 board support, based on Atheros AP121 board support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2012 Elektra Wagenrad <elektra@villagetelco.org>
- * Copyright (C) 2014 Vittorio Gambaletta <openwrt@vittgam.net>
- *
- * 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 <linux/gpio.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DRAGINO2_GPIO_LED_WLAN 0
-#define DRAGINO2_GPIO_LED_LAN 13
-#define DRAGINO2_GPIO_LED_WAN 17
-
-/*
- * The following GPIO is named "SYS" on newer revisions of the the board.
- * It was previously used to indicate USB activity, even though it was
- * named "Router".
- */
-
-#define DRAGINO2_GPIO_LED_SYS 28
-#define DRAGINO2_GPIO_BTN_JUMPSTART 11
-#define DRAGINO2_GPIO_BTN_RESET 12
-
-#define DRAGINO2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DRAGINO2_KEYS_DEBOUNCE_INTERVAL (3 * DRAGINO2_KEYS_POLL_INTERVAL)
-
-#define DRAGINO2_MAC0_OFFSET 0x0000
-#define DRAGINO2_MAC1_OFFSET 0x0006
-#define DRAGINO2_CALDATA_OFFSET 0x1000
-#define DRAGINO2_WMAC_MAC_OFFSET 0x1002
-
-static struct gpio_led dragino2_leds_gpio[] __initdata = {
- {
- .name = "dragino2:red:wlan",
- .gpio = DRAGINO2_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "dragino2:red:wan",
- .gpio = DRAGINO2_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "dragino2:red:lan",
- .gpio = DRAGINO2_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "dragino2:red:system",
- .gpio = DRAGINO2_GPIO_LED_SYS,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button dragino2_gpio_keys[] __initdata = {
- {
- .desc = "jumpstart button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DRAGINO2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DRAGINO2_GPIO_BTN_JUMPSTART,
- .active_low = 1,
- },
- {
- .desc = "reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DRAGINO2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DRAGINO2_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init dragino2_common_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
- ath79_register_wmac(art + DRAGINO2_CALDATA_OFFSET,
- art + DRAGINO2_WMAC_MAC_OFFSET);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + DRAGINO2_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + DRAGINO2_MAC1_OFFSET, 0);
-
- ath79_register_mdio(0, 0x0);
-
- /* Enable GPIO13, GPIO14, GPIO15, GPIO16 and GPIO17 */
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- /* LAN port */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-
- /* Enable GPIO26 and GPIO27 */
- ath79_reset_wr(AR933X_RESET_REG_BOOTSTRAP,
- ath79_reset_rr(AR933X_RESET_REG_BOOTSTRAP) |
- AR933X_BOOTSTRAP_MDIO_GPIO_EN);
-}
-
-static void __init dragino2_setup(void)
-{
- dragino2_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dragino2_leds_gpio),
- dragino2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DRAGINO2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dragino2_gpio_keys),
- dragino2_gpio_keys);
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_DRAGINO2, "DRAGINO2", "Dragino Dragino v2",
- dragino2_setup);
-
+++ /dev/null
-/*
- * Qxwlan E1700AC v2 board support
- *
- * Copyright (C) 2017 Peng Zhang <sd20@qxwlan.com>
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define E1700AC_V2_GPIO_LED_SYS 1
-#define E1700AC_V2_GPIO_LED_USB 7
-#define E1700AC_V2_GPIO_LED_WLAN2G 19
-
-#define E1700AC_V2_GPIO_BTN_SW1 2
-#define E1700AC_V2_GPIO_BTN_RESET 11
-
-#define E1700AC_V2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E1700AC_V2_KEYS_DEBOUNCE_INTERVAL \
- (3 * E1700AC_V2_KEYS_POLL_INTERVAL)
-
-static struct gpio_led e1700ac_v2_leds_gpio[] __initdata = {
- {
- .name = "e1700ac-v2:green:system",
- .gpio = E1700AC_V2_GPIO_LED_SYS,
- .active_low = 1,
- }, {
- .name = "e1700ac-v2:green:usb",
- .gpio = E1700AC_V2_GPIO_LED_USB,
- .active_low = 1,
- }, {
- .name = "e1700ac-v2:green:wlan2g",
- .gpio = E1700AC_V2_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e1700ac_v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E1700AC_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E1700AC_V2_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "sw1",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = E1700AC_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E1700AC_V2_GPIO_BTN_SW1,
- .active_low = 1,
- },
-};
-
-static const struct ar8327_led_info e1700ac_v2_leds_qca8334[] = {
- AR8327_LED_INFO(PHY1_0, HW, "e1700ac-v2:green:lan"),
- AR8327_LED_INFO(PHY2_0, HW, "e1700ac-v2:green:wan"),
-};
-
-/* Blink rate: 1 Gbps -> 8 hz, 100 Mbs -> 4 Hz, 10 Mbps -> 2 Hz */
-static struct ar8327_led_cfg e1700ac_v2_qca8334_led_cfg = {
- .led_ctrl0 = 0xcf37cf37,
- .led_ctrl1 = 0xcf37cf37,
- .led_ctrl2 = 0xcf37cf37,
- .led_ctrl3 = 0x0,
- .open_drain = true,
-};
-
-static struct ar8327_pad_cfg e1700ac_v2_qca8334_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data e1700ac_v2_qca8334_data = {
- .pad0_cfg = &e1700ac_v2_qca8334_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &e1700ac_v2_qca8334_led_cfg,
- .leds = e1700ac_v2_leds_qca8334,
- .num_leds = ARRAY_SIZE(e1700ac_v2_leds_qca8334),
-};
-
-static struct mdio_board_info e1700ac_v2_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &e1700ac_v2_qca8334_data,
- },
-};
-
-static void __init e1700ac_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f050400);
- u8 *art = (u8 *) KSEG1ADDR(0x1f061000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e1700ac_v2_leds_gpio),
- e1700ac_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, E1700AC_V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e1700ac_v2_gpio_keys),
- e1700ac_v2_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(e1700ac_v2_mdio0_info,
- ARRAY_SIZE(e1700ac_v2_mdio0_info));
-
- /* GMAC0 is connected to QCA8334 switch */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_pll_data.pll_1000 = 0x03000101;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_E1700AC_V2, "E1700AC-V2", "Qxwlan E1700AC v2",
- e1700ac_v2_setup);
+++ /dev/null
-/*
- * Linksys E2100L board support
- *
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "nvram.h"
-#include "machtypes.h"
-
-#define E2100L_GPIO_LED_POWER 14
-#define E2100L_GPIO_LED_WPS_AMBER 9
-#define E2100L_GPIO_LED_WPS_BLUE 8
-#define E2100L_GPIO_LED_WLAN 6
-
-#define E2100L_GPIO_BTN_WPS 7
-#define E2100L_GPIO_BTN_RESET 21
-
-#define E2100L_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E2100L_KEYS_DEBOUNCE_INTERVAL (3 * E2100L_KEYS_POLL_INTERVAL)
-
-#define E2100L_NVRAM_ADDR 0x1f7e0000
-#define E2100L_NVRAM_SIZE 0x10000
-
-static const char *e2100l_part_probes[] = {
- "cybertan",
- NULL,
-};
-
-static struct flash_platform_data e2100l_flash_data = {
- .part_probes = e2100l_part_probes,
-};
-
-static struct gpio_led e2100l_leds_gpio[] __initdata = {
- {
- .name = "e2100l:blue:power",
- .gpio = E2100L_GPIO_LED_POWER,
- .active_low = 1,
- .default_trigger = "default-on",
- }, {
- .name = "e2100l:amber:wps",
- .gpio = E2100L_GPIO_LED_WPS_AMBER,
- .active_low = 1,
- }, {
- .name = "e2100l:blue:wps",
- .gpio = E2100L_GPIO_LED_WPS_BLUE,
- .active_low = 1,
- }, {
- .name = "e2100l:blue:wlan",
- .gpio = E2100L_GPIO_LED_WLAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button e2100l_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E2100L_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E2100L_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = E2100L_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E2100L_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static void __init e2100l_setup(void)
-{
- const char *nvram = (char *) KSEG1ADDR(E2100L_NVRAM_ADDR);
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 mac[6];
-
- if (ath79_nvram_parse_mac_addr(nvram, E2100L_NVRAM_SIZE,
- "lan_hwaddr=", mac) == 0) {
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- }
-
- ath79_register_mdio(0, 0x0);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth0_data.phy_mask = 0x01;
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = 0x10;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(&e2100l_flash_data);
-
- ath79_register_usb();
-
- if (ath79_nvram_parse_mac_addr(nvram, E2100L_NVRAM_SIZE,
- "wl0_hwaddr=", mac) == 0)
- ath79_register_wmac(eeprom, mac);
- else
- ath79_register_wmac(eeprom, NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e2100l_leds_gpio),
- e2100l_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, E2100L_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e2100l_gpio_keys),
- e2100l_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_E2100L, "E2100L", "Linksys E2100L",
- e2100l_setup);
+++ /dev/null
-/*
- * Qxwlan E558 v2 board support
- *
- * Copyright (C) 2017 Peng Zhang <sd20@qxwlan.com>
- *
- * 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 <linux/phy.h>
-#include <linux/gpio.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define E558_V2_GPIO_LED_WLAN 13
-#define E558_V2_GPIO_LED_SYSTEM 14
-#define E558_V2_GPIO_LED_QSS 15
-
-#define E558_V2_GPIO_BTN_RESET 16
-
-#define E558_V2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E558_V2_KEYS_DEBOUNCE_INTERVAL (3 * E558_V2_KEYS_POLL_INTERVAL)
-
-static struct gpio_led e558_v2_leds_gpio[] __initdata = {
- {
- .name = "e558-v2:green:qss",
- .gpio = E558_V2_GPIO_LED_QSS,
- .active_low = 1,
- },
- {
- .name = "e558-v2:green:system",
- .gpio = E558_V2_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "e558-v2:green:wlan",
- .gpio = E558_V2_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e558_v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E558_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E558_V2_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* GMAC0 of the AR8327 switch is connected to the QCA9558 SoC via SGMII */
-static struct ar8327_pad_cfg e558_v2_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-/* GMAC6 of the AR8327 switch is connected to the QCA9558 SoC via RGMII */
-static struct ar8327_pad_cfg e558_v2_ar8327_pad6_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static const struct ar8327_led_info e558_v2_leds_qca8334[] = {
- AR8327_LED_INFO(PHY2_0, HW, "e558-v2:green:wan"),
- AR8327_LED_INFO(PHY3_0, HW, "e558-v2:green:lan1"),
- AR8327_LED_INFO(PHY4_0, HW, "e558-v2:green:lan2"),
-};
-
-static struct ar8327_led_cfg e558_v2_ar8327_led_cfg = {
- .led_ctrl0 = 0xc737c737,
- .led_ctrl1 = 0x00000000,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x0030c300,
- .open_drain = false,
-};
-
-static struct ar8327_platform_data e558_v2_ar8327_data = {
- .pad0_cfg = &e558_v2_ar8327_pad0_cfg,
- .pad6_cfg = &e558_v2_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &e558_v2_ar8327_led_cfg,
- .leds = e558_v2_leds_qca8334,
- .num_leds = ARRAY_SIZE(e558_v2_leds_qca8334),
-};
-
-static struct mdio_board_info e558_v2_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &e558_v2_ar8327_data,
- },
-};
-
-static void __init e558_v2_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f050400);
- u8 *art = (u8 *) KSEG1ADDR(0x1f061000);
-
- ath79_register_m25p80(NULL);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e558_v2_leds_gpio),
- e558_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, E558_V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e558_v2_gpio_keys),
- e558_v2_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(e558_v2_mdio0_info,
- ARRAY_SIZE(e558_v2_mdio0_info));
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* GMAC0 is connected to the RMGII interface */
- 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 = 0x56000000;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_eth(1);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_E558_V2, "E558-V2", "Qxwlan E558 v2",
- e558_v2_setup);
-
+++ /dev/null
-/*
- * Qxwlan E600G/E600GAC v2 board support
- *
- * Copyright (C) 2017 Peng Zhang <sd20@qxwlan.com>
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define E600G_V2_GPIO_LED_LAN 16
-#define E600G_V2_GPIO_LED_SYS 13
-#define E600G_V2_GPIO_LED_WAN_B 4
-#define E600G_V2_GPIO_LED_WAN_G 15
-
-#define E600GAC_V2_GPIO_LED_CTRL_B 14
-#define E600GAC_V2_GPIO_LED_CTRL_G 11
-#define E600GAC_V2_GPIO_LED_CTRL_R 12
-#define E600GAC_V2_GPIO_LED_LAN 16
-#define E600GAC_V2_GPIO_LED_SYS 13
-#define E600GAC_V2_GPIO_LED_WAN_G 15
-#define E600GAC_V2_GPIO_LED_WAN_O 4
-
-#define E600G_V2_GPIO_BTN_RESET 17
-#define E600GAC_V2_GPIO_BTN_WPS 1
-
-#define E600G_V2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E600G_V2_KEYS_DEBOUNCE_INTERVAL (3 * E600G_V2_KEYS_POLL_INTERVAL)
-
-static struct gpio_led e600g_v2_leds_gpio[] __initdata = {
- {
- .name = "e600g-v2:blue:system",
- .gpio = E600G_V2_GPIO_LED_SYS,
- .active_low = 1,
- }, {
- .name = "e600g-v2:blue:wan",
- .gpio = E600G_V2_GPIO_LED_WAN_B,
- .active_low = 1,
- }, {
- .name = "e600g-v2:green:lan",
- .gpio = E600G_V2_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "e600g-v2:green:wan",
- .gpio = E600G_V2_GPIO_LED_WAN_G,
- .active_low = 1,
- },
-};
-
-static struct gpio_led e600gac_v2_leds_gpio[] __initdata = {
- {
- .name = "e600gac-v2:blue:control",
- .gpio = E600GAC_V2_GPIO_LED_CTRL_B,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:green:control",
- .gpio = E600GAC_V2_GPIO_LED_CTRL_G,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:red:control",
- .gpio = E600GAC_V2_GPIO_LED_CTRL_R,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:green:system",
- .gpio = E600GAC_V2_GPIO_LED_SYS,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:orange:wan",
- .gpio = E600GAC_V2_GPIO_LED_WAN_O,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:green:lan",
- .gpio = E600GAC_V2_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "e600gac-v2:green:wan",
- .gpio = E600GAC_V2_GPIO_LED_WAN_G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e600g_v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E600G_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E600G_V2_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e600gac_v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E600G_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E600G_V2_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = E600G_V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E600GAC_V2_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static void __init e600g_v2_common_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f050400);
- u8 *art = (u8 *) KSEG1ADDR(0x1f061000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = 0xfe;
-
- /* LAN */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_register_eth(0);
-
- /* WAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.phy_mask = BIT(0);
- ath79_eth1_data.speed = SPEED_1000;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_eth(1);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art, NULL);
-}
-
-static void __init e600g_v2_setup(void)
-{
- e600g_v2_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e600g_v2_leds_gpio),
- e600g_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, E600G_V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e600g_v2_gpio_keys),
- e600g_v2_gpio_keys);
-}
-
-static void __init e600gac_v2_setup(void)
-{
- e600g_v2_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e600gac_v2_leds_gpio),
- e600gac_v2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, E600G_V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e600gac_v2_gpio_keys),
- e600gac_v2_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_E600G_V2, "E600G-V2", "Qxwlan E600G v2",
- e600g_v2_setup);
-
-MIPS_MACHINE(ATH79_MACH_E600GAC_V2, "E600GAC-V2", "Qxwlan E600GAC v2",
- e600gac_v2_setup);
+++ /dev/null
-/*
- * Qxwlan E750A v4 board support
- *
- * Copyright (C) 2017 Peng Zhang <sd20@qxwlan.com>
- *
- * 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 <linux/phy.h>
-#include <linux/gpio.h>
-#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-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define E750A_V4_GPIO_LED_SYS 14
-#define E750A_V4_GPIO_LED_LAN 19
-#define E750A_V4_GPIO_LED_WAN 18
-#define E750A_V4_GPIO_LED_DS10 15
-#define E750A_V4_GPIO_LED_DS20 20
-#define E750A_V4_GPIO_LED_WLAN 21
-
-#define E750A_V4_GPIO_BTN_RESET 12
-
-#define E750A_V4_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E750A_V4_KEYS_DEBOUNCE_INTERVAL (3 * E750A_V4_KEYS_POLL_INTERVAL)
-
-static struct gpio_led e750a_v4_leds_gpio[] __initdata = {
- {
- .name = "e750a-v4:green:system",
- .gpio = E750A_V4_GPIO_LED_SYS,
- .active_low = 1,
- },
- {
- .name = "e750a-v4:green:lan",
- .gpio = E750A_V4_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "e750a-v4:green:wan",
- .gpio = E750A_V4_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "e750a-v4:green:wlan",
- .gpio = E750A_V4_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "e750a-v4:green:ds10",
- .gpio = E750A_V4_GPIO_LED_DS10,
- .active_low = 1,
- },
- {
- .name = "e750a-v4:green:ds20",
- .gpio = E750A_V4_GPIO_LED_DS20,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e750a_v4_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E750A_V4_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E750A_V4_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-
-static void __init e750a_v4_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f050400);
- u8 *art = (u8 *) KSEG1ADDR(0x1f061000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e750a_v4_leds_gpio),
- e750a_v4_leds_gpio);
- ath79_register_gpio_keys_polled(-1, E750A_V4_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e750a_v4_gpio_keys),
- e750a_v4_gpio_keys);
-
- ath79_register_mdio(1, 0x0);
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_eth(1);
-
- /* GMAC0 is connected to the PHY4 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_register_eth(0);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_E750A_V4, "E750A-V4", "Qxlan E750A v4",
- e750a_v4_setup);
+++ /dev/null
-/*
- * Qxwlan E750G v8 board support
- *
- * Copyright (C) 2017 Peng Zhang <sd20@qxwlan.com>
- *
- * 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 <linux/phy.h>
-#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 "pci.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-eth.h"
-#include "dev-usb.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define E750G_V8_GPIO_LED_SYS 14
-#define E750G_V8_GPIO_LED_DS20 15
-#define E750G_V8_GPIO_LED_DS10 20
-#define E750G_V8_GPIO_LED_WLAN 21
-
-#define E750G_V8_GPIO_BTN_RESET 12
-
-#define E750G_V8_KEYS_POLL_INTERVAL 20 /* msecs */
-#define E750G_V8_KEYS_DEBOUNCE_INTERVAL (3 * E750G_V8_KEYS_POLL_INTERVAL)
-
-static struct gpio_led e750g_v8_leds_gpio[] __initdata = {
- {
- .name = "e750g-v8:green:system",
- .gpio = E750G_V8_GPIO_LED_SYS,
- .active_low = 1,
- },
- {
- .name = "e750g-v8:green:ds10",
- .gpio = E750G_V8_GPIO_LED_DS10,
- .active_low = 1,
- },
- {
- .name = "e750g-v8:green:ds20",
- .gpio = E750G_V8_GPIO_LED_DS20,
- .active_low = 1,
- },
- {
- .name = "e750g-v8:green:wlan",
- .gpio = E750G_V8_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button e750g_v8_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = E750G_V8_KEYS_DEBOUNCE_INTERVAL,
- .gpio = E750G_V8_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static const struct ar8327_led_info e750g_v8_leds_qca8334[] = {
- AR8327_LED_INFO(PHY1_0, HW, "e750g-v8:green:lan"),
- AR8327_LED_INFO(PHY2_0, HW, "e750g-v8:green:wan"),
-};
-
-static struct ar8327_pad_cfg e750g_v8_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .mac06_exchange_dis = true,
-};
-
-static struct ar8327_led_cfg e750g_v8_ar8327_led_cfg = {
- .led_ctrl0 = 0x00000000,
- .led_ctrl1 = 0xc737c737,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x00c30c00,
- .open_drain = true,
-};
-
-static struct ar8327_platform_data e750g_v8_ar8327_data = {
- .pad0_cfg = &e750g_v8_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &e750g_v8_ar8327_led_cfg,
- .leds = e750g_v8_leds_qca8334,
- .num_leds = ARRAY_SIZE(e750g_v8_leds_qca8334),
-};
-
-static struct mdio_board_info e750g_v8_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &e750g_v8_ar8327_data,
- },
-};
-
-static void __init e750g_v8_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f050400);
- u8 *art = (u8 *) KSEG1ADDR(0x1f061000);
-
- ath79_register_m25p80(NULL);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(e750g_v8_leds_gpio),
- e750g_v8_leds_gpio);
- ath79_register_gpio_keys_polled(-1, E750G_V8_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(e750g_v8_gpio_keys),
- e750g_v8_gpio_keys);
-
- mdiobus_register_board_info(e750g_v8_mdio0_info,
- ARRAY_SIZE(e750g_v8_mdio0_info));
-
- ath79_register_mdio(0, 0x0);
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- /* GMAC0 is connected to an AR8327 switch */
- 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_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_eth(0);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_E750G_V8, "E750G-V8", "Qxwlan E750G v8",
- e750g_v8_setup);
+++ /dev/null
-/*
- * TP-LINK EAP120 board support
- *
- * Copyright (C) 2016 Henryk Heisig <hyniu@o2.pl>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/platform_data/mdio-gpio.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-
-#define EAP120_GPIO_LED_RED 12
-#define EAP120_GPIO_LED_YEL 13
-#define EAP120_GPIO_LED_GRN 15
-#define EAP120_GPIO_BTN_RESET 4
-
-#define EAP120_KEYS_POLL_INTERVAL 20 /* msecs */
-#define EAP120_KEYS_DEBOUNCE_INTERVAL (3 * EAP120_KEYS_POLL_INTERVAL)
-
-#define EAP120_GPIO_SMI_MDIO 16
-#define EAP120_GPIO_SMI_MDC 17
-
-#define EAP120_LAN_PHYADDR 4
-
-static struct gpio_led eap120_leds_gpio[] __initdata = {
- {
- .name = "eap120:red:system",
- .gpio = EAP120_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "eap120:yellow:system",
- .gpio = EAP120_GPIO_LED_YEL,
- .active_low = 1,
- }, {
- .name = "eap120:green:system",
- .gpio = EAP120_GPIO_LED_GRN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button eap120_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = EAP120_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EAP120_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct mdio_gpio_platform_data eap120_mdio = {
- .mdc = EAP120_GPIO_SMI_MDC,
- .mdio = EAP120_GPIO_SMI_MDIO,
- .phy_mask = ~BIT(EAP120_LAN_PHYADDR),
-};
-
-static struct at803x_platform_data eap120_ar8035_data = {
- .disable_smarteee = 0,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 0,
- .fixup_rgmii_tx_delay = 1,
-};
-
-static struct platform_device eap120_phy_device = {
- .name = "mdio-gpio",
- .id = 0,
- .dev = {
- .platform_data = &eap120_mdio, &eap120_ar8035_data
- },
-};
-
-static void __init eap_setup(u8 *mac)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(eap120_leds_gpio),
- eap120_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, EAP120_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(eap120_gpio_keys),
- eap120_gpio_keys);
-
- ath79_register_m25p80(NULL);
-
- /* MDIO Interface */
- platform_device_register(&eap120_phy_device);
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- /* GMAC0 is connected to the RGMII interface to an Atheros AR8035-A */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.mii_bus_dev = &eap120_phy_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(EAP120_LAN_PHYADDR);
- ath79_eth0_pll_data.pll_1000 = 0x0e000000;
- ath79_eth0_pll_data.pll_100 = 0x00000101;
- ath79_eth0_pll_data.pll_10 = 0x00001313;
- ath79_register_eth(0);
-}
-
-static void __init eap120_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f030008);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- eap_setup(mac);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_EAP120, "EAP120", "TP-LINK EAP120",
- eap120_setup);
-
+++ /dev/null
-/*
- * EnGenius EAP300 v2 board support
- *
- * Copyright (C) 2014 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define EAP300V2_GPIO_LED_POWER 0
-#define EAP300V2_GPIO_LED_LAN 16
-#define EAP300V2_GPIO_LED_WLAN 17
-
-#define EAP300V2_GPIO_BTN_RESET 1
-
-#define EAP300V2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define EAP300V2_KEYS_DEBOUNCE_INTERVAL (3 * EAP300V2_KEYS_POLL_INTERVAL)
-
-static struct gpio_led eap300v2_leds_gpio[] __initdata = {
- {
- .name = "engenius:blue:power",
- .gpio = EAP300V2_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "engenius:blue:lan",
- .gpio = EAP300V2_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "engenius:blue:wlan",
- .gpio = EAP300V2_GPIO_LED_WLAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button eap300v2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = EAP300V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EAP300V2_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-#define EAP300V2_ART_MAC_OFFSET 2
-
-#define EAP300V2_LAN_PHYMASK BIT(0)
-
-static void __init eap300v2_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff1000);
-
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_output_select(EAP300V2_GPIO_LED_POWER, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(EAP300V2_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(EAP300V2_GPIO_LED_WLAN, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(eap300v2_leds_gpio),
- eap300v2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, EAP300V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(eap300v2_gpio_keys),
- eap300v2_gpio_keys);
-
- ath79_register_m25p80(NULL);
- ath79_register_wmac(art, NULL);
- ath79_register_mdio(1, 0x0);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + EAP300V2_ART_MAC_OFFSET, 0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = EAP300V2_LAN_PHYMASK;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = EAP300V2_LAN_PHYMASK;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_EAP300V2, "EAP300V2", "EnGenius EAP300 v2",
- eap300v2_setup);
+++ /dev/null
-/*
- * Senao EAP7660D board support
- *
- * Copyright (C) 2010 Daniel Golle <daniel.golle@gmail.com>
- * Copyright (C) 2008 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/ath5k_platform.h>
-#include <linux/delay.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define EAP7660D_KEYS_POLL_INTERVAL 20 /* msecs */
-#define EAP7660D_KEYS_DEBOUNCE_INTERVAL (3 * EAP7660D_KEYS_POLL_INTERVAL)
-
-#define EAP7660D_GPIO_DS4 7
-#define EAP7660D_GPIO_DS5 2
-#define EAP7660D_GPIO_DS7 0
-#define EAP7660D_GPIO_DS8 4
-#define EAP7660D_GPIO_SW1 3
-#define EAP7660D_GPIO_SW3 8
-#define EAP7660D_PHYMASK BIT(20)
-#define EAP7660D_BOARDCONFIG 0x1F7F0000
-#define EAP7660D_GBIC_MAC_OFFSET 0x1000
-#define EAP7660D_WMAC0_MAC_OFFSET 0x1010
-#define EAP7660D_WMAC1_MAC_OFFSET 0x1016
-#define EAP7660D_WMAC0_CALDATA_OFFSET 0x2000
-#define EAP7660D_WMAC1_CALDATA_OFFSET 0x3000
-
-#ifdef CONFIG_PCI
-static struct ath5k_platform_data eap7660d_wmac0_data;
-static struct ath5k_platform_data eap7660d_wmac1_data;
-static char eap7660d_wmac0_mac[6];
-static char eap7660d_wmac1_mac[6];
-static u16 eap7660d_wmac0_eeprom[ATH5K_PLAT_EEP_MAX_WORDS];
-static u16 eap7660d_wmac1_eeprom[ATH5K_PLAT_EEP_MAX_WORDS];
-
-static int eap7660d_pci_plat_dev_init(struct pci_dev *dev)
-{
- switch (PCI_SLOT(dev->devfn)) {
- case 17:
- dev->dev.platform_data = &eap7660d_wmac0_data;
- break;
-
- case 18:
- dev->dev.platform_data = &eap7660d_wmac1_data;
- break;
- }
-
- return 0;
-}
-
-void __init eap7660d_pci_init(u8 *cal_data0, u8 *mac_addr0,
- u8 *cal_data1, u8 *mac_addr1)
-{
- if (cal_data0 && *cal_data0 == 0xa55a) {
- memcpy(eap7660d_wmac0_eeprom, cal_data0,
- ATH5K_PLAT_EEP_MAX_WORDS);
- eap7660d_wmac0_data.eeprom_data = eap7660d_wmac0_eeprom;
- }
-
- if (cal_data1 && *cal_data1 == 0xa55a) {
- memcpy(eap7660d_wmac1_eeprom, cal_data1,
- ATH5K_PLAT_EEP_MAX_WORDS);
- eap7660d_wmac1_data.eeprom_data = eap7660d_wmac1_eeprom;
- }
-
- if (mac_addr0) {
- memcpy(eap7660d_wmac0_mac, mac_addr0,
- sizeof(eap7660d_wmac0_mac));
- eap7660d_wmac0_data.macaddr = eap7660d_wmac0_mac;
- }
-
- if (mac_addr1) {
- memcpy(eap7660d_wmac1_mac, mac_addr1,
- sizeof(eap7660d_wmac1_mac));
- eap7660d_wmac1_data.macaddr = eap7660d_wmac1_mac;
- }
-
- ath79_pci_set_plat_dev_init(eap7660d_pci_plat_dev_init);
- ath79_register_pci();
-}
-#else
-static inline void eap7660d_pci_init(u8 *cal_data0, u8 *mac_addr0,
- u8 *cal_data1, u8 *mac_addr1)
-{
-}
-#endif /* CONFIG_PCI */
-
-static struct gpio_led eap7660d_leds_gpio[] __initdata = {
- {
- .name = "eap7660d:green:ds8",
- .gpio = EAP7660D_GPIO_DS8,
- .active_low = 0,
- },
- {
- .name = "eap7660d:green:ds5",
- .gpio = EAP7660D_GPIO_DS5,
- .active_low = 0,
- },
- {
- .name = "eap7660d:green:ds7",
- .gpio = EAP7660D_GPIO_DS7,
- .active_low = 0,
- },
- {
- .name = "eap7660d:green:ds4",
- .gpio = EAP7660D_GPIO_DS4,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button eap7660d_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = EAP7660D_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EAP7660D_GPIO_SW1,
- .active_low = 1,
- },
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = EAP7660D_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EAP7660D_GPIO_SW3,
- .active_low = 1,
- }
-};
-
-static const char *eap7660d_part_probes[] = {
- "RedBoot",
- NULL,
-};
-
-static struct flash_platform_data eap7660d_flash_data = {
- .part_probes = eap7660d_part_probes,
-};
-
-static void __init eap7660d_setup(void)
-{
- u8 *boardconfig = (u8 *) KSEG1ADDR(EAP7660D_BOARDCONFIG);
-
- ath79_register_mdio(0, ~EAP7660D_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- boardconfig + EAP7660D_GBIC_MAC_OFFSET, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = EAP7660D_PHYMASK;
- ath79_register_eth(0);
- ath79_register_m25p80(&eap7660d_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(eap7660d_leds_gpio),
- eap7660d_leds_gpio);
- ath79_register_gpio_keys_polled(-1, EAP7660D_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(eap7660d_gpio_keys),
- eap7660d_gpio_keys);
- eap7660d_pci_init(boardconfig + EAP7660D_WMAC0_CALDATA_OFFSET,
- boardconfig + EAP7660D_WMAC0_MAC_OFFSET,
- boardconfig + EAP7660D_WMAC1_CALDATA_OFFSET,
- boardconfig + EAP7660D_WMAC1_MAC_OFFSET);
-};
-
-MIPS_MACHINE(ATH79_MACH_EAP7660D, "EAP7660D", "Senao EAP7660D",
- eap7660d_setup);
-
-MIPS_MACHINE(ATH79_MACH_ALL0305, "ALL0305", "Allnet ALL0305",
- eap7660d_setup);
+++ /dev/null
-/*
- * Easy-Link EL-M150 board support
- *
- * Copyright (C) 2012 huangfc <huangfangcheng@163.com>
- * Copyright (C) 2012 HYS <550663898@qq.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "dev-usb.h"
-
-#define EL_M150_GPIO_BTN6 6
-#define EL_M150_GPIO_BTN7 7
-#define EL_M150_GPIO_BTN_RESET 11
-
-#define EL_M150_GPIO_LED_SYSTEM 27
-#define EL_M150_GPIO_USB_POWER 8
-
-#define EL_M150_KEYS_POLL_INTERVAL 20 /* msecs */
-#define EL_M150_KEYS_DEBOUNCE_INTERVAL (3 * EL_M150_KEYS_POLL_INTERVAL)
-
-static const char *EL_M150_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data EL_M150_flash_data = {
- .part_probes = EL_M150_part_probes,
-};
-
-static struct gpio_led EL_M150_leds_gpio[] __initdata = {
- {
- .name = "easylink:green:system",
- .gpio = EL_M150_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button EL_M150_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EL_M150_GPIO_BTN_RESET,
- .active_low = 0,
- },
- {
- .desc = "BTN_6",
- .type = EV_KEY,
- .code = BTN_6,
- .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EL_M150_GPIO_BTN6,
- .active_low = 1,
- },
- {
- .desc = "BTN_7",
- .type = EV_KEY,
- .code = BTN_7,
- .debounce_interval = EL_M150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EL_M150_GPIO_BTN7,
- .active_low = 1,
- },
-};
-
-static void __init el_m150_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(EL_M150_leds_gpio),
- EL_M150_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, EL_M150_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(EL_M150_gpio_keys),
- EL_M150_gpio_keys);
-
- gpio_request_one(EL_M150_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_register_m25p80(&EL_M150_flash_data);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_EL_M150, "EL-M150",
- "EasyLink EL-M150", el_m150_setup);
+++ /dev/null
-/*
- * Easy-Link EL-MINI board support
- *
- * Copyright (C) 2012 huangfc <huangfangcheng@163.com>
- * Copyright (C) 2011 hys <550663898@qq.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define MINI_GPIO_LED_SYSTEM 27
-#define MINI_GPIO_BTN_RESET 11
-
-#define MINI_GPIO_USB_POWER 8
-
-#define MINI_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MINI_KEYS_DEBOUNCE_INTERVAL (3 * MINI_KEYS_POLL_INTERVAL)
-
-static const char *mini_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data mini_flash_data = {
- .part_probes = mini_part_probes,
-};
-
-static struct gpio_led mini_leds_gpio[] __initdata = {
- {
- .name = "easylink:green:system",
- .gpio = MINI_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mini_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MINI_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MINI_GPIO_BTN_RESET,
- .active_low = 0,
- }
-};
-
-static void __init el_mini_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_m25p80(&mini_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mini_leds_gpio),
- mini_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MINI_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mini_gpio_keys),
- mini_gpio_keys);
-
- gpio_request_one(MINI_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_EL_MINI, "EL-MINI", "EasyLink EL-MINI",
- el_mini_setup);
+++ /dev/null
-/*
- * EnGenius ENS202EXT board support
- *
- * Copyright (C) 2017 Marty Plummer <netz.kernel@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define ENS202_GPIO_LED_WLAN4 0
-#define ENS202_GPIO_LED_POWER 14
-#define ENS202_GPIO_LED_WLAN2 16
-#define ENS202_GPIO_LED_WLAN3 17
-#define ENS202_GPIO_LED_WLAN1 18
-
-#define ENS202_GPIO_BTN_RESET 1
-
-#define ENS202_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ENS202_KEYS_DEBOUNCE_INTERVAL (3 * ENS202_KEYS_POLL_INTERVAL)
-
-static struct gpio_led ens202_leds_gpio[] __initdata = {
- {
- .name = "engenius:amber:wlan1",
- .gpio = ENS202_GPIO_LED_WLAN1,
- .active_low = 1,
- }, {
- .name = "engenius:red:wlan2",
- .gpio = ENS202_GPIO_LED_WLAN2,
- .active_low = 1,
- }, {
- .name = "engenius:amber:wlan3",
- .gpio = ENS202_GPIO_LED_WLAN3,
- .active_low = 1,
- }, {
- .name = "engenius:green:wlan4",
- .gpio = ENS202_GPIO_LED_WLAN4,
- .active_low = 1,
- }, {
- .name = "engenius:amber:power",
- .gpio = ENS202_GPIO_LED_POWER,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ens202_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ENS202_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ENS202_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init ens202_setup(void)
-{
- const char *nvram = (char *) KSEG1ADDR(0x1f040000);
- u8 mac_buff[6];
- u8 *mac = NULL;
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- if (ath79_nvram_parse_mac_addr(nvram, 0x10000,
- "ethaddr=", mac_buff) == 0) {
- ath79_init_mac(ath79_eth0_data.mac_addr, mac_buff, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac_buff, 1);
- mac = mac_buff;
- }
-
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_output_select(ENS202_GPIO_LED_POWER, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(ENS202_GPIO_LED_WLAN1, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(ENS202_GPIO_LED_WLAN2, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(ENS202_GPIO_LED_WLAN3, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(ENS202_GPIO_LED_WLAN4, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ens202_leds_gpio),
- ens202_leds_gpio);
- ath79_register_gpio_keys_polled(-1, ENS202_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ens202_gpio_keys),
- ens202_gpio_keys);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_wmac(art + 0x1000, NULL);
-
- ath79_register_mdio(1, 0);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_eth0_pll_data.pll_1000 = 0x06000000;
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_ENS202EXT, "ENS202EXT", "EnGenius ENS202EXT",
- ens202_setup);
+++ /dev/null
-/*
- * EnGenius EPG5000 board support
- *
- * Copyright (c) 2014 Jon Suphammer <jon@suphammer.net>
- * Copyright (c) 2015 Christian Beier <cb@shoutrlabs.com>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define EPG5000_GPIO_LED_WLAN_5G 23
-#define EPG5000_GPIO_LED_WLAN_2G 13
-#define EPG5000_GPIO_LED_POWER_AMBER 2
-#define EPG5000_GPIO_LED_WPS_AMBER 22
-#define EPG5000_GPIO_LED_WPS_BLUE 19
-
-#define EPG5000_GPIO_BTN_WPS 16
-#define EPG5000_GPIO_BTN_RESET 17
-
-#define EPG5000_KEYS_POLL_INTERVAL 20 /* msecs */
-#define EPG5000_KEYS_DEBOUNCE_INTERVAL (3 * EPG5000_KEYS_POLL_INTERVAL)
-
-#define EPG5000_CALDATA_ADDR 0x1fff0000
-#define EPG5000_WMAC_CALDATA_OFFSET 0x1000
-#define EPG5000_PCIE_CALDATA_OFFSET 0x5000
-
-#define EPG5000_NVRAM_ADDR 0x1f030000
-#define EPG5000_NVRAM_SIZE 0x10000
-
-static struct gpio_led epg5000_leds_gpio[] __initdata = {
- {
- .name = "epg5000:amber:power",
- .gpio = EPG5000_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "epg5000:blue:wps",
- .gpio = EPG5000_GPIO_LED_WPS_BLUE,
- .active_low = 1,
- },
- {
- .name = "epg5000:amber:wps",
- .gpio = EPG5000_GPIO_LED_WPS_AMBER,
- .active_low = 1,
- },
- {
- .name = "epg5000:blue:wlan-2g",
- .gpio = EPG5000_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "epg5000:blue:wlan-5g",
- .gpio = EPG5000_GPIO_LED_WLAN_5G,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button epg5000_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = EPG5000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EPG5000_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = EPG5000_KEYS_DEBOUNCE_INTERVAL,
- .gpio = EPG5000_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg epg5000_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data epg5000_ar8327_data = {
- .pad0_cfg = &epg5000_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info epg5000_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &epg5000_ar8327_data,
- },
-};
-
-static int epg5000_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(EPG5000_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, EPG5000_NVRAM_SIZE,
- name, mac);
- if (err) {
- pr_err("no MAC address found for %s\n", name);
- return false;
- }
-
- return true;
-}
-
-static void __init epg5000_setup(void)
-{
- u8 *caldata = (u8 *) KSEG1ADDR(EPG5000_CALDATA_ADDR);
- u8 mac1[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(epg5000_leds_gpio),
- epg5000_leds_gpio);
- ath79_register_gpio_keys_polled(-1, EPG5000_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(epg5000_gpio_keys),
- epg5000_gpio_keys);
-
- ath79_register_usb();
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(epg5000_mdio0_info,
- ARRAY_SIZE(epg5000_mdio0_info));
-
- /* GMAC0 is connected to an QCA8327N switch */
- 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;
-
- if (epg5000_get_mac("ethaddr=", mac1))
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_register_eth(0);
-
- ath79_register_wmac(caldata + EPG5000_WMAC_CALDATA_OFFSET, mac1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_EPG5000, "EPG5000",
- "EnGenius EPG5000",
- epg5000_setup);
+++ /dev/null
-/*
- * EnGenius ESR1750 board support
- *
- * Copyright (c) 2014 Jon Suphammer <jon@suphammer.net>
- *
- * 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 <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define ESR1750_GPIO_LED_WLAN_5G 23
-#define ESR1750_GPIO_LED_WLAN_2G 13
-#define ESR1750_GPIO_LED_POWER_AMBER 2
-#define ESR1750_GPIO_LED_WPS_AMBER 22
-#define ESR1750_GPIO_LED_WPS_BLUE 19
-
-#define ESR1750_GPIO_BTN_WPS 16
-#define ESR1750_GPIO_BTN_RESET 17
-
-#define ESR1750_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ESR1750_KEYS_DEBOUNCE_INTERVAL (3 * ESR1750_KEYS_POLL_INTERVAL)
-
-#define ESR1750_CALDATA_ADDR 0x1fff0000
-#define ESR1750_WMAC_CALDATA_OFFSET 0x1000
-#define ESR1750_PCIE_CALDATA_OFFSET 0x5000
-
-#define ESR1750_NVRAM_ADDR 0x1f030000
-#define ESR1750_NVRAM_SIZE 0x10000
-
-static struct gpio_led esr1750_leds_gpio[] __initdata = {
- {
- .name = "esr1750:amber:power",
- .gpio = ESR1750_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "esr1750:blue:wps",
- .gpio = ESR1750_GPIO_LED_WPS_BLUE,
- .active_low = 1,
- },
- {
- .name = "esr1750:amber:wps",
- .gpio = ESR1750_GPIO_LED_WPS_AMBER,
- .active_low = 1,
- },
- {
- .name = "esr1750:blue:wlan-2g",
- .gpio = ESR1750_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "esr1750:blue:wlan-5g",
- .gpio = ESR1750_GPIO_LED_WLAN_5G,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button esr1750_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ESR1750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ESR1750_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ESR1750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ESR1750_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg esr1750_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data esr1750_ar8327_data = {
- .pad0_cfg = &esr1750_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info esr1750_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &esr1750_ar8327_data,
- },
-};
-
-static int esr1750_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(ESR1750_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, ESR1750_NVRAM_SIZE,
- name, mac);
- if (err) {
- pr_err("no MAC address found for %s\n", name);
- return false;
- }
-
- return true;
-}
-
-static void __init esr1750_setup(void)
-{
- u8 *caldata = (u8 *) KSEG1ADDR(ESR1750_CALDATA_ADDR);
- u8 mac1[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(esr1750_leds_gpio),
- esr1750_leds_gpio);
- ath79_register_gpio_keys_polled(-1, ESR1750_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(esr1750_gpio_keys),
- esr1750_gpio_keys);
-
- ath79_register_usb();
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(esr1750_mdio0_info,
- ARRAY_SIZE(esr1750_mdio0_info));
-
- /* GMAC0 is connected to an QCA8327N switch */
- 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;
-
- if (esr1750_get_mac("ethaddr=", mac1))
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_register_eth(0);
-
- ath79_register_wmac(caldata + ESR1750_WMAC_CALDATA_OFFSET, mac1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_ESR1750, "ESR1750",
- "EnGenius ESR1750",
- esr1750_setup);
+++ /dev/null
-/*
- * EnGenius ESR900 board support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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.
- */
-
-#define pr_fmt(fmt) "esr900: " fmt
-
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define ESR900_GPIO_LED_POWER 2
-#define ESR900_GPIO_LED_WLAN_2G 13
-#define ESR900_GPIO_LED_WPS_BLUE 19
-#define ESR900_GPIO_LED_WPS_AMBER 22
-#define ESR900_GPIO_LED_WLAN_5G 23
-
-#define ESR900_GPIO_BTN_WPS 16
-#define ESR900_GPIO_BTN_RESET 17
-
-#define ESR900_KEYS_POLL_INTERVAL 20 /* msecs */
-#define ESR900_KEYS_DEBOUNCE_INTERVAL (3 * ESR900_KEYS_POLL_INTERVAL)
-
-#define ESR900_CALDATA_ADDR 0x1fff0000
-#define ESR900_WMAC_CALDATA_OFFSET 0x1000
-#define ESR900_PCIE_CALDATA_OFFSET 0x5000
-
-#define ESR900_CONFIG_ADDR 0x1f030000
-#define ESR900_CONFIG_SIZE 0x10000
-
-#define ESR900_LAN_PHYMASK BIT(0)
-#define ESR900_WAN_PHYMASK BIT(5)
-#define ESR900_MDIO_MASK (~(ESR900_LAN_PHYMASK | ESR900_WAN_PHYMASK))
-
-static struct gpio_led esr900_leds_gpio[] __initdata = {
- {
- .name = "engenius:amber:power",
- .gpio = ESR900_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "engenius:blue:wlan-2g",
- .gpio = ESR900_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "engenius:blue:wps",
- .gpio = ESR900_GPIO_LED_WPS_BLUE,
- .active_low = 1,
- },
- {
- .name = "engenius:amber:wps",
- .gpio = ESR900_GPIO_LED_WPS_AMBER,
- .active_low = 1,
- },
- {
- .name = "engenius:blue:wlan-5g",
- .gpio = ESR900_GPIO_LED_WLAN_5G,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button esr900_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = ESR900_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ESR900_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = ESR900_KEYS_DEBOUNCE_INTERVAL,
- .gpio = ESR900_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg esr900_ar8327_pad0_cfg = {
- /* GMAC0 of the AR8337 switch is connected to GMAC0 via RGMII */
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_pad_cfg esr900_ar8327_pad6_cfg = {
- /* GMAC6 of the AR8337 switch is connected to GMAC1 via SGMII */
- .mode = AR8327_PAD_MAC_SGMII,
- .rxclk_delay_en = true,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_platform_data esr900_ar8327_data = {
- .pad0_cfg = &esr900_ar8327_pad0_cfg,
- .pad6_cfg = &esr900_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info esr900_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &esr900_ar8327_data,
- },
-};
-
-static void __init esr900_setup(void)
-{
- const char *config = (char *) KSEG1ADDR(ESR900_CONFIG_ADDR);
- u8 *art = (u8 *) KSEG1ADDR(ESR900_CALDATA_ADDR);
- u8 lan_mac[ETH_ALEN];
- u8 wlan0_mac[ETH_ALEN];
- u8 wlan1_mac[ETH_ALEN];
-
- if (ath79_nvram_parse_mac_addr(config, ESR900_CONFIG_SIZE,
- "ethaddr=", lan_mac) == 0) {
- ath79_init_local_mac(ath79_eth0_data.mac_addr, lan_mac);
- ath79_init_mac(wlan0_mac, lan_mac, 0);
- ath79_init_mac(wlan1_mac, lan_mac, 1);
- } else {
- pr_err("could not find ethaddr in u-boot environment\n");
- }
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(esr900_leds_gpio),
- esr900_leds_gpio);
- ath79_register_gpio_keys_polled(-1, ESR900_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(esr900_gpio_keys),
- esr900_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_wmac(art + ESR900_WMAC_CALDATA_OFFSET, wlan0_mac);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(esr900_mdio0_info,
- ARRAY_SIZE(esr900_mdio0_info));
-
- /* GMAC0 is connected to the RMGII interface */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = ESR900_LAN_PHYMASK;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_register_eth(1);
-
- ap91_pci_init(art + ESR900_PCIE_CALDATA_OFFSET, wlan1_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ESR900, "ESR900", "EnGenius ESR900", esr900_setup);
-
+++ /dev/null
-/*
- * EW Balin board support
- * (based on Atheros DB120 reference board support)
- *
- * Copyright (c) 2011 Qualcomm Atheros
- * Copyright (c) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2017 Embedded Wireless GmbH www.80211.de
- *
- * 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/pci.h>
-#include <linux/phy.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define BALIN_GPIO_LED_STATUS 14
-
-#define BALIN_GPIO_BTN_WPS 18
-
-#define BALIN_KEYS_POLL_INTERVAL 20 /* msecs */
-#define BALIN_KEYS_DEBOUNCE_INTERVAL (3 * BALIN_KEYS_POLL_INTERVAL)
-
-#define BALIN_CALDATA_OFFSET 0x1000
-#define BALIN_WMAC_MAC_OFFSET (BALIN_CALDATA_OFFSET + 0x02)
-
-static struct gpio_led balin_leds_gpio[] __initdata = {
- {
- .name = "balin:green:status",
- .gpio = BALIN_GPIO_LED_STATUS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button balin_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = BALIN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = BALIN_GPIO_BTN_WPS,
- .active_low = 0,
- },
-};
-
-
-static void __init balin_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- static u8 mac[6];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(balin_leds_gpio),
- balin_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, BALIN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(balin_gpio_keys),
- balin_gpio_keys);
-
- ath79_register_usb();
-
- ath79_register_wmac(art + BALIN_CALDATA_OFFSET, NULL);
-
- ath79_register_pci();
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
-
- /* GMAC1 is connected to the internal switch */
- memcpy(mac, art + BALIN_WMAC_MAC_OFFSET, sizeof(mac));
- mac[3] |= 0x40;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_EW_BALIN, "EW-BALIN", "EmbWir-Balin",
- balin_setup);
+++ /dev/null
-/*
- * EW Dorin board support
- * (based on Atheros Ref. Design AP121)
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2012-2017 Embedded Wireless GmbH www.80211.de
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DORIN_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DORIN_KEYS_DEBOUNCE_INTERVAL (3 * DORIN_KEYS_POLL_INTERVAL)
-
-#define DORIN_CALDATA_OFFSET 0x1000
-#define DORIN_WMAC_MAC_OFFSET 0x1002
-
-#define DORIN_GPIO_LED_STATUS 21
-
-#define DORIN_GPIO_BTN_JUMPSTART 11
-#define DORIN_GPIO_BTN_RESET 6
-
-static struct gpio_led dorin_leds_gpio[] __initdata = {
- {
- .name = "dorin:green:status",
- .gpio = DORIN_GPIO_LED_STATUS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button dorin_gpio_keys[] __initdata = {
- {
- .desc = "jumpstart button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DORIN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DORIN_GPIO_BTN_JUMPSTART,
- .active_low = 0,
- },
- {
- .desc = "reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DORIN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DORIN_GPIO_BTN_RESET,
- .active_low = 0,
- }
-};
-
-static void __init ew_dorin_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- static u8 mac[6];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_usb();
-
- if (ar93xx_wmac_read_mac_address(mac)) {
- ath79_register_wmac(NULL, NULL);
- } else {
- ath79_register_wmac(art + DORIN_CALDATA_OFFSET,
- art + DORIN_WMAC_MAC_OFFSET);
- memcpy(mac, art + DORIN_WMAC_MAC_OFFSET, sizeof(mac));
- }
-
- mac[3] |= 0x40;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dorin_leds_gpio),
- dorin_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DORIN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dorin_gpio_keys),
- dorin_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_EW_DORIN, "EW-DORIN", "EmbWir-Dorin",
- ew_dorin_setup);
-
-
-static void __init ew_dorin_router_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- static u8 mac[6];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_usb();
-
- if (ar93xx_wmac_read_mac_address(mac)) {
- ath79_register_wmac(NULL, NULL);
- } else {
- ath79_register_wmac(art + DORIN_CALDATA_OFFSET,
- art + DORIN_WMAC_MAC_OFFSET);
- memcpy(mac, art + DORIN_WMAC_MAC_OFFSET, sizeof(mac));
- }
-
- mac[3] |= 0x40;
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- mac[3] &= 0x3F;
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_setup_ar933x_phy4_switch(true, true);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(dorin_leds_gpio),
- dorin_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DORIN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(dorin_gpio_keys),
- dorin_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_EW_DORIN_ROUTER, "EW-DORIN-ROUTER",
- "EmbWir-Dorin-Router", ew_dorin_router_setup);
+++ /dev/null
-/*
- * Belkin AC1750DB (F9K1115V2) board support
- *
- * Copyright (C) 2014 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2014 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define F9K1115V2_GPIO_LED_USB2 4
-#define F9K1115V2_GPIO_LED_WPS_AMBER 14
-#define F9K1115V2_GPIO_LED_STATUS_AMBER 15
-#define F9K1115V2_GPIO_LED_WPS_BLUE 19
-#define F9K1115V2_GPIO_LED_STATUS_BLUE 20
-
-#define F9K1115V2_GPIO_BTN_WPS 16
-#define F9K1115V2_GPIO_BTN_RESET 17
-
-#define F9K1115V2_GPIO_USB2_POWER 21
-
-#define F9K1115V2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define F9K1115V2_KEYS_DEBOUNCE_INTERVAL (3 * F9K1115V2_KEYS_POLL_INTERVAL)
-
-#define F9K1115V2_WAN_MAC_OFFSET 0
-#define F9K1115V2_LAN_MAC_OFFSET 6
-#define F9K1115V2_WMAC_CALDATA_OFFSET 0x1000
-#define F9K1115V2_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led f9k1115v2_leds_gpio[] __initdata = {
- {
- .name = "belkin:amber:status",
- .gpio = F9K1115V2_GPIO_LED_STATUS_AMBER,
- .active_low = 1,
- },
- {
- .name = "belkin:blue:status",
- .gpio = F9K1115V2_GPIO_LED_STATUS_BLUE,
- .active_low = 1,
- },
- {
- .name = "belkin:blue:wps",
- .gpio = F9K1115V2_GPIO_LED_WPS_BLUE,
- .active_low = 1,
- },
- {
- .name = "belkin:amber:wps",
- .gpio = F9K1115V2_GPIO_LED_WPS_AMBER,
- .active_low = 1,
- },
- {
- .name = "belkin:green:usb2",
- .gpio = F9K1115V2_GPIO_LED_USB2,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button f9k1115v2_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = F9K1115V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = F9K1115V2_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = F9K1115V2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = F9K1115V2_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static struct ar8327_pad_cfg f9k1115v2_ar8327_pad0_cfg = {
- /* Use the RGMII interface for the GMAC0 of the AR8337 switch */
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_pad_cfg f9k1115v2_ar8327_pad6_cfg = {
- /* Use the SGMII interface for the GMAC6 of the AR8337 switch */
- .mode = AR8327_PAD_MAC_SGMII,
- .rxclk_delay_en = true,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_platform_data f9k1115v2_ar8327_data = {
- .pad0_cfg = &f9k1115v2_ar8327_pad0_cfg,
- .pad6_cfg = &f9k1115v2_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-static struct mdio_board_info f9k1115v2_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &f9k1115v2_ar8327_data,
- },
-};
-
-static void __init f9k1115v2_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(f9k1115v2_leds_gpio),
- f9k1115v2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, F9K1115V2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(f9k1115v2_gpio_keys),
- f9k1115v2_gpio_keys);
-
- ath79_register_wmac(art + F9K1115V2_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(f9k1115v2_mdio0_info,
- ARRAY_SIZE(f9k1115v2_mdio0_info));
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + F9K1115V2_WAN_MAC_OFFSET, 0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr,
- art + F9K1115V2_LAN_MAC_OFFSET, 0);
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- /* GMAC0 is connected to the RMGII interface */
- 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_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(1);
-
- ath79_register_pci();
-
- ath79_register_usb();
- gpio_request_one(F9K1115V2_GPIO_USB2_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB2 power");
-}
-
-MIPS_MACHINE(ATH79_MACH_F9K1115V2, "F9K1115V2", "Belkin AC1750DB",
- f9k1115v2_setup);
+++ /dev/null
-/*
- * AVM FRITZ!WLAN Repeater 300E board support
- *
- * Copyright (C) 2017 Mathias Kresin <dev@kresin.me>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.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 "machtypes.h"
-
-#define FRITZ300E_KEYS_POLL_INTERVAL 20 /* msecs */
-#define FRITZ300E_KEYS_DEBOUNCE_INTERVAL (3 * FRITZ300E_KEYS_POLL_INTERVAL)
-
-static struct mtd_partition fritz300e_flash_partitions[] = {
- {
- .name = "urloader",
- .offset = 0,
- .size = 0x0020000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "firmware",
- .offset = 0x0020000,
- .size = 0x0ee0000,
- }, {
- .name = "tffs (1)",
- .offset = 0x0f00000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "tffs (2)",
- .offset = 0x0f80000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }
-};
-
-static struct flash_platform_data fritz300e_flash_data = {
- .parts = fritz300e_flash_partitions,
- .nr_parts = ARRAY_SIZE(fritz300e_flash_partitions),
-};
-
-static struct gpio_led fritz300e_leds_gpio[] __initdata = {
- {
- .name = "fritz300e:green:power",
- .gpio = 13,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:lan",
- .gpio = 15,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:wlan",
- .gpio = 16,
- .active_low = 1,
- }
-};
-
-static struct gpio_led fritz300e_wmac_leds_gpio[] = {
- {
- .name = "fritz300e:green:rssi0",
- .gpio = 10,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:rssi1",
- .gpio = 4,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:rssi2",
- .gpio = 6,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:rssi3",
- .gpio = 7,
- .active_low = 1,
- }, {
- .name = "fritz300e:green:rssi4",
- .gpio = 5,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button fritz300e_gpio_keys[] __initdata = {
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = FRITZ300E_KEYS_DEBOUNCE_INTERVAL,
- .gpio = 12,
- .active_low = 1,
- },
-};
-
-static void __init fritz300e_setup(void)
-{
- /* get the Lantiq PEF7071V phy out of reset */
- gpio_request_one(11, GPIOF_OUT_INIT_HIGH, "phy reset");
-
- ath79_register_m25p80(&fritz300e_flash_data);
-
- ath79_register_mdio(0, ~(BIT(0)));
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(0);
-
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(fritz300e_leds_gpio),
- fritz300e_leds_gpio);
- ath79_register_gpio_keys_polled(-1, FRITZ300E_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(fritz300e_gpio_keys),
- fritz300e_gpio_keys);
-
- ap9x_pci_setup_wmac_leds(0, fritz300e_wmac_leds_gpio,
- ARRAY_SIZE(fritz300e_wmac_leds_gpio));
- ap91_pci_init_simple();
-}
-
-MIPS_MACHINE(ATH79_MACH_FRITZ300E, "FRITZ300E",
- "AVM FRITZ!WLAN Repeater 300E", fritz300e_setup);
+++ /dev/null
-/*
- * AVM FRITZ!Box 4020 board support
- *
- * Copyright (C) 2018 David Bauer <mail@david-bauer.net>
- *
- * 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 <linux/init.h>
-#include <linux/ath9k_platform.h>
-#include <linux/etherdevice.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_data/mdio-gpio.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/74x164.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-
-#define FRITZ4020_GPIO_SHIFT_SER 19 /* DS, Data Serial Input */
-#define FRITZ4020_GPIO_SHIFT_SRCLK 20 /* SHCP, Shift Reg Clock Input */
-
-#define FRITZ4020_SSR_BIT_0 0
-#define FRITZ4020_SSR_BIT_1 1
-#define FRITZ4020_SSR_BIT_2 2
-#define FRITZ4020_SSR_BIT_3 3
-#define FRITZ4020_SSR_BIT_4 4
-#define FRITZ4020_SSR_BIT_5 5
-#define FRITZ4020_SSR_BIT_6 6
-#define FRITZ4020_SSR_BIT_7 7
-
-#define FRITZ4020_74HC_GPIO_BASE 32
-#define FRITZ4020_74HC_GPIO_LED_LAN (FRITZ4020_74HC_GPIO_BASE + 0)
-#define FRITZ4020_74HC_GPIO_LED_INFO_RED (FRITZ4020_74HC_GPIO_BASE + 1)
-#define FRITZ4020_74HC_GPIO_LED_POWER (FRITZ4020_74HC_GPIO_BASE + 2)
-#define FRITZ4020_74HC_GPIO_LED_WLAN (FRITZ4020_74HC_GPIO_BASE + 3)
-#define FRITZ4020_74HC_GPIO_LED_WAN (FRITZ4020_74HC_GPIO_BASE + 4)
-#define FRITZ4020_74HC_GPIO_USB_RST (FRITZ4020_74HC_GPIO_BASE + 5)
-#define FRITZ4020_74HC_GPIO_LED_INFO (FRITZ4020_74HC_GPIO_BASE + 6)
-
-
-#define FRITZ4020_GPIO_BTN_WPS 2
-#define FRITZ4020_GPIO_BTN_WLAN 21
-#define FRITZ4020_KEYS_POLL_INTERVAL 20 /* msecs */
-#define FRITZ4020_KEYS_DEBOUNCE_INTERVAL (3 * FRITZ4020_KEYS_POLL_INTERVAL)
-
-#define FRTIZ4020_OFFSET_URLADER_WIFI_MAC_REVERSE 0x1979
-
-
-static struct spi_gpio_platform_data fritz4020_spi_data = {
- .sck = FRITZ4020_GPIO_SHIFT_SRCLK,
- .miso = SPI_GPIO_NO_MISO,
- .mosi = FRITZ4020_GPIO_SHIFT_SER,
- .num_chipselect = 1,
-};
-
-static u8 fritz4020_ssr_initdata[] = {
- BIT(FRITZ4020_SSR_BIT_7) |
- BIT(FRITZ4020_SSR_BIT_6) |
- BIT(FRITZ4020_SSR_BIT_5) |
- BIT(FRITZ4020_SSR_BIT_4) |
- BIT(FRITZ4020_SSR_BIT_3) |
- BIT(FRITZ4020_SSR_BIT_2) |
- BIT(FRITZ4020_SSR_BIT_1)
-};
-
-static struct gen_74x164_chip_platform_data fritz4020_ssr_data = {
- .base = FRITZ4020_74HC_GPIO_BASE,
- .num_registers = ARRAY_SIZE(fritz4020_ssr_initdata),
- .init_data = fritz4020_ssr_initdata,
-};
-
-static struct platform_device fritz4020_spi_device = {
- .name = "spi_gpio",
- .id = 1,
- .dev = {
- .platform_data = &fritz4020_spi_data,
- },
-};
-
-static struct spi_board_info fritz4020_spi_info[] = {
- {
- .bus_num = 1,
- .chip_select = 0,
- .max_speed_hz = 10000000,
- .modalias = "74x164",
- .platform_data = &fritz4020_ssr_data,
- .controller_data = (void *) 0x0,
- },
-};
-
-static struct mtd_partition fritz4020_flash_partitions[] = {
- {
- .name = "urlader",
- .offset = 0,
- .size = 0x0020000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "firmware",
- .offset = 0x0020000,
- .size = 0x0EE0000,
- }, {
- .name = "tffs (1)",
- .offset = 0x0f00000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "tffs (2)",
- .offset = 0x0f80000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }
-};
-
-static struct flash_platform_data fritz4020_flash_data = {
- .parts = fritz4020_flash_partitions,
- .nr_parts = ARRAY_SIZE(fritz4020_flash_partitions),
-};
-
-static struct gpio_led fritz4020_leds_gpio[] __initdata = {
- {
- .name = "fritz4020:green:lan",
- .gpio = FRITZ4020_74HC_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "fritz4020:green:info",
- .gpio = FRITZ4020_74HC_GPIO_LED_INFO,
- .active_low = 1,
- }, {
- .name = "fritz4020:red:info",
- .gpio = FRITZ4020_74HC_GPIO_LED_INFO_RED,
- .active_low = 1,
- }, {
- .name = "fritz4020:green:power",
- .gpio = FRITZ4020_74HC_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "fritz4020:green:wlan",
- .gpio = FRITZ4020_74HC_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "fritz4020:green:wan",
- .gpio = FRITZ4020_74HC_GPIO_LED_WAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button fritz4020_gpio_keys[] __initdata = {
- {
- .desc = "RFKILL button",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = FRITZ4020_KEYS_DEBOUNCE_INTERVAL,
- .gpio = FRITZ4020_GPIO_BTN_WLAN,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = FRITZ4020_KEYS_DEBOUNCE_INTERVAL,
- .gpio = FRITZ4020_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static void __init fritz4020_setup(void) {
- u8 *urlader = (u8 *) KSEG1ADDR(0x1f000000);
- u8 wifi_mac[ETH_ALEN];
-
- ath79_register_m25p80(&fritz4020_flash_data);
-
- /* Initialize ethernet */
- ath79_extract_mac_reverse(urlader + FRTIZ4020_OFFSET_URLADER_WIFI_MAC_REVERSE, wifi_mac);
- ath79_setup_qca956x_eth_cfg(QCA956X_ETH_CFG_SW_PHY_SWAP |
- QCA956X_ETH_CFG_SW_PHY_ADDR_SWAP);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
- ath79_init_mac(ath79_eth0_data.mac_addr, wifi_mac, -1);
- ath79_init_mac(ath79_eth1_data.mac_addr, wifi_mac, -2);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(0);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- /* Initialize 2.4GHz WiFi */
- ath79_register_wmac_simple();
-
- /* Activate USB Power */
- gpio_request_one(FRITZ4020_74HC_GPIO_USB_RST,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- /* Initialize USB port */
- ath79_register_usb();
-
- /* Register LED shift-register */
- spi_register_board_info(fritz4020_spi_info,
- ARRAY_SIZE(fritz4020_spi_info));
- platform_device_register(&fritz4020_spi_device);
-
- /* Register GPIO buttons */
- ath79_register_gpio_keys_polled(-1, FRITZ4020_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(fritz4020_gpio_keys),
- fritz4020_gpio_keys);
-
- /* Register LEDs */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(fritz4020_leds_gpio),
- fritz4020_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_FRITZ4020, "FRITZ4020",
- "AVM FRITZ!Box 4020", fritz4020_setup);
+++ /dev/null
-/*
- * AVM FRITZ!WLAN Repeater 450E board support
- *
- * Copyright (C) 2018 David Bauer <mail@david-bauer.net>
- *
- * 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 <linux/init.h>
-#include <linux/ath9k_platform.h>
-#include <linux/etherdevice.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_data/mdio-gpio.h>
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/spi/spi_gpio.h>
-#include <linux/spi/74x164.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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 FRITZ450E_GPIO_LED_POWER 14
-#define FRITZ450E_GPIO_LED_LAN 13
-#define FRITZ450E_GPIO_LED_WLAN 15
-#define FRITZ450E_GPIO_LED_RSSI2 16
-#define FRITZ450E_GPIO_LED_RSSI3 17
-#define FRITZ450E_GPIO_LED_RSSI4 18
-
-#define FRITZ450E_GPIO_BTN_WPS 4
-#define FRITZ450E_KEYS_POLL_INTERVAL 20 /* msecs */
-#define FRITZ450E_KEYS_DEBOUNCE_INTERVAL (3 * FRITZ450E_KEYS_POLL_INTERVAL)
-
-#define FRITZ450E_PHY_ADDRESS 0
-#define FRITZ450E_GPIO_PHY_RESET 11
-#define FRITZ450E_GPIO_MDIO_CLK 12
-#define FRITZ450E_GPIO_MDIO_DATA 19
-
-#define FRITZ450E_OFFSET_URLADER_WIFI_MAC_REVERSE 0x1979
-
-
-static struct mtd_partition fritz450E_flash_partitions[] = {
- {
- .name = "urlader",
- .offset = 0,
- .size = 0x0020000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "firmware",
- .offset = 0x0020000,
- .size = 0x0EE0000,
- }, {
- .name = "tffs (1)",
- .offset = 0x0f00000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "tffs (2)",
- .offset = 0x0f80000,
- .size = 0x0080000,
- .mask_flags = MTD_WRITEABLE,
- }
-};
-
-static struct flash_platform_data fritz450E_flash_data = {
- .parts = fritz450E_flash_partitions,
- .nr_parts = ARRAY_SIZE(fritz450E_flash_partitions),
-};
-
-static struct gpio_led fritz450E_leds_gpio[] __initdata = {
- {
- .name = "fritz450e:green:lan",
- .gpio = FRITZ450E_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "fritz450e:green:rssi2",
- .gpio = FRITZ450E_GPIO_LED_RSSI2,
- .active_low = 1,
- }, {
- .name = "fritz450e:green:rssi3",
- .gpio = FRITZ450E_GPIO_LED_RSSI3,
- .active_low = 1,
- }, {
- .name = "fritz450e:green:rssi4",
- .gpio = FRITZ450E_GPIO_LED_RSSI4,
- .active_low = 1,
- }, {
- .name = "fritz450e:green:wlan",
- .gpio = FRITZ450E_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "fritz450e:green:power",
- .gpio = FRITZ450E_GPIO_LED_POWER,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button fritz450E_gpio_keys[] __initdata = {
- {
- .desc = "WPS Button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = FRITZ450E_KEYS_DEBOUNCE_INTERVAL,
- .gpio = FRITZ450E_GPIO_BTN_WPS,
- .active_low = 0,
- }
-};
-
-static struct at803x_platform_data fritz450E_at803x_data = {
- .disable_smarteee = 1,
- .has_reset_gpio = 1,
- .override_sgmii_aneg = 1,
- .reset_gpio = FRITZ450E_GPIO_PHY_RESET,
-};
-
-static struct mdio_board_info fritz450E_mdio_info[] = {
- {
- .bus_id = "ag71xx-mdio.1",
- .mdio_addr = FRITZ450E_PHY_ADDRESS,
- .platform_data = &fritz450E_at803x_data,
- },
-};
-
-static void __init fritz450E_setup(void) {
- u8 *urlader = (u8 *) KSEG1ADDR(0x1f000000);
- u8 wifi_mac[ETH_ALEN];
-
- ath79_register_m25p80(&fritz450E_flash_data);
-
- gpio_request_one(FRITZ450E_GPIO_MDIO_CLK, GPIOF_OUT_INIT_HIGH, "MDC Pull-UP");
- gpio_request_one(FRITZ450E_GPIO_MDIO_DATA, GPIOF_OUT_INIT_HIGH, "MDIO Pull-UP");
- gpio_request_one(FRITZ450E_GPIO_PHY_RESET, GPIOF_OUT_INIT_HIGH, "PHY reset");
-
- /* Register PHY device */
- mdiobus_register_board_info(fritz450E_mdio_info,
- ARRAY_SIZE(fritz450E_mdio_info));
-
- /* Initialize Ethernet */
- ath79_extract_mac_reverse(urlader + FRITZ450E_OFFSET_URLADER_WIFI_MAC_REVERSE, wifi_mac);
- ath79_init_mac(ath79_eth0_data.mac_addr, wifi_mac, -2);
-
- ath79_register_mdio(1, ~BIT(FRITZ450E_PHY_ADDRESS));
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth0_data.phy_mask = BIT(FRITZ450E_PHY_ADDRESS);
- ath79_eth0_data.enable_sgmii_fixup = 1;
- ath79_eth0_pll_data.pll_1000 = 0x03000000;
- ath79_eth0_pll_data.pll_100 = 0x00000101;
- ath79_eth0_pll_data.pll_10 = 0x00001313;
- ath79_register_eth(0);
-
- /* Initialize 2.4GHz WiFi */
- ath79_register_wmac_simple();
-
- /* Register GPIO buttons */
- ath79_register_gpio_keys_polled(-1, FRITZ450E_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(fritz450E_gpio_keys),
- fritz450E_gpio_keys);
-
- /* Register LEDs */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(fritz450E_leds_gpio),
- fritz450E_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_FRITZ450E, "FRITZ450E",
- "AVM FRITZ!WLAN Repeater 450E", fritz450E_setup);
+++ /dev/null
-/*
- * GL_ar150 board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_AR150_GPIO_LED_WLAN 0
-#define GL_AR150_GPIO_LED_LAN 13
-#define GL_AR150_GPIO_LED_WAN 15
-
-#define GL_AR150_GPIO_BIN_USB 6
-#define GL_AR150_GPIO_BTN_MANUAL 7
-#define GL_AR150_GPIO_BTN_AUTO 8
-#define GL_AR150_GPIO_BTN_RESET 11
-
-#define GL_AR150_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GL_AR150_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR150_KEYS_POLL_INTERVAL)
-
-#define GL_AR150_MAC0_OFFSET 0x0000
-#define GL_AR150_MAC1_OFFSET 0x0000
-#define GL_AR150_CALDATA_OFFSET 0x1000
-#define GL_AR150_WMAC_MAC_OFFSET 0x0000
-
-static struct gpio_led gl_ar150_leds_gpio[] __initdata = {
- {
- .name = "gl-ar150:orange:wlan",
- .gpio = GL_AR150_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "gl-ar150:green:lan",
- .gpio = GL_AR150_GPIO_LED_LAN,
- .active_low = 0,
- },
- {
- .name = "gl-ar150:green:wan",
- .gpio = GL_AR150_GPIO_LED_WAN,
- .active_low = 0,
- .default_state = 1,
- },
-};
-
-static struct gpio_keys_button gl_ar150_gpio_keys[] __initdata = {
- {
- .desc = "BTN_7",
- .type = EV_KEY,
- .code = BTN_7,
- .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR150_GPIO_BTN_MANUAL,
- .active_low = 0,
- },
- {
- .desc = "BTN_8",
- .type = EV_KEY,
- .code = BTN_8,
- .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR150_GPIO_BTN_AUTO,
- .active_low = 0,
- },
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_AR150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR150_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init gl_ar150_setup(void)
-{
-
- /* ART base address */
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* register flash. */
- ath79_register_m25p80(NULL);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar150_leds_gpio),
- gl_ar150_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GL_AR150_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_ar150_gpio_keys),
- gl_ar150_gpio_keys);
-
- /* enable usb */
- gpio_request_one(GL_AR150_GPIO_BIN_USB,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- /* register eth0 as WAN, eth1 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art+GL_AR150_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art+GL_AR150_MAC1_OFFSET, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(art + GL_AR150_CALDATA_OFFSET, art + GL_AR150_WMAC_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_AR150, "GL-AR150", "GL.iNet GL-AR150", gl_ar150_setup);
+++ /dev/null
-/*
- * Domino board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_AR300_GPIO_LED_WLAN 13
-#define GL_AR300_GPIO_LED_WAN 14
-#define GL_AR300_GPIO_BTN_RESET 16
-
-
-#define GL_AR300_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GL_AR300_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR300_KEYS_POLL_INTERVAL)
-
-#define GL_AR300_MAC0_OFFSET 0x0000
-#define GL_AR300_MAC1_OFFSET 0x0000
-#define GL_AR300_CALDATA_OFFSET 0x1000
-#define GL_AR300_WMAC_MAC_OFFSET 0x0000
-
-static struct gpio_led gl_ar300_leds_gpio[] __initdata = {
- {
- .name = "gl-ar300:wlan",
- .gpio = GL_AR300_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "gl-ar300:wan",
- .gpio = GL_AR300_GPIO_LED_WAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button gl_ar300_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_AR300_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR300_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init gl_ar300_setup(void)
-{
-
- /* ART base address */
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- /* register flash. */
- ath79_register_m25p80(NULL);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar300_leds_gpio),
- gl_ar300_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GL_AR300_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_ar300_gpio_keys),
- gl_ar300_gpio_keys);
-
- /* enable usb */
- ath79_register_usb();
- ath79_register_mdio(1, 0x0);
-
- /* register eth0 as WAN, eth1 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art+GL_AR300_MAC0_OFFSET, 0);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, art+GL_AR300_MAC1_OFFSET, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(art + GL_AR300_CALDATA_OFFSET, art + GL_AR300_WMAC_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_AR300, "GL-AR300", "GL.iNet GL-AR300", gl_ar300_setup);
+++ /dev/null
-/*
- * GLI AR300M(D) board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-#include <linux/pci.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define GL_AR300M_GPIO_LED_WLAN 14
-#define GL_AR300M_GPIO_LED_LAN 13
-#define GL_AR300M_GPIO_LED_SYSTEM 12
-#define GL_AR300M_GPIO_BTN_RESET 3
-#define GL_AR300M_GPIO_BTN_LEFT 0
-#define GL_AR300M_GPIO_BTN_RIGHT 1
-
-#define GL_AR300M_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GL_AR300M_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR300M_KEYS_POLL_INTERVAL)
-
-#define GL_AR300M_MAC0_OFFSET 0
-#define GL_AR300M_MAC1_OFFSET 6
-#define GL_AR300M_WMAC_CALDATA_OFFSET 0x1000
-#define GL_AR300M_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led gl_ar300m_leds_gpio[] __initdata = {
- {
- .name = "gl-ar300m:red:wlan",
- .gpio = GL_AR300M_GPIO_LED_WLAN,
- .active_low = 1,
- },
- {
- .name = "gl-ar300m:green:lan",
- .gpio = GL_AR300M_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "gl-ar300m:green:system",
- .gpio = GL_AR300M_GPIO_LED_SYSTEM,
- .active_low = 1,
- .default_state = 1,
- },
-};
-
-static struct gpio_keys_button gl_ar300m_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_AR300M_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR300M_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "button right",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = GL_AR300M_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR300M_GPIO_BTN_LEFT,
- .active_low = 0,
- },
- {
- .desc = "button left",
- .type = EV_KEY,
- .code = BTN_1,
- .debounce_interval = GL_AR300M_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR300M_GPIO_BTN_RIGHT,
- .active_low = 0,
- },
-};
-
-static struct spi_board_info gl_ar300m_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- .platform_data = NULL,
- },
- {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 25000000,
- .modalias = "ath79-spinand",
- .platform_data = NULL,
- }
-};
-
-static struct ath79_spi_platform_data gl_ar300m_spi_data = {
- .bus_num = 0,
- .num_chipselect = 2,
-};
-
-static void __init gl_ar300m_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
- ath79_register_spi(&gl_ar300m_spi_data, gl_ar300m_spi_info, 2);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar300m_leds_gpio),
- gl_ar300m_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GL_AR300M_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_ar300m_gpio_keys),
- gl_ar300m_gpio_keys);
-
- ath79_register_mdio(0, 0x0);
-
- /* WAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art + GL_AR300M_MAC0_OFFSET, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN */
- ath79_init_mac(ath79_eth1_data.mac_addr, art + GL_AR300M_MAC1_OFFSET, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_init_mac(tmpmac, art + GL_AR300M_WMAC_CALDATA_OFFSET + 2, 0);
- ath79_register_wmac(art + GL_AR300M_WMAC_CALDATA_OFFSET, tmpmac);
-
- /* enable usb */
- ath79_register_usb();
- /* enable pci */
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_AR300M, "GL-AR300M", "GL.iNet GL-AR300M", gl_ar300m_setup);
+++ /dev/null
-/*
- * GL.iNet GL-AR750 board support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_AR750_GPIO_LED_POWER 12
-#define GL_AR750_GPIO_LED_WLAN2G 14
-#define GL_AR750_GPIO_LED_WLAN5G 13
-
-#define GL_AR750_GPIO_BTN_RESET 3
-#define GL_AR750_GPIO_BTN_SW1 0
-
-#define GL_AR750_GPIO_I2C_SCL 16
-#define GL_AR750_GPIO_I2C_SDA 17
-
-#define GL_AR750_GPIO_USB_POWER 2
-
-#define GL_AR750_KEYS_POLL_INTERVAL 20
-#define GL_AR750_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR750_KEYS_POLL_INTERVAL)
-
-#define GL_AR750_MAC0_OFFSET 0
-#define GL_AR750_WMAC2G_CALDATA_OFFSET 0x1000
-#define GL_AR750_WMAC5G_CALDATA_OFFSET 0x5000
-
-static struct gpio_led gl_ar750_leds_gpio[] __initdata = {
- {
- .name = "gl-ar750:white:power",
- .gpio = GL_AR750_GPIO_LED_POWER,
- .default_state = LEDS_GPIO_DEFSTATE_KEEP,
- .active_low = 1,
- }, {
- .name = "gl-ar750:white:wlan2g",
- .gpio = GL_AR750_GPIO_LED_WLAN2G,
- .active_low = 1,
- }, {
- .name = "gl-ar750:white:wlan5g",
- .gpio = GL_AR750_GPIO_LED_WLAN5G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button gl_ar750_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_AR750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR750_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "sw1",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = GL_AR750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR750_GPIO_BTN_SW1,
- .active_low = 1,
- },
-};
-
-static struct i2c_gpio_platform_data gl_ar750_i2c_gpio_data = {
- .sda_pin = GL_AR750_GPIO_I2C_SDA,
- .scl_pin = GL_AR750_GPIO_I2C_SCL,
-};
-
-static struct platform_device gl_ar750_i2c_gpio = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &gl_ar750_i2c_gpio_data,
- },
-};
-
-static void __init gl_ar750_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f050000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = 0xfc;
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art + GL_AR750_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, art + GL_AR750_MAC0_OFFSET, 1);
- ath79_register_eth(1);
-
- /* Disable JTAG (enables GPIO0-3) */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar750_leds_gpio),
- gl_ar750_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, GL_AR750_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_ar750_gpio_keys),
- gl_ar750_gpio_keys);
-
- gpio_request_one(GL_AR750_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- platform_device_register(&gl_ar750_i2c_gpio);
-
- ath79_register_usb();
-
- ath79_register_wmac(art + GL_AR750_WMAC2G_CALDATA_OFFSET, NULL);
-
- ap91_pci_init(art + GL_AR750_WMAC5G_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_AR750, "GL-AR750", "GL.iNet GL-AR750",
- gl_ar750_setup);
+++ /dev/null
-/*
- * GL.iNet GL-AR750S board support
- *
- * Copyright (C) 2018 luochongjun <luochongjun@gl-inet.com>
- *
- * 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 <linux/init.h>
-#include <linux/pci.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/etherdevice.h>
-
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/irq.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/ar8216_platform.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-spi.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-
-
-#define GL_AR750S_KEYS_POLL_INTERVAL 20
-#define GL_AR750S_KEYS_DEBOUNCE_INTERVAL (3 * GL_AR750S_KEYS_POLL_INTERVAL)
-
-
-#define GL_AR750S_GPIO_LED_WLAN2G 19
-#define GL_AR750S_GPIO_LED_WLAN5G 20
-#define GL_AR750S_GPIO_LED_POWER 1
-#define GL_AR750S_GPIO_USB_POWER 7
-
-#define GL_AR750S_GPIO_BTN_RESET 2
-#define GL_AR750S_GPIO_BTN_RIGHT 8
-
-#define GL_AR750S_MAC0_OFFSET 0x0000
-#define GL_AR750S_WMAC_CALDATA_OFFSET 0x1000
-#define GL_AR750S_PCI_CALDATA_OFFSET 0x5000
-
-#define GL_AR750S_GPIO_I2C_SDA 5
-#define GL_AR750S_GPIO_I2C_SCL 21
-
-
-
-static struct spi_board_info gl_ar750s_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- .platform_data = NULL,
- },
-};
-
-static struct ath79_spi_platform_data gl_ar750s_spi_data = {
- .bus_num = 0,
- .num_chipselect = 2,
-};
-
-static struct gpio_led gl_ar750s_leds_gpio[] __initdata = {
- {
- .name = "gl-ar750s:green:power",
- .gpio = GL_AR750S_GPIO_LED_POWER,
- .default_state = LEDS_GPIO_DEFSTATE_KEEP,
- .active_low = 1,
- },{
- .name = "gl-ar750s:green:usbpower",
- .gpio = GL_AR750S_GPIO_USB_POWER,
- .active_low = 1,
- },{
- .name = "gl-ar750s:green:wlan2g",
- .gpio = GL_AR750S_GPIO_LED_WLAN2G,
- .active_low = 1,
- },{
- .name = "gl-ar750s:green:wlan5g",
- .gpio = GL_AR750S_GPIO_LED_WLAN5G,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button gl_ar750s_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_AR750S_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR750S_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "right",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = GL_AR750S_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_AR750S_GPIO_BTN_RIGHT,
- .active_low = 1,
- },
-};
-
-static struct i2c_gpio_platform_data gl_ar750s_i2c_gpio_data = {
- .sda_pin = GL_AR750S_GPIO_I2C_SDA,
- .scl_pin = GL_AR750S_GPIO_I2C_SCL,
-};
-
-static struct platform_device gl_ar750s_i2c_gpio_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &gl_ar750s_i2c_gpio_data,
- }
-
-};
-
-static struct ar8327_pad_cfg gl_ar750s_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
-};
-
-static struct ar8327_platform_data gl_ar750s_ar8327_data = {
- .pad0_cfg = &gl_ar750s_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
-};
-
-
-static struct mdio_board_info gl_ar750s_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &gl_ar750s_ar8327_data,
- },
-};
-
-static void __init gl_ar750s_setup(void)
-{
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1f050000);
-
- ath79_register_spi(&gl_ar750s_spi_data, gl_ar750s_spi_info, 1);
-
- ath79_init_mac(ath79_eth0_data.mac_addr,
- eeprom + GL_AR750S_MAC0_OFFSET, 0);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(0);
-
- mdiobus_register_board_info(gl_ar750s_mdio0_info,
- ARRAY_SIZE(gl_ar750s_mdio0_info));
-
- ath79_register_mdio(0, 0x00);
- ath79_register_eth(0);
-
-
- ath79_register_usb();
-
-
- ath79_register_wmac(eeprom + GL_AR750S_WMAC_CALDATA_OFFSET, NULL);
-
-
- ap91_pci_init(eeprom + GL_AR750S_PCI_CALDATA_OFFSET, NULL);
-
- platform_device_register(&gl_ar750s_i2c_gpio_device);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_ar750s_leds_gpio),
- gl_ar750s_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, GL_AR750S_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_ar750s_gpio_keys),
- gl_ar750s_gpio_keys);
-}
-
-
-MIPS_MACHINE(ATH79_MACH_GL_AR750S, "GL-AR750S", "GL-AR750S",
- gl_ar750s_setup);
+++ /dev/null
-/*
- * Domino board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define DOMINO_GPIO_LED_WLAN 0
-#define DOMINO_GPIO_LED_WAN 17
-#define DOMINO_GPIO_LED_USB 1
-#define DOMINO_GPIO_LED_LAN1 13
-#define DOMINO_GPIO_LED_LAN2 14
-#define DOMINO_GPIO_LED_LAN3 15
-#define DOMINO_GPIO_LED_LAN4 16
-#define DOMINO_GPIO_LED_SYS 27
-#define DOMINO_GPIO_LED_WPS 26
-#define DOMINO_GPIO_USB_POWER 6
-
-#define DOMINO_GPIO_BTN_RESET 11
-#define DOMINO_GPIO_BTN_WPS 20
-
-#define DOMINO_KEYS_POLL_INTERVAL 20 /* msecs */
-#define DOMINO_KEYS_DEBOUNCE_INTERVAL (3 * DOMINO_KEYS_POLL_INTERVAL)
-
-#define DOMINO_MAC0_OFFSET 0x0000
-#define DOMINO_MAC1_OFFSET 0x0000
-#define DOMINO_CALDATA_OFFSET 0x1000
-#define DOMINO_WMAC_MAC_OFFSET 0x0000
-
-static struct gpio_led domino_leds_gpio[] __initdata = {
- {
- .name = "gl-domino:blue:wlan",
- .gpio = DOMINO_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "gl-domino:red:wan",
- .gpio = DOMINO_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "gl-domino:white:usb",
- .gpio = DOMINO_GPIO_LED_USB,
- .active_low = 0,
- },
- {
- .name = "gl-domino:green:lan1",
- .gpio = DOMINO_GPIO_LED_LAN1,
- .active_low = 0,
- },
- {
- .name = "gl-domino:yellow:wps",
- .gpio = DOMINO_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "gl-domino:orange:sys",
- .gpio = DOMINO_GPIO_LED_SYS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button domino_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = DOMINO_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DOMINO_GPIO_BTN_RESET,
- .active_low = 0,
- },
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = DOMINO_KEYS_DEBOUNCE_INTERVAL,
- .gpio = DOMINO_GPIO_BTN_WPS,
- .active_low = 0,
- }
-};
-
-static void __init domino_setup(void)
-{
-
- /* ART base address */
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* register flash. */
- ath79_register_m25p80(NULL);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(domino_leds_gpio),
- domino_leds_gpio);
- ath79_register_gpio_keys_polled(-1, DOMINO_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(domino_gpio_keys),
- domino_gpio_keys);
-
- gpio_request_one(DOMINO_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- /* enable usb */
- ath79_register_usb();
-
- /* register eth0 as WAN, eth1 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art+DOMINO_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art+DOMINO_MAC1_OFFSET, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(art + DOMINO_CALDATA_OFFSET, art + DOMINO_WMAC_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_DOMINO, "DOMINO", "Domino Pi", domino_setup);
+++ /dev/null
-/*
- * GL-CONNECT iNet board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_INET_GPIO_LED_WLAN 0
-#define GL_INET_GPIO_LED_LAN 13
-#define GL_INET_GPIO_BTN_RESET 11
-
-#define GL_INET_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GL_INET_KEYS_DEBOUNCE_INTERVAL (3 * GL_INET_KEYS_POLL_INTERVAL)
-
-static const char * gl_inet_part_probes[] = {
- "tp-link", /* dont change, this will use tplink parser */
- NULL ,
-};
-
-static struct flash_platform_data gl_inet_flash_data = {
- .part_probes = gl_inet_part_probes,
-};
-
-static struct gpio_led gl_inet_leds_gpio[] __initdata = {
- {
- .name = "gl-inet:red:wlan",
- .gpio = GL_INET_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "gl-inet:green:lan",
- .gpio = GL_INET_GPIO_LED_LAN,
- .active_low = 0,
- .default_state = 1,
- },
-};
-
-static struct gpio_keys_button gl_inet_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_INET_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_INET_GPIO_BTN_RESET,
- .active_low = 0,
- }
-};
-
-static void __init gl_inet_setup(void)
-{
- /* get the mac address which is stored in the 1st 64k uboot MTD */
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
-
- /* get the art address, which is the last 64K. By using
- 0x1fff1000, it doesn't matter it is 4M, 8M or 16M flash */
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* register flash. MTD will use tp-link parser to parser MTD */
- ath79_register_m25p80(&gl_inet_flash_data);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_inet_leds_gpio),
- gl_inet_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GL_INET_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_inet_gpio_keys),
- gl_inet_gpio_keys);
-
- /* enable usb */
- ath79_register_usb();
-
- /* register eth0 as WAN, eth1 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
- ath79_register_eth(1);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_INET, "GL-INET", "GL-CONNECT INET v1",
- gl_inet_setup);
+++ /dev/null
-/*
- * Mifi board support
- *
- * Copyright (C) 2011 dongyuqi <729650915@qq.com>
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 alzhao <alzhao@gmail.com>
- * Copyright (C) 2014 Michel Stempin <michel.stempin@wanadoo.fr>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_MIFI_GPIO_LED_WAN 27
-#define GL_MIFI_GPIO_LED_LAN 16
-#define GL_MIFI_GPIO_LED_WLAN 1
-#define GL_MIFI_GPIO_LED_NET 0
-#define GL_MIFI_GPIO_LED_3GCONTROL 7
-
-#define GL_MIFI_GPIO_BTN_RESET 11
-
-#define GL_MIFI_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GL_MIFI_KEYS_DEBOUNCE_INTERVAL (3 * GL_MIFI_KEYS_POLL_INTERVAL)
-
-#define GL_MIFI_MAC0_OFFSET 0x0000
-#define GL_MIFI_MAC1_OFFSET 0x0000
-#define GL_MIFI_CALDATA_OFFSET 0x1000
-#define GL_MIFI_WMAC_MAC_OFFSET 0x0000
-
-static struct gpio_led gl_mifi_leds_gpio[] __initdata = {
- {
- .name = "gl-mifi:green:wan",
- .gpio = GL_MIFI_GPIO_LED_WAN,
- .active_low = 0,
- },
- {
- .name = "gl-mifi:green:lan",
- .gpio = GL_MIFI_GPIO_LED_LAN,
- .active_low = 0,
- },
- {
- .name = "gl-mifi:green:wlan",
- .gpio = GL_MIFI_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "gl-mifi:green:net",
- .gpio = GL_MIFI_GPIO_LED_NET,
- .active_low = 0,
- },
- {
- .name = "gl-mifi:green:3gcontrol",
- .gpio = GL_MIFI_GPIO_LED_3GCONTROL,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button gl_mifi_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_MIFI_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_MIFI_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init gl_mifi_setup(void)
-{
-
- /* ART base address */
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- /* disable PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* register flash. */
- ath79_register_m25p80(NULL);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_mifi_leds_gpio),
- gl_mifi_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GL_MIFI_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_mifi_gpio_keys),
- gl_mifi_gpio_keys);
-
- /* enable usb */
- ath79_register_usb();
-
- /* register eth0 as WAN, eth1 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art+GL_MIFI_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art+GL_MIFI_MAC1_OFFSET, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(art + GL_MIFI_CALDATA_OFFSET, art + GL_MIFI_WMAC_MAC_OFFSET);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_MIFI, "GL-MIFI", "GL.iNet GL-MIFI", gl_mifi_setup);
+++ /dev/null
-/*
- * GL.iNet GL-USB150 board support
- *
- * Copyright (C) 2017 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define GL_USB150_GPIO_LED_POWER 13
-#define GL_USB150_GPIO_LED_WLAN 0
-#define GL_USB150_GPIO_LAN_RESET 7
-#define GL_USB150_GPIO_BTN_RESET 11
-
-#define GL_USB150_KEYS_POLL_INTERVAL 20
-#define GL_USB150_KEYS_DEBOUNCE_INTERVAL \
- (3 * GL_USB150_KEYS_POLL_INTERVAL)
-
-#define GL_USB150_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led gl_usb150_leds_gpio[] __initdata = {
- {
- .name = "gl-usb150:green:power",
- .gpio = GL_USB150_GPIO_LED_POWER,
- .active_low = 0,
- }, {
- .name = "gl-usb150:green:wlan",
- .gpio = GL_USB150_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button gl_usb150_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GL_USB150_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GL_USB150_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init gl_usb150_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* LAN (PHY4 connected with Realtek RTL8152B) */
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gl_usb150_leds_gpio),
- gl_usb150_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, GL_USB150_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gl_usb150_gpio_keys),
- gl_usb150_gpio_keys);
-
- gpio_request_one(GL_USB150_GPIO_LAN_RESET,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "LAN reset");
-
- ath79_register_wmac(art + GL_USB150_WMAC_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_GL_USB150, "GL-USB150", "GL.iNet GL-USB150",
- gl_usb150_setup);
+++ /dev/null
-/*
- * Atheros GS_MINIBOX_V3.2 reference board support
- *
- * Copyright (c) 2018 OpenWRT.org
- * Copyright (c) 2013 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/pci.h>
-#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-eth.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-spi.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define GS_MINIBOX_V3_GPIO_LED_STATUS 14
-#define GS_MINIBOX_V3_GPIO_BTN_RST 17
-#define GS_MINIBOX_V3_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GS_MINIBOX_V3_KEYS_DEBOUNCE_INTERVAL (3 * GS_MINIBOX_V3_KEYS_POLL_INTERVAL)
-#define GS_MINIBOX_V3_MAC0_OFFSET 0
-#define GS_MINIBOX_V3_MAC1_OFFSET 6
-#define GS_MINIBOX_V3_WMAC_CALDATA_OFFSET 0x1000
-
-static const char *gs_minibox_v3_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data gs_minibox_v3_flash_data = {
- .part_probes = gs_minibox_v3_part_probes,
-};
-
-static struct gpio_led gs_minibox_v3_leds_gpio[] __initdata = {
- {
- .name = "minibox_v3.2:green:system",
- .gpio = GS_MINIBOX_V3_GPIO_LED_STATUS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button gs_minibox_v3_gpio_keys[] __initdata = {
- {
- .desc = "reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GS_MINIBOX_V3_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_MINIBOX_V3_GPIO_BTN_RST,
- .active_low = 1,
- },
-};
-
-static void __init gs_minibox_v3_gpio_led_setup(void)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gs_minibox_v3_leds_gpio),
- gs_minibox_v3_leds_gpio);
- ath79_register_gpio_keys_polled(-1, GS_MINIBOX_V3_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gs_minibox_v3_gpio_keys),
- gs_minibox_v3_gpio_keys);
-}
-
-static void __init gs_minibox_v3_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(&gs_minibox_v3_flash_data);
- gs_minibox_v3_gpio_led_setup();
-
- ath79_register_usb();
-
- ath79_register_wmac(art + GS_MINIBOX_V3_WMAC_CALDATA_OFFSET, NULL);
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + GS_MINIBOX_V3_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + GS_MINIBOX_V3_MAC1_OFFSET, 0);
-
- /* WAN port */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_register_eth(0);
-
- /* LAN ports */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_switch_data.phy4_mii_en = 1;
- ath79_register_eth(1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_GS_MINIBOX_V32, "MINIBOX-V3.2", "Minibox V3.2",
- gs_minibox_v3_setup);
+++ /dev/null
-/*
- * GainStrong Oolite/MiniBox V1.0 boards support
- *
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "dev-usb.h"
-
-#define GS_MINIBOX_V1_GPIO_BTN_RESET 11
-#define GS_MINIBOX_V1_GPIO_LED_SYSTEM 1
-
-#define GS_OOLITE_V1_GPIO_BTN6 6
-#define GS_OOLITE_V1_GPIO_BTN7 7
-#define GS_OOLITE_V1_GPIO_BTN_RESET 11
-#define GS_OOLITE_V1_GPIO_LED_SYSTEM 27
-
-#define GS_KEYS_POLL_INTERVAL 20 /* msecs */
-#define GS_KEYS_DEBOUNCE_INTERVAL (3 * GS_KEYS_POLL_INTERVAL)
-
-static const char *gs_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data gs_flash_data = {
- .part_probes = gs_part_probes,
-};
-
-static struct gpio_led gs_minibox_v1_leds_gpio[] __initdata = {
- {
- .name = "minibox-v1:green:system",
- .gpio = GS_MINIBOX_V1_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
-};
-
-static struct gpio_led gs_oolite_v1_leds_gpio[] __initdata = {
- {
- .name = "oolite-v1:red:system",
- .gpio = GS_OOLITE_V1_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button gs_minibox_v1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_MINIBOX_V1_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button gs_oolite_v1_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_OOLITE_V1_GPIO_BTN_RESET,
- .active_low = 0,
- }, {
- .desc = "BTN_6",
- .type = EV_KEY,
- .code = BTN_6,
- .debounce_interval = GS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_OOLITE_V1_GPIO_BTN6,
- .active_low = 0,
- }, {
- .desc = "BTN_7",
- .type = EV_KEY,
- .code = BTN_7,
- .debounce_interval = GS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_OOLITE_V1_GPIO_BTN7,
- .active_low = 0,
- },
-};
-
-static void __init gs_common_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
-
- ath79_register_usb();
-
- ath79_register_m25p80(&gs_flash_data);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_register_wmac(art, mac);
-}
-
-static void __init gs_minibox_v1_setup(void)
-{
- gs_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gs_minibox_v1_leds_gpio),
- gs_minibox_v1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, GS_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gs_minibox_v1_gpio_keys),
- gs_minibox_v1_gpio_keys);
-}
-
-static void __init gs_oolite_v1_setup(void)
-{
- gs_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gs_oolite_v1_leds_gpio),
- gs_oolite_v1_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, GS_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gs_oolite_v1_gpio_keys),
- gs_oolite_v1_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_GS_MINIBOX_V1, "MINIBOX-V1", "GainStrong MiniBox V1.0",
- gs_minibox_v1_setup);
-
-MIPS_MACHINE(ATH79_MACH_GS_OOLITE_V1, "OOLITE-V1", "GainStrong Oolite V1.0",
- gs_oolite_v1_setup);
+++ /dev/null
-/*
- * GainStrong Oolite V5.2 module and development board support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define GS_OOLITE_V5_2_DEV_GPIO_BTN_RESET 17
-#define GS_OOLITE_V5_2_DEV_GPIO_LED_SYSTEM 13
-
-#define GS_KEYS_POLL_INTERVAL 20 /* msec */
-#define GS_KEYS_DEBOUNCE_INTERVAL (3 * GS_KEYS_POLL_INTERVAL)
-
-#define GS_OOLITE_V5_2_WMAC_CALDATA_OFFSET 0x1000
-
-static const char *gs_oolite_v5_2_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data gs_oolite_v5_2_flash_data = {
- .part_probes = gs_oolite_v5_2_part_probes,
-};
-
-static struct gpio_led gs_oolite_v5_2_dev_gpio_leds[] __initdata = {
- {
- .name = "oolite-v5.2-dev:blue:system",
- .gpio = GS_OOLITE_V5_2_DEV_GPIO_LED_SYSTEM,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button gs_oolite_v5_2_dev_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = GS_KEYS_DEBOUNCE_INTERVAL,
- .gpio = GS_OOLITE_V5_2_DEV_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init gs_oolite_v5_2_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(&gs_oolite_v5_2_flash_data);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask |= BIT(4);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, art + 6, 0);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_register_eth(0);
-
- ath79_register_pci();
- ath79_register_usb();
- ath79_register_wmac(art + GS_OOLITE_V5_2_WMAC_CALDATA_OFFSET, NULL);
-}
-
-static void __init gs_oolite_v5_2_dev_setup(void)
-{
- gs_oolite_v5_2_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(gs_oolite_v5_2_dev_gpio_leds),
- gs_oolite_v5_2_dev_gpio_leds);
-
- ath79_register_gpio_keys_polled(-1, GS_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(gs_oolite_v5_2_dev_gpio_keys),
- gs_oolite_v5_2_dev_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_GS_OOLITE_V5_2, "OOLITE-V5-2",
- "GainStrong Oolite V5.2", gs_oolite_v5_2_setup);
-
-MIPS_MACHINE(ATH79_MACH_GS_OOLITE_V5_2_DEV, "OOLITE-V5-2-DEV",
- "GainStrong Oolite V5.2-Dev", gs_oolite_v5_2_dev_setup);
+++ /dev/null
-/*
- * Aerohive HiveAP 121 board support
- *
- * Copyright (C) 2017 Chris Blake <chrisrblake93@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/platform/ar934x_nfc.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-nfc.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "dev-ap9x-pci.h"
-#include "dev-m25p80.h"
-#include "machtypes.h"
-
-#define HIVEAP_121_GPIO_LED_ORANGE 14
-#define HIVEAP_121_GPIO_LED_WHITE 21
-#define HIVEAP_121_GPIO_I2C_SCL 12
-#define HIVEAP_121_GPIO_I2C_SDA 13
-#define HIVEAP_121_GPIO_XLNA0 20
-#define HIVEAP_121_GPIO_XLNA1 19
-#define HIVEAP_121_GPIO_USB_POWER 15
-
-#define HIVEAP_121_GPIO_BTN_RESET 4
-#define HIVEAP_121_KEYS_POLL_INTERVAL 20 /* msecs */
-#define HIVEAP_121_KEYS_DEBOUNCE_INTERVAL \
- (3 * HIVEAP_121_KEYS_POLL_INTERVAL)
-
-#define HIVEAP_121_MAC_OFFSET 0x90000
-
-#define HIVEAP_121_LAN_PHYADDR 0
-
-static struct gpio_led hiveap_121_leds_gpio[] __initdata = {
- {
- .name = "hiveap-121:orange:power",
- .gpio = HIVEAP_121_GPIO_LED_ORANGE,
- .active_low = 1,
- }, {
- .name = "hiveap-121:white:power",
- .gpio = HIVEAP_121_GPIO_LED_WHITE,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button hiveap_121_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = HIVEAP_121_KEYS_DEBOUNCE_INTERVAL,
- .gpio = HIVEAP_121_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct i2c_gpio_platform_data hiveap_121_i2c_gpio_data = {
- .sda_pin = HIVEAP_121_GPIO_I2C_SDA,
- .scl_pin = HIVEAP_121_GPIO_I2C_SCL,
-};
-
-static struct platform_device hiveap_121_i2c_gpio_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &hiveap_121_i2c_gpio_data,
- }
-};
-
-static struct i2c_board_info tpm_i2c_info[] __initdata = {
- {
- I2C_BOARD_INFO("tpm_i2c_atmel", 0x29),
- }
-};
-
-static void __init hiveap_121_setup(void)
-{
- u8 *base = (u8 *) KSEG1ADDR(0x1f000000);
- u8 wlan0_mac[ETH_ALEN];
- u8 wlan1_mac[ETH_ALEN];
-
- /* NAND */
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
- ath79_register_nfc();
-
- /* SPI */
- ath79_register_m25p80(NULL);
-
- /* MDIO Interface */
- ath79_register_mdio(0, 0x0);
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_RXD_DELAY |
- AR934X_ETH_CFG_RDV_DELAY);
-
- /* GMAC0 is connected to the RGMII interface to an Atheros AR8035-A */
- ath79_init_mac(ath79_eth0_data.mac_addr,
- base + HIVEAP_121_MAC_OFFSET, 0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(HIVEAP_121_LAN_PHYADDR);
- ath79_eth0_pll_data.pll_1000 = 0x06000000;
- ath79_eth0_pll_data.pll_100 = 0x00000101;
- ath79_eth0_pll_data.pll_10 = 0x00001313;
- ath79_register_eth(0);
-
- /* i2c */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
- platform_device_register(&hiveap_121_i2c_gpio_device);
-
- /* TPM */
- i2c_register_board_info(0, tpm_i2c_info, ARRAY_SIZE(tpm_i2c_info));
-
- /* LEDs and Buttons */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(hiveap_121_leds_gpio),
- hiveap_121_leds_gpio);
- ath79_register_gpio_keys_polled(-1, HIVEAP_121_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(hiveap_121_gpio_keys),
- hiveap_121_gpio_keys);
-
- /* USB */
- gpio_request_one(HIVEAP_121_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- /* XLNA - SoC Wireless */
- ath79_wmac_set_ext_lna_gpio(0, HIVEAP_121_GPIO_XLNA0);
- ath79_wmac_set_ext_lna_gpio(1, HIVEAP_121_GPIO_XLNA1);
-
- /* SoC Wireless */
- ath79_init_mac(wlan0_mac, base + HIVEAP_121_MAC_OFFSET, 1);
- ath79_register_wmac(NULL, wlan0_mac); /* Caldata in OTP */
-
- /* PCIe Wireless */
- ath79_init_mac(wlan1_mac, base + HIVEAP_121_MAC_OFFSET, 2);
- ap91_pci_init(NULL, wlan1_mac); /* Caldata in OTP */
-}
-
-MIPS_MACHINE(ATH79_MACH_HIVEAP_121, "HiveAP-121", "Aerohive HiveAP-121",
- hiveap_121_setup);
+++ /dev/null
-/*
- * HiWiFi HC6361 board support
- *
- * Copyright (C) 2012-2013 eric
- * Copyright (C) 2014 Yousong Zhou <yszhou4tech@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/proc_fs.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define HIWIFI_HC6361_GPIO_LED_WLAN_2P4 0 /* 2.4G WLAN LED */
-#define HIWIFI_HC6361_GPIO_LED_SYSTEM 1 /* System LED */
-#define HIWIFI_HC6361_GPIO_LED_INTERNET 27 /* Internet LED */
-
-#define HIWIFI_HC6361_GPIO_USBPOWER 20 /* USB power control */
-#define HIWIFI_HC6361_GPIO_BTN_RST 11 /* Reset button */
-
-#define HIWIFI_HC6361_KEYS_POLL_INTERVAL 20 /* msecs */
-#define HIWIFI_HC6361_KEYS_DEBOUNCE_INTERVAL \
- (3 * HIWIFI_HC6361_KEYS_POLL_INTERVAL)
-
-static struct gpio_led hiwifi_leds_gpio[] __initdata = {
- {
- .name = "hiwifi:blue:wlan-2p4",
- .gpio = HIWIFI_HC6361_GPIO_LED_WLAN_2P4,
- .active_low = 1,
- }, {
- .name = "hiwifi:blue:system",
- .gpio = HIWIFI_HC6361_GPIO_LED_SYSTEM,
- .active_low = 1,
- }, {
- .name = "hiwifi:blue:internet",
- .gpio = HIWIFI_HC6361_GPIO_LED_INTERNET,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button hiwifi_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = HIWIFI_HC6361_KEYS_DEBOUNCE_INTERVAL,
- .gpio = HIWIFI_HC6361_GPIO_BTN_RST,
- .active_low = 1,
- }
-};
-
-static void __init get_mac_from_bdinfo(u8 *mac, void *bdinfo)
-{
- if (sscanf(bdinfo, "fac_mac = %2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx",
- &mac[0], &mac[1], &mac[2], &mac[3],
- &mac[4], &mac[5]) == 6) {
- return;
- }
-
- printk(KERN_WARNING "Parsing MAC address failed.\n");
- memcpy(mac, "\x00\xba\xbe\x00\x00\x00", 6);
-}
-
-static void __init hiwifi_hc6361_setup(void)
-{
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
- u8 mac[6];
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_m25p80(NULL);
- ath79_gpio_function_enable(
- AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(hiwifi_leds_gpio),
- hiwifi_leds_gpio);
- ath79_register_gpio_keys_polled(-1, HIWIFI_HC6361_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(hiwifi_gpio_keys),
- hiwifi_gpio_keys);
- gpio_request_one(HIWIFI_HC6361_GPIO_USBPOWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- get_mac_from_bdinfo(mac, (void *) KSEG1ADDR(0x1f010180));
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_HIWIFI_HC6361, "HiWiFi-HC6361",
- "HiWiFi HC6361", hiwifi_hc6361_setup);
+++ /dev/null
-/*
- * ALFA NETWORK Hornet-UB board support
- *
- * Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define HORNET_UB_GPIO_LED_WLAN 0
-#define HORNET_UB_GPIO_LED_USB 1
-#define HORNET_UB_GPIO_LED_LAN 13
-#define HORNET_UB_GPIO_LED_WAN 17
-#define HORNET_UB_GPIO_LED_WPS 27
-#define HORNET_UB_GPIO_EXT_LNA 28
-
-#define HORNET_UB_GPIO_BTN_RESET 12
-#define HORNET_UB_GPIO_BTN_WPS 11
-
-#define HORNET_UB_GPIO_USB_POWER 26
-
-#define HORNET_UB_KEYS_POLL_INTERVAL 20 /* msecs */
-#define HORNET_UB_KEYS_DEBOUNCE_INTERVAL (3 * HORNET_UB_KEYS_POLL_INTERVAL)
-
-#define HORNET_UB_MAC0_OFFSET 0x0000
-#define HORNET_UB_MAC1_OFFSET 0x0006
-#define HORNET_UB_CALDATA_OFFSET 0x1000
-
-static struct gpio_led hornet_ub_leds_gpio[] __initdata = {
- {
- .name = "alfa:blue:lan",
- .gpio = HORNET_UB_GPIO_LED_LAN,
- .active_low = 0,
- },
- {
- .name = "alfa:blue:usb",
- .gpio = HORNET_UB_GPIO_LED_USB,
- .active_low = 0,
- },
- {
- .name = "alfa:blue:wan",
- .gpio = HORNET_UB_GPIO_LED_WAN,
- .active_low = 1,
- },
- {
- .name = "alfa:blue:wlan",
- .gpio = HORNET_UB_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "alfa:blue:wps",
- .gpio = HORNET_UB_GPIO_LED_WPS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button hornet_ub_gpio_keys[] __initdata = {
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = HORNET_UB_KEYS_DEBOUNCE_INTERVAL,
- .gpio = HORNET_UB_GPIO_BTN_WPS,
- .active_low = 0,
- },
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = HORNET_UB_KEYS_DEBOUNCE_INTERVAL,
- .gpio = HORNET_UB_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init hornet_ub_gpio_setup(void)
-{
- u32 t;
-
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- t = ath79_reset_rr(AR933X_RESET_REG_BOOTSTRAP);
- t |= AR933X_BOOTSTRAP_MDIO_GPIO_EN;
- ath79_reset_wr(AR933X_RESET_REG_BOOTSTRAP, t);
-
- gpio_request_one(HORNET_UB_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- gpio_request_one(HORNET_UB_GPIO_EXT_LNA,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "external LNA0");
-
-}
-
-static void __init hornet_ub_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- hornet_ub_gpio_setup();
-
- ath79_register_m25p80(NULL);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(hornet_ub_leds_gpio),
- hornet_ub_leds_gpio);
- ath79_register_gpio_keys_polled(-1, HORNET_UB_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(hornet_ub_gpio_keys),
- hornet_ub_gpio_keys);
-
- ath79_init_mac(ath79_eth1_data.mac_addr,
- art + HORNET_UB_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth0_data.mac_addr,
- art + HORNET_UB_MAC1_OFFSET, 0);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_register_wmac(art + HORNET_UB_CALDATA_OFFSET, NULL);
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_HORNET_UB, "HORNET-UB", "ALFA NETWORK Hornet-UB",
- hornet_ub_setup);
+++ /dev/null
-/*
- * jjPlus JA76PF board support
- */
-
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define JA76PF_KEYS_POLL_INTERVAL 20 /* msecs */
-#define JA76PF_KEYS_DEBOUNCE_INTERVAL (3 * JA76PF_KEYS_POLL_INTERVAL)
-
-#define JA76PF_GPIO_I2C_SCL 0
-#define JA76PF_GPIO_I2C_SDA 1
-#define JA76PF_GPIO_LED_1 5
-#define JA76PF_GPIO_LED_2 4
-#define JA76PF_GPIO_LED_3 3
-#define JA76PF_GPIO_BTN_RESET 11
-
-static struct gpio_led ja76pf_leds_gpio[] __initdata = {
- {
- .name = "jjplus:green:led1",
- .gpio = JA76PF_GPIO_LED_1,
- .active_low = 1,
- }, {
- .name = "jjplus:green:led2",
- .gpio = JA76PF_GPIO_LED_2,
- .active_low = 1,
- }, {
- .name = "jjplus:green:led3",
- .gpio = JA76PF_GPIO_LED_3,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button ja76pf_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = JA76PF_KEYS_DEBOUNCE_INTERVAL,
- .gpio = JA76PF_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct i2c_gpio_platform_data ja76pf_i2c_gpio_data = {
- .sda_pin = JA76PF_GPIO_I2C_SDA,
- .scl_pin = JA76PF_GPIO_I2C_SCL,
-};
-
-static struct platform_device ja76pf_i2c_gpio_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &ja76pf_i2c_gpio_data,
- }
-};
-
-static const char *ja76pf_part_probes[] = {
- "RedBoot",
- NULL,
-};
-
-static struct flash_platform_data ja76pf_flash_data = {
- .part_probes = ja76pf_part_probes,
-};
-
-#define JA76PF_WAN_PHYMASK (1 << 4)
-#define JA76PF_LAN_PHYMASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 < 3))
-#define JA76PF_MDIO_PHYMASK (JA76PF_LAN_PHYMASK | JA76PF_WAN_PHYMASK)
-
-static void __init ja76pf_init(void)
-{
- ath79_register_m25p80(&ja76pf_flash_data);
-
- ath79_register_mdio(0, ~JA76PF_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = JA76PF_LAN_PHYMASK;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = JA76PF_WAN_PHYMASK;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- platform_device_register(&ja76pf_i2c_gpio_device);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ja76pf_leds_gpio),
- ja76pf_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, JA76PF_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ja76pf_gpio_keys),
- ja76pf_gpio_keys);
-
- ath79_register_usb();
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_JA76PF, "JA76PF", "jjPlus JA76PF", ja76pf_init);
-
-#define JA76PF2_GPIO_LED_D2 5
-#define JA76PF2_GPIO_LED_D3 4
-#define JA76PF2_GPIO_LED_D4 3
-#define JA76PF2_GPIO_BTN_RESET 7
-#define JA76PF2_GPIO_BTN_WPS 8
-
-static struct gpio_led ja76pf2_leds_gpio[] __initdata = {
- {
- .name = "jjplus:green:led1",
- .gpio = JA76PF2_GPIO_LED_D2,
- .active_low = 1,
- }, {
- .name = "jjplus:green:led2",
- .gpio = JA76PF2_GPIO_LED_D3,
- .active_low = 0,
- }, {
- .name = "jjplus:green:led3",
- .gpio = JA76PF2_GPIO_LED_D4,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button ja76pf2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = JA76PF_KEYS_DEBOUNCE_INTERVAL,
- .gpio = JA76PF2_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = JA76PF_KEYS_DEBOUNCE_INTERVAL,
- .gpio = JA76PF2_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-#define JA76PF2_LAN_PHYMASK BIT(0)
-#define JA76PF2_WAN_PHYMASK BIT(4)
-#define JA76PF2_MDIO_PHYMASK (JA76PF2_LAN_PHYMASK | JA76PF2_WAN_PHYMASK)
-
-static void __init ja76pf2_init(void)
-{
- ath79_register_m25p80(&ja76pf_flash_data);
-
- ath79_register_mdio(0, ~JA76PF2_MDIO_PHYMASK);
-
- /* MAC0 is connected to the CPU port of the AR8316 switch */
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
-
- /* MAC1 is connected to the PHY4 of the AR8316 switch */
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = BIT(4);
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(ja76pf2_leds_gpio),
- ja76pf2_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, JA76PF_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(ja76pf2_gpio_keys),
- ja76pf2_gpio_keys);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_JA76PF2, "JA76PF2", "jjPlus JA76PF2", ja76pf2_init);
+++ /dev/null
-/*
- * jjPlus JWAP003 board support
- *
- */
-
-#include <linux/i2c.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-m25p80.h"
-#include "dev-gpio-buttons.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define JWAP003_KEYS_POLL_INTERVAL 20 /* msecs */
-#define JWAP003_KEYS_DEBOUNCE_INTERVAL (3 * JWAP003_KEYS_POLL_INTERVAL)
-
-#define JWAP003_GPIO_WPS 11
-#define JWAP003_GPIO_I2C_SCL 0
-#define JWAP003_GPIO_I2C_SDA 1
-
-static struct gpio_keys_button jwap003_gpio_keys[] __initdata = {
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = JWAP003_KEYS_DEBOUNCE_INTERVAL,
- .gpio = JWAP003_GPIO_WPS,
- .active_low = 1,
- }
-};
-
-static struct i2c_gpio_platform_data jwap003_i2c_gpio_data = {
- .sda_pin = JWAP003_GPIO_I2C_SDA,
- .scl_pin = JWAP003_GPIO_I2C_SCL,
-};
-
-static struct platform_device jwap003_i2c_gpio_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &jwap003_i2c_gpio_data,
- }
-};
-
-static const char *jwap003_part_probes[] = {
- "RedBoot",
- NULL,
-};
-
-static struct flash_platform_data jwap003_flash_data = {
- .part_probes = jwap003_part_probes,
-};
-
-#define JWAP003_WAN_PHYMASK BIT(0)
-#define JWAP003_LAN_PHYMASK BIT(4)
-
-static void __init jwap003_init(void)
-{
- ath79_register_m25p80(&jwap003_flash_data);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth0_data.phy_mask = JWAP003_WAN_PHYMASK;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.has_ar8216 = 1;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = JWAP003_LAN_PHYMASK;
- ath79_eth1_data.speed = SPEED_100;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- platform_device_register(&jwap003_i2c_gpio_device);
-
- ath79_register_usb();
-
- ath79_register_gpio_keys_polled(-1, JWAP003_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(jwap003_gpio_keys),
- jwap003_gpio_keys);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_JWAP003, "JWAP003", "jjPlus JWAP003", jwap003_init);
+++ /dev/null
-/*
- * jjPlus JWAP230 board support
- *
- * Copyright (C) 2016 Piotr Dymacz <pepe2k@gmail.com>
- *
- * Based on mach-wpj558.c and mach-tl-wr1043nd-v2.c
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define JWAP230_GPIO_LED_LED1 23
-#define JWAP230_GPIO_LED_LED2 22
-#define JWAP230_GPIO_LED_LED3 21
-
-#define JWAP230_MAC0_OFFSET 0x0
-#define JWAP230_MAC1_OFFSET 0x6
-#define JWAP230_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led jwap230_leds_gpio[] __initdata = {
- {
- .name = "jwap230:green:led1",
- .gpio = JWAP230_GPIO_LED_LED1,
- .active_low = 1,
- },
- {
- .name = "jwap230:green:led2",
- .gpio = JWAP230_GPIO_LED_LED2,
- .active_low = 1,
- },
- {
- .name = "jwap230:green:led3",
- .gpio = JWAP230_GPIO_LED_LED3,
- .active_low = 1,
- }
-};
-
-static const struct ar8327_led_info jwap230_leds_qca8337[] = {
- AR8327_LED_INFO(PHY0_0, HW, "jwap230:green:lan"),
- AR8327_LED_INFO(PHY4_0, HW, "jwap230:green:wan"),
-};
-
-/* Blink rate: 1 Gbps -> 8 hz, 100 Mbs -> 4 Hz, 10 Mbps -> 2 Hz */
-static struct ar8327_led_cfg jwap230_qca8337_led_cfg = {
- .led_ctrl0 = 0xcf37cf37,
- .led_ctrl1 = 0xcf37cf37,
- .led_ctrl2 = 0xcf37cf37,
- .led_ctrl3 = 0x0,
- .open_drain = true,
-};
-
-/* QCA8337 GMAC0 is connected with QCA9558 over RGMII */
-static struct ar8327_pad_cfg jwap230_qca8337_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .mac06_exchange_dis = true,
-};
-
-/* QCA8337 GMAC6 is connected with QCA9558 over SGMII */
-static struct ar8327_pad_cfg jwap230_qca8337_pad6_cfg = {
- .mode = AR8327_PAD_MAC_SGMII,
- .sgmii_delay_en = true,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_platform_data jwap230_qca8337_data = {
- .pad0_cfg = &jwap230_qca8337_pad0_cfg,
- .pad6_cfg = &jwap230_qca8337_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &jwap230_qca8337_led_cfg,
- .num_leds = ARRAY_SIZE(jwap230_leds_qca8337),
- .leds = jwap230_leds_qca8337,
-};
-
-static struct mdio_board_info jwap230_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &jwap230_qca8337_data,
- },
-};
-
-static void __init jwap230_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(jwap230_leds_gpio),
- jwap230_leds_gpio);
-
- mdiobus_register_board_info(jwap230_mdio0_info,
- ARRAY_SIZE(jwap230_mdio0_info));
- ath79_register_mdio(0, 0x0);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* QCA9558 GMAC0 is connected to RMGII interface */
- 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 = 0xa6000000;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + JWAP230_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-
- /* QCA9558 GMAC1 is connected to SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, art + JWAP230_MAC1_OFFSET, 0);
- ath79_register_eth(1);
-
- ath79_register_wmac(art + JWAP230_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_pci();
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_JWAP230, "JWAP230", "jjPlus JWAP230", jwap230_setup);
+++ /dev/null
-/*
- * OCEDO Koala board support
- * Based on the MR1750 machine file
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Marek Lindner <marek@open-mesh.com>
- * Copyright (c) 2018 David Bauer <mail@david-bauer.net>
- *
- * 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/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define KOALA_GPIO_LED_POWER 22
-#define KOALA_GPIO_LED_WLAN_5G 13
-#define KOALA_GPIO_LED_WLAN_2G 23
-#define KOALA_GPIO_LED_WLAN_SYS 19
-
-#define KOALA_GPIO_BTN_RESET 17
-
-#define KOALA_KEYS_POLL_INTERVAL 20 /* msecs */
-#define KOALA_KEYS_DEBOUNCE_INTERVAL (3 * KOALA_KEYS_POLL_INTERVAL)
-
-#define KOALA_LAN_MAC_OFFSET 0
-#define KOALA_WIFI2G_MAC_OFFSET 0x06
-#define KOALA_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led koala_leds_gpio[] __initdata = {
- {
- .name = "koala:green:power",
- .gpio = KOALA_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "koala:red:wlan58",
- .gpio = KOALA_GPIO_LED_WLAN_5G,
- .active_low = 1,
- },
- {
- .name = "koala:yellow:wlan2",
- .gpio = KOALA_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "koala:blue:sys",
- .gpio = KOALA_GPIO_LED_WLAN_SYS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button koala_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = KOALA_KEYS_DEBOUNCE_INTERVAL,
- .gpio = KOALA_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data koala_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 0,
- .fixup_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info koala_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 5,
- .platform_data = &koala_at803x_data,
- },
-};
-
-static void __init koala_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init koala_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_eth0_pll_data.pll_1000 = 0xae000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0xa0001313;
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(koala_leds_gpio),
- koala_leds_gpio);
- ath79_register_gpio_keys_polled(-1, KOALA_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(koala_gpio_keys),
- koala_gpio_keys);
-
- ath79_init_mac(mac, art + KOALA_WIFI2G_MAC_OFFSET, 0);
- ath79_register_wmac(art + KOALA_WMAC_CALDATA_OFFSET, mac);
- ath79_register_pci();
-
- koala_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(koala_mdio0_info,
- ARRAY_SIZE(koala_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + KOALA_LAN_MAC_OFFSET, 0);
-
- /* GMAC0 is connected to the RMGII interface */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(5);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_KOALA, "KOALA", "OCEDO Koala", koala_setup);
+++ /dev/null
-/*
- * Hak5 LAN Turtle and Packet Squirrel boards support
- *
- * Copyright (C) 2018 Sebastian Kinne <seb@hak5.org>
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-
-#define LAN_TURTLE_GPIO_BTN_RESET 11
-#define LAN_TURTLE_GPIO_LED_SYS 13
-
-#define PACKET_SQUIRREL_GPIO_BTN_SW1 18
-#define PACKET_SQUIRREL_GPIO_BTN_SW2 20
-#define PACKET_SQUIRREL_GPIO_BTN_SW3 21
-#define PACKET_SQUIRREL_GPIO_BTN_SW4 24
-#define PACKET_SQUIRREL_GPIO_BTN_RESET 11
-#define PACKET_SQUIRREL_GPIO_LED_B 23
-#define PACKET_SQUIRREL_GPIO_LED_G 22
-#define PACKET_SQUIRREL_GPIO_LED_R 19
-
-#define HAK5_KEYS_POLL_INTERVAL 20 /* msecs */
-#define HAK5_KEYS_DEBOUNCE_INTERVAL (3 * HAK5_KEYS_POLL_INTERVAL)
-
-static const char *hak5_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data hak5_flash_data = {
- .part_probes = hak5_part_probes,
-};
-
-/* LAN Turtle */
-static struct gpio_led lan_turtle_leds_gpio[] __initdata = {
- {
- .name = "lan-turtle:orange:system",
- .gpio = LAN_TURTLE_GPIO_LED_SYS,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button lan_turtle_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = LAN_TURTLE_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-/* Packet Squirrel */
-static struct gpio_led packet_squirrel_leds_gpio[] __initdata = {
- {
- .name = "packet-squirrel:blue:system",
- .gpio = PACKET_SQUIRREL_GPIO_LED_B,
- .active_low = 1,
- }, {
- .name = "packet-squirrel:green:system",
- .gpio = PACKET_SQUIRREL_GPIO_LED_G,
- .active_low = 1,
- }, {
- .name = "packet-squirrel:red:system",
- .gpio = PACKET_SQUIRREL_GPIO_LED_R,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button packet_squirrel_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PACKET_SQUIRREL_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "sw1",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PACKET_SQUIRREL_GPIO_BTN_SW1,
- .active_low = 1,
- }, {
- .desc = "sw2",
- .type = EV_KEY,
- .code = BTN_1,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PACKET_SQUIRREL_GPIO_BTN_SW2,
- .active_low = 1,
- }, {
- .desc = "sw3",
- .type = EV_KEY,
- .code = BTN_2,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PACKET_SQUIRREL_GPIO_BTN_SW3,
- .active_low = 1,
- }, {
- .desc = "sw4",
- .type = EV_KEY,
- .code = BTN_3,
- .debounce_interval = HAK5_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PACKET_SQUIRREL_GPIO_BTN_SW4,
- .active_low = 1,
- },
-};
-
-static void __init hak5_common_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
-
- ath79_register_m25p80(&hak5_flash_data);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy_poll_mask = 0xfe;
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
- ath79_register_eth(0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
- ath79_register_eth(1);
-
- ath79_register_usb();
-
- /* GPIO11/12 */
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_UART_RTS_CTS_EN);
-}
-
-static void __init lan_turtle_setup(void)
-{
- hak5_common_setup();
-
- /* GPIO13 */
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(lan_turtle_leds_gpio),
- lan_turtle_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, HAK5_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(lan_turtle_gpio_keys),
- lan_turtle_gpio_keys);
-}
-
-static void __init packet_squirrel_setup(void)
-{
- hak5_common_setup();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(packet_squirrel_leds_gpio),
- packet_squirrel_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, HAK5_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(packet_squirrel_gpio_keys),
- packet_squirrel_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_LAN_TURTLE, "LAN-TURTLE",
- "Hak5 LAN Turtle", lan_turtle_setup);
-
-MIPS_MACHINE(ATH79_MACH_PACKET_SQUIRREL, "PACKET-SQUIRREL",
- "Hak5 Packet Squirrel", packet_squirrel_setup);
+++ /dev/null
-/*
- * 8devices Lima board support
- *
- * Copyright (C) 2016 Mantas Pucka <mantas@8devices.com>
- * Copyright (C) 2017 Karol Dudek <karoiz@sli.pl>
- *
- * 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 <linux/platform_device.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define LIMA_GPIO_BTN_1_DEFAULT 16
-#define LIMA_KEYS_POLL_INTERVAL 20 /* msecs */
-#define LIMA_KEYS_DEBOUNCE_INTERVAL (3 * LIMA_KEYS_POLL_INTERVAL)
-
-#define LIMA_ETH_PHYS (BIT(0) | BIT(1))
-
-#define LIMA_MAC0_OFFSET 0x0000
-#define LIMA_MAC1_OFFSET 0x0006
-
-#define LIMA_CALDATA_OFFSET 0x1000
-
-static struct gpio_keys_button lima_gpio_keys[] __initdata = {
- {
- .desc = "button1",
- .type = EV_KEY,
- .code = BTN_1,
- .debounce_interval = LIMA_KEYS_DEBOUNCE_INTERVAL,
- .gpio = LIMA_GPIO_BTN_1_DEFAULT,
- .active_low = 1,
- }
-};
-
-static void __init lima_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f080000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_gpio_keys_polled(-1, LIMA_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(lima_gpio_keys),
- lima_gpio_keys);
-
- ath79_setup_ar933x_phy4_switch(true, true);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + LIMA_MAC0_OFFSET, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + LIMA_MAC1_OFFSET, 0);
-
- ath79_register_mdio(0, ~LIMA_ETH_PHYS);
-
- ath79_switch_data.phy4_mii_en = 1;
-
- ath79_switch_data.phy_poll_mask |= BIT(0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_mask = BIT(1);
- ath79_register_eth(1);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_register_eth(0);
-
- ath79_register_wmac(art + LIMA_CALDATA_OFFSET, NULL);
- ath79_register_usb();
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_LIMA, "LIMA", "8devices Lima board", lima_setup);
+++ /dev/null
-/*
- * MERCURY MAC1200R board support
- *
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 Gui Iribarren <gui@altermundi.net>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#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-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 MAC1200R_GPIO_LED_WLAN2G 13
-#define MAC1200R_GPIO_LED_WLAN5G 17
-#define MAC1200R_GPIO_LED_SYSTEM 14
-#define MAC1200R_GPIO_LED_WPS 11
-#define MAC1200R_GPIO_LED_WAN 12
-#define MAC1200R_GPIO_LED_LAN1 15
-#define MAC1200R_GPIO_LED_LAN2 21
-#define MAC1200R_GPIO_LED_LAN3 22
-#define MAC1200R_GPIO_LED_LAN4 20
-
-#define MAC1200R_GPIO_BTN_WPS 16
-
-#define MAC1200R_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MAC1200R_KEYS_DEBOUNCE_INTERVAL (3 * MAC1200R_KEYS_POLL_INTERVAL)
-
-#define MAC1200R_MAC0_OFFSET 0
-#define MAC1200R_MAC1_OFFSET 6
-#define MAC1200R_WMAC_CALDATA_OFFSET 0x1000
-#define MAC1200R_PCIE_CALDATA_OFFSET 0x5000
-
-static const char *mac1200r_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data mac1200r_flash_data = {
- .part_probes = mac1200r_part_probes,
-};
-
-static struct gpio_led mac1200r_leds_gpio[] __initdata = {
- {
- .name = "mercury:green:wps",
- .gpio = MAC1200R_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "mercury:green:system",
- .gpio = MAC1200R_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "mercury:green:wlan2g",
- .gpio = MAC1200R_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
- {
- .name = "mercury:green:wlan5g",
- .gpio = MAC1200R_GPIO_LED_WLAN5G,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mac1200r_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MAC1200R_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MAC1200R_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-
-static void __init mac1200r_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(&mac1200r_flash_data);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mac1200r_leds_gpio),
- mac1200r_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, MAC1200R_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mac1200r_gpio_keys),
- mac1200r_gpio_keys);
-
- ath79_init_mac(tmpmac, mac, 0);
- ath79_wmac_disable_5ghz();
- ath79_register_wmac(art + MAC1200R_WMAC_CALDATA_OFFSET, tmpmac);
-
- ath79_init_mac(tmpmac, mac, 1);
- ap91_pci_init(art + MAC1200R_PCIE_CALDATA_OFFSET, tmpmac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
-
- /* LAN */
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
-
- ath79_register_eth(1);
-
- /* WAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 2);
-
- /* GMAC0 is connected to the PHY4 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
-
- ath79_register_eth(0);
-
- ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN1,
- AR934X_GPIO_OUT_LED_LINK3);
- ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN2,
- AR934X_GPIO_OUT_LED_LINK2);
- ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN3,
- AR934X_GPIO_OUT_LED_LINK1);
- ath79_gpio_output_select(MAC1200R_GPIO_LED_LAN4,
- AR934X_GPIO_OUT_LED_LINK0);
- ath79_gpio_output_select(MAC1200R_GPIO_LED_WAN,
- AR934X_GPIO_OUT_LED_LINK4);
-}
-
-MIPS_MACHINE(ATH79_MACH_MC_MAC1200R, "MC-MAC1200R",
- "MERCURY MAC1200R",
- mac1200r_setup);
+++ /dev/null
-/*
- * Cisco Meraki MR12 board support
- *
- * Copyright (C) 2014-2015 Chris Blake <chrisrblake93@gmail.com>
- *
- * Based on Atheros AP96 board support configuration
- *
- * Copyright (C) 2009 Marco Porsch
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2010 Atheros Communications
- *
- * 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 <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/mach-ath79/ath79.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 "machtypes.h"
-
-#define MR12_GPIO_LED_W4_GREEN 14
-#define MR12_GPIO_LED_W3_GREEN 13
-#define MR12_GPIO_LED_W2_GREEN 12
-#define MR12_GPIO_LED_W1_GREEN 11
-
-#define MR12_GPIO_LED_WAN 15
-
-#define MR12_GPIO_LED_POWER_ORANGE 16
-#define MR12_GPIO_LED_POWER_GREEN 17
-
-#define MR12_GPIO_BTN_RESET 8
-#define MR12_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR12_KEYS_DEBOUNCE_INTERVAL (3 * MR12_KEYS_POLL_INTERVAL)
-
-#define MR12_WAN_PHYMASK BIT(4)
-
-#define MR12_CALDATA0_OFFSET 0x21000
-
-static struct gpio_led MR12_leds_gpio[] __initdata = {
- {
- .name = "mr12:green:wan",
- .gpio = MR12_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "mr12:orange:power",
- .gpio = MR12_GPIO_LED_POWER_ORANGE,
- .active_low = 1,
- }, {
- .name = "mr12:green:power",
- .gpio = MR12_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- }, {
- .name = "mr12:green:wifi4",
- .gpio = MR12_GPIO_LED_W4_GREEN,
- .active_low = 1,
- }, {
- .name = "mr12:green:wifi3",
- .gpio = MR12_GPIO_LED_W3_GREEN,
- .active_low = 1,
- }, {
- .name = "mr12:green:wifi2",
- .gpio = MR12_GPIO_LED_W2_GREEN,
- .active_low = 1,
- }, {
- .name = "mr12:green:wifi1",
- .gpio = MR12_GPIO_LED_W1_GREEN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button MR12_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR12_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR12_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init MR12_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0xbffd0000);
- u8 wlan_mac[ETH_ALEN];
-
- ath79_register_mdio(0,0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = MR12_WAN_PHYMASK;
- ath79_register_eth(0);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(MR12_leds_gpio),
- MR12_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MR12_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(MR12_gpio_keys),
- MR12_gpio_keys);
-
- ath79_init_mac(wlan_mac, mac, 1);
- ap91_pci_init(mac + MR12_CALDATA0_OFFSET, wlan_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR12, "MR12", "Meraki MR12", MR12_setup);
+++ /dev/null
-/*
- * Cisco Meraki MR16 board support
- *
- * Copyright (C) 2015 Chris Blake <chrisrblake93@gmail.com>
- *
- * Based on Atheros AP96 board support configuration
- *
- * Copyright (C) 2009 Marco Porsch
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2010 Atheros Communications
- *
- * 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 <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/mach-ath79/ath79.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 "machtypes.h"
-
-#define MR16_GPIO_LED_W4_GREEN 3
-#define MR16_GPIO_LED_W3_GREEN 2
-#define MR16_GPIO_LED_W2_GREEN 1
-#define MR16_GPIO_LED_W1_GREEN 0
-
-#define MR16_GPIO_LED_WAN 4
-
-#define MR16_GPIO_LED_POWER_ORANGE 5
-#define MR16_GPIO_LED_POWER_GREEN 6
-
-#define MR16_GPIO_BTN_RESET 7
-#define MR16_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR16_KEYS_DEBOUNCE_INTERVAL (3 * MR16_KEYS_POLL_INTERVAL)
-
-#define MR16_WAN_PHYMASK BIT(0)
-
-#define MR16_CALDATA0_OFFSET 0x21000
-#define MR16_CALDATA1_OFFSET 0x25000
-
-static struct gpio_led MR16_leds_gpio[] __initdata = {
- {
- .name = "mr16:green:wan",
- .gpio = MR16_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "mr16:orange:power",
- .gpio = MR16_GPIO_LED_POWER_ORANGE,
- .active_low = 1,
- }, {
- .name = "mr16:green:power",
- .gpio = MR16_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- }, {
- .name = "mr16:green:wifi4",
- .gpio = MR16_GPIO_LED_W4_GREEN,
- .active_low = 1,
- }, {
- .name = "mr16:green:wifi3",
- .gpio = MR16_GPIO_LED_W3_GREEN,
- .active_low = 1,
- }, {
- .name = "mr16:green:wifi2",
- .gpio = MR16_GPIO_LED_W2_GREEN,
- .active_low = 1,
- }, {
- .name = "mr16:green:wifi1",
- .gpio = MR16_GPIO_LED_W1_GREEN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button MR16_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR16_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR16_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init MR16_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0xbffd0000);
- u8 wlan0_mac[ETH_ALEN];
- u8 wlan1_mac[ETH_ALEN];
-
- ath79_register_mdio(0,0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = MR16_WAN_PHYMASK;
- ath79_register_eth(0);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(MR16_leds_gpio),
- MR16_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MR16_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(MR16_gpio_keys),
- MR16_gpio_keys);
-
- ath79_init_mac(wlan0_mac, mac, 1);
- ath79_init_mac(wlan1_mac, mac, 2);
- ap94_pci_init(mac + MR16_CALDATA0_OFFSET, wlan0_mac,
- mac + MR16_CALDATA1_OFFSET, wlan1_mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR16, "MR16", "Meraki MR16", MR16_setup);
+++ /dev/null
-/*
- * MR1750 board support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Marek Lindner <marek@open-mesh.com>
- *
- * 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/ar8216_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define MR1750_GPIO_LED_LAN 12
-#define MR1750_GPIO_LED_WLAN_2G 13
-#define MR1750_GPIO_LED_STATUS_GREEN 19
-#define MR1750_GPIO_LED_STATUS_RED 21
-#define MR1750_GPIO_LED_POWER 22
-#define MR1750_GPIO_LED_WLAN_5G 23
-
-#define MR1750_GPIO_BTN_RESET 17
-
-#define MR1750_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR1750_KEYS_DEBOUNCE_INTERVAL (3 * MR1750_KEYS_POLL_INTERVAL)
-
-#define MR1750_MAC0_OFFSET 0
-#define MR1750_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led mr1750_leds_gpio[] __initdata = {
- {
- .name = "mr1750:blue:power",
- .gpio = MR1750_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "mr1750:blue:wan",
- .gpio = MR1750_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "mr1750:blue:wlan24",
- .gpio = MR1750_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "mr1750:blue:wlan58",
- .gpio = MR1750_GPIO_LED_WLAN_5G,
- .active_low = 1,
- },
- {
- .name = "mr1750:green:status",
- .gpio = MR1750_GPIO_LED_STATUS_GREEN,
- .active_low = 1,
- },
- {
- .name = "mr1750:red:status",
- .gpio = MR1750_GPIO_LED_STATUS_RED,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mr1750_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR1750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR1750_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data mr1750_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 0,
- .fixup_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info mr1750_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 5,
- .platform_data = &mr1750_at803x_data,
- },
-};
-
-static void __init mr1750_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init mr1750_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_eth0_pll_data.pll_1000 = 0xae000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0xa0001313;
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mr1750_leds_gpio),
- mr1750_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MR1750_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mr1750_gpio_keys),
- mr1750_gpio_keys);
-
- ath79_init_mac(mac, art + MR1750_MAC0_OFFSET, 1);
- ath79_register_wmac(art + MR1750_WMAC_CALDATA_OFFSET, mac);
- ath79_register_pci();
-
- mr1750_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(mr1750_mdio0_info,
- ARRAY_SIZE(mr1750_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + MR1750_MAC0_OFFSET, 0);
-
- /* GMAC0 is connected to the RMGII interface */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(5);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR1750, "MR1750", "OpenMesh MR1750", mr1750_setup);
-MIPS_MACHINE(ATH79_MACH_MR1750V2, "MR1750v2", "OpenMesh MR1750v2", mr1750_setup);
+++ /dev/null
-/*
- * Cisco Meraki MR18 board support
- *
- * Copyright (C) 2015 Chris Blake <chrisrblake93@gmail.com>
- * Copyright (C) 2015 Christian Lamparter <chunkeey@googlemail.com>
- * Copyright (C) 2015 Thomas Hebb <tommyhebb@gmail.com>
- *
- * Based on Cisco Meraki GPL Release r23-20150601 MR18 Device Config
- *
- * 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 <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/platform/ar934x_nfc.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include <linux/leds-nu801.h>
-#include <linux/pci.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-nfc.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define MR18_GPIO_LED_POWER_WHITE 18
-#define MR18_GPIO_LED_POWER_ORANGE 21
-
-#define MR18_GPIO_BTN_RESET 17
-#define MR18_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR18_KEYS_DEBOUNCE_INTERVAL (3 * MR18_KEYS_POLL_INTERVAL)
-
-#define MR18_WAN_PHYADDR 3
-
-/* used for eth calibration */
-#define MR18_OTP_BASE (AR71XX_APB_BASE + 0x130000)
-#define MR18_OTP_SIZE (0x2000) /* just a guess */
-#define MR18_OTP_MEM_0_REG (0x0000)
-#define MR18_OTP_INTF2_REG (0x1008)
-#define MR18_OTP_STATUS0_REG (0x1018)
-#define MR18_OTP_STATUS0_EFUSE_VALID BIT(2)
-
-#define MR18_OTP_STATUS1_REG (0x101c)
-#define MR18_OTP_LDO_CTRL_REG (0x1024)
-#define MR18_OTP_LDO_STATUS_REG (0x102c)
-#define MR18_OTP_LDO_STATUS_POWER_ON BIT(0)
-
-static struct gpio_led MR18_leds_gpio[] __initdata = {
- {
- .name = "mr18:white:power",
- .gpio = MR18_GPIO_LED_POWER_WHITE,
- .active_low = 1,
- }, {
- .name = "mr18:orange:power",
- .gpio = MR18_GPIO_LED_POWER_ORANGE,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button MR18_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR18_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR18_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct led_nu801_template tricolor_led_template = {
- .device_name = "mr18",
- .name = "tricolor",
- .num_leds = 1,
- .cki = 11,
- .sdi = 12,
- .lei = -1,
- .ndelay = 500,
- .init_brightness = {
- LED_OFF,
- LED_OFF,
- LED_OFF,
- },
- .default_trigger = "none",
- .led_colors = { "red", "green", "blue" },
-};
-
-static struct led_nu801_platform_data tricolor_led_data = {
- .num_controllers = 1,
- .template = &tricolor_led_template,
-};
-
-static struct platform_device tricolor_leds = {
- .name = "leds-nu801",
- .id = -1,
- .dev.platform_data = &tricolor_led_data,
-};
-
-static int mr18_extract_sgmii_res_cal(void)
-{
- void __iomem *base;
- unsigned int reversed_sgmii_value;
-
- unsigned int otp_value, otp_per_val, rbias_per, read_data;
- unsigned int rbias_pos_or_neg;
- unsigned int sgmii_res_cal_value;
- int res_cal_val;
-
- base = ioremap_nocache(MR18_OTP_BASE, MR18_OTP_SIZE);
- if (!base)
- return -EIO;
-
- __raw_writel(0x7d, base + MR18_OTP_INTF2_REG);
- __raw_writel(0x00, base + MR18_OTP_LDO_CTRL_REG);
-
- while (__raw_readl(base + MR18_OTP_LDO_STATUS_REG) &
- MR18_OTP_LDO_STATUS_POWER_ON);
-
- __raw_readl(base + MR18_OTP_MEM_0_REG + 4);
-
- while (!(__raw_readl(base + MR18_OTP_STATUS0_REG) &
- MR18_OTP_STATUS0_EFUSE_VALID));
-
- read_data = __raw_readl(base + MR18_OTP_STATUS1_REG);
-
- iounmap(base);
-
- if (!(read_data & 0x1fff))
- return -ENODEV;
-
- if (read_data & 0x00001000)
- otp_value = (read_data & 0xfc0) >> 6;
- else
- otp_value = read_data & 0x3f;
-
- if (otp_value > 31) {
- otp_per_val = 63 - otp_value;
- rbias_pos_or_neg = 1;
- } else {
- otp_per_val = otp_value;
- rbias_pos_or_neg = 0;
- }
-
- rbias_per = otp_per_val * 15;
-
- if (rbias_pos_or_neg == 1)
- res_cal_val = (rbias_per + 34) / 21;
- else if (rbias_per > 34)
- res_cal_val = -((rbias_per - 34) / 21);
- else
- res_cal_val = (34 - rbias_per) / 21;
-
- sgmii_res_cal_value = (8 + res_cal_val) & 0xf;
-
- reversed_sgmii_value = (sgmii_res_cal_value & 8) >> 3;
- reversed_sgmii_value |= (sgmii_res_cal_value & 4) >> 1;
- reversed_sgmii_value |= (sgmii_res_cal_value & 2) << 1;
- reversed_sgmii_value |= (sgmii_res_cal_value & 1) << 3;
- printk(KERN_INFO "SGMII cal value = 0x%x\n", reversed_sgmii_value);
- return reversed_sgmii_value;
-}
-
-static void mr18_setup_qca955x_eth_serdes_cal(unsigned int sgmii_value)
-{
- void __iomem *ethbase, *pllbase;
- u32 t;
-
- ethbase = ioremap_nocache(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
- pllbase = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE);
-
- /* To Check the locking of the SGMII PLL */
- t = __raw_readl(ethbase + QCA955X_GMAC_REG_SGMII_SERDES);
- t &= ~(QCA955X_SGMII_SERDES_RES_CALIBRATION_MASK <<
- QCA955X_SGMII_SERDES_RES_CALIBRATION_SHIFT);
- t |= (sgmii_value & QCA955X_SGMII_SERDES_RES_CALIBRATION_MASK) <<
- QCA955X_SGMII_SERDES_RES_CALIBRATION_SHIFT;
- __raw_writel(t, ethbase + QCA955X_GMAC_REG_SGMII_SERDES);
-
- __raw_writel(QCA955X_PLL_ETH_SGMII_SERDES_LOCK_DETECT |
- QCA955X_PLL_ETH_SGMII_SERDES_PLL_REFCLK |
- QCA955X_PLL_ETH_SGMII_SERDES_EN_PLL,
- pllbase + QCA955X_PLL_ETH_SGMII_SERDES_REG);
-
- ath79_device_reset_clear(QCA955X_RESET_SGMII_ANALOG);
- ath79_device_reset_clear(QCA955X_RESET_SGMII);
-
- while (!(__raw_readl(ethbase + QCA955X_GMAC_REG_SGMII_SERDES) &
- QCA955X_SGMII_SERDES_LOCK_DETECT_STATUS));
-
- iounmap(ethbase);
- iounmap(pllbase);
-}
-
-static struct ath9k_platform_data pci_main_wifi_data = {
- .led_pin = -1,
-};
-static struct ath9k_platform_data pci_scan_wifi_data = {
- .led_pin = -1,
-};
-
-static int mr18_dual_pci_plat_dev_init(struct pci_dev *dev)
-{
- /* The PCIE devices are attached to different busses but they
- * both share the same slot number. Checking the PCI_SLOT vals
- * does not work.
- */
- switch (dev->bus->number) {
- case 0:
- dev->dev.platform_data = &pci_main_wifi_data;
- break;
- case 1:
- dev->dev.platform_data = &pci_scan_wifi_data;
- break;
- }
-
- return 0;
-}
-
-static void __init mr18_setup(void)
-{
- int res;
-
- /* NAND */
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_SOFT_BCH);
- ath79_register_nfc();
-
- /* even though, the PHY is connected via RGMII,
- * the SGMII/SERDES PLLs need to be calibrated and locked.
- * Or else, the PHY won't be working for this platfrom.
- *
- * Figuring this out took such a long time, that we want to
- * point this quirk out, before someone wants to remove it.
- */
- res = mr18_extract_sgmii_res_cal();
- if (res >= 0) {
- /* Setup SoC Eth Config */
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN |
- (3 << QCA955X_ETH_CFG_RXD_DELAY_SHIFT) |
- (3 << QCA955X_ETH_CFG_RDV_DELAY_SHIFT));
-
- /* MDIO Interface */
- ath79_register_mdio(0, 0x0);
-
- mr18_setup_qca955x_eth_serdes_cal(res);
-
- /* GMAC0 is connected to an Atheros AR8035-A */
- ath79_init_mac(ath79_eth0_data.mac_addr, NULL, 0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(MR18_WAN_PHYADDR);
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0x80001313;
- ath79_register_eth(0);
- } else {
- printk(KERN_ERR "failed to read EFUSE for ethernet cal\n");
- }
-
- /* LEDs and Buttons */
- platform_device_register(&tricolor_leds);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(MR18_leds_gpio),
- MR18_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MR18_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(MR18_gpio_keys),
- MR18_gpio_keys);
-
- /* Clear RTC reset (Needed by SoC WiFi) */
- ath79_device_reset_clear(QCA955X_RESET_RTC);
-
- /* WiFi */
- ath79_register_wmac_simple();
-
- pci_main_wifi_data.eeprom_name = "pci_wmac0.eeprom";
- pci_scan_wifi_data.eeprom_name = "pci_wmac1.eeprom";
- ath79_pci_set_plat_dev_init(mr18_dual_pci_plat_dev_init);
- ath79_register_pci();
-}
-MIPS_MACHINE(ATH79_MACH_MR18, "MR18", "Meraki MR18", mr18_setup);
+++ /dev/null
-/*
- * OpenMesh OM2P board support
- *
- * Copyright (C) 2012 Marek Lindner <marek@open-mesh.com>
- *
- * 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/pci.h>
-#include <linux/phy.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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 MR600_GPIO_LED_WLAN58 12
-#define MR600_GPIO_LED_WPS 13
-#define MR600_GPIO_LED_POWER 14
-
-#define MR600V2_GPIO_LED_WLAN58_RED 12
-#define MR600V2_GPIO_LED_WPS 13
-#define MR600V2_GPIO_LED_POWER 14
-#define MR600V2_GPIO_LED_WLAN24_GREEN 18
-#define MR600V2_GPIO_LED_WLAN24_YELLOW 19
-#define MR600V2_GPIO_LED_WLAN24_RED 20
-#define MR600V2_GPIO_LED_WLAN58_GREEN 21
-#define MR600V2_GPIO_LED_WLAN58_YELLOW 22
-
-#define MR600_GPIO_BTN_RESET 17
-
-#define MR600_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR600_KEYS_DEBOUNCE_INTERVAL (3 * MR600_KEYS_POLL_INTERVAL)
-
-#define MR600_MAC_OFFSET 0
-#define MR600_WMAC_CALDATA_OFFSET 0x1000
-#define MR600_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led mr600_leds_gpio[] __initdata = {
- {
- .name = "mr600:orange:power",
- .gpio = MR600_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "mr600:blue:wps",
- .gpio = MR600_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "mr600:green:wlan58",
- .gpio = MR600_GPIO_LED_WLAN58,
- .active_low = 1,
- },
-};
-
-static struct gpio_led mr600v2_leds_gpio[] __initdata = {
- {
- .name = "mr600:blue:power",
- .gpio = MR600V2_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "mr600:blue:wps",
- .gpio = MR600V2_GPIO_LED_WPS,
- .active_low = 1,
- },
- {
- .name = "mr600:red:wlan24",
- .gpio = MR600V2_GPIO_LED_WLAN24_RED,
- .active_low = 1,
- },
- {
- .name = "mr600:yellow:wlan24",
- .gpio = MR600V2_GPIO_LED_WLAN24_YELLOW,
- .active_low = 1,
- },
- {
- .name = "mr600:green:wlan24",
- .gpio = MR600V2_GPIO_LED_WLAN24_GREEN,
- .active_low = 1,
- },
- {
- .name = "mr600:red:wlan58",
- .gpio = MR600V2_GPIO_LED_WLAN58_RED,
- .active_low = 1,
- },
- {
- .name = "mr600:yellow:wlan58",
- .gpio = MR600V2_GPIO_LED_WLAN58_YELLOW,
- .active_low = 1,
- },
- {
- .name = "mr600:green:wlan58",
- .gpio = MR600V2_GPIO_LED_WLAN58_GREEN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mr600_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR600_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR600_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init mr600_base_setup(unsigned num_leds, struct gpio_led *leds)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, num_leds, leds);
- ath79_register_gpio_keys_polled(-1, MR600_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mr600_gpio_keys),
- mr600_gpio_keys);
-
- ath79_init_mac(mac, art + MR600_MAC_OFFSET, 1);
- ath79_register_wmac(art + MR600_WMAC_CALDATA_OFFSET, mac);
-
- ath79_init_mac(mac, art + MR600_MAC_OFFSET, 8);
- ap91_pci_init(art + MR600_PCIE_CALDATA_OFFSET, mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + MR600_MAC_OFFSET, 0);
-
- /* GMAC0 is connected to an external PHY */
- 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);
-}
-
-static void __init mr600_setup(void)
-{
- mr600_base_setup(ARRAY_SIZE(mr600_leds_gpio), mr600_leds_gpio);
- ap9x_pci_setup_wmac_led_pin(0, 0);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR600, "MR600", "OpenMesh MR600", mr600_setup);
-
-static void __init mr600v2_setup(void)
-{
- mr600_base_setup(ARRAY_SIZE(mr600v2_leds_gpio), mr600v2_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR600V2, "MR600v2", "OpenMesh MR600v2", mr600v2_setup);
+++ /dev/null
-/*
- * MR900 board support
- *
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Marek Lindner <marek@open-mesh.com>
- *
- * 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/ar8216_platform.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define MR900_GPIO_LED_LAN 12
-#define MR900_GPIO_LED_WLAN_2G 13
-#define MR900_GPIO_LED_STATUS_GREEN 19
-#define MR900_GPIO_LED_STATUS_RED 21
-#define MR900_GPIO_LED_POWER 22
-#define MR900_GPIO_LED_WLAN_5G 23
-
-#define MR900_GPIO_BTN_RESET 17
-
-#define MR900_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MR900_KEYS_DEBOUNCE_INTERVAL (3 * MR900_KEYS_POLL_INTERVAL)
-
-#define MR900_MAC0_OFFSET 0
-#define MR900_WMAC_CALDATA_OFFSET 0x1000
-#define MR900_PCIE_CALDATA_OFFSET 0x5000
-
-static struct gpio_led mr900_leds_gpio[] __initdata = {
- {
- .name = "mr900:blue:power",
- .gpio = MR900_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "mr900:blue:wan",
- .gpio = MR900_GPIO_LED_LAN,
- .active_low = 1,
- },
- {
- .name = "mr900:blue:wlan24",
- .gpio = MR900_GPIO_LED_WLAN_2G,
- .active_low = 1,
- },
- {
- .name = "mr900:blue:wlan58",
- .gpio = MR900_GPIO_LED_WLAN_5G,
- .active_low = 1,
- },
- {
- .name = "mr900:green:status",
- .gpio = MR900_GPIO_LED_STATUS_GREEN,
- .active_low = 1,
- },
- {
- .name = "mr900:red:status",
- .gpio = MR900_GPIO_LED_STATUS_RED,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mr900_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MR900_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MR900_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data mr900_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 0,
- .fixup_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info mr900_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 5,
- .platform_data = &mr900_at803x_data,
- },
-};
-
-static void __init mr900_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init mr900_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6], pcie_mac[6];
- struct ath9k_platform_data *pdata;
-
- ath79_eth0_pll_data.pll_1000 = 0xae000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0xa0001313;
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mr900_leds_gpio),
- mr900_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MR900_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mr900_gpio_keys),
- mr900_gpio_keys);
-
- ath79_init_mac(mac, art + MR900_MAC0_OFFSET, 1);
- ath79_register_wmac(art + MR900_WMAC_CALDATA_OFFSET, mac);
- ath79_init_mac(pcie_mac, art + MR900_MAC0_OFFSET, 16);
- ap91_pci_init(art + MR900_PCIE_CALDATA_OFFSET, pcie_mac);
- pdata = ap9x_pci_get_wmac_data(0);
- if (!pdata) {
- pr_err("mr900: unable to get address of wlan data\n");
- return;
- }
- pdata->use_eeprom = true;
-
- mr900_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(mr900_mdio0_info,
- ARRAY_SIZE(mr900_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + MR900_MAC0_OFFSET, 0);
-
- /* GMAC0 is connected to the RMGII interface */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(5);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
-
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_MR900, "MR900", "OpenMesh MR900", mr900_setup);
-MIPS_MACHINE(ATH79_MACH_MR900v2, "MR900v2", "OpenMesh MR900v2", mr900_setup);
+++ /dev/null
-/*
- * WD My Net N600 board support
- *
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define MYNET_N600_GPIO_LED_WIFI 0
-#define MYNET_N600_GPIO_LED_POWER 11
-#define MYNET_N600_GPIO_LED_INTERNET 12
-#define MYNET_N600_GPIO_LED_WPS 13
-
-#define MYNET_N600_GPIO_LED_LAN1 4
-#define MYNET_N600_GPIO_LED_LAN2 3
-#define MYNET_N600_GPIO_LED_LAN3 2
-#define MYNET_N600_GPIO_LED_LAN4 1
-
-#define MYNET_N600_GPIO_BTN_RESET 16
-#define MYNET_N600_GPIO_BTN_WPS 17
-
-#define MYNET_N600_GPIO_EXTERNAL_LNA0 14
-#define MYNET_N600_GPIO_EXTERNAL_LNA1 15
-
-#define MYNET_N600_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MYNET_N600_KEYS_DEBOUNCE_INTERVAL (3 * MYNET_N600_KEYS_POLL_INTERVAL)
-
-#define MYNET_N600_MAC0_OFFSET 0
-#define MYNET_N600_MAC1_OFFSET 6
-#define MYNET_N600_WMAC_CALDATA_OFFSET 0x1000
-#define MYNET_N600_PCIE_CALDATA_OFFSET 0x5000
-
-#define MYNET_N600_NVRAM_ADDR 0x1f058010
-#define MYNET_N600_NVRAM_SIZE 0x7ff0
-
-static struct gpio_led mynet_n600_leds_gpio[] __initdata = {
- {
- .name = "wd:blue:power",
- .gpio = MYNET_N600_GPIO_LED_POWER,
- .active_low = 0,
- },
- {
- .name = "wd:blue:wps",
- .gpio = MYNET_N600_GPIO_LED_WPS,
- .active_low = 0,
- },
- {
- .name = "wd:blue:wireless",
- .gpio = MYNET_N600_GPIO_LED_WIFI,
- .active_low = 0,
- },
- {
- .name = "wd:blue:internet",
- .gpio = MYNET_N600_GPIO_LED_INTERNET,
- .active_low = 0,
- },
- {
- .name = "wd:green:lan1",
- .gpio = MYNET_N600_GPIO_LED_LAN1,
- .active_low = 1,
- },
- {
- .name = "wd:green:lan2",
- .gpio = MYNET_N600_GPIO_LED_LAN2,
- .active_low = 1,
- },
- {
- .name = "wd:green:lan3",
- .gpio = MYNET_N600_GPIO_LED_LAN3,
- .active_low = 1,
- },
- {
- .name = "wd:green:lan4",
- .gpio = MYNET_N600_GPIO_LED_LAN4,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mynet_n600_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MYNET_N600_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_N600_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = MYNET_N600_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_N600_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static void mynet_n600_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(MYNET_N600_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, MYNET_N600_NVRAM_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-#define MYNET_N600_WAN_PHY_MASK BIT(0)
-
-static void __init mynet_n600_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
-
- ath79_gpio_output_select(MYNET_N600_GPIO_LED_LAN1,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_N600_GPIO_LED_LAN2,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_N600_GPIO_LED_LAN3,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_N600_GPIO_LED_LAN4,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_N600_GPIO_LED_INTERNET,
- AR934X_GPIO_OUT_GPIO);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mynet_n600_leds_gpio),
- mynet_n600_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, MYNET_N600_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mynet_n600_gpio_keys),
- mynet_n600_gpio_keys);
-
- /*
- * Control signal for external LNAs 0 and 1
- * Taken from GPL bootloader source:
- * board/ar7240/db12x/alpha_gpio.c
- */
- ath79_wmac_set_ext_lna_gpio(0, MYNET_N600_GPIO_EXTERNAL_LNA0);
- ath79_wmac_set_ext_lna_gpio(1, MYNET_N600_GPIO_EXTERNAL_LNA1);
-
- mynet_n600_get_mac("wlan24mac=", tmpmac);
- ath79_register_wmac(art + MYNET_N600_WMAC_CALDATA_OFFSET, tmpmac);
-
- mynet_n600_get_mac("wlan5mac=", tmpmac);
- ap91_pci_init(art + MYNET_N600_PCIE_CALDATA_OFFSET, tmpmac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE |
- AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- /* LAN */
- mynet_n600_get_mac("lanmac=", ath79_eth1_data.mac_addr);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
-
- ath79_register_eth(1);
-
- /* WAN */
- mynet_n600_get_mac("wanmac=", ath79_eth0_data.mac_addr);
-
- /* GMAC0 is connected to the PHY4 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = MYNET_N600_WAN_PHY_MASK;
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = MYNET_N600_WAN_PHY_MASK;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
-
- ath79_register_eth(0);
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_MYNET_N600, "MYNET-N600", "WD My Net N600",
- mynet_n600_setup);
+++ /dev/null
-/*
- * WD My Net N750 board support
- *
- * Copyright (C) 2013 Felix Kaechele <felix@fetzig.org>
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/delay.h>
-#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-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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-
-/*
- * Taken from GPL bootloader source:
- * board/ar7240/db12x/alpha_gpio.c
- */
-#define MYNET_N750_GPIO_LED_WIFI 11
-#define MYNET_N750_GPIO_LED_INTERNET 12
-#define MYNET_N750_GPIO_LED_WPS 13
-#define MYNET_N750_GPIO_LED_POWER 14
-
-#define MYNET_N750_GPIO_BTN_RESET 17
-#define MYNET_N750_GPIO_BTN_WPS 19
-
-#define MYNET_N750_GPIO_EXTERNAL_LNA0 15
-#define MYNET_N750_GPIO_EXTERNAL_LNA1 18
-
-#define MYNET_N750_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MYNET_N750_KEYS_DEBOUNCE_INTERVAL (3 * MYNET_N750_KEYS_POLL_INTERVAL)
-
-#define MYNET_N750_WMAC_CALDATA_OFFSET 0x1000
-#define MYNET_N750_PCIE_CALDATA_OFFSET 0x5000
-
-#define MYNET_N750_NVRAM_ADDR 0x1f058010
-#define MYNET_N750_NVRAM_SIZE 0x7ff0
-
-static struct gpio_led mynet_n750_leds_gpio[] __initdata = {
- {
- .name = "wd:blue:power",
- .gpio = MYNET_N750_GPIO_LED_POWER,
- .active_low = 0,
- },
- {
- .name = "wd:blue:wps",
- .gpio = MYNET_N750_GPIO_LED_WPS,
- .active_low = 0,
- },
- {
- .name = "wd:blue:wireless",
- .gpio = MYNET_N750_GPIO_LED_WIFI,
- .active_low = 0,
- },
- {
- .name = "wd:blue:internet",
- .gpio = MYNET_N750_GPIO_LED_INTERNET,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button mynet_n750_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MYNET_N750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_N750_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = MYNET_N750_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_N750_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-static const struct ar8327_led_info mynet_n750_leds_ar8327[] = {
- AR8327_LED_INFO(PHY0_0, HW, "wd:green:lan1"),
- AR8327_LED_INFO(PHY1_0, HW, "wd:green:lan2"),
- AR8327_LED_INFO(PHY2_0, HW, "wd:green:lan3"),
- AR8327_LED_INFO(PHY3_0, HW, "wd:green:lan4"),
- AR8327_LED_INFO(PHY4_0, HW, "wd:green:wan"),
- AR8327_LED_INFO(PHY0_1, HW, "wd:yellow:lan1"),
- AR8327_LED_INFO(PHY1_1, HW, "wd:yellow:lan2"),
- AR8327_LED_INFO(PHY2_1, HW, "wd:yellow:lan3"),
- AR8327_LED_INFO(PHY3_1, HW, "wd:yellow:lan4"),
- AR8327_LED_INFO(PHY4_1, HW, "wd:yellow:wan"),
-};
-
-static struct ar8327_pad_cfg mynet_n750_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_led_cfg mynet_n750_ar8327_led_cfg = {
- .led_ctrl0 = 0xcc35cc35,
- .led_ctrl1 = 0xca35ca35,
- .led_ctrl2 = 0xc935c935,
- .led_ctrl3 = 0x03ffff00,
- .open_drain = false,
-};
-
-static struct ar8327_platform_data mynet_n750_ar8327_data = {
- .pad0_cfg = &mynet_n750_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &mynet_n750_ar8327_led_cfg,
- .num_leds = ARRAY_SIZE(mynet_n750_leds_ar8327),
- .leds = mynet_n750_leds_ar8327,
-};
-
-static struct mdio_board_info mynet_n750_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &mynet_n750_ar8327_data,
- },
-};
-
-static void mynet_n750_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(MYNET_N750_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, MYNET_N750_NVRAM_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-/*
- * The bootloader on this board powers down all PHYs on the switch
- * before booting the kernel. We bring all PHYs back up so that they are
- * discoverable by the mdio bus scan and the switch is detected
- * correctly.
- */
-static void mynet_n750_mdio_fixup(struct mii_bus *bus)
-{
- int i;
-
- for (i = 0; i < 5; i++)
- bus->write(bus, i, MII_BMCR,
- (BMCR_RESET | BMCR_ANENABLE | BMCR_SPEED1000));
-
- mdelay(1000);
-}
-
-static void __init mynet_n750_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mynet_n750_leds_gpio),
- mynet_n750_leds_gpio);
- ath79_register_gpio_keys_polled(-1, MYNET_N750_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mynet_n750_gpio_keys),
- mynet_n750_gpio_keys);
- /*
- * Control signal for external LNAs 0 and 1
- * Taken from GPL bootloader source:
- * board/ar7240/db12x/alpha_gpio.c
- */
- ath79_wmac_set_ext_lna_gpio(0, MYNET_N750_GPIO_EXTERNAL_LNA0);
- ath79_wmac_set_ext_lna_gpio(1, MYNET_N750_GPIO_EXTERNAL_LNA1);
-
- mynet_n750_get_mac("wlan24mac=", tmpmac);
- ath79_register_wmac(art + MYNET_N750_WMAC_CALDATA_OFFSET, tmpmac);
-
- mynet_n750_get_mac("wlan5mac=", tmpmac);
- ap91_pci_init(art + MYNET_N750_PCIE_CALDATA_OFFSET, tmpmac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
-
- mdiobus_register_board_info(mynet_n750_mdio0_info,
- ARRAY_SIZE(mynet_n750_mdio0_info));
-
- ath79_mdio0_data.reset = mynet_n750_mdio_fixup;
- ath79_register_mdio(0, 0x0);
-
- mynet_n750_get_mac("lanmac=", ath79_eth0_data.mac_addr);
-
- /* GMAC0 is connected to an AR8327N switch */
- 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);
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_MYNET_N750, "MYNET-N750", "WD My Net N750",
- mynet_n750_setup);
+++ /dev/null
-/*
- * WD My Net WI-FI Range Extender (Codename:Starfish db12x) board support
- *
- * Copyright (C) 2013 Christian Lamparter <chunkeey@googlemail.com>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define MYNET_REXT_GPIO_LED_POWER 11
-#define MYNET_REXT_GPIO_LED_ETHERNET 12
-#define MYNET_REXT_GPIO_LED_WIFI 19
-
-#define MYNET_REXT_GPIO_LED_RF_QTY1 20
-#define MYNET_REXT_GPIO_LED_RF_QTY2 21
-#define MYNET_REXT_GPIO_LED_RF_QTY3 22
-
-#define MYNET_REXT_GPIO_BTN_RESET 13
-#define MYNET_REXT_GPIO_BTN_WPS 15
-#define MYNET_REXT_GPIO_SW_RF 14
-
-#define MYNET_REXT_GPIO_PHY_SWRST 16 /* disables Ethernet PHY */
-#define MYNET_REXT_GPIO_PHY_INT 17
-#define MYNET_REXT_GPIO_18 18
-
-#define MYNET_REXT_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MYNET_REXT_KEYS_DEBOUNCE_INTERVAL (3 * MYNET_REXT_KEYS_POLL_INTERVAL)
-
-#define MYNET_REXT_WMAC_CALDATA_OFFSET 0x1000
-
-#define MYNET_REXT_NVRAM_ADDR 0x1f7e0010
-#define MYNET_REXT_NVRAM_SIZE 0xfff0
-
-#define MYNET_REXT_ART_ADDR 0x1f7f0000
-
-static const char *mynet_rext_part_probes[] = {
- "cybertan",
- NULL,
-};
-
-static struct flash_platform_data mynet_rext_flash_data = {
- .type = "s25fl064k",
- .part_probes = mynet_rext_part_probes,
-};
-
-static struct gpio_led mynet_rext_leds_gpio[] __initdata = {
- {
- .name = "wd:blue:power",
- .gpio = MYNET_REXT_GPIO_LED_POWER,
- .active_low = 0,
- },
- {
- .name = "wd:blue:wireless",
- .gpio = MYNET_REXT_GPIO_LED_WIFI,
- .active_low = 1,
- },
- {
- .name = "wd:blue:ethernet",
- .gpio = MYNET_REXT_GPIO_LED_ETHERNET,
- .active_low = 1,
- },
- {
- .name = "wd:blue:quality1",
- .gpio = MYNET_REXT_GPIO_LED_RF_QTY1,
- .active_low = 1,
- },
- {
- .name = "wd:blue:quality2",
- .gpio = MYNET_REXT_GPIO_LED_RF_QTY2,
- .active_low = 1,
- },
- {
- .name = "wd:blue:quality3",
- .gpio = MYNET_REXT_GPIO_LED_RF_QTY3,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button mynet_rext_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MYNET_REXT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_REXT_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = MYNET_REXT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_REXT_GPIO_BTN_WPS,
- .active_low = 1,
- },
- {
- .desc = "RF Band switch",
- .type = EV_SW,
- .code = BTN_1,
- .debounce_interval = MYNET_REXT_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MYNET_REXT_GPIO_SW_RF,
- },
-};
-
-static struct at803x_platform_data mynet_rext_at803x_data = {
- .disable_smarteee = 0,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 0,
- .fixup_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info mynet_rext_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 4,
- .platform_data = &mynet_rext_at803x_data,
- },
-};
-
-static void mynet_rext_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(MYNET_REXT_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, MYNET_REXT_NVRAM_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-static void __init mynet_rext_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(MYNET_REXT_ART_ADDR);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(&mynet_rext_flash_data);
-
- /* GPIO configuration from drivers/char/GPIO8.c */
-
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_POWER,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_WIFI,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_RF_QTY1,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_RF_QTY2,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_RF_QTY3,
- AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(MYNET_REXT_GPIO_LED_ETHERNET,
- AR934X_GPIO_OUT_GPIO);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mynet_rext_leds_gpio),
- mynet_rext_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, MYNET_REXT_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mynet_rext_gpio_keys),
- mynet_rext_gpio_keys);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_RXD_DELAY |
- AR934X_ETH_CFG_RDV_DELAY);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(mynet_rext_mdio0_info,
- ARRAY_SIZE(mynet_rext_mdio0_info));
-
- /* LAN */
- mynet_rext_get_mac("et0macaddr=", ath79_eth0_data.mac_addr);
-
- /* GMAC0 is connected to an external PHY on Port 4 */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_pll_data.pll_10 = 0x00001313; /* athrs_mac.c */
- ath79_eth0_pll_data.pll_1000 = 0x0e000000; /* athrs_mac.c */
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_register_eth(0);
-
- /* WLAN */
- mynet_rext_get_mac("wl0_hwaddr=", tmpmac);
- ap91_pci_init(art + MYNET_REXT_WMAC_CALDATA_OFFSET, tmpmac);
-}
-
-MIPS_MACHINE(ATH79_MACH_MYNET_REXT, "MYNET-REXT",
- "WD My Net Wi-Fi Range Extender", mynet_rext_setup);
+++ /dev/null
-/*
- * Planex MZK-W04NU board support
- *
- * Copyright (C) 2009-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define MZK_W04NU_GPIO_LED_USB 0
-#define MZK_W04NU_GPIO_LED_STATUS 1
-#define MZK_W04NU_GPIO_LED_WPS 3
-#define MZK_W04NU_GPIO_LED_WLAN 6
-#define MZK_W04NU_GPIO_LED_AP 15
-#define MZK_W04NU_GPIO_LED_ROUTER 16
-
-#define MZK_W04NU_GPIO_BTN_APROUTER 5
-#define MZK_W04NU_GPIO_BTN_WPS 12
-#define MZK_W04NU_GPIO_BTN_RESET 21
-
-#define MZK_W04NU_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MZK_W04NU_KEYS_DEBOUNCE_INTERVAL (3 * MZK_W04NU_KEYS_POLL_INTERVAL)
-
-static struct gpio_led mzk_w04nu_leds_gpio[] __initdata = {
- {
- .name = "planex:green:status",
- .gpio = MZK_W04NU_GPIO_LED_STATUS,
- .active_low = 1,
- }, {
- .name = "planex:blue:wps",
- .gpio = MZK_W04NU_GPIO_LED_WPS,
- .active_low = 1,
- }, {
- .name = "planex:green:wlan",
- .gpio = MZK_W04NU_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "planex:green:usb",
- .gpio = MZK_W04NU_GPIO_LED_USB,
- .active_low = 1,
- }, {
- .name = "planex:green:ap",
- .gpio = MZK_W04NU_GPIO_LED_AP,
- .active_low = 1,
- }, {
- .name = "planex:green:router",
- .gpio = MZK_W04NU_GPIO_LED_ROUTER,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button mzk_w04nu_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MZK_W04NU_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W04NU_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = MZK_W04NU_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W04NU_GPIO_BTN_WPS,
- .active_low = 1,
- }, {
- .desc = "aprouter",
- .type = EV_KEY,
- .code = BTN_2,
- .debounce_interval = MZK_W04NU_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W04NU_GPIO_BTN_APROUTER,
- .active_low = 0,
- }
-};
-
-#define MZK_W04NU_WAN_PHYMASK BIT(4)
-#define MZK_W04NU_MDIO_MASK (~MZK_W04NU_WAN_PHYMASK)
-
-static void __init mzk_w04nu_setup(void)
-{
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_mdio(0, MZK_W04NU_MDIO_MASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, eeprom, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.has_ar8216 = 1;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, eeprom, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = MZK_W04NU_WAN_PHYMASK;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mzk_w04nu_leds_gpio),
- mzk_w04nu_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, MZK_W04NU_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mzk_w04nu_gpio_keys),
- mzk_w04nu_gpio_keys);
- ath79_register_usb();
-
- ath79_register_wmac(eeprom, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_MZK_W04NU, "MZK-W04NU", "Planex MZK-W04NU",
- mzk_w04nu_setup);
+++ /dev/null
-/*
- * Planex MZK-W300NH board support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define MZK_W300NH_GPIO_LED_STATUS 1
-#define MZK_W300NH_GPIO_LED_WPS 3
-#define MZK_W300NH_GPIO_LED_WLAN 6
-#define MZK_W300NH_GPIO_LED_AP_GREEN 15
-#define MZK_W300NH_GPIO_LED_AP_AMBER 16
-
-#define MZK_W300NH_GPIO_BTN_APROUTER 5
-#define MZK_W300NH_GPIO_BTN_WPS 12
-#define MZK_W300NH_GPIO_BTN_RESET 21
-
-#define MZK_W300NH_KEYS_POLL_INTERVAL 20 /* msecs */
-#define MZK_W300NH_KEYS_DEBOUNCE_INTERVAL (3 * MZK_W300NH_KEYS_POLL_INTERVAL)
-
-static struct gpio_led mzk_w300nh_leds_gpio[] __initdata = {
- {
- .name = "planex:green:status",
- .gpio = MZK_W300NH_GPIO_LED_STATUS,
- .active_low = 1,
- }, {
- .name = "planex:blue:wps",
- .gpio = MZK_W300NH_GPIO_LED_WPS,
- .active_low = 1,
- }, {
- .name = "planex:green:wlan",
- .gpio = MZK_W300NH_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "planex:green:aprouter",
- .gpio = MZK_W300NH_GPIO_LED_AP_GREEN,
- }, {
- .name = "planex:amber:aprouter",
- .gpio = MZK_W300NH_GPIO_LED_AP_AMBER,
- }
-};
-
-static struct gpio_keys_button mzk_w300nh_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = MZK_W300NH_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W300NH_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = MZK_W300NH_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W300NH_GPIO_BTN_WPS,
- .active_low = 1,
- }, {
- .desc = "aprouter",
- .type = EV_KEY,
- .code = BTN_2,
- .debounce_interval = MZK_W300NH_KEYS_DEBOUNCE_INTERVAL,
- .gpio = MZK_W300NH_GPIO_BTN_APROUTER,
- .active_low = 0,
- }
-};
-
-#define MZK_W300NH_WAN_PHYMASK BIT(4)
-#define MZK_W300NH_MDIO_MASK (~MZK_W300NH_WAN_PHYMASK)
-
-static void __init mzk_w300nh_setup(void)
-{
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_mdio(0, MZK_W300NH_MDIO_MASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, eeprom, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.has_ar8216 = 1;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, eeprom, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = MZK_W300NH_WAN_PHYMASK;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(mzk_w300nh_leds_gpio),
- mzk_w300nh_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, MZK_W300NH_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(mzk_w300nh_gpio_keys),
- mzk_w300nh_gpio_keys);
- ath79_register_wmac(eeprom, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_MZK_W300NH, "MZK-W300NH", "Planex MZK-W300NH",
- mzk_w300nh_setup);
+++ /dev/null
-/*
- * ALFA Network N5Q board support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define N5Q_GPIO_LED_LAN 19
-#define N5Q_GPIO_LED_SIGNAL1 0
-#define N5Q_GPIO_LED_SIGNAL2 1
-#define N5Q_GPIO_LED_SIGNAL3 2
-#define N5Q_GPIO_LED_SIGNAL4 3
-#define N5Q_GPIO_LED_WAN 18
-#define N5Q_GPIO_LED_WLAN 12
-
-#define N5Q_GPIO_WDT_EN 16
-#define N5Q_GPIO_WDT_IN 17
-
-#define N5Q_GPIO_BTN_RESET 11
-
-#define N5Q_MAC0_OFFSET 0
-#define N5Q_MAC1_OFFSET 6
-#define N5Q_WMAC_CALDATA_OFFSET 0x1000
-
-#define N5Q_KEYS_POLL_INTERVAL 20
-#define N5Q_KEYS_DEBOUNCE_INTERVAL (3 * N5Q_KEYS_POLL_INTERVAL)
-
-static struct gpio_led n5q_leds_gpio[] __initdata = {
- {
- .name = "n5q:green:lan",
- .gpio = N5Q_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "n5q:red:signal1",
- .gpio = N5Q_GPIO_LED_SIGNAL1,
- .active_low = 1,
- }, {
- .name = "n5q:orange:signal2",
- .gpio = N5Q_GPIO_LED_SIGNAL2,
- .active_low = 1,
- }, {
- .name = "n5q:green:signal3",
- .gpio = N5Q_GPIO_LED_SIGNAL3,
- .active_low = 1,
- }, {
- .name = "n5q:green:signal4",
- .gpio = N5Q_GPIO_LED_SIGNAL4,
- .active_low = 1,
- }, {
- .name = "n5q:green:wan",
- .gpio = N5Q_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "n5q:green:wlan",
- .gpio = N5Q_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button n5q_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = N5Q_KEYS_DEBOUNCE_INTERVAL,
- .gpio = N5Q_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init n5q_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f070000);
-
- ath79_register_m25p80(NULL);
-
- ath79_register_mdio(1, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = 0xf7;
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, art + N5Q_MAC1_OFFSET, 0);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art + N5Q_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(n5q_leds_gpio),
- n5q_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, N5Q_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(n5q_gpio_keys),
- n5q_gpio_keys);
-
- gpio_request_one(N5Q_GPIO_WDT_IN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT input");
-
- gpio_request_one(N5Q_GPIO_WDT_EN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT enable");
-
- ath79_register_wmac(art + N5Q_WMAC_CALDATA_OFFSET, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_N5Q, "N5Q", "ALFA Network N5Q", n5q_setup);
+++ /dev/null
-/*
- * Zyxel NBG 460N/550N/550NH board support
- *
- * Copyright (C) 2010 Michael Kurz <michi.kurz@googlemail.com>
- *
- * based on mach-tl-wr1043nd.c
- *
- * 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 <linux/delay.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <linux/i2c-gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/rtl8366.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-/* LEDs */
-#define NBG460N_GPIO_LED_WPS 3
-#define NBG460N_GPIO_LED_WAN 6
-#define NBG460N_GPIO_LED_POWER 14
-#define NBG460N_GPIO_LED_WLAN 15
-
-/* Buttons */
-#define NBG460N_GPIO_BTN_WPS 12
-#define NBG460N_GPIO_BTN_RESET 21
-
-#define NBG460N_KEYS_POLL_INTERVAL 20 /* msecs */
-#define NBG460N_KEYS_DEBOUNCE_INTERVAL (3 * NBG460N_KEYS_POLL_INTERVAL)
-
-/* RTC chip PCF8563 I2C interface */
-#define NBG460N_GPIO_PCF8563_SDA 8
-#define NBG460N_GPIO_PCF8563_SCK 7
-
-/* Switch configuration I2C interface */
-#define NBG460N_GPIO_RTL8366_SDA 16
-#define NBG460N_GPIO_RTL8366_SCK 18
-
-static struct mtd_partition nbg460n_partitions[] = {
- {
- .name = "Bootbase",
- .offset = 0,
- .size = 0x010000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "U-Boot Config",
- .offset = 0x010000,
- .size = 0x030000,
- }, {
- .name = "U-Boot",
- .offset = 0x040000,
- .size = 0x030000,
- }, {
- .name = "linux",
- .offset = 0x070000,
- .size = 0x0e0000,
- }, {
- .name = "rootfs",
- .offset = 0x150000,
- .size = 0x2a0000,
- }, {
- .name = "CalibData",
- .offset = 0x3f0000,
- .size = 0x010000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "firmware",
- .offset = 0x070000,
- .size = 0x380000,
- }
-};
-
-static struct flash_platform_data nbg460n_flash_data = {
- .parts = nbg460n_partitions,
- .nr_parts = ARRAY_SIZE(nbg460n_partitions),
-};
-
-static struct gpio_led nbg460n_leds_gpio[] __initdata = {
- {
- .name = "nbg460n:green:power",
- .gpio = NBG460N_GPIO_LED_POWER,
- .active_low = 0,
- .default_trigger = "default-on",
- }, {
- .name = "nbg460n:green:wps",
- .gpio = NBG460N_GPIO_LED_WPS,
- .active_low = 0,
- }, {
- .name = "nbg460n:green:wlan",
- .gpio = NBG460N_GPIO_LED_WLAN,
- .active_low = 0,
- }, {
- /* Not really for controlling the LED,
- when set low the LED blinks uncontrollable */
- .name = "nbg460n:green:wan",
- .gpio = NBG460N_GPIO_LED_WAN,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button nbg460n_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = NBG460N_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG460N_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = NBG460N_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG460N_GPIO_BTN_WPS,
- .active_low = 1,
- }
-};
-
-static struct i2c_gpio_platform_data nbg460n_i2c_device_platdata = {
- .sda_pin = NBG460N_GPIO_PCF8563_SDA,
- .scl_pin = NBG460N_GPIO_PCF8563_SCK,
- .udelay = 10,
-};
-
-static struct platform_device nbg460n_i2c_device = {
- .name = "i2c-gpio",
- .id = -1,
- .num_resources = 0,
- .resource = NULL,
- .dev = {
- .platform_data = &nbg460n_i2c_device_platdata,
- },
-};
-
-static struct i2c_board_info nbg460n_i2c_devs[] __initdata = {
- {
- I2C_BOARD_INFO("pcf8563", 0x51),
- },
-};
-
-static void nbg460n_i2c_init(void)
-{
- /* The gpio interface */
- platform_device_register(&nbg460n_i2c_device);
- /* I2C devices */
- i2c_register_board_info(0, nbg460n_i2c_devs,
- ARRAY_SIZE(nbg460n_i2c_devs));
-}
-
-
-static struct rtl8366_platform_data nbg460n_rtl8366s_data = {
- .gpio_sda = NBG460N_GPIO_RTL8366_SDA,
- .gpio_sck = NBG460N_GPIO_RTL8366_SCK,
-};
-
-static struct platform_device nbg460n_rtl8366s_device = {
- .name = RTL8366S_DRIVER_NAME,
- .id = -1,
- .dev = {
- .platform_data = &nbg460n_rtl8366s_data,
- }
-};
-
-static void __init nbg460n_setup(void)
-{
- /* end of bootloader sector contains mac address */
- u8 *mac = (u8 *) KSEG1ADDR(0x1fc0fff8);
- /* last sector contains wlan calib data */
- u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
-
- /* LAN Port */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.mii_bus_dev = &nbg460n_rtl8366s_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
-
- /* WAN Port */
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 1);
- ath79_eth1_data.mii_bus_dev = &nbg460n_rtl8366s_device.dev;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = 0x10;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- /* register the switch phy */
- platform_device_register(&nbg460n_rtl8366s_device);
-
- /* register flash */
- ath79_register_m25p80(&nbg460n_flash_data);
-
- ath79_register_wmac(eeprom, mac);
-
- /* register RTC chip */
- nbg460n_i2c_init();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(nbg460n_leds_gpio),
- nbg460n_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, NBG460N_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(nbg460n_gpio_keys),
- nbg460n_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_NBG460N, "NBG460N", "Zyxel NBG460N/550N/550NH",
- nbg460n_setup);
+++ /dev/null
-/*
- * ZyXEL NBG6716/NBG6616 board support
- *
- * Based on the Qualcomm Atheros AP135/AP136 reference board support code
- * Copyright (c) 2012 Qualcomm Atheros
- * Copyright (c) 2012-2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2013 Andre Valentin <avalentin@marcant.net>
- *
- * 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/version.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-#include <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/platform/ar934x_nfc.h>
-
-#include <asm/mach-ath79/ar71xx_regs.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-nfc.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define NBG6716_GPIO_LED_INTERNET 18
-#define NBG6716_GPIO_LED_POWER 15
-#define NBG6716_GPIO_LED_USB1 4
-#define NBG6716_GPIO_LED_USB2 13
-#define NBG6716_GPIO_LED_WIFI2G 19
-#define NBG6716_GPIO_LED_WIFI5G 17
-#define NBG6716_GPIO_LED_WPS 21
-
-#define NBG6716_GPIO_BTN_RESET 23
-#define NBG6716_GPIO_BTN_RFKILL 1
-#define NBG6716_GPIO_BTN_USB1 0
-#define NBG6716_GPIO_BTN_USB2 14
-#define NBG6716_GPIO_BTN_WPS 22
-
-#define NBG6716_GPIO_USB_POWER 16
-
-#define NBG6716_KEYS_POLL_INTERVAL 20 /* msecs */
-#define NBG6716_KEYS_DEBOUNCE_INTERVAL (3 * NBG6716_KEYS_POLL_INTERVAL)
-
-#define NBG6716_MAC0_OFFSET 0
-#define NBG6716_MAC1_OFFSET 6
-#define NBG6716_WMAC_CALDATA_OFFSET 0x1000
-#define NBG6716_PCIE_CALDATA_OFFSET 0x5000
-
-/* NBG6616 has a different GPIO usage as it does not have USB Buttons */
-#define NBG6616_GPIO_LED_USB0 14
-#define NBG6616_GPIO_LED_USB1 21
-#define NBG6616_GPIO_LED_WPS 0
-
-static struct gpio_led nbg6716_leds_gpio[] __initdata = {
- {
- .name = "nbg6716:white:internet",
- .gpio = NBG6716_GPIO_LED_INTERNET,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:power",
- .gpio = NBG6716_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:usb1",
- .gpio = NBG6716_GPIO_LED_USB1,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:usb2",
- .gpio = NBG6716_GPIO_LED_USB2,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:wifi2g",
- .gpio = NBG6716_GPIO_LED_WIFI2G,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:wifi5g",
- .gpio = NBG6716_GPIO_LED_WIFI5G,
- .active_low = 1,
- },
- {
- .name = "nbg6716:white:wps",
- .gpio = NBG6716_GPIO_LED_WPS,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button nbg6716_gpio_keys[] __initdata = {
- {
- .desc = "RESET button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL button",
- .type = EV_SW,
- .code = KEY_RFKILL,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_RFKILL,
- .active_low = 0,
- },
- {
- .desc = "USB1 eject button",
- .type = EV_KEY,
- .code = BTN_1,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_USB1,
- .active_low = 1,
- },
- {
- .desc = "USB2 eject button",
- .type = EV_KEY,
- .code = BTN_2,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_USB2,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-
-
-static struct gpio_led nbg6616_leds_gpio[] __initdata = {
- {
- .name = "nbg6616:green:power",
- .gpio = NBG6716_GPIO_LED_POWER,
- .active_low = 1,
- },
- {
- .name = "nbg6616:green:usb2",
- .gpio = NBG6616_GPIO_LED_USB0,
- .active_low = 1,
- },
- {
- .name = "nbg6616:green:usb1",
- .gpio = NBG6616_GPIO_LED_USB1,
- .active_low = 1,
- },
- {
- .name = "nbg6616:green:wifi2g",
- .gpio = NBG6716_GPIO_LED_WIFI2G,
- .active_low = 1,
- },
- {
- .name = "nbg6616:green:wifi5g",
- .gpio = NBG6716_GPIO_LED_WIFI5G,
- .active_low = 1,
- },
- {
- .name = "nbg6616:green:wps",
- .gpio = NBG6616_GPIO_LED_WPS,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button nbg6616_gpio_keys[] __initdata = {
- {
- .desc = "RESET button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "RFKILL button",
- .type = EV_SW,
- .code = KEY_RFKILL,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_RFKILL,
- .active_low = 0,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = NBG6716_KEYS_DEBOUNCE_INTERVAL,
- .gpio = NBG6716_GPIO_BTN_WPS,
- .active_low = 1,
- },
-};
-
-
-static struct ar8327_pad_cfg nbg6716_ar8327_pad0_cfg;
-static struct ar8327_pad_cfg nbg6716_ar8327_pad6_cfg;
-static struct ar8327_led_cfg nbg6716_ar8327_led_cfg;
-
-static struct ar8327_platform_data nbg6716_ar8327_data = {
- .pad0_cfg = &nbg6716_ar8327_pad0_cfg,
- .pad6_cfg = &nbg6716_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &nbg6716_ar8327_led_cfg
-};
-
-static struct mdio_board_info nbg6716_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &nbg6716_ar8327_data,
- },
-};
-
-static void nbg6716_get_mac(void* nvram_addr, const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(nvram_addr);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, 0x10000,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-static void __init nbg6716_common_setup(u32 leds_num, struct gpio_led* leds,
- u32 keys_num,
- struct gpio_keys_button* keys,
- void* art_addr, void* nvram)
-{
- u8 *art = (u8 *) KSEG1ADDR(art_addr);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_leds_gpio(-1, leds_num, leds);
- ath79_register_gpio_keys_polled(-1, NBG6716_KEYS_POLL_INTERVAL,
- keys_num, keys);
-
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
- ath79_register_nfc();
-
- gpio_request_one(NBG6716_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- ath79_register_usb();
-
- nbg6716_get_mac(nvram, "ethaddr=", tmpmac);
-
- ath79_register_pci();
-
- ath79_register_wmac(art + NBG6716_WMAC_CALDATA_OFFSET, tmpmac);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, tmpmac, 2);
- ath79_init_mac(ath79_eth1_data.mac_addr, tmpmac, 3);
-
- mdiobus_register_board_info(nbg6716_mdio0_info,
- ARRAY_SIZE(nbg6716_mdio0_info));
-
- /* GMAC0 is connected to the RMGII interface */
- 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_register_eth(0);
-
- /* GMAC1 is connected to the SGMII interface */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(1);
-}
-
-static void __init nbg6716_010_setup(void)
-{
- /* GMAC0 of the AR8337 switch is connected to GMAC0 via RGMII */
- nbg6716_ar8327_pad0_cfg.mode = AR8327_PAD_MAC_RGMII;
- nbg6716_ar8327_pad0_cfg.txclk_delay_en = true;
- nbg6716_ar8327_pad0_cfg.rxclk_delay_en = true;
- nbg6716_ar8327_pad0_cfg.txclk_delay_sel = AR8327_CLK_DELAY_SEL1;
- nbg6716_ar8327_pad0_cfg.rxclk_delay_sel = AR8327_CLK_DELAY_SEL2;
-
- /* GMAC6 of the AR8337 switch is connected to GMAC1 via SGMII */
- nbg6716_ar8327_pad6_cfg.mode = AR8327_PAD_MAC_SGMII;
- nbg6716_ar8327_pad6_cfg.rxclk_delay_en = true;
- nbg6716_ar8327_pad6_cfg.rxclk_delay_sel = AR8327_CLK_DELAY_SEL0;
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- nbg6716_ar8327_led_cfg.open_drain = 0;
- nbg6716_ar8327_led_cfg.led_ctrl0 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl1 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl2 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl3 = 0x03ffff00;
-
- nbg6716_common_setup(ARRAY_SIZE(nbg6716_leds_gpio), nbg6716_leds_gpio,
- ARRAY_SIZE(nbg6716_gpio_keys), nbg6716_gpio_keys,
- (void*) 0x1f050000, (void*) 0x1f040000);
-}
-
-static void __init nbg6616_010_setup(void)
-{
- /* GMAC0 of the AR8337 switch is connected to GMAC0 via RGMII */
- nbg6716_ar8327_pad0_cfg.mode = AR8327_PAD_MAC_RGMII;
- nbg6716_ar8327_pad0_cfg.txclk_delay_en = true;
- nbg6716_ar8327_pad0_cfg.rxclk_delay_en = true;
- nbg6716_ar8327_pad0_cfg.txclk_delay_sel = AR8327_CLK_DELAY_SEL1;
- nbg6716_ar8327_pad0_cfg.rxclk_delay_sel = AR8327_CLK_DELAY_SEL2;
-
- /* GMAC6 of the AR8337 switch is connected to GMAC1 via SGMII */
- nbg6716_ar8327_pad6_cfg.mode = AR8327_PAD_MAC_SGMII;
- nbg6716_ar8327_pad6_cfg.rxclk_delay_en = true;
- nbg6716_ar8327_pad6_cfg.rxclk_delay_sel = AR8327_CLK_DELAY_SEL0;
-
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
-
- nbg6716_ar8327_led_cfg.open_drain = 0;
- nbg6716_ar8327_led_cfg.led_ctrl0 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl1 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl2 = 0xffb7ffb7;
- nbg6716_ar8327_led_cfg.led_ctrl3 = 0x03ffff00;
-
-
- nbg6716_common_setup(ARRAY_SIZE(nbg6616_leds_gpio), nbg6616_leds_gpio,
- ARRAY_SIZE(nbg6616_gpio_keys), nbg6616_gpio_keys,
- (void*) 0x1f040000, (void*) 0x1f030000);
-}
-
-
-MIPS_MACHINE(ATH79_MACH_NBG6716, "NBG6716",
- "Zyxel NBG6716",
- nbg6716_010_setup);
-
-MIPS_MACHINE(ATH79_MACH_NBG6616, "NBG6616",
- "Zyxel NBG6616",
- nbg6616_010_setup);
-
+++ /dev/null
-/*
- * OpenMesh OM2P support
- *
- * Copyright (C) 2011 Marek Lindner <marek@open-mesh.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-
-#define OM2P_GPIO_LED_POWER 0
-#define OM2P_GPIO_LED_GREEN 13
-#define OM2P_GPIO_LED_RED 14
-#define OM2P_GPIO_LED_YELLOW 15
-#define OM2P_GPIO_LED_LAN 16
-#define OM2P_GPIO_LED_WAN 17
-#define OM2P_GPIO_BTN_RESET 1
-
-#define OM2P_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OM2P_KEYS_DEBOUNCE_INTERVAL (3 * OM2P_KEYS_POLL_INTERVAL)
-
-#define OM2P_WAN_PHYMASK BIT(4)
-
-#define OM2P_LC_GPIO_LED_POWER 1
-#define OM2P_LC_GPIO_LED_GREEN 15
-#define OM2P_LC_GPIO_LED_RED 16
-#define OM2P_LC_GPIO_LED_YELLOW 0
-#define OM2P_LC_GPIO_LED_LAN 13
-#define OM2P_LC_GPIO_LED_WAN 17
-#define OM2P_LC_GPIO_BTN_RESET 12
-
-#define OM2Pv4_GPIO_LED_POWER 0
-#define OM2Pv4_GPIO_LED_GREEN 2
-#define OM2Pv4_GPIO_LED_RED 4
-#define OM2Pv4_GPIO_LED_YELLOW 3
-#define OM2Pv4_GPIO_LED_LAN 14
-#define OM2Pv4_GPIO_LED_WAN 13
-#define OM2Pv4_GPIO_BTN_RESET 1
-
-#define OM2P_WMAC_CALDATA_OFFSET 0x1000
-
-static struct flash_platform_data om2p_flash_data = {
- .type = "s25sl12800",
- .name = "ar7240-nor0",
-};
-
-static struct gpio_led om2p_leds_gpio[] __initdata = {
- {
- .name = "om2p:blue:power",
- .gpio = OM2P_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "om2p:red:wifi",
- .gpio = OM2P_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "om2p:yellow:wifi",
- .gpio = OM2P_GPIO_LED_YELLOW,
- .active_low = 1,
- }, {
- .name = "om2p:green:wifi",
- .gpio = OM2P_GPIO_LED_GREEN,
- .active_low = 1,
- }, {
- .name = "om2p:blue:lan",
- .gpio = OM2P_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "om2p:blue:wan",
- .gpio = OM2P_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button om2p_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OM2P_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OM2P_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init om2p_setup(void)
-{
- u8 *mac1 = (u8 *)KSEG1ADDR(0x1ffc0000);
- u8 *mac2 = (u8 *)KSEG1ADDR(0x1ffc0000 + ETH_ALEN);
- u8 *ee = (u8 *)KSEG1ADDR(0x1ffc1000);
-
- ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_m25p80(&om2p_flash_data);
-
- ath79_register_mdio(0, ~OM2P_WAN_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac2, 0);
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ap91_pci_init(ee, NULL);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om2p_leds_gpio),
- om2p_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, OM2P_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om2p_gpio_keys),
- om2p_gpio_keys);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM2P, "OM2P", "OpenMesh OM2P", om2p_setup);
-
-
-static struct flash_platform_data om2p_lc_flash_data = {
- .type = "s25sl12800",
-};
-
-static void __init om2p_lc_setup(void)
-{
- u8 *mac1 = (u8 *)KSEG1ADDR(0x1ffc0000);
- u8 *mac2 = (u8 *)KSEG1ADDR(0x1ffc0000 + ETH_ALEN);
- u8 *art = (u8 *)KSEG1ADDR(0x1ffc1000);
- u32 t;
-
- ath79_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- t = ath79_reset_rr(AR933X_RESET_REG_BOOTSTRAP);
- t |= AR933X_BOOTSTRAP_MDIO_GPIO_EN;
- ath79_reset_wr(AR933X_RESET_REG_BOOTSTRAP, t);
-
- ath79_register_m25p80(&om2p_lc_flash_data);
-
- om2p_leds_gpio[0].gpio = OM2P_LC_GPIO_LED_POWER;
- om2p_leds_gpio[1].gpio = OM2P_LC_GPIO_LED_RED;
- om2p_leds_gpio[2].gpio = OM2P_LC_GPIO_LED_YELLOW;
- om2p_leds_gpio[3].gpio = OM2P_LC_GPIO_LED_GREEN;
- om2p_leds_gpio[4].gpio = OM2P_LC_GPIO_LED_LAN;
- om2p_leds_gpio[5].gpio = OM2P_LC_GPIO_LED_WAN;
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om2p_leds_gpio),
- om2p_leds_gpio);
-
- om2p_gpio_keys[0].gpio = OM2P_LC_GPIO_BTN_RESET;
- ath79_register_gpio_keys_polled(-1, OM2P_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om2p_gpio_keys),
- om2p_gpio_keys);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac2, 0);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_wmac(art, NULL);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM2P_LC, "OM2P-LC", "OpenMesh OM2P LC", om2p_lc_setup);
-MIPS_MACHINE(ATH79_MACH_OM2Pv2, "OM2Pv2", "OpenMesh OM2Pv2", om2p_lc_setup);
-
-static void __init om2p_hs_setup(void)
-{
- u8 *mac1 = (u8 *)KSEG1ADDR(0x1ffc0000);
- u8 *mac2 = (u8 *)KSEG1ADDR(0x1ffc0000 + ETH_ALEN);
- u8 *art = (u8 *)KSEG1ADDR(0x1ffc1000);
-
- /* make lan / wan leds software controllable */
- ath79_gpio_output_select(OM2P_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(OM2P_GPIO_LED_WAN, AR934X_GPIO_OUT_GPIO);
-
- /* enable reset button */
- ath79_gpio_output_select(OM2P_GPIO_BTN_RESET, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- om2p_leds_gpio[4].gpio = OM2P_GPIO_LED_WAN;
- om2p_leds_gpio[5].gpio = OM2P_GPIO_LED_LAN;
-
- ath79_register_m25p80(&om2p_lc_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om2p_leds_gpio),
- om2p_leds_gpio);
- ath79_register_gpio_keys_polled(-1, OM2P_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om2p_gpio_keys),
- om2p_gpio_keys);
-
- ath79_register_wmac(art, NULL);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac2, 0);
-
- /* GMAC0 is connected to the PHY0 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM2P_HS, "OM2P-HS", "OpenMesh OM2P HS", om2p_hs_setup);
-MIPS_MACHINE(ATH79_MACH_OM2P_HSv2, "OM2P-HSv2", "OpenMesh OM2P HSv2", om2p_hs_setup);
-MIPS_MACHINE(ATH79_MACH_OM2P_HSv3, "OM2P-HSv3", "OpenMesh OM2P HSv3", om2p_hs_setup);
-
-static struct flash_platform_data om2pv4_flash_data = {
- .type = "s25sl12800",
-};
-
-static struct gpio_led om2pv4_leds_gpio[] __initdata = {
- {
- .name = "om2p:blue:power",
- .gpio = OM2Pv4_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "om2p:red:wifi",
- .gpio = OM2Pv4_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "om2p:yellow:wifi",
- .gpio = OM2Pv4_GPIO_LED_YELLOW,
- .active_low = 1,
- }, {
- .name = "om2p:green:wifi",
- .gpio = OM2Pv4_GPIO_LED_GREEN,
- .active_low = 1,
- }, {
- .name = "om2p:blue:lan",
- .gpio = OM2Pv4_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "om2p:blue:wan",
- .gpio = OM2Pv4_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button om2pv4_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OM2P_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OM2Pv4_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init om2pv4_setup(void)
-{
- u8 *mac1 = (u8 *)KSEG1ADDR(0x1ffc0000);
- u8 *mac2 = (u8 *)KSEG1ADDR(0x1ffc0000 + ETH_ALEN);
- u8 *art = (u8 *)KSEG1ADDR(0x1ffc0000);
- u8 wmac[6];
-
- ath79_register_m25p80(&om2pv4_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om2pv4_leds_gpio),
- om2pv4_leds_gpio);
- ath79_register_gpio_keys_polled(-1, OM2P_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om2pv4_gpio_keys),
- om2pv4_gpio_keys);
-
- ath79_init_mac(wmac, art, 0x02);
- ath79_register_wmac(art + OM2P_WMAC_CALDATA_OFFSET, wmac);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac2, 0);
- ath79_register_eth(0);
-
- /* WAN */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, mac1, 0);
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM2Pv4, "OM2Pv4", "OpenMesh OM2Pv4", om2pv4_setup);
-MIPS_MACHINE(ATH79_MACH_OM2P_HSv4, "OM2P-HSv4", "OpenMesh OM2P HSv4", om2pv4_setup);
+++ /dev/null
-/*
- * OpenMesh OM5P support
- *
- * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
- * Copyright (C) 2014 Sven Eckelmann <sven@open-mesh.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-
-#define OM5P_GPIO_LED_POWER 13
-#define OM5P_GPIO_LED_GREEN 16
-#define OM5P_GPIO_LED_RED 19
-#define OM5P_GPIO_LED_YELLOW 17
-#define OM5P_GPIO_LED_LAN 14
-#define OM5P_GPIO_LED_WAN 15
-#define OM5P_GPIO_BTN_RESET 4
-#define OM5P_GPIO_I2C_SCL 20
-#define OM5P_GPIO_I2C_SDA 21
-
-#define OM5P_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OM5P_KEYS_DEBOUNCE_INTERVAL (3 * OM5P_KEYS_POLL_INTERVAL)
-
-#define OM5P_WMAC_CALDATA_OFFSET 0x1000
-#define OM5P_PCI_CALDATA_OFFSET 0x5000
-
-static struct gpio_led om5p_leds_gpio[] __initdata = {
- {
- .name = "om5p:blue:power",
- .gpio = OM5P_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "om5p:red:wifi",
- .gpio = OM5P_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "om5p:yellow:wifi",
- .gpio = OM5P_GPIO_LED_YELLOW,
- .active_low = 1,
- }, {
- .name = "om5p:green:wifi",
- .gpio = OM5P_GPIO_LED_GREEN,
- .active_low = 1,
- }, {
- .name = "om5p:blue:lan",
- .gpio = OM5P_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "om5p:blue:wan",
- .gpio = OM5P_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button om5p_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OM5P_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OM5P_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct flash_platform_data om5p_flash_data = {
- .type = "mx25l12805d",
-};
-
-static void __init om5p_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- /* make lan / wan leds software controllable */
- ath79_gpio_output_select(OM5P_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(OM5P_GPIO_LED_WAN, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(&om5p_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om5p_leds_gpio),
- om5p_leds_gpio);
- ath79_register_gpio_keys_polled(-1, OM5P_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om5p_gpio_keys),
- om5p_gpio_keys);
-
- ath79_init_mac(mac, art, 2);
- ath79_register_wmac(art + OM5P_WMAC_CALDATA_OFFSET, mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 1);
-
- /* GMAC0 is connected to the PHY0 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM5P, "OM5P", "OpenMesh OM5P", om5p_setup);
-
-static struct i2c_gpio_platform_data om5pan_i2c_device_platdata = {
- .sda_pin = OM5P_GPIO_I2C_SDA,
- .scl_pin = OM5P_GPIO_I2C_SCL,
- .udelay = 10,
- .sda_is_open_drain = 1,
- .scl_is_open_drain = 1,
-};
-
-static struct platform_device om5pan_i2c_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &om5pan_i2c_device_platdata,
- },
-};
-
-static struct i2c_board_info om5pan_i2c_devs[] __initdata = {
- {
- I2C_BOARD_INFO("tmp423", 0x4c),
- },
-};
-
-static struct at803x_platform_data om5p_an_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info om5p_an_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 7,
- .platform_data = &om5p_an_at803x_data,
- },
-};
-
-static void __init om5p_an_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- /* temperature sensor */
- platform_device_register(&om5pan_i2c_device);
- i2c_register_board_info(0, om5pan_i2c_devs,
- ARRAY_SIZE(om5pan_i2c_devs));
-
- /* make lan / wan leds software controllable */
- ath79_gpio_output_select(OM5P_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(OM5P_GPIO_LED_WAN, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(&om5p_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om5p_leds_gpio),
- om5p_leds_gpio);
-
- ath79_init_mac(mac, art, 0x02);
- ath79_register_wmac(art + OM5P_WMAC_CALDATA_OFFSET, mac);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0);
- ath79_setup_ar934x_eth_rx_delay(2, 2);
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- mdiobus_register_board_info(om5p_an_mdio0_info,
- ARRAY_SIZE(om5p_an_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
-
- /* GMAC0 is connected to the PHY7 */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(7);
- ath79_eth0_pll_data.pll_1000 = 0x02000000;
- ath79_eth0_pll_data.pll_100 = 0x00000101;
- ath79_eth0_pll_data.pll_10 = 0x00001313;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(1);
-
- ath79_init_mac(mac, art, 0x10);
- ap91_pci_init(art + OM5P_PCI_CALDATA_OFFSET, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_OM5P_AN, "OM5P-AN", "OpenMesh OM5P AN", om5p_an_setup);
+++ /dev/null
-/*
- * OpenMesh OM5P-AC support
- *
- * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
- * Copyright (C) 2014 Sven Eckelmann <sven@open-mesh.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define OM5PAC_GPIO_LED_POWER 18
-#define OM5PAC_GPIO_LED_GREEN 21
-#define OM5PAC_GPIO_LED_RED 23
-#define OM5PAC_GPIO_LED_YELLOW 22
-#define OM5PAC_GPIO_LED_LAN 20
-#define OM5PAC_GPIO_LED_WAN 19
-#define OM5PAC_GPIO_I2C_SCL 12
-#define OM5PAC_GPIO_I2C_SDA 11
-
-#define OM5PAC_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OM5PAC_KEYS_DEBOUNCE_INTERVAL (3 * OM5PAC_KEYS_POLL_INTERVAL)
-
-#define OM5PAC_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led om5pac_leds_gpio[] __initdata = {
- {
- .name = "om5pac:blue:power",
- .gpio = OM5PAC_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "om5pac:red:wifi",
- .gpio = OM5PAC_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "om5pac:yellow:wifi",
- .gpio = OM5PAC_GPIO_LED_YELLOW,
- .active_low = 1,
- }, {
- .name = "om5pac:green:wifi",
- .gpio = OM5PAC_GPIO_LED_GREEN,
- .active_low = 1,
- }, {
- .name = "om5pac:blue:lan",
- .gpio = OM5PAC_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "om5pac:blue:wan",
- .gpio = OM5PAC_GPIO_LED_WAN,
- .active_low = 1,
- }
-};
-
-static struct flash_platform_data om5pac_flash_data = {
- .type = "mx25l12805d",
-};
-
-static struct i2c_gpio_platform_data om5pac_i2c_device_platdata = {
- .sda_pin = OM5PAC_GPIO_I2C_SDA,
- .scl_pin = OM5PAC_GPIO_I2C_SCL,
- .udelay = 10,
- .sda_is_open_drain = 1,
- .scl_is_open_drain = 1,
-};
-
-static struct platform_device om5pac_i2c_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &om5pac_i2c_device_platdata,
- },
-};
-
-static struct i2c_board_info om5pac_i2c_devs[] __initdata = {
- {
- I2C_BOARD_INFO("tmp423", 0x4c),
- },
-};
-
-static struct at803x_platform_data om5pac_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info om5pac_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 1,
- .platform_data = &om5pac_at803x_data,
- },
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 2,
- .platform_data = &om5pac_at803x_data,
- },
-};
-
-static void __init om5p_ac_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init om5p_ac_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- /* temperature sensor */
- platform_device_register(&om5pac_i2c_device);
- i2c_register_board_info(0, om5pac_i2c_devs,
- ARRAY_SIZE(om5pac_i2c_devs));
-
- ath79_gpio_output_select(OM5PAC_GPIO_LED_WAN, QCA955X_GPIO_OUT_GPIO);
-
- ath79_register_m25p80(&om5pac_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om5pac_leds_gpio),
- om5pac_leds_gpio);
-
- ath79_init_mac(mac, art, 0x02);
- ath79_register_wmac(art + OM5PAC_WMAC_CALDATA_OFFSET, mac);
-
- om5p_ac_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 3, 3, 0, 0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(om5pac_mdio0_info,
- ARRAY_SIZE(om5pac_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
-
- /* GMAC0 is connected to the PHY1 */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(1);
- ath79_eth0_pll_data.pll_1000 = 0x82000101;
- ath79_eth0_pll_data.pll_100 = 0x80000101;
- ath79_eth0_pll_data.pll_10 = 0x80001313;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to MDIO1 in SGMII mode */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth1_data.phy_mask = BIT(2);
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_eth1_pll_data.pll_100 = 0x80000101;
- ath79_eth1_pll_data.pll_10 = 0x80001313;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_register_eth(1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_OM5P_AC, "OM5P-AC", "OpenMesh OM5P AC", om5p_ac_setup);
+++ /dev/null
-/*
- * OpenMesh OM5P-ACv2 support
- *
- * Copyright (C) 2013 Marek Lindner <marek@open-mesh.com>
- * Copyright (C) 2014-2016 Sven Eckelmann <sven@open-mesh.com>
- * Copyright (C) 2015 Open-Mesh - Jim Collar <jim.collar@eqware.net>
- *
- * 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 <linux/gpio.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_device.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define OM5PACV2_GPIO_LED_POWER 14
-#define OM5PACV2_GPIO_LED_GREEN 13
-#define OM5PACV2_GPIO_LED_RED 23
-#define OM5PACV2_GPIO_LED_YELLOW 15
-#define OM5PACV2_GPIO_BTN_RESET 1
-#define OM5PACV2_GPIO_I2C_SCL 18
-#define OM5PACV2_GPIO_I2C_SDA 19
-#define OM5PACV2_GPIO_PA_DCDC 2
-#define OM5PACV2_GPIO_PA_HIGH 16
-
-#define OM5PACV2_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OM5PACV2_KEYS_DEBOUNCE_INTERVAL (3 * OM5PACV2_KEYS_POLL_INTERVAL)
-
-#define OM5PACV2_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led om5pacv2_leds_gpio[] __initdata = {
- {
- .name = "om5pac:blue:power",
- .gpio = OM5PACV2_GPIO_LED_POWER,
- .active_low = 1,
- }, {
- .name = "om5pac:red:wifi",
- .gpio = OM5PACV2_GPIO_LED_RED,
- .active_low = 1,
- }, {
- .name = "om5pac:yellow:wifi",
- .gpio = OM5PACV2_GPIO_LED_YELLOW,
- .active_low = 1,
- }, {
- .name = "om5pac:green:wifi",
- .gpio = OM5PACV2_GPIO_LED_GREEN,
- .active_low = 1,
- }
-};
-
-static struct gpio_keys_button om5pacv2_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OM5PACV2_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OM5PACV2_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static struct i2c_gpio_platform_data om5pacv2_i2c_device_platdata = {
- .sda_pin = OM5PACV2_GPIO_I2C_SDA,
- .scl_pin = OM5PACV2_GPIO_I2C_SCL,
- .udelay = 10,
- .sda_is_open_drain = 1,
- .scl_is_open_drain = 1,
-};
-
-static struct platform_device om5pacv2_i2c_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &om5pacv2_i2c_device_platdata,
- },
-};
-
-static struct i2c_board_info om5pacv2_i2c_devs[] __initdata = {
- {
- I2C_BOARD_INFO("tmp423", 0x4e),
- },
-};
-
-static struct flash_platform_data om5pacv2_flash_data = {
- .type = "mx25l12805d",
-};
-
-static struct at803x_platform_data om5pacv2_an_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct at803x_platform_data om5pacv2_an_at8031_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info om5pacv2_an_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 4,
- .platform_data = &om5pacv2_an_at803x_data,
- },
- {
- .bus_id = "ag71xx-mdio.1",
- .mdio_addr = 1,
- .platform_data = &om5pacv2_an_at8031_data,
- },
-};
-
-static void __init om5p_acv2_setup_qca955x_eth_cfg(u32 mask,
- unsigned int rxd,
- unsigned int rxdv,
- unsigned int txd,
- unsigned int txe)
-{
- void __iomem *base;
- u32 t;
-
- base = ioremap(QCA955X_GMAC_BASE, QCA955X_GMAC_SIZE);
-
- t = mask;
- t |= rxd << QCA955X_ETH_CFG_RXD_DELAY_SHIFT;
- t |= rxdv << QCA955X_ETH_CFG_RDV_DELAY_SHIFT;
- t |= txd << QCA955X_ETH_CFG_TXD_DELAY_SHIFT;
- t |= txe << QCA955X_ETH_CFG_TXE_DELAY_SHIFT;
-
- __raw_writel(t, base + QCA955X_GMAC_REG_ETH_CFG);
-
- iounmap(base);
-}
-
-static void __init om5p_acv2_setup(void)
-{
- u8 *art = (u8 *)KSEG1ADDR(0x1fff0000);
- u8 mac[6];
-
- /* power amplifier high power, 4.2V at RFFM4203/4503 instead of 3.3 */
- ath79_gpio_function_enable(QCA955X_GPIO_FUNC_JTAG_DISABLE);
- ath79_gpio_output_select(OM5PACV2_GPIO_PA_DCDC, QCA955X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(OM5PACV2_GPIO_PA_HIGH, QCA955X_GPIO_OUT_GPIO);
- gpio_request_one(OM5PACV2_GPIO_PA_DCDC, GPIOF_OUT_INIT_HIGH,
- "PA DC/DC");
- gpio_request_one(OM5PACV2_GPIO_PA_HIGH, GPIOF_OUT_INIT_HIGH, "PA HIGH");
-
- /* temperature sensor */
- platform_device_register(&om5pacv2_i2c_device);
- i2c_register_board_info(0, om5pacv2_i2c_devs,
- ARRAY_SIZE(om5pacv2_i2c_devs));
-
- ath79_register_m25p80(&om5pacv2_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(om5pacv2_leds_gpio),
- om5pacv2_leds_gpio);
- ath79_register_gpio_keys_polled(-1, OM5PACV2_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(om5pacv2_gpio_keys),
- om5pacv2_gpio_keys);
-
- ath79_init_mac(mac, art, 0x02);
- ath79_register_wmac(art + OM5PACV2_WMAC_CALDATA_OFFSET, mac);
-
- om5p_acv2_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN, 2, 2, 0, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- mdiobus_register_board_info(om5pacv2_an_mdio0_info,
- ARRAY_SIZE(om5pacv2_an_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0x00);
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 0x01);
-
- /* GMAC0 is connected to the PHY4 */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_pll_data.pll_1000 = 0x82000101;
- ath79_eth0_pll_data.pll_100 = 0x80000101;
- ath79_eth0_pll_data.pll_10 = 0x80001313;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to MDIO1 in SGMII mode */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_eth1_data.phy_mask = BIT(1);
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_eth1_pll_data.pll_100 = 0x80000101;
- ath79_eth1_pll_data.pll_10 = 0x80001313;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_register_eth(1);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_OM5P_ACv2, "OM5P-ACv2", "OpenMesh OM5P ACv2", om5p_acv2_setup);
+++ /dev/null
-/*
- * OMYlink OMY-G1 board support
- *
- * Copyright (C) 2016 L. D. Pinney <ldpinney@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define OMY_G1_GPIO_LED_WLAN 13
-#define OMY_G1_GPIO_LED_WAN 18
-#define OMY_G1_GPIO_LED_LAN 19
-
-#define OMY_G1_GPIO_USB_POWER 4
-
-#define OMY_G1_GPIO_BTN_RESET 17
-
-#define OMY_G1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OMY_G1_KEYS_DEBOUNCE_INTERVAL (3 * OMY_G1_KEYS_POLL_INTERVAL)
-
-static const char *omy_g1_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data omy_g1_flash_data = {
- .part_probes = omy_g1_part_probes,
-};
-
-static struct gpio_led omy_g1_leds_gpio[] __initdata = {
- {
- .name = "omy:green:wlan",
- .gpio = OMY_G1_GPIO_LED_WLAN,
- .active_low = 1,
- },{
- .name = "omy:green:wan",
- .gpio = OMY_G1_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "omy:green:lan",
- .gpio = OMY_G1_GPIO_LED_LAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button omy_g1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OMY_G1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OMY_G1_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init omy_g1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
- AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_register_m25p80(&omy_g1_flash_data);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(omy_g1_leds_gpio),
- omy_g1_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, OMY_G1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(omy_g1_gpio_keys),
- omy_g1_gpio_keys);
-
- ath79_gpio_output_select(OMY_G1_GPIO_USB_POWER,
- AR934X_GPIO_OUT_GPIO);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-
- ath79_gpio_output_select(OMY_G1_GPIO_USB_POWER,
- AR934X_GPIO_OUT_GPIO);
-
- gpio_request_one(OMY_G1_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_OMY_G1, "OMY-G1", "OMYlink OMY-G1",
- omy_g1_setup);
+++ /dev/null
-/*
- * OMYlink OMY-X1 board support
- *
- * Copyright (C) 2016 L. D. Pinney <ldpinney@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-
-
-#define OMY_X1_GPIO_LED_POWER 19
-#define OMY_X1_GPIO_LED_WAN 22
-
-#define OMY_X1_GPIO_BTN_RESET 17
-
-#define OMY_X1_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OMY_X1_KEYS_DEBOUNCE_INTERVAL (3 * OMY_X1_KEYS_POLL_INTERVAL)
-
-static const char *omy_x1_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data omy_x1_flash_data = {
- .part_probes = omy_x1_part_probes,
-};
-
-static struct gpio_led omy_x1_leds_gpio[] __initdata = {
- {
- .name = "omy:green:wan",
- .gpio = OMY_X1_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "omy:green:power",
- .gpio = OMY_X1_GPIO_LED_POWER,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button omy_x1_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OMY_X1_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OMY_X1_GPIO_BTN_RESET,
- .active_low = 1,
- }
-};
-
-static void __init omy_x1_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
- AR934X_GPIO_FUNC_CLK_OBS4_EN);
-
- ath79_register_m25p80(&omy_x1_flash_data);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(omy_x1_leds_gpio),
- omy_x1_leds_gpio);
-
- ath79_register_gpio_keys_polled(1, OMY_X1_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(omy_x1_gpio_keys),
- omy_x1_gpio_keys);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
- ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- ath79_register_wmac(ee, mac);
-
-}
-
-MIPS_MACHINE(ATH79_MACH_OMY_X1, "OMY-X1", "OMYlink OMY-X1",
- omy_x1_setup);
+++ /dev/null
-/*
- * Onion Omega board support
- *
- * Copyright (C) 2015 Boken Lin <bl@onion.io>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define OMEGA_GPIO_LED_SYSTEM 27
-#define OMEGA_GPIO_BTN_RESET 11
-
-#define OMEGA_GPIO_USB_POWER 8
-
-#define OMEGA_KEYS_POLL_INTERVAL 20 /* msecs */
-#define OMEGA_KEYS_DEBOUNCE_INTERVAL (3 * OMEGA_KEYS_POLL_INTERVAL)
-
-static const char *omega_part_probes[] = {
- "tp-link",
- NULL,
-};
-
-static struct flash_platform_data omega_flash_data = {
- .part_probes = omega_part_probes,
-};
-
-static struct gpio_led omega_leds_gpio[] __initdata = {
- {
- .name = "onion:amber:system",
- .gpio = OMEGA_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button omega_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = OMEGA_KEYS_DEBOUNCE_INTERVAL,
- .gpio = OMEGA_GPIO_BTN_RESET,
- .active_low = 0,
- }
-};
-
-static void __init onion_omega_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
- u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
-
- ath79_register_m25p80(&omega_flash_data);
- ath79_register_leds_gpio(-1, ARRAY_SIZE(omega_leds_gpio),
- omega_leds_gpio);
- ath79_register_gpio_keys_polled(-1, OMEGA_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(omega_gpio_keys),
- omega_gpio_keys);
-
- gpio_request_one(OMEGA_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
-
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
-
- ath79_register_wmac(ee, mac);
-}
-
-MIPS_MACHINE(ATH79_MACH_ONION_OMEGA, "ONION-OMEGA", "Onion Omega", onion_omega_setup);
+++ /dev/null
-/*
- * Atheros PB42 board support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <asm/mach-ath79/ath79.h>
-
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define PB42_KEYS_POLL_INTERVAL 20 /* msecs */
-#define PB42_KEYS_DEBOUNCE_INTERVAL (3 * PB42_KEYS_POLL_INTERVAL)
-
-#define PB42_GPIO_BTN_SW4 8
-#define PB42_GPIO_BTN_SW5 3
-
-static struct gpio_keys_button pb42_gpio_keys[] __initdata = {
- {
- .desc = "sw4",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = PB42_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PB42_GPIO_BTN_SW4,
- .active_low = 1,
- }, {
- .desc = "sw5",
- .type = EV_KEY,
- .code = BTN_1,
- .debounce_interval = PB42_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PB42_GPIO_BTN_SW5,
- .active_low = 1,
- }
-};
-
-static const char *pb42_part_probes[] = {
- "RedBoot",
- NULL,
-};
-
-static struct flash_platform_data pb42_flash_data = {
- .part_probes = pb42_part_probes,
-};
-
-#define PB42_WAN_PHYMASK BIT(20)
-#define PB42_LAN_PHYMASK (BIT(16) | BIT(17) | BIT(18) | BIT(19))
-#define PB42_MDIO_PHYMASK (PB42_LAN_PHYMASK | PB42_WAN_PHYMASK)
-
-static void __init pb42_init(void)
-{
- ath79_register_m25p80(&pb42_flash_data);
-
- ath79_register_mdio(0, ~PB42_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = PB42_WAN_PHYMASK;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.speed = SPEED_100;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_register_gpio_keys_polled(-1, PB42_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(pb42_gpio_keys),
- pb42_gpio_keys);
-
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_PB42, "PB42", "Atheros PB42", pb42_init);
+++ /dev/null
-/*
- * PQI Air Pen stick support
- *
- * Copyright (C) 2016 YuheiOKAWA <tochiro.srchack@gmail.com>
- *
- * 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 <linux/gpio.h>
-
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define PQI_AIR_PEN_GPIO_LED_WLAN 0
-#define PQI_AIR_PEN_GPIO_LED_WPS 23
-
-#define PQI_AIR_PEN_GPIO_BTN_WPS 22
-#define PQI_AIR_PEN_GPIO_BTN_RESET 12
-
-#define PQI_AIR_PEN_KEYS_POLL_INTERVAL 20 /* msecs */
-#define PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL (3 * PQI_AIR_PEN_KEYS_POLL_INTERVAL)
-
-#define PQI_AIR_PEN_WMAC_CALDATA_OFFSET 0x1000
-#define PQI_AIR_PEN_LAN_MAC_OFFSET 0x1002
-#define PQI_AIR_PEN_WMAC_MAC_OFFSET 0x1002
-
-static struct gpio_led pqi_air_pen_leds_gpio[] __initdata = {
- {
- .name = "pqi-air-pen:blue:wlan",
- .gpio = PQI_AIR_PEN_GPIO_LED_WLAN,
- .active_low = 0,
- },
- {
- .name = "pqi-air-pen:blue:wps",
- .gpio = PQI_AIR_PEN_GPIO_LED_WPS,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button pqi_air_pen_gpio_keys[] __initdata = {
- {
- .desc = "wps",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PQI_AIR_PEN_GPIO_BTN_WPS,
- .active_low = 0,
- },
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = PQI_AIR_PEN_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PQI_AIR_PEN_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static void __init pqi_air_pen_setup(void)
-{
- /* ART base address */
- u8 *art = (u8 *) KSEG1ADDR(0x9f050000);
-
- /* register flash. */
- ath79_register_m25p80(NULL);
-
- /* register wireless mac with cal data */
- ath79_register_wmac(art + PQI_AIR_PEN_WMAC_CALDATA_OFFSET, art + PQI_AIR_PEN_WMAC_MAC_OFFSET);
-
- /* false PHY_SWAP and PHY_ADDR_SWAP bits */
- ath79_setup_ar933x_phy4_switch(false, false);
-
- /* register gpio LEDs and keys */
- ath79_register_leds_gpio(-1, ARRAY_SIZE(pqi_air_pen_leds_gpio),
- pqi_air_pen_leds_gpio);
- ath79_register_gpio_keys_polled(-1, PQI_AIR_PEN_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(pqi_air_pen_gpio_keys),
- pqi_air_pen_gpio_keys);
-
- /* enable usb */
- ath79_register_usb();
-
- /* register eth0 as LAN */
- ath79_init_mac(ath79_eth0_data.mac_addr, art + PQI_AIR_PEN_LAN_MAC_OFFSET, 0);
- ath79_register_mdio(0, 0x0);
- ath79_register_eth(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_PQI_AIR_PEN, "PQI-AIR-PEN", "PQI Air Pen",pqi_air_pen_setup);
+++ /dev/null
-/*
- * Qihoo 360 C301 board support
- *
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2014 Weijie Gao <hackpascal@gmail.com>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "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-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "nvram.h"
-
-#define QIHOO_C301_GPIO_LED_STATUS_GREEN 0
-#define QIHOO_C301_GPIO_LED_STATUS_RED 11
-
-#define QIHOO_C301_GPIO_LED_WAN 1
-#define QIHOO_C301_GPIO_LED_LAN1 2
-#define QIHOO_C301_GPIO_LED_LAN2 3
-#define QIHOO_C301_GPIO_ETH_LEN_EN 18
-
-#define QIHOO_C301_GPIO_BTN_RESET 16
-
-#define QIHOO_C301_GPIO_USB_POWER 19
-
-#define QIHOO_C301_GPIO_SPI_CS1 12
-
-#define QIHOO_C301_GPIO_EXTERNAL_LNA0 14
-#define QIHOO_C301_GPIO_EXTERNAL_LNA1 15
-
-#define QIHOO_C301_KEYS_POLL_INTERVAL 20 /* msecs */
-#define QIHOO_C301_KEYS_DEBOUNCE_INTERVAL \
- (3 * QIHOO_C301_KEYS_POLL_INTERVAL)
-
-#define QIHOO_C301_WMAC_CALDATA_OFFSET 0x1000
-
-#define QIHOO_C301_NVRAM_ADDR 0x1f058010
-#define QIHOO_C301_NVRAM_SIZE 0x7ff0
-
-static struct gpio_led qihoo_c301_leds_gpio[] __initdata = {
- {
- .name = "qihoo:green:status",
- .gpio = QIHOO_C301_GPIO_LED_STATUS_GREEN,
- .active_low = 1,
- },
- {
- .name = "qihoo:red:status",
- .gpio = QIHOO_C301_GPIO_LED_STATUS_RED,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button qihoo_c301_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = QIHOO_C301_KEYS_DEBOUNCE_INTERVAL,
- .gpio = QIHOO_C301_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct flash_platform_data flash __initdata = {NULL, NULL, 0};
-
-static void qihoo_c301_get_mac(const char *name, char *mac)
-{
- u8 *nvram = (u8 *) KSEG1ADDR(QIHOO_C301_NVRAM_ADDR);
- int err;
-
- err = ath79_nvram_parse_mac_addr(nvram, QIHOO_C301_NVRAM_SIZE,
- name, mac);
- if (err)
- pr_err("no MAC address found for %s\n", name);
-}
-
-static void __init qihoo_c301_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80_multi(&flash);
-
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_gpio_output_select(QIHOO_C301_GPIO_LED_WAN,
- AR934X_GPIO_OUT_LED_LINK4);
- ath79_gpio_output_select(QIHOO_C301_GPIO_LED_LAN1,
- AR934X_GPIO_OUT_LED_LINK1);
- ath79_gpio_output_select(QIHOO_C301_GPIO_LED_LAN2,
- AR934X_GPIO_OUT_LED_LINK2);
-
- ath79_gpio_output_select(QIHOO_C301_GPIO_SPI_CS1,
- AR934X_GPIO_OUT_SPI_CS1);
-
- gpio_request_one(QIHOO_C301_GPIO_ETH_LEN_EN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "Ethernet LED enable");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(qihoo_c301_leds_gpio),
- qihoo_c301_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, QIHOO_C301_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(qihoo_c301_gpio_keys),
- qihoo_c301_gpio_keys);
-
- ath79_wmac_set_ext_lna_gpio(0, QIHOO_C301_GPIO_EXTERNAL_LNA0);
- ath79_wmac_set_ext_lna_gpio(1, QIHOO_C301_GPIO_EXTERNAL_LNA1);
-
- qihoo_c301_get_mac("wlan24mac=", tmpmac);
- ath79_register_wmac(art + QIHOO_C301_WMAC_CALDATA_OFFSET, tmpmac);
-
- ath79_register_pci();
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE |
- AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- /* LAN */
- qihoo_c301_get_mac("lanmac=", ath79_eth1_data.mac_addr);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
-
- ath79_register_eth(1);
-
- /* WAN */
- qihoo_c301_get_mac("wanmac=", ath79_eth0_data.mac_addr);
-
- /* GMAC0 is connected to the PHY4 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
-
- ath79_register_eth(0);
-
- gpio_request_one(QIHOO_C301_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_QIHOO_C301, "QIHOO-C301", "Qihoo 360 C301",
- qihoo_c301_setup);
+++ /dev/null
-/*
- * ALFA Network R36A board support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define R36A_GPIO_LED_LAN 4
-#define R36A_GPIO_LED_STATUS 14
-#define R36A_GPIO_LED_USB 12
-#define R36A_GPIO_LED_WAN 16
-#define R36A_GPIO_LED_WLAN 15
-
-#define R36A_GPIO_WDT_EN 1
-#define R36A_GPIO_WDT_IN 0
-#define R36A_GPIO_USB_PWR 3
-
-#define R36A_GPIO_BTN_RESET 2
-#define R36A_GPIO_BTN_RFKILL 17
-
-#define R36A_KEYS_POLL_INTERVAL 20
-#define R36A_KEYS_DEBOUNCE_INTERVAL (3 * R36A_KEYS_POLL_INTERVAL)
-
-#define R36A_WMAC_CALDATA_OFFSET 0x1000
-
-static struct gpio_led r36a_leds_gpio[] __initdata = {
- {
- .name = "r36a:blue:lan",
- .gpio = R36A_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "r36a:blue:status",
- .gpio = R36A_GPIO_LED_STATUS,
- .active_low = 1,
- }, {
- .name = "r36a:blue:usb",
- .gpio = R36A_GPIO_LED_USB,
- .active_low = 1,
- }, {
- .name = "r36a:blue:wan",
- .gpio = R36A_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "r36a:blue:wlan",
- .gpio = R36A_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button r36a_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = R36A_KEYS_DEBOUNCE_INTERVAL,
- .gpio = R36A_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "rfkill",
- .type = EV_KEY,
- .code = KEY_RFKILL,
- .debounce_interval = R36A_KEYS_DEBOUNCE_INTERVAL,
- .gpio = R36A_GPIO_BTN_RFKILL,
- .active_low = 1,
- },
-};
-
-static void __init r36a_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f070000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = 0xf7;
-
- /* LAN */
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art, 0);
- ath79_register_eth(0);
-
- /* WAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_init_mac(ath79_eth1_data.mac_addr, art, 1);
- ath79_register_eth(1);
-
- /* Disable JTAG (enables GPIO0-3) */
- ath79_gpio_function_enable(AR934X_GPIO_FUNC_JTAG_DISABLE);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(r36a_leds_gpio),
- r36a_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, R36A_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(r36a_gpio_keys),
- r36a_gpio_keys);
-
- gpio_request_one(R36A_GPIO_WDT_IN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT input");
-
- gpio_request_one(R36A_GPIO_WDT_EN,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "WDT enable");
-
- gpio_request_one(R36A_GPIO_USB_PWR,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- ath79_register_wmac(art + R36A_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_R36A, "R36A", "ALFA Network R36A", r36a_setup);
+++ /dev/null
-/*
- * P&W (Shenzhen Progress&Win Technologies) R602N and CPE505N boards support
- *
- * Copyright (C) 2017 Piotr Dymacz <pepe2k@gmail.com>
- *
- * Based on mach-zbt-we1526.c
- *
- * 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 <linux/gpio.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define PW_GPIO_BTN_RESET 17
-
-#define PW_KEYS_POLL_INTERVAL 20 /* msecs */
-#define PW_KEYS_DEBOUNCE_INTERVAL (3 * PW_KEYS_POLL_INTERVAL)
-
-#define PW_MAC0_OFFSET 0x0
-#define PW_MAC1_OFFSET 0x6
-#define PW_WMAC_CALDATA_OFFSET 0x1000
-
-/* CPE505N GPIO LEDs */
-#define CPE505N_GPIO_LED_DIAG 12
-#define CPE505N_GPIO_LED_LAN 11
-#define CPE505N_GPIO_LED_STATUS 14
-#define CPE505N_GPIO_LED_WAN 4
-#define CPE505N_GPIO_LED_WLAN 15
-
-static struct gpio_led cpe505n_leds_gpio[] __initdata = {
- {
- .name = "cpe505n:red:diag",
- .gpio = CPE505N_GPIO_LED_DIAG,
- .active_low = 1,
- }, {
- .name = "cpe505n:green:lan",
- .gpio = CPE505N_GPIO_LED_LAN,
- .active_low = 1,
- }, {
- .name = "cpe505n:green:status",
- .gpio = CPE505N_GPIO_LED_STATUS,
- .active_low = 1,
- }, {
- .name = "cpe505n:green:wan",
- .gpio = CPE505N_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "cpe505n:blue:wlan",
- .gpio = CPE505N_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static void __init cpe505n_gpio_setup(void)
-{
- /* For LED on GPIO4 */
- ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
- ath79_gpio_output_select(CPE505N_GPIO_LED_WAN, 0);
-
- ath79_gpio_direction_select(CPE505N_GPIO_LED_DIAG, true);
- ath79_gpio_direction_select(CPE505N_GPIO_LED_LAN, true);
- ath79_gpio_direction_select(CPE505N_GPIO_LED_STATUS, true);
- ath79_gpio_direction_select(CPE505N_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(CPE505N_GPIO_LED_WLAN, true);
-
- /* Mute LEDs */
- gpio_set_value(CPE505N_GPIO_LED_DIAG, 1);
- gpio_set_value(CPE505N_GPIO_LED_LAN, 1);
- gpio_set_value(CPE505N_GPIO_LED_STATUS, 1);
- gpio_set_value(CPE505N_GPIO_LED_WAN, 1);
- gpio_set_value(CPE505N_GPIO_LED_WLAN, 1);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(cpe505n_leds_gpio),
- cpe505n_leds_gpio);
-}
-
-/* R602N GPIO LEDs */
-#define R602N_GPIO_LED_LAN1 16
-#define R602N_GPIO_LED_LAN2 15
-#define R602N_GPIO_LED_LAN3 14
-#define R602N_GPIO_LED_LAN4 11
-#define R602N_GPIO_LED_WAN 4
-#define R602N_GPIO_LED_WLAN 12
-
-static struct gpio_led r602n_leds_gpio[] __initdata = {
- {
- .name = "r602n:green:lan1",
- .gpio = R602N_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "r602n:green:lan2",
- .gpio = R602N_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "r602n:green:lan3",
- .gpio = R602N_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "r602n:green:lan4",
- .gpio = R602N_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "r602n:green:wan",
- .gpio = R602N_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "r602n:green:wlan",
- .gpio = R602N_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static void __init r602n_gpio_setup(void)
-{
- /* For LED on GPIO4 */
- ath79_gpio_function_disable(AR934X_GPIO_FUNC_CLK_OBS4_EN);
- ath79_gpio_output_select(R602N_GPIO_LED_WAN, 0);
-
- ath79_gpio_direction_select(R602N_GPIO_LED_LAN1, true);
- ath79_gpio_direction_select(R602N_GPIO_LED_LAN2, true);
- ath79_gpio_direction_select(R602N_GPIO_LED_LAN3, true);
- ath79_gpio_direction_select(R602N_GPIO_LED_LAN4, true);
- ath79_gpio_direction_select(R602N_GPIO_LED_WAN, true);
- ath79_gpio_direction_select(R602N_GPIO_LED_WLAN, true);
-
- /* Mute LEDs */
- gpio_set_value(R602N_GPIO_LED_LAN1, 1);
- gpio_set_value(R602N_GPIO_LED_LAN2, 1);
- gpio_set_value(R602N_GPIO_LED_LAN3, 1);
- gpio_set_value(R602N_GPIO_LED_LAN4, 1);
- gpio_set_value(R602N_GPIO_LED_WAN, 1);
- gpio_set_value(R602N_GPIO_LED_WLAN, 1);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(r602n_leds_gpio),
- r602n_leds_gpio);
-}
-
-static struct gpio_keys_button pw_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = PW_KEYS_DEBOUNCE_INTERVAL,
- .gpio = PW_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static void __init r602n_cpe505n_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
-
- ath79_setup_ar933x_phy4_switch(false, false);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN */
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_switch_data.phy_poll_mask |= BIT(4);
- ath79_init_mac(ath79_eth1_data.mac_addr, art + PW_MAC1_OFFSET, 0);
- ath79_register_eth(1);
-
- /* WAN */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_eth0_data.duplex = DUPLEX_FULL;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.speed = SPEED_100;
- ath79_init_mac(ath79_eth0_data.mac_addr, art + PW_MAC0_OFFSET, 0);
- ath79_register_eth(0);
-
- ath79_register_wmac(art + PW_WMAC_CALDATA_OFFSET, NULL);
-
- ath79_register_gpio_keys_polled(-1, PW_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(pw_gpio_keys),
- pw_gpio_keys);
-}
-
-static void __init cpe505n_setup(void)
-{
- r602n_cpe505n_setup();
-
- cpe505n_gpio_setup();
-}
-
-static void __init r602n_setup(void)
-{
- r602n_cpe505n_setup();
-
- r602n_gpio_setup();
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_CPE505N, "CPE505N", "P&W CPE505N", cpe505n_setup);
-MIPS_MACHINE(ATH79_MACH_R602N, "R602N", "P&W R602N", r602n_setup);
+++ /dev/null
-/*
- * NETGEAR R6100 board support
- *
- * Copyright (C) 2014 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2014 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/platform/ar934x_nfc.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-nfc.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define R6100_GPIO_LED_WLAN 0
-#define R6100_GPIO_LED_USB 11
-#define R6100_GPIO_LED_WAN_GREEN 13
-#define R6100_GPIO_LED_POWER_AMBER 14
-#define R6100_GPIO_LED_WAN_AMBER 15
-#define R6100_GPIO_LED_POWER_GREEN 17
-
-#define R6100_GPIO_BTN_WIRELESS 1
-#define R6100_GPIO_BTN_WPS 3
-#define R6100_GPIO_BTN_RESET 12
-
-#define R6100_GPIO_USB_POWER 16
-
-#define R6100_KEYS_POLL_INTERVAL 20 /* msecs */
-#define R6100_KEYS_DEBOUNCE_INTERVAL (3 * R6100_KEYS_POLL_INTERVAL)
-
-static struct gpio_led r6100_leds_gpio[] __initdata = {
- {
- .name = "netgear:green:power",
- .gpio = R6100_GPIO_LED_POWER_GREEN,
- .active_low = 1,
- },
- {
- .name = "netgear:amber:power",
- .gpio = R6100_GPIO_LED_POWER_AMBER,
- .active_low = 1,
- },
- {
- .name = "netgear:green:wan",
- .gpio = R6100_GPIO_LED_WAN_GREEN,
- .active_low = 1,
- },
- {
- .name = "netgear:amber:wan",
- .gpio = R6100_GPIO_LED_WAN_AMBER,
- .active_low = 1,
- },
- {
- .name = "netgear:blue:usb",
- .gpio = R6100_GPIO_LED_USB,
- .active_low = 1,
- },
- {
- .name = "netgear:blue:wlan",
- .gpio = R6100_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button r6100_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = R6100_KEYS_DEBOUNCE_INTERVAL,
- .gpio = R6100_GPIO_BTN_RESET,
- .active_low = 0,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = R6100_KEYS_DEBOUNCE_INTERVAL,
- .gpio = R6100_GPIO_BTN_WPS,
- .active_low = 0,
- },
- {
- .desc = "RFKILL switch",
- .type = EV_SW,
- .code = KEY_RFKILL,
- .debounce_interval = R6100_KEYS_DEBOUNCE_INTERVAL,
- .gpio = R6100_GPIO_BTN_WIRELESS,
- .active_low = 0,
- },
-};
-
-static void __init r6100_setup(void)
-{
- ath79_register_leds_gpio(-1, ARRAY_SIZE(r6100_leds_gpio),
- r6100_leds_gpio);
- ath79_register_gpio_keys_polled(-1, R6100_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(r6100_gpio_keys),
- r6100_gpio_keys);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
-
- ath79_register_mdio(1, 0x0);
-
- /* GMAC0 is connected to the PHY0 of the internal switch */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- gpio_request_one(R6100_GPIO_USB_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
- ath79_register_nfc();
-
- ath79_register_usb();
-
- ath79_register_wmac_simple();
-
- ap91_pci_init_simple();
-}
-
-MIPS_MACHINE(ATH79_MACH_R6100, "R6100", "NETGEAR R6100",
- r6100_setup);
+++ /dev/null
-/*
- * 8devices Rambutan board support
- *
- * Copyright (C) 2017 Mantas Pucka <mantas@8devices.com>
- *
- * 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 <linux/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <linux/platform/ar934x_nfc.h>
-#include <linux/ar8216_platform.h>
-#include <linux/platform_data/phy-at803x.h>
-#include "common.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-nfc.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-static struct at803x_platform_data rambutan_ar8032_data = {
- .has_reset_gpio = 1,
- .reset_gpio = 17,
-};
-
-static struct mdio_board_info rambutan_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rambutan_ar8032_data,
- },
-};
-
-static struct at803x_platform_data rambutan_ar8033_data = {
- .has_reset_gpio = 1,
- .override_sgmii_aneg = 1,
- .reset_gpio = 23,
-};
-
-static struct mdio_board_info rambutan_mdio1_info[] = {
- {
- .bus_id = "ag71xx-mdio.1",
- .mdio_addr = 0,
- .platform_data = &rambutan_ar8033_data,
- },
-};
-
-static void __init rambutan_setup(void)
-{
- ath79_nfc_set_ecc_mode(AR934X_NFC_ECC_HW);
- ath79_register_nfc();
- ath79_register_usb();
- ath79_register_pci();
- ath79_register_wmac_simple();
-
- mdiobus_register_board_info(rambutan_mdio0_info,
- ARRAY_SIZE(rambutan_mdio0_info));
- mdiobus_register_board_info(rambutan_mdio1_info,
- ARRAY_SIZE(rambutan_mdio1_info));
- ath79_register_mdio(0, 0x0);
- ath79_register_mdio(1, 0x0);
-
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_register_eth(0);
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.phy_mask = BIT(0);
- ath79_eth1_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_eth1_data.enable_sgmii_fixup = 1;
- ath79_eth1_pll_data.pll_1000 = 0x17000000;
- ath79_eth1_pll_data.pll_10 = 0x1313;
- ath79_register_eth(1);
-}
-
-MIPS_MACHINE(ATH79_MACH_RAMBUTAN, "RAMBUTAN", "8devices Rambutan board",
- rambutan_setup);
-
+++ /dev/null
-/*
- * MikroTik RouterBOARD 2011 support
- *
- * Copyright (C) 2012 Stijn Tintel <stijn@linux-ipv6.be>
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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.
- */
-
-#define pr_fmt(fmt) "rb2011: " fmt
-
-#include <linux/version.h>
-#include <linux/phy.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-#include <linux/version.h>
-
-#include <asm/prom.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-m25p80.h"
-#include "dev-nfc.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "routerboot.h"
-
-#define RB2011_GPIO_NAND_NCE 14
-#define RB2011_GPIO_SFP_LOS 21
-
-#define RB_ROUTERBOOT_OFFSET 0x0000
-#define RB_ROUTERBOOT_MIN_SIZE 0xb000
-#define RB_HARD_CFG_SIZE 0x1000
-#define RB_BIOS_OFFSET 0xd000
-#define RB_BIOS_SIZE 0x1000
-#define RB_SOFT_CFG_OFFSET 0xf000
-#define RB_SOFT_CFG_SIZE 0x1000
-
-#define RB_ART_SIZE 0x10000
-
-#define RB2011_FLAG_SFP BIT(0)
-#define RB2011_FLAG_USB BIT(1)
-#define RB2011_FLAG_WLAN BIT(2)
-
-static struct mtd_partition rb2011_spi_partitions[] = {
- {
- .name = "routerboot",
- .offset = RB_ROUTERBOOT_OFFSET,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "hard_config",
- .size = RB_HARD_CFG_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "bios",
- .offset = RB_BIOS_OFFSET,
- .size = RB_BIOS_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "soft_config",
- .size = RB_SOFT_CFG_SIZE,
- }
-};
-
-static void __init rb2011_init_partitions(const struct rb_info *info)
-{
- rb2011_spi_partitions[0].size = info->hard_cfg_offs;
- rb2011_spi_partitions[1].offset = info->hard_cfg_offs;
- rb2011_spi_partitions[3].offset = info->soft_cfg_offs;
-}
-
-static struct mtd_partition rb2011_nand_partitions[] = {
- {
- .name = "booter",
- .offset = 0,
- .size = (256 * 1024),
- .mask_flags = MTD_WRITEABLE,
- },
- {
- .name = "kernel",
- .offset = (256 * 1024),
- .size = (4 * 1024 * 1024) - (256 * 1024),
- },
- {
- .name = "ubi",
- .offset = MTDPART_OFS_NXTBLK,
- .size = MTDPART_SIZ_FULL,
- },
-};
-
-static struct flash_platform_data rb2011_spi_flash_data = {
- .parts = rb2011_spi_partitions,
- .nr_parts = ARRAY_SIZE(rb2011_spi_partitions),
-};
-
-static struct ar8327_pad_cfg rb2011_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL3,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_pad_cfg rb2011_ar8327_pad6_cfg;
-static struct ar8327_sgmii_cfg rb2011_ar8327_sgmii_cfg;
-
-static struct ar8327_led_cfg rb2011_ar8327_led_cfg = {
- .led_ctrl0 = 0xc731c731,
- .led_ctrl1 = 0x00000000,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x0030c300,
- .open_drain = false,
-};
-
-static const struct ar8327_led_info rb2011_ar8327_leds[] = {
- AR8327_LED_INFO(PHY0_0, HW, "rb:green:eth1"),
- AR8327_LED_INFO(PHY1_0, HW, "rb:green:eth2"),
- AR8327_LED_INFO(PHY2_0, HW, "rb:green:eth3"),
- AR8327_LED_INFO(PHY3_0, HW, "rb:green:eth4"),
- AR8327_LED_INFO(PHY4_0, HW, "rb:green:eth5"),
- AR8327_LED_INFO(PHY0_1, SW, "rb:green:eth6"),
- AR8327_LED_INFO(PHY1_1, SW, "rb:green:eth7"),
- AR8327_LED_INFO(PHY2_1, SW, "rb:green:eth8"),
- AR8327_LED_INFO(PHY3_1, SW, "rb:green:eth9"),
- AR8327_LED_INFO(PHY4_1, SW, "rb:green:eth10"),
- AR8327_LED_INFO(PHY4_2, SW, "rb:green:usr"),
-};
-
-static struct ar8327_platform_data rb2011_ar8327_data = {
- .pad0_cfg = &rb2011_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &rb2011_ar8327_led_cfg,
- .num_leds = ARRAY_SIZE(rb2011_ar8327_leds),
- .leds = rb2011_ar8327_leds,
-};
-
-static struct mdio_board_info rb2011_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rb2011_ar8327_data,
- },
-};
-
-static void __init rb2011_wlan_init(void)
-{
- char *art_buf;
- u8 wlan_mac[ETH_ALEN];
-
- art_buf = rb_get_wlan_data();
- if (art_buf == NULL)
- return;
-
- ath79_init_mac(wlan_mac, ath79_mac_base, 11);
- ath79_register_wmac(art_buf + 0x1000, wlan_mac);
-
- kfree(art_buf);
-}
-
-static void rb2011_nand_select_chip(int chip_no)
-{
- switch (chip_no) {
- case 0:
- gpio_set_value(RB2011_GPIO_NAND_NCE, 0);
- break;
- default:
- gpio_set_value(RB2011_GPIO_NAND_NCE, 1);
- break;
- }
- ndelay(500);
-}
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
-static struct nand_ecclayout rb2011_nand_ecclayout = {
- .eccbytes = 6,
- .eccpos = { 8, 9, 10, 13, 14, 15 },
- .oobavail = 9,
- .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1 } }
-};
-
-#else
-
-static int rb2011_ooblayout_ecc(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 8;
- oobregion->length = 3;
- return 0;
- case 1:
- oobregion->offset = 13;
- oobregion->length = 3;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static int rb2011_ooblayout_free(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 0;
- oobregion->length = 4;
- return 0;
- case 1:
- oobregion->offset = 4;
- oobregion->length = 1;
- return 0;
- case 2:
- oobregion->offset = 6;
- oobregion->length = 2;
- return 0;
- case 3:
- oobregion->offset = 11;
- oobregion->length = 2;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static const struct mtd_ooblayout_ops rb2011_nand_ecclayout_ops = {
- .ecc = rb2011_ooblayout_ecc,
- .free = rb2011_ooblayout_free,
-};
-#endif /* < 4.6 */
-
-static int rb2011_nand_scan_fixup(struct mtd_info *mtd)
-{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- struct nand_chip *chip = mtd->priv;
-#else
- struct nand_chip *chip = mtd_to_nand(mtd);
-#endif /* < 4.6.0 */
-
- if (mtd->writesize == 512) {
- /*
- * Use the OLD Yaffs-1 OOB layout, otherwise RouterBoot
- * will not be able to find the kernel that we load.
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- chip->ecc.layout = &rb2011_nand_ecclayout;
-#else
- mtd_set_ooblayout(mtd, &rb2011_nand_ecclayout_ops);
-#endif
- }
-
- chip->options = NAND_NO_SUBPAGE_WRITE;
-
- return 0;
-}
-
-static void __init rb2011_nand_init(void)
-{
- gpio_request_one(RB2011_GPIO_NAND_NCE, GPIOF_OUT_INIT_HIGH, "NAND nCE");
-
- ath79_nfc_set_scan_fixup(rb2011_nand_scan_fixup);
- ath79_nfc_set_parts(rb2011_nand_partitions,
- ARRAY_SIZE(rb2011_nand_partitions));
- ath79_nfc_set_select_chip(rb2011_nand_select_chip);
- ath79_nfc_set_swap_dma(true);
- ath79_register_nfc();
-}
-
-static int rb2011_get_port_link(unsigned port)
-{
- if (port != 6)
- return -EINVAL;
-
- /* The Loss of signal line is active low */
- return !gpio_get_value(RB2011_GPIO_SFP_LOS);
-}
-
-static void __init rb2011_sfp_init(void)
-{
- gpio_request_one(RB2011_GPIO_SFP_LOS, GPIOF_IN, "SFP LOS");
-
- rb2011_ar8327_pad6_cfg.mode = AR8327_PAD_MAC_SGMII;
-
- rb2011_ar8327_data.pad6_cfg = &rb2011_ar8327_pad6_cfg;
-
- rb2011_ar8327_sgmii_cfg.sgmii_ctrl = 0xc70167d0;
- rb2011_ar8327_sgmii_cfg.serdes_aen = true;
-
- rb2011_ar8327_data.sgmii_cfg = &rb2011_ar8327_sgmii_cfg;
-
- rb2011_ar8327_data.port6_cfg.force_link = 1;
- rb2011_ar8327_data.port6_cfg.speed = AR8327_PORT_SPEED_1000;
- rb2011_ar8327_data.port6_cfg.duplex = 1;
-
- rb2011_ar8327_data.get_port_link = rb2011_get_port_link;
-}
-
-static int __init rb2011_setup(u32 flags)
-{
- const struct rb_info *info;
- char buf[64];
-
- info = rb_init_info((void *) KSEG1ADDR(0x1f000000), 0x10000);
- if (!info)
- return -ENODEV;
-
- scnprintf(buf, sizeof(buf), "Mikrotik RouterBOARD %s",
- (info->board_name) ? info->board_name : "");
- mips_set_machine_name(buf);
-
- rb2011_init_partitions(info);
-
- ath79_register_m25p80(&rb2011_spi_flash_data);
- rb2011_nand_init();
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_RXD_DELAY |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(rb2011_mdio0_info,
- ARRAY_SIZE(rb2011_mdio0_info));
-
- /* GMAC0 is connected to an ar8327 switch */
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 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 = 0x6f000000;
-
- ath79_register_eth(0);
-
- /* GMAC1 is connected to the internal switch */
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 5);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(1);
-
- if (flags & RB2011_FLAG_SFP)
- rb2011_sfp_init();
-
- if (flags & RB2011_FLAG_WLAN)
- rb2011_wlan_init();
-
- if (flags & RB2011_FLAG_USB)
- ath79_register_usb();
-
- return 0;
-}
-
-static void __init rb2011l_setup(void)
-{
- rb2011_setup(0);
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_2011L, "2011L", rb2011l_setup);
-
-static void __init rb2011us_setup(void)
-{
- rb2011_setup(RB2011_FLAG_SFP | RB2011_FLAG_USB);
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_2011US, "2011US", rb2011us_setup);
-
-static void __init rb2011r5_setup(void)
-{
- rb2011_setup(RB2011_FLAG_SFP | RB2011_FLAG_USB | RB2011_FLAG_WLAN);
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_2011R5, "2011r5", rb2011r5_setup);
-
-static void __init rb2011g_setup(void)
-{
- rb2011_setup(RB2011_FLAG_SFP |
- RB2011_FLAG_USB |
- RB2011_FLAG_WLAN);
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_2011G, "2011G", rb2011g_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD 4xx series support
- *
- * Copyright (C) 2008-2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
- *
- * 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 <linux/platform_device.h>
-#include <linux/irq.h>
-#include <linux/platform_data/mdio-gpio.h>
-#include <linux/mmc/host.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/spi/mmc_spi.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/rb4xx_cpld.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define RB4XX_GPIO_USER_LED 4
-#define RB4XX_GPIO_RESET_SWITCH 7
-
-#define RB4XX_GPIO_CPLD_BASE 32
-#define RB4XX_GPIO_CPLD_LED1 (RB4XX_GPIO_CPLD_BASE + CPLD_GPIO_nLED1)
-#define RB4XX_GPIO_CPLD_LED2 (RB4XX_GPIO_CPLD_BASE + CPLD_GPIO_nLED2)
-#define RB4XX_GPIO_CPLD_LED3 (RB4XX_GPIO_CPLD_BASE + CPLD_GPIO_nLED3)
-#define RB4XX_GPIO_CPLD_LED4 (RB4XX_GPIO_CPLD_BASE + CPLD_GPIO_nLED4)
-#define RB4XX_GPIO_CPLD_LED5 (RB4XX_GPIO_CPLD_BASE + CPLD_GPIO_nLED5)
-
-#define RB4XX_KEYS_POLL_INTERVAL 20 /* msecs */
-#define RB4XX_KEYS_DEBOUNCE_INTERVAL (3 * RB4XX_KEYS_POLL_INTERVAL)
-
-static struct gpio_led rb4xx_leds_gpio[] __initdata = {
- {
- .name = "rb4xx:yellow:user",
- .gpio = RB4XX_GPIO_USER_LED,
- .active_low = 0,
- }, {
- .name = "rb4xx:green:led1",
- .gpio = RB4XX_GPIO_CPLD_LED1,
- .active_low = 1,
- }, {
- .name = "rb4xx:green:led2",
- .gpio = RB4XX_GPIO_CPLD_LED2,
- .active_low = 1,
- }, {
- .name = "rb4xx:green:led3",
- .gpio = RB4XX_GPIO_CPLD_LED3,
- .active_low = 1,
- }, {
- .name = "rb4xx:green:led4",
- .gpio = RB4XX_GPIO_CPLD_LED4,
- .active_low = 1,
- }, {
- .name = "rb4xx:green:led5",
- .gpio = RB4XX_GPIO_CPLD_LED5,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button rb4xx_gpio_keys[] __initdata = {
- {
- .desc = "reset_switch",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RB4XX_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RB4XX_GPIO_RESET_SWITCH,
- .active_low = 1,
- }
-};
-
-static struct platform_device rb4xx_nand_device = {
- .name = "rb4xx-nand",
- .id = -1,
-};
-
-static struct ath79_pci_irq rb4xx_pci_irqs[] = {
- {
- .slot = 17,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(2),
- }, {
- .slot = 18,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(0),
- }, {
- .slot = 18,
- .pin = 2,
- .irq = ATH79_PCI_IRQ(1),
- }, {
- .slot = 19,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(1),
- }, {
- .slot = 19,
- .pin = 2,
- .irq = ATH79_PCI_IRQ(2),
- }, {
- .slot = 20,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(2),
- }, {
- .slot = 20,
- .pin = 2,
- .irq = ATH79_PCI_IRQ(0),
- }, {
- .slot = 21,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(0),
- }, {
- .slot = 22,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(1),
- }, {
- .slot = 22,
- .pin = 2,
- .irq = ATH79_PCI_IRQ(2),
- }, {
- .slot = 23,
- .pin = 1,
- .irq = ATH79_PCI_IRQ(2),
- }, {
- .slot = 23,
- .pin = 2,
- .irq = ATH79_PCI_IRQ(0),
- }
-};
-
-static struct mtd_partition rb4xx_partitions[] = {
- {
- .name = "routerboot",
- .offset = 0,
- .size = 0x0b000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "hard_config",
- .offset = 0x0b000,
- .size = 0x01000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "bios",
- .offset = 0x0d000,
- .size = 0x02000,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "soft_config",
- .offset = 0x0f000,
- .size = 0x01000,
- }
-};
-
-static struct flash_platform_data rb4xx_flash_data = {
- .type = "pm25lv512",
- .parts = rb4xx_partitions,
- .nr_parts = ARRAY_SIZE(rb4xx_partitions),
-};
-
-static struct rb4xx_cpld_platform_data rb4xx_cpld_data = {
- .gpio_base = RB4XX_GPIO_CPLD_BASE,
-};
-
-static struct mmc_spi_platform_data rb4xx_mmc_data = {
- .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
-};
-
-static struct spi_board_info rb4xx_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- .platform_data = &rb4xx_flash_data,
- }, {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 25000000,
- .modalias = "spi-rb4xx-cpld",
- .platform_data = &rb4xx_cpld_data,
- }
-};
-
-static struct spi_board_info rb4xx_microsd_info[] = {
- {
- .bus_num = 0,
- .chip_select = 2,
- .max_speed_hz = 25000000,
- .modalias = "mmc_spi",
- .platform_data = &rb4xx_mmc_data,
- }
-};
-
-
-static struct resource rb4xx_spi_resources[] = {
- {
- .start = AR71XX_SPI_BASE,
- .end = AR71XX_SPI_BASE + AR71XX_SPI_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
-};
-
-static struct platform_device rb4xx_spi_device = {
- .name = "rb4xx-spi",
- .id = -1,
- .resource = rb4xx_spi_resources,
- .num_resources = ARRAY_SIZE(rb4xx_spi_resources),
-};
-
-static void __init rb4xx_generic_setup(void)
-{
- ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN |
- AR71XX_GPIO_FUNC_SPI_CS2_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
- rb4xx_leds_gpio);
-
- ath79_register_gpio_keys_polled(-1, RB4XX_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rb4xx_gpio_keys),
- rb4xx_gpio_keys);
-
- spi_register_board_info(rb4xx_spi_info, ARRAY_SIZE(rb4xx_spi_info));
- platform_device_register(&rb4xx_spi_device);
- platform_device_register(&rb4xx_nand_device);
-}
-
-static void __init rb411_setup(void)
-{
- rb4xx_generic_setup();
- spi_register_board_info(rb4xx_microsd_info,
- ARRAY_SIZE(rb4xx_microsd_info));
-
- ath79_register_mdio(0, 0xfffffffc);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = 0x00000003;
-
- ath79_register_eth(0);
-
- ath79_pci_set_irq_map(ARRAY_SIZE(rb4xx_pci_irqs), rb4xx_pci_irqs);
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_411, "411", "MikroTik RouterBOARD 411/A/AH",
- rb411_setup);
-
-static void __init rb411u_setup(void)
-{
- rb411_setup();
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_411U, "411U", "MikroTik RouterBOARD 411U",
- rb411u_setup);
-
-#define RB433_LAN_PHYMASK BIT(0)
-#define RB433_WAN_PHYMASK BIT(4)
-#define RB433_MDIO_PHYMASK (RB433_LAN_PHYMASK | RB433_WAN_PHYMASK)
-
-static void __init rb433_setup(void)
-{
- rb4xx_generic_setup();
- spi_register_board_info(rb4xx_microsd_info,
- ARRAY_SIZE(rb4xx_microsd_info));
-
- ath79_register_mdio(0, ~RB433_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 1);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = RB433_LAN_PHYMASK;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = RB433_WAN_PHYMASK;
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_pci_set_irq_map(ARRAY_SIZE(rb4xx_pci_irqs), rb4xx_pci_irqs);
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_433, "433", "MikroTik RouterBOARD 433/AH",
- rb433_setup);
-
-static void __init rb433u_setup(void)
-{
- rb433_setup();
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_433U, "433U", "MikroTik RouterBOARD 433UAH",
- rb433u_setup);
-
-static void __init rb435g_setup(void)
-{
- rb4xx_generic_setup();
-
- spi_register_board_info(rb4xx_microsd_info,
- ARRAY_SIZE(rb4xx_microsd_info));
-
- ath79_register_mdio(0, ~RB433_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 1);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = RB433_LAN_PHYMASK;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.phy_mask = RB433_WAN_PHYMASK;
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_pci_set_irq_map(ARRAY_SIZE(rb4xx_pci_irqs), rb4xx_pci_irqs);
- ath79_register_pci();
-
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_435G, "435G", "MikroTik RouterBOARD 435G",
- rb435g_setup);
-
-#define RB450_LAN_PHYMASK BIT(0)
-#define RB450_WAN_PHYMASK BIT(4)
-#define RB450_MDIO_PHYMASK (RB450_LAN_PHYMASK | RB450_WAN_PHYMASK)
-
-static void __init rb450_generic_setup(int gige)
-{
- rb4xx_generic_setup();
- ath79_register_mdio(0, ~RB450_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 1);
- ath79_eth0_data.phy_if_mode = (gige) ?
- PHY_INTERFACE_MODE_RGMII : PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = RB450_LAN_PHYMASK;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
- ath79_eth1_data.phy_if_mode = (gige) ?
- PHY_INTERFACE_MODE_RGMII : PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = RB450_WAN_PHYMASK;
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-}
-
-static void __init rb450_setup(void)
-{
- rb450_generic_setup(0);
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_450, "450", "MikroTik RouterBOARD 450",
- rb450_setup);
-
-static void __init rb450g_setup(void)
-{
- rb450_generic_setup(1);
- spi_register_board_info(rb4xx_microsd_info,
- ARRAY_SIZE(rb4xx_microsd_info));
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_450G, "450G", "MikroTik RouterBOARD 450G",
- rb450g_setup);
-
-static void __init rb493_setup(void)
-{
- rb4xx_generic_setup();
-
- ath79_register_mdio(0, 0x3fffff00);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.speed = SPEED_100;
- ath79_eth0_data.duplex = DUPLEX_FULL;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
- ath79_eth1_data.phy_mask = 0x00000001;
-
- ath79_register_eth(0);
- ath79_register_eth(1);
-
- ath79_pci_set_irq_map(ARRAY_SIZE(rb4xx_pci_irqs), rb4xx_pci_irqs);
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_493, "493", "MikroTik RouterBOARD 493/AH",
- rb493_setup);
-
-#define RB493G_GPIO_MDIO_MDC 7
-#define RB493G_GPIO_MDIO_DATA 8
-
-#define RB493G_MDIO_PHYMASK BIT(0)
-
-static struct mdio_gpio_platform_data rb493g_mdio_data = {
- .mdc = RB493G_GPIO_MDIO_MDC,
- .mdio = RB493G_GPIO_MDIO_DATA,
-
- .phy_mask = ~RB493G_MDIO_PHYMASK,
-};
-
-static struct platform_device rb493g_mdio_device = {
- .name = "mdio-gpio",
- .id = -1,
- .dev = {
- .platform_data = &rb493g_mdio_data,
- },
-};
-
-static void __init rb493g_setup(void)
-{
- ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN |
- AR71XX_GPIO_FUNC_SPI_CS2_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb4xx_leds_gpio),
- rb4xx_leds_gpio);
-
- spi_register_board_info(rb4xx_spi_info, ARRAY_SIZE(rb4xx_spi_info));
- spi_register_board_info(rb4xx_microsd_info,
- ARRAY_SIZE(rb4xx_microsd_info));
-
- platform_device_register(&rb4xx_spi_device);
- platform_device_register(&rb4xx_nand_device);
-
- ath79_register_mdio(0, ~RB493G_MDIO_PHYMASK);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = RB493G_MDIO_PHYMASK;
- ath79_eth0_data.speed = SPEED_1000;
- ath79_eth0_data.duplex = DUPLEX_FULL;
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth1_data.mii_bus_dev = &rb493g_mdio_device.dev;
- ath79_eth1_data.phy_mask = RB493G_MDIO_PHYMASK;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- platform_device_register(&rb493g_mdio_device);
-
- ath79_register_eth(1);
- ath79_register_eth(0);
-
- ath79_register_usb();
-
- ath79_pci_set_irq_map(ARRAY_SIZE(rb4xx_pci_irqs), rb4xx_pci_irqs);
- ath79_register_pci();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_493G, "493G", "MikroTik RouterBOARD 493G",
- rb493g_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD 750/750GL support
- *
- * Copyright (C) 2010-2012 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/export.h>
-#include <linux/pci.h>
-#include <linux/ath9k_platform.h>
-#include <linux/platform_device.h>
-#include <linux/phy.h>
-#include <linux/ar8216_platform.h>
-#include <linux/rle.h>
-#include <linux/routerboot.h>
-
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/irq.h>
-#include <asm/mach-ath79/mach-rb750.h>
-
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-usb.h"
-#include "dev-eth.h"
-#include "machtypes.h"
-#include "routerboot.h"
-
-static struct rb750_led_data rb750_leds[] = {
- {
- .name = "rb750:green:act",
- .mask = RB750_LED_ACT,
- .active_low = 1,
- }, {
- .name = "rb750:green:port1",
- .mask = RB750_LED_PORT5,
- .active_low = 1,
- }, {
- .name = "rb750:green:port2",
- .mask = RB750_LED_PORT4,
- .active_low = 1,
- }, {
- .name = "rb750:green:port3",
- .mask = RB750_LED_PORT3,
- .active_low = 1,
- }, {
- .name = "rb750:green:port4",
- .mask = RB750_LED_PORT2,
- .active_low = 1,
- }, {
- .name = "rb750:green:port5",
- .mask = RB750_LED_PORT1,
- .active_low = 1,
- }
-};
-
-static struct rb750_led_data rb750gr3_leds[] = {
- {
- .name = "rb750:green:act",
- .mask = RB7XX_LED_ACT,
- .active_low = 1,
- },
-};
-
-static struct rb750_led_platform_data rb750_leds_data;
-static struct platform_device rb750_leds_device = {
- .name = "leds-rb750",
- .dev = {
- .platform_data = &rb750_leds_data,
- }
-};
-
-static struct rb7xx_nand_platform_data rb750_nand_data;
-static struct platform_device rb750_nand_device = {
- .name = "rb750-nand",
- .id = -1,
- .dev = {
- .platform_data = &rb750_nand_data,
- }
-};
-
-static void rb750_latch_change(u32 mask_clr, u32 mask_set)
-{
- static DEFINE_SPINLOCK(lock);
- static u32 latch_set = RB750_LED_BITS | RB750_LVC573_LE;
- static u32 latch_oe;
- static u32 latch_clr;
- unsigned long flags;
- u32 t;
-
- spin_lock_irqsave(&lock, flags);
-
- if ((mask_clr & BIT(31)) != 0 &&
- (latch_set & RB750_LVC573_LE) == 0) {
- goto unlock;
- }
-
- latch_set = (latch_set | mask_set) & ~mask_clr;
- latch_clr = (latch_clr | mask_clr) & ~mask_set;
-
- if (latch_oe == 0)
- latch_oe = __raw_readl(ath79_gpio_base + AR71XX_GPIO_REG_OE);
-
- if (likely(latch_set & RB750_LVC573_LE)) {
- void __iomem *base = ath79_gpio_base;
-
- t = __raw_readl(base + AR71XX_GPIO_REG_OE);
- t |= mask_clr | latch_oe | mask_set;
-
- __raw_writel(t, base + AR71XX_GPIO_REG_OE);
- __raw_writel(latch_clr, base + AR71XX_GPIO_REG_CLEAR);
- __raw_writel(latch_set, base + AR71XX_GPIO_REG_SET);
- } else if (mask_clr & RB750_LVC573_LE) {
- void __iomem *base = ath79_gpio_base;
-
- latch_oe = __raw_readl(base + AR71XX_GPIO_REG_OE);
- __raw_writel(RB750_LVC573_LE, base + AR71XX_GPIO_REG_CLEAR);
- /* flush write */
- __raw_readl(base + AR71XX_GPIO_REG_CLEAR);
- }
-
-unlock:
- spin_unlock_irqrestore(&lock, flags);
-}
-
-static void rb750_nand_enable_pins(void)
-{
- rb750_latch_change(RB750_LVC573_LE, 0);
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_JTAG_DISABLE,
- AR724X_GPIO_FUNC_SPI_EN);
-}
-
-static void rb750_nand_disable_pins(void)
-{
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_SPI_EN,
- AR724X_GPIO_FUNC_JTAG_DISABLE);
- rb750_latch_change(0, RB750_LVC573_LE);
-}
-
-static void __init rb750_setup(void)
-{
- ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
-
- ath79_register_mdio(0, 0x0);
-
- /* LAN ports */
- ath79_register_eth(1);
-
- /* WAN port */
- ath79_register_eth(0);
-
- rb750_leds_data.num_leds = ARRAY_SIZE(rb750_leds);
- rb750_leds_data.leds = rb750_leds;
- rb750_leds_data.latch_change = rb750_latch_change;
- platform_device_register(&rb750_leds_device);
-
- rb750_nand_data.nce_line = RB750_NAND_NCE;
- rb750_nand_data.enable_pins = rb750_nand_enable_pins;
- rb750_nand_data.disable_pins = rb750_nand_disable_pins;
- rb750_nand_data.latch_change = rb750_latch_change;
- platform_device_register(&rb750_nand_device);
-
- /* USB */
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_750, "750i", "MikroTik RouterBOARD 750",
- rb750_setup);
-
-static struct ar8327_pad_cfg rb750gr3_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data rb750gr3_ar8327_data = {
- .pad0_cfg = &rb750gr3_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- }
-};
-
-static struct mdio_board_info rb750g3_mdio_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rb750gr3_ar8327_data,
- },
-};
-
-static void rb750gr3_nand_enable_pins(void)
-{
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_JTAG_DISABLE,
- AR724X_GPIO_FUNC_SPI_EN |
- AR724X_GPIO_FUNC_SPI_CS_EN2);
-}
-
-static void rb750gr3_nand_disable_pins(void)
-{
- ath79_gpio_function_setup(AR724X_GPIO_FUNC_SPI_EN |
- AR724X_GPIO_FUNC_SPI_CS_EN2,
- AR724X_GPIO_FUNC_JTAG_DISABLE);
-}
-
-static void rb750gr3_latch_change(u32 mask_clr, u32 mask_set)
-{
- static DEFINE_SPINLOCK(lock);
- static u32 latch_set = RB7XX_LED_ACT;
- static u32 latch_clr;
- void __iomem *base = ath79_gpio_base;
- unsigned long flags;
- u32 t;
-
- spin_lock_irqsave(&lock, flags);
-
- latch_set = (latch_set | mask_set) & ~mask_clr;
- latch_clr = (latch_clr | mask_clr) & ~mask_set;
-
- mask_set = latch_set & (RB7XX_USB_POWERON | RB7XX_MONITOR);
- mask_clr = latch_clr & (RB7XX_USB_POWERON | RB7XX_MONITOR);
-
- if ((latch_set ^ RB7XX_LED_ACT) & RB7XX_LED_ACT) {
- /* enable output mode */
- t = __raw_readl(base + AR71XX_GPIO_REG_OE);
- t |= RB7XX_LED_ACT;
- __raw_writel(t, base + AR71XX_GPIO_REG_OE);
-
- mask_clr |= RB7XX_LED_ACT;
- } else {
- /* disable output mode */
- t = __raw_readl(base + AR71XX_GPIO_REG_OE);
- t &= ~RB7XX_LED_ACT;
- __raw_writel(t, base + AR71XX_GPIO_REG_OE);
- }
-
- __raw_writel(mask_set, base + AR71XX_GPIO_REG_SET);
- __raw_writel(mask_clr, base + AR71XX_GPIO_REG_CLEAR);
-
- spin_unlock_irqrestore(&lock, flags);
-}
-
-static void __init rb750gr3_setup(void)
-{
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(rb750g3_mdio_info,
- ARRAY_SIZE(rb750g3_mdio_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_pll_data.pll_1000 = 0x62000000;
-
- ath79_register_eth(0);
-
- rb750_leds_data.num_leds = ARRAY_SIZE(rb750gr3_leds);
- rb750_leds_data.leds = rb750gr3_leds;
- rb750_leds_data.latch_change = rb750gr3_latch_change;
- platform_device_register(&rb750_leds_device);
-
- rb750_nand_data.nce_line = RB7XX_NAND_NCE;
- rb750_nand_data.enable_pins = rb750gr3_nand_enable_pins;
- rb750_nand_data.disable_pins = rb750gr3_nand_disable_pins;
- rb750_nand_data.latch_change = rb750gr3_latch_change;
- platform_device_register(&rb750_nand_device);
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_750G_R3, "750Gr3", "MikroTik RouterBOARD 750GL",
- rb750gr3_setup);
-
-#define RB751_HARDCONFIG 0x1f00b000
-#define RB751_HARDCONFIG_SIZE 0x1000
-
-static void __init rb751_wlan_setup(void)
-{
- u8 *hardconfig = (u8 *) KSEG1ADDR(RB751_HARDCONFIG);
- struct ath9k_platform_data *wmac_data;
- u16 tag_len;
- u8 *tag;
- u16 mac_len;
- u8 *mac;
- int err;
-
- wmac_data = ap9x_pci_get_wmac_data(0);
- if (!wmac_data) {
- pr_err("rb75x: unable to get address of wlan data\n");
- return;
- }
-
- ap9x_pci_setup_wmac_led_pin(0, 9);
-
- err = routerboot_find_tag(hardconfig, RB751_HARDCONFIG_SIZE,
- RB_ID_WLAN_DATA, &tag, &tag_len);
- if (err) {
- pr_err("rb75x: no calibration data found\n");
- return;
- }
-
- err = rle_decode(tag, tag_len, (unsigned char *) wmac_data->eeprom_data,
- sizeof(wmac_data->eeprom_data), NULL, NULL);
- if (err) {
- pr_err("rb75x: unable to decode wlan eeprom data\n");
- return;
- }
-
- err = routerboot_find_tag(hardconfig, RB751_HARDCONFIG_SIZE,
- RB_ID_MAC_ADDRESS_PACK, &mac, &mac_len);
- if (err) {
- pr_err("rb75x: no mac address found\n");
- return;
- }
-
- ap91_pci_init(NULL, mac);
-}
-
-static void __init rb751_setup(void)
-{
- rb750_setup();
- ath79_register_usb();
- rb751_wlan_setup();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_751, "751", "MikroTik RouterBOARD 751",
- rb751_setup);
-
-static void __init rb751g_setup(void)
-{
- rb750gr3_setup();
- ath79_register_usb();
- rb751_wlan_setup();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_751G, "751g", "MikroTik RouterBOARD 751G",
- rb751g_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD 91X support
- *
- * Copyright (C) 2013 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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.
- */
-
-#define pr_fmt(fmt) "rb91x: " fmt
-
-#include <linux/version.h>
-#include <linux/phy.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/74x164.h>
-#include <linux/spi/flash.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-#include <linux/platform_data/gpio-latch.h>
-#include <linux/platform_data/rb91x_nand.h>
-#include <linux/platform_data/phy-at803x.h>
-
-#include <asm/prom.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ath79_spi_platform.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-leds-gpio.h"
-#include "dev-nfc.h"
-#include "dev-usb.h"
-#include "dev-spi.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-#include "routerboot.h"
-
-#define RB_ROUTERBOOT_OFFSET 0x0000
-#define RB_ROUTERBOOT_MIN_SIZE 0xb000
-#define RB_HARD_CFG_SIZE 0x1000
-#define RB_BIOS_OFFSET 0xd000
-#define RB_BIOS_SIZE 0x1000
-#define RB_SOFT_CFG_OFFSET 0xf000
-#define RB_SOFT_CFG_SIZE 0x1000
-
-#define RB91X_FLAG_USB BIT(0)
-#define RB91X_FLAG_PCIE BIT(1)
-
-#define RB91X_LATCH_GPIO_BASE 32
-#define RB91X_LATCH_GPIO(_x) (RB91X_LATCH_GPIO_BASE + (_x))
-
-#define RB91X_SSR_GPIO_BASE (RB91X_LATCH_GPIO_BASE + AR934X_GPIO_COUNT)
-#define RB91X_SSR_GPIO(_x) (RB91X_SSR_GPIO_BASE + (_x))
-
-#define RB91X_SSR_BIT_LED1 0
-#define RB91X_SSR_BIT_LED2 1
-#define RB91X_SSR_BIT_LED3 2
-#define RB91X_SSR_BIT_LED4 3
-#define RB91X_SSR_BIT_LED5 4
-#define RB91X_SSR_BIT_5 5
-#define RB91X_SSR_BIT_USB_POWER 6
-#define RB91X_SSR_BIT_PCIE_POWER 7
-
-#define RB91X_GPIO_SSR_STROBE RB91X_LATCH_GPIO(0)
-#define RB91X_GPIO_LED_POWER RB91X_LATCH_GPIO(1)
-#define RB91X_GPIO_LED_USER RB91X_LATCH_GPIO(2)
-#define RB91X_GPIO_NAND_READ RB91X_LATCH_GPIO(3)
-#define RB91X_GPIO_NAND_RDY RB91X_LATCH_GPIO(4)
-#define RB91X_GPIO_NLE RB91X_LATCH_GPIO(11)
-#define RB91X_GPIO_NAND_NRW RB91X_LATCH_GPIO(12)
-#define RB91X_GPIO_NAND_NCE RB91X_LATCH_GPIO(13)
-#define RB91X_GPIO_NAND_CLE RB91X_LATCH_GPIO(14)
-#define RB91X_GPIO_NAND_ALE RB91X_LATCH_GPIO(15)
-
-#define RB91X_GPIO_LED_1 RB91X_SSR_GPIO(RB91X_SSR_BIT_LED1)
-#define RB91X_GPIO_LED_2 RB91X_SSR_GPIO(RB91X_SSR_BIT_LED2)
-#define RB91X_GPIO_LED_3 RB91X_SSR_GPIO(RB91X_SSR_BIT_LED3)
-#define RB91X_GPIO_LED_4 RB91X_SSR_GPIO(RB91X_SSR_BIT_LED4)
-#define RB91X_GPIO_LED_5 RB91X_SSR_GPIO(RB91X_SSR_BIT_LED5)
-#define RB91X_GPIO_USB_POWER RB91X_SSR_GPIO(RB91X_SSR_BIT_USB_POWER)
-#define RB91X_GPIO_PCIE_POWER RB91X_SSR_GPIO(RB91X_SSR_BIT_PCIE_POWER)
-
-struct rb_board_info {
- const char *name;
- u32 flags;
-};
-
-static struct mtd_partition rb711gr100_spi_partitions[] = {
- {
- .name = "routerboot",
- .offset = RB_ROUTERBOOT_OFFSET,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "hard_config",
- .size = RB_HARD_CFG_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "bios",
- .offset = RB_BIOS_OFFSET,
- .size = RB_BIOS_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "soft_config",
- .size = RB_SOFT_CFG_SIZE,
- }
-};
-
-static struct flash_platform_data rb711gr100_spi_flash_data = {
- .parts = rb711gr100_spi_partitions,
- .nr_parts = ARRAY_SIZE(rb711gr100_spi_partitions),
-};
-
-static int rb711gr100_gpio_latch_gpios[AR934X_GPIO_COUNT] __initdata = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
-};
-
-static struct gpio_latch_platform_data rb711gr100_gpio_latch_data __initdata = {
- .base = RB91X_LATCH_GPIO_BASE,
- .num_gpios = ARRAY_SIZE(rb711gr100_gpio_latch_gpios),
- .gpios = rb711gr100_gpio_latch_gpios,
- .le_gpio_index = 11,
- .le_active_low = true,
-};
-
-static struct rb91x_nand_platform_data rb711gr100_nand_data __initdata = {
- .gpio_nce = RB91X_GPIO_NAND_NCE,
- .gpio_ale = RB91X_GPIO_NAND_ALE,
- .gpio_cle = RB91X_GPIO_NAND_CLE,
- .gpio_rdy = RB91X_GPIO_NAND_RDY,
- .gpio_read = RB91X_GPIO_NAND_READ,
- .gpio_nrw = RB91X_GPIO_NAND_NRW,
- .gpio_nle = RB91X_GPIO_NLE,
-};
-
-static u8 rb711gr100_ssr_initdata[] = {
- BIT(RB91X_SSR_BIT_PCIE_POWER) |
- BIT(RB91X_SSR_BIT_USB_POWER) |
- BIT(RB91X_SSR_BIT_5)
-};
-
-static struct gen_74x164_chip_platform_data rb711gr100_ssr_data = {
- .base = RB91X_SSR_GPIO_BASE,
- .num_registers = ARRAY_SIZE(rb711gr100_ssr_initdata),
- .init_data = rb711gr100_ssr_initdata,
-};
-
-static struct spi_board_info rb711gr100_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- .platform_data = &rb711gr100_spi_flash_data,
- }, {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 10000000,
- .modalias = "74x164",
- .platform_data = &rb711gr100_ssr_data,
- }
-};
-
-static int rb711gr100_spi_cs_gpios[2] = {
- -ENOENT,
- RB91X_GPIO_SSR_STROBE,
-};
-
-static struct ath79_spi_platform_data rb711gr100_spi_data __initdata = {
- .bus_num = 0,
- .num_chipselect = 2,
- .cs_gpios = rb711gr100_spi_cs_gpios,
-};
-
-static struct gpio_led rb711gr100_leds[] __initdata = {
- {
- .name = "rb:green:led1",
- .gpio = RB91X_GPIO_LED_1,
- .active_low = 0,
- },
- {
- .name = "rb:green:led2",
- .gpio = RB91X_GPIO_LED_2,
- .active_low = 0,
- },
- {
- .name = "rb:green:led3",
- .gpio = RB91X_GPIO_LED_3,
- .active_low = 0,
- },
- {
- .name = "rb:green:led4",
- .gpio = RB91X_GPIO_LED_4,
- .active_low = 0,
- },
- {
- .name = "rb:green:led5",
- .gpio = RB91X_GPIO_LED_5,
- .active_low = 0,
- },
- {
- .name = "rb:green:user",
- .gpio = RB91X_GPIO_LED_USER,
- .active_low = 0,
- },
- {
- .name = "rb:green:power",
- .gpio = RB91X_GPIO_LED_POWER,
- .active_low = 0,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- },
-};
-
-static struct at803x_platform_data rb91x_at803x_data = {
- .disable_smarteee = 1,
- .enable_rgmii_rx_delay = 1,
- .enable_rgmii_tx_delay = 1,
-};
-
-static struct mdio_board_info rb91x_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rb91x_at803x_data,
- },
-};
-
-static void __init rb711gr100_init_partitions(const struct rb_info *info)
-{
- rb711gr100_spi_partitions[0].size = info->hard_cfg_offs;
- rb711gr100_spi_partitions[1].offset = info->hard_cfg_offs;
-
- rb711gr100_spi_partitions[3].offset = info->soft_cfg_offs;
-}
-
-void __init rb711gr100_wlan_init(void)
-{
- char *caldata;
- u8 wlan_mac[ETH_ALEN];
-
- caldata = rb_get_wlan_data();
- if (caldata == NULL)
- return;
-
- ath79_init_mac(wlan_mac, ath79_mac_base, 1);
- ath79_register_wmac(caldata + 0x1000, wlan_mac);
-
- kfree(caldata);
-}
-
-#define RB_BOARD_INFO(_name, _flags) \
- { \
- .name = (_name), \
- .flags = (_flags), \
- }
-
-static const struct rb_board_info rb711gr100_boards[] __initconst = {
- RB_BOARD_INFO("911G-2HPnD", 0),
- RB_BOARD_INFO("911G-5HPnD", 0),
- RB_BOARD_INFO("912UAG-2HPnD", RB91X_FLAG_USB | RB91X_FLAG_PCIE),
- RB_BOARD_INFO("912UAG-5HPnD", RB91X_FLAG_USB | RB91X_FLAG_PCIE),
-};
-
-static u32 rb711gr100_get_flags(const struct rb_info *info)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(rb711gr100_boards); i++) {
- const struct rb_board_info *bi;
-
- bi = &rb711gr100_boards[i];
- if (strcmp(info->board_name, bi->name) == 0)
- return bi->flags;
- }
-
- return 0;
-}
-
-static void __init rb711gr100_setup(void)
-{
- const struct rb_info *info;
- char buf[64];
- u32 flags;
-
- info = rb_init_info((void *) KSEG1ADDR(0x1f000000), 0x10000);
- if (!info)
- return;
-
- scnprintf(buf, sizeof(buf), "Mikrotik RouterBOARD %s",
- (info->board_name) ? info->board_name : "");
- mips_set_machine_name(buf);
-
- rb711gr100_init_partitions(info);
- ath79_register_spi(&rb711gr100_spi_data, rb711gr100_spi_info,
- ARRAY_SIZE(rb711gr100_spi_info));
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_RXD_DELAY |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(rb91x_mdio0_info,
- ARRAY_SIZE(rb91x_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_pll_data.pll_1000 = 0x02000000;
-
- ath79_register_eth(0);
-
- rb711gr100_wlan_init();
-
- platform_device_register_data(NULL, "rb91x-nand", -1,
- &rb711gr100_nand_data,
- sizeof(rb711gr100_nand_data));
-
- platform_device_register_data(NULL, "gpio-latch", -1,
- &rb711gr100_gpio_latch_data,
- sizeof(rb711gr100_gpio_latch_data));
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb711gr100_leds),
- rb711gr100_leds);
-
- flags = rb711gr100_get_flags(info);
-
- if (flags & RB91X_FLAG_USB)
- ath79_register_usb();
-
- if (flags & RB91X_FLAG_PCIE)
- ath79_register_pci();
-
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_711GR100, "711Gr100", rb711gr100_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD 92X support
- *
- * Copyright (C) 2015 Gabor Juhos <juhosg@openwrt.org>
- *
- * 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 <linux/version.h>
-#include <linux/phy.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/version.h>
-
-#include <asm/prom.h>
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-spi.h"
-#include "machtypes.h"
-#include "pci.h"
-#include "routerboot.h"
-
-#define RB922_GPIO_LED_USR 12
-#define RB922_GPIO_USB_POWER 13
-#define RB922_GPIO_FAN_CTRL 14
-#define RB922_GPIO_BTN_RESET 20
-#define RB922_GPIO_NAND_NCE 23
-
-#define RB92X_FLAG_USB BIT(0)
-#define RB92X_FLAG_USB_POWER BIT(1)
-#define RB92X_FLAG_PCIE BIT(2)
-
-#define RB922_PHY_ADDR 4
-
-#define RB922_KEYS_POLL_INTERVAL 20 /* msecs */
-#define RB922_KEYS_DEBOUNCE_INTERVAL (3 * RB922_KEYS_POLL_INTERVAL)
-
-#define RB_ROUTERBOOT_OFFSET 0x0000
-#define RB_ROUTERBOOT_MIN_SIZE 0xb000
-#define RB_HARD_CFG_SIZE 0x1000
-#define RB_BIOS_OFFSET 0xd000
-#define RB_BIOS_SIZE 0x1000
-#define RB_SOFT_CFG_OFFSET 0xf000
-#define RB_SOFT_CFG_SIZE 0x1000
-
-struct rb_board_info {
- const char *name;
- u32 flags;
-};
-
-static struct mtd_partition rb922gs_spi_partitions[] = {
- {
- .name = "routerboot",
- .offset = RB_ROUTERBOOT_OFFSET,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "hard_config",
- .size = RB_HARD_CFG_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "bios",
- .offset = RB_BIOS_OFFSET,
- .size = RB_BIOS_SIZE,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "soft_config",
- .size = RB_SOFT_CFG_SIZE,
- }
-};
-
-static void __init rb922gs_init_partitions(const struct rb_info *info)
-{
- rb922gs_spi_partitions[0].size = info->hard_cfg_offs;
- rb922gs_spi_partitions[1].offset = info->hard_cfg_offs;
- rb922gs_spi_partitions[3].offset = info->soft_cfg_offs;
-}
-
-static struct mtd_partition rb922gs_nand_partitions[] = {
- {
- .name = "booter",
- .offset = 0,
- .size = (256 * 1024),
- .mask_flags = MTD_WRITEABLE,
- },
- {
- .name = "kernel",
- .offset = (256 * 1024),
- .size = (4 * 1024 * 1024) - (256 * 1024),
- },
- {
- .name = "ubi",
- .offset = MTDPART_OFS_NXTBLK,
- .size = MTDPART_SIZ_FULL,
- },
-};
-
-static struct flash_platform_data rb922gs_spi_flash_data = {
- .parts = rb922gs_spi_partitions,
- .nr_parts = ARRAY_SIZE(rb922gs_spi_partitions),
-};
-
-static struct gpio_led rb922gs_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RB922_GPIO_LED_USR,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button rb922gs_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RB922_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RB922_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct at803x_platform_data rb922gs_at803x_data = {
- .disable_smarteee = 1,
-};
-
-static struct mdio_board_info rb922gs_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = RB922_PHY_ADDR,
- .platform_data = &rb922gs_at803x_data,
- },
-};
-
-
-
-static void rb922gs_nand_select_chip(int chip_no)
-{
- switch (chip_no) {
- case 0:
- gpio_set_value(RB922_GPIO_NAND_NCE, 0);
- break;
- default:
- gpio_set_value(RB922_GPIO_NAND_NCE, 1);
- break;
- }
- ndelay(500);
-}
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
-static struct nand_ecclayout rb922gs_nand_ecclayout = {
- .eccbytes = 6,
- .eccpos = { 8, 9, 10, 13, 14, 15 },
- .oobavail = 9,
- .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1 } }
-};
-
-#else
-
-static int rb922gs_ooblayout_ecc(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 8;
- oobregion->length = 3;
- return 0;
- case 1:
- oobregion->offset = 13;
- oobregion->length = 3;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static int rb922gs_ooblayout_free(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 0;
- oobregion->length = 4;
- return 0;
- case 1:
- oobregion->offset = 4;
- oobregion->length = 1;
- return 0;
- case 2:
- oobregion->offset = 6;
- oobregion->length = 2;
- return 0;
- case 3:
- oobregion->offset = 11;
- oobregion->length = 2;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static const struct mtd_ooblayout_ops rb922gs_nand_ecclayout_ops = {
- .ecc = rb922gs_ooblayout_ecc,
- .free = rb922gs_ooblayout_free,
-};
-#endif /* < 4.6 */
-
-static int rb922gs_nand_scan_fixup(struct mtd_info *mtd)
-{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- struct nand_chip *chip = mtd->priv;
-#else
- struct nand_chip *chip = mtd_to_nand(mtd);
-#endif /* < 4.6.0 */
-
- if (mtd->writesize == 512) {
- /*
- * Use the OLD Yaffs-1 OOB layout, otherwise RouterBoot
- * will not be able to find the kernel that we load.
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- chip->ecc.layout = &rb922gs_nand_ecclayout;
-#else
- mtd_set_ooblayout(mtd, &rb922gs_nand_ecclayout_ops);
-#endif
- }
-
- chip->options = NAND_NO_SUBPAGE_WRITE;
-
- return 0;
-}
-
-static void __init rb922gs_nand_init(void)
-{
- gpio_request_one(RB922_GPIO_NAND_NCE, GPIOF_OUT_INIT_HIGH, "NAND nCE");
-
- ath79_nfc_set_scan_fixup(rb922gs_nand_scan_fixup);
- ath79_nfc_set_parts(rb922gs_nand_partitions,
- ARRAY_SIZE(rb922gs_nand_partitions));
- ath79_nfc_set_select_chip(rb922gs_nand_select_chip);
- ath79_nfc_set_swap_dma(true);
- ath79_register_nfc();
-}
-
-#define RB_BOARD_INFO(_name, _flags) \
- { \
- .name = (_name), \
- .flags = (_flags), \
- }
-
-static const struct rb_board_info rb92x_boards[] __initconst = {
- RB_BOARD_INFO("921GS-5HPacD r2", RB92X_FLAG_PCIE),
- RB_BOARD_INFO("922UAGS-5HPacD", RB92X_FLAG_USB | RB92X_FLAG_USB_POWER | RB92X_FLAG_PCIE),
-};
-
-static u32 rb92x_get_flags(const struct rb_info *info)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(rb92x_boards); i++) {
- const struct rb_board_info *bi;
-
- bi = &rb92x_boards[i];
- if (strcmp(info->board_name, bi->name) == 0)
- return bi->flags;
- }
-
- return 0;
-}
-
-static void __init rb922gs_setup(void)
-{
- const struct rb_info *info;
- char buf[64];
- u32 flags;
-
- info = rb_init_info((void *) KSEG1ADDR(0x1f000000), 0x10000);
- if (!info)
- return;
-
- scnprintf(buf, sizeof(buf), "MikroTik RouterBOARD %s",
- (info->board_name) ? info->board_name : "");
- mips_set_machine_name(buf);
-
- rb922gs_init_partitions(info);
- ath79_register_m25p80(&rb922gs_spi_flash_data);
-
- rb922gs_nand_init();
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(rb922gs_mdio0_info,
- ARRAY_SIZE(rb922gs_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(RB922_PHY_ADDR);
- if (strcmp(info->board_name, "921GS-5HPacD r2") == 0 ||
- strcmp(info->board_name, "922UAGS-5HPacD") == 0)
- {
- ath79_eth0_pll_data.pll_10 = 0xa0001313;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_1000 = 0x8f000000;
- }
- else {
- ath79_eth0_pll_data.pll_10 = 0x81001313;
- ath79_eth0_pll_data.pll_100 = 0x81000101;
- ath79_eth0_pll_data.pll_1000 = 0x8f000000;
- }
-
- ath79_register_eth(0);
-
- flags = rb92x_get_flags(info);
-
- if (flags & RB92X_FLAG_USB)
- ath79_register_usb();
-
- if (flags & RB92X_FLAG_USB_POWER)
- gpio_request_one(RB922_GPIO_USB_POWER, GPIOF_OUT_INIT_LOW |
- GPIOF_EXPORT_DIR_FIXED, "USB power");
-
- if (flags & RB92X_FLAG_PCIE)
- ath79_register_pci();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb922gs_leds), rb922gs_leds);
- ath79_register_gpio_keys_polled(-1, RB922_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rb922gs_gpio_keys),
- rb922gs_gpio_keys);
-
- /* NOTE:
- * This only supports the RB911G-5HPacD board for now. For other boards
- * more devices must be registered based on the hardware options which
- * can be found in the hardware configuration of RouterBOOT.
- */
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_922GS, "922gs", rb922gs_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD 95X support
- *
- * Copyright (C) 2012 Stijn Tintel <stijn@linux-ipv6.be>
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 Kamil Trzcinski <ayufan@ayufan.eu>
- *
- * 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.
- */
-
-#define pr_fmt(fmt) "rb95x: " fmt
-
-#include <linux/version.h>
-#include <linux/phy.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/ar8216_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-#include <linux/version.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-m25p80.h"
-#include "dev-nfc.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "routerboot.h"
-#include "dev-leds-gpio.h"
-
-#define RB95X_GPIO_NAND_NCE 14
-
-static struct mtd_partition rb95x_nand_partitions[] = {
- {
- .name = "booter",
- .offset = 0,
- .size = (256 * 1024),
- .mask_flags = MTD_WRITEABLE,
- },
- {
- .name = "kernel",
- .offset = (256 * 1024),
- .size = (4 * 1024 * 1024) - (256 * 1024),
- },
- {
- .name = "ubi",
- .offset = MTDPART_OFS_NXTBLK,
- .size = MTDPART_SIZ_FULL,
- },
-};
-
-static struct gpio_led rb951ui_leds_gpio[] __initdata = {
- {
- .name = "rb:green:wlan",
- .gpio = 11,
- .active_low = 1,
- }, {
- .name = "rb:green:act",
- .gpio = 3,
- .active_low = 1,
- }, {
- .name = "rb:green:port1",
- .gpio = 13,
- .active_low = 1,
- }, {
- .name = "rb:green:port2",
- .gpio = 12,
- .active_low = 1,
- }, {
- .name = "rb:green:port3",
- .gpio = 4,
- .active_low = 1,
- }, {
- .name = "rb:green:port4",
- .gpio = 21,
- .active_low = 1,
- }, {
- .name = "rb:green:port5",
- .gpio = 16,
- .active_low = 1,
- }
-};
-
-static struct ar8327_pad_cfg rb95x_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
-};
-
-static struct ar8327_platform_data rb95x_ar8327_data = {
- .pad0_cfg = &rb95x_ar8327_pad0_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- }
-};
-
-static struct mdio_board_info rb95x_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rb95x_ar8327_data,
- },
-};
-
-void __init rb95x_wlan_init(void)
-{
- char *art_buf;
- u8 wlan_mac[ETH_ALEN];
-
- art_buf = rb_get_wlan_data();
- if (art_buf == NULL)
- return;
-
- ath79_init_mac(wlan_mac, ath79_mac_base, 11);
- ath79_register_wmac(art_buf + 0x1000, wlan_mac);
-
- kfree(art_buf);
-}
-
-static void rb95x_nand_select_chip(int chip_no)
-{
- switch (chip_no) {
- case 0:
- gpio_set_value(RB95X_GPIO_NAND_NCE, 0);
- break;
- default:
- gpio_set_value(RB95X_GPIO_NAND_NCE, 1);
- break;
- }
- ndelay(500);
-}
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
-static struct nand_ecclayout rb95x_nand_ecclayout = {
- .eccbytes = 6,
- .eccpos = { 8, 9, 10, 13, 14, 15 },
- .oobavail = 9,
- .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1 } }
-};
-
-#else
-
-static int rb95x_ooblayout_ecc(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 8;
- oobregion->length = 3;
- return 0;
- case 1:
- oobregion->offset = 13;
- oobregion->length = 3;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static int rb95x_ooblayout_free(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 0;
- oobregion->length = 4;
- return 0;
- case 1:
- oobregion->offset = 4;
- oobregion->length = 1;
- return 0;
- case 2:
- oobregion->offset = 6;
- oobregion->length = 2;
- return 0;
- case 3:
- oobregion->offset = 11;
- oobregion->length = 2;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static const struct mtd_ooblayout_ops rb95x_nand_ecclayout_ops = {
- .ecc = rb95x_ooblayout_ecc,
- .free = rb95x_ooblayout_free,
-};
-#endif /* < 4.6 */
-
-static int rb95x_nand_scan_fixup(struct mtd_info *mtd)
-{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- struct nand_chip *chip = mtd->priv;
-#else
- struct nand_chip *chip = mtd_to_nand(mtd);
-#endif /* < 4.6.0 */
-
- if (mtd->writesize == 512) {
- /*
- * Use the OLD Yaffs-1 OOB layout, otherwise RouterBoot
- * will not be able to find the kernel that we load.
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- chip->ecc.layout = &rb95x_nand_ecclayout;
-#else
- mtd_set_ooblayout(mtd, &rb95x_nand_ecclayout_ops);
-#endif
- }
-
- chip->options = NAND_NO_SUBPAGE_WRITE;
-
- return 0;
-}
-
-void __init rb95x_nand_init(void)
-{
- gpio_request_one(RB95X_GPIO_NAND_NCE, GPIOF_OUT_INIT_HIGH, "NAND nCE");
-
- ath79_nfc_set_scan_fixup(rb95x_nand_scan_fixup);
- ath79_nfc_set_parts(rb95x_nand_partitions,
- ARRAY_SIZE(rb95x_nand_partitions));
- ath79_nfc_set_select_chip(rb95x_nand_select_chip);
- ath79_nfc_set_swap_dma(true);
- ath79_register_nfc();
-}
-
-static int __init rb95x_setup(void)
-{
- const struct rb_info *info;
-
- info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x10000);
- if (!info)
- return -EINVAL;
-
- rb95x_nand_init();
-
- return 0;
-}
-
-static void __init rb951g_setup(void)
-{
- if (rb95x_setup())
- return;
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 |
- AR934X_ETH_CFG_RXD_DELAY |
- AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(0, 0x0);
-
- mdiobus_register_board_info(rb95x_mdio0_info,
- ARRAY_SIZE(rb95x_mdio0_info));
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(0);
- ath79_eth0_pll_data.pll_1000 = 0x6f000000;
-
- ath79_register_eth(0);
-
- rb95x_wlan_init();
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_951G, "951G", "MikroTik RouterBOARD 951G-2HnD",
- rb951g_setup);
-
-static void __init rb951ui_setup(void)
-{
- if (rb95x_setup())
- return;
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 1);
-
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask = BIT(4);
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev;
- ath79_register_eth(0);
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- gpio_request_one(20, GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power");
-
- gpio_request_one(2, GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "POE power");
-
- rb95x_wlan_init();
- ath79_register_usb();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb951ui_leds_gpio),
- rb951ui_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_RB_951U, "951HnD", "MikroTik RouterBOARD 951Ui-2HnD",
- rb951ui_setup);
+++ /dev/null
-/*
- * MikroTik SPI-NOR RouterBOARDs support
- *
- * - MikroTik RouterBOARD mAP 2nD
- * - MikroTik RouterBOARD mAP L-2nD
- * - MikroTik RouterBOARD 911-2Hn (911 Lite2)
- * - MikroTik RouterBOARD 911-5Hn (911 Lite5)
- * - MikroTik RouterBOARD 931-2nD (hAP mini)
- * - MikroTik RouterBOARD 941L-2nD
- * - MikroTik RouterBOARD 951Ui-2nD
- * - MikroTik RouterBOARD 952Ui-5ac2nD
- * - MikroTik RouterBOARD 962UiGS-5HacT2HnT
- * - MikroTik RouterBOARD 750UP r2
- * - MikroTik RouterBOARD 750P-PBr2
- * - MikroTik RouterBOARD 750 r2
- * - MikroTik RouterBOARD LHG 5nD
- * - MikroTik RouterBOARD wAP2nD
- * - MikroTik RouterBOARD wAP G-5HacT2HnDwAP (wAP AC)
- * - MikroTik RouterBOARD wAP R-2nD
- *
- * Preliminary support for the following hardware
- * - MikroTik RouterBOARD cAP2nD
- * Furthermore, the cAP lite (cAPL2nD) appears to feature the exact same
- * hardware as the mAP L-2nD. It is unknown if they share the same board
- * identifier.
- *
- * Copyright (C) 2017-2018 Thibaut VARENE <varenet@parisc-linux.org>
- * Copyright (C) 2016 David Hutchison <dhutchison@bluemesh.net>
- * Copyright (C) 2017 Ryan Mounce <ryan@mounce.com.au>
- *
- * 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 <linux/pci.h>
-#include <linux/platform_device.h>
-#include <linux/phy.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-
-#include <linux/spi/spi.h>
-#include <linux/spi/74x164.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-
-#include <linux/ar8216_platform.h>
-#include <linux/platform_data/phy-at803x.h>
-#include <linux/platform_data/mdio-gpio.h>
-
-#include <asm/prom.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include <asm/mach-ath79/ath79.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-spi.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-#include "routerboot.h"
-
-#define RBSPI_KEYS_POLL_INTERVAL 20 /* msecs */
-#define RBSPI_KEYS_DEBOUNCE_INTERVAL (3 * RBSPI_KEYS_POLL_INTERVAL)
-
-#define RBSPI_HAS_USB BIT(0)
-#define RBSPI_HAS_WLAN0 BIT(1)
-#define RBSPI_HAS_WLAN1 BIT(2)
-#define RBSPI_HAS_WAN4 BIT(3) /* has WAN port on PHY4 */
-#define RBSPI_HAS_SSR BIT(4) /* has an SSR on SPI bus 0 */
-#define RBSPI_HAS_POE BIT(5)
-#define RBSPI_HAS_MDIO1 BIT(6)
-#define RBSPI_HAS_PCI BIT(7)
-
-#define RB_ROUTERBOOT_OFFSET 0x0000
-#define RB_BIOS_SIZE 0x1000
-#define RB_SOFT_CFG_SIZE 0x1000
-
-/* Flash partitions indexes */
-enum {
- RBSPI_PART_RBOOT,
- RBSPI_PART_HCONF,
- RBSPI_PART_BIOS,
- RBSPI_PART_RBOOT2,
- RBSPI_PART_SCONF,
- RBSPI_PART_FIRMW,
- RBSPI_PARTS
-};
-
-static struct mtd_partition rbspi_spi_partitions[RBSPI_PARTS];
-
-/*
- * Setup the SPI flash partition table based on initial parsing.
- * The kernel can be at any aligned position and have any size.
- */
-static void __init rbspi_init_partitions(const struct rb_info *info)
-{
- struct mtd_partition *parts = rbspi_spi_partitions;
- memset(parts, 0x0, sizeof(*parts));
-
- parts[RBSPI_PART_RBOOT].name = "routerboot";
- parts[RBSPI_PART_RBOOT].offset = RB_ROUTERBOOT_OFFSET;
- parts[RBSPI_PART_RBOOT].size = info->hard_cfg_offs;
- parts[RBSPI_PART_RBOOT].mask_flags = MTD_WRITEABLE;
-
- parts[RBSPI_PART_HCONF].name = "hard_config";
- parts[RBSPI_PART_HCONF].offset = info->hard_cfg_offs;
- parts[RBSPI_PART_HCONF].size = info->hard_cfg_size;
- parts[RBSPI_PART_HCONF].mask_flags = MTD_WRITEABLE;
-
- parts[RBSPI_PART_BIOS].name = "bios";
- parts[RBSPI_PART_BIOS].offset = info->hard_cfg_offs
- + info->hard_cfg_size;
- parts[RBSPI_PART_BIOS].size = RB_BIOS_SIZE;
- parts[RBSPI_PART_BIOS].mask_flags = MTD_WRITEABLE;
-
- parts[RBSPI_PART_RBOOT2].name = "routerboot2";
- parts[RBSPI_PART_RBOOT2].offset = parts[RBSPI_PART_BIOS].offset
- + RB_BIOS_SIZE;
- parts[RBSPI_PART_RBOOT2].size = info->soft_cfg_offs
- - parts[RBSPI_PART_RBOOT2].offset;
- parts[RBSPI_PART_RBOOT2].mask_flags = MTD_WRITEABLE;
-
- parts[RBSPI_PART_SCONF].name = "soft_config";
- parts[RBSPI_PART_SCONF].offset = info->soft_cfg_offs;
- parts[RBSPI_PART_SCONF].size = RB_SOFT_CFG_SIZE;
-
- parts[RBSPI_PART_FIRMW].name = "firmware";
- parts[RBSPI_PART_FIRMW].offset = parts[RBSPI_PART_SCONF].offset
- + parts[RBSPI_PART_SCONF].size;
- parts[RBSPI_PART_FIRMW].size = MTDPART_SIZ_FULL;
-}
-
-static struct flash_platform_data rbspi_spi_flash_data = {
- .parts = rbspi_spi_partitions,
- .nr_parts = ARRAY_SIZE(rbspi_spi_partitions),
-};
-
-/*
- * Several boards only have a single reset button, use a common
- * structure for that.
- */
-static struct gpio_keys_button rbspi_gpio_keys_reset[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL,
- .gpio = -ENOENT, /* filled dynamically */
- .active_low = 1,
- },
-};
-
-/* RB mAP L-2nD gpios */
-#define RBMAPL_GPIO_LED_POWER 17
-#define RBMAPL_GPIO_LED_USER 14
-#define RBMAPL_GPIO_LED_ETH 4
-#define RBMAPL_GPIO_LED_WLAN 11
-#define RBMAPL_GPIO_BTN_RESET 16
-
-static struct gpio_led rbmapl_leds[] __initdata = {
- {
- .name = "rb:green:power",
- .gpio = RBMAPL_GPIO_LED_POWER,
- .active_low = 0,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- }, {
- .name = "rb:green:user",
- .gpio = RBMAPL_GPIO_LED_USER,
- .active_low = 0,
- }, {
- .name = "rb:green:eth",
- .gpio = RBMAPL_GPIO_LED_ETH,
- .active_low = 0,
- }, {
- .name = "rb:green:wlan",
- .gpio = RBMAPL_GPIO_LED_WLAN,
- .active_low = 0,
- },
-};
-
-/* RB 941L-2nD gpios */
-#define RBHAPL_GPIO_LED_USER 14
-#define RBHAPL_GPIO_BTN_RESET 16
-
-static struct gpio_led rbhapl_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RBHAPL_GPIO_LED_USER,
- .active_low = 1,
- },
-};
-
-/* common RB SSRs */
-#define RBSPI_SSR_GPIO_BASE 40
-#define RBSPI_SSR_GPIO(bit) (RBSPI_SSR_GPIO_BASE + (bit))
-
-/* RB 951Ui-2nD gpios */
-#define RB952_SSR_BIT_LED_LAN1 0
-#define RB952_SSR_BIT_LED_LAN2 1
-#define RB952_SSR_BIT_LED_LAN3 2
-#define RB952_SSR_BIT_LED_LAN4 3
-#define RB952_SSR_BIT_LED_LAN5 4
-#define RB952_SSR_BIT_USB_POWER 5
-#define RB952_SSR_BIT_LED_WLAN 6
-#define RB952_GPIO_SSR_CS 11
-#define RB952_GPIO_LED_USER 4
-#define RB952_GPIO_POE_POWER 14
-#define RB952_GPIO_POE_STATUS 12
-#define RB952_GPIO_BTN_RESET 16
-#define RB952_GPIO_USB_PWROFF RBSPI_SSR_GPIO(RB952_SSR_BIT_USB_POWER)
-#define RB952_GPIO_LED_LAN1 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN1)
-#define RB952_GPIO_LED_LAN2 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN2)
-#define RB952_GPIO_LED_LAN3 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN3)
-#define RB952_GPIO_LED_LAN4 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN4)
-#define RB952_GPIO_LED_LAN5 RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_LAN5)
-#define RB952_GPIO_LED_WLAN RBSPI_SSR_GPIO(RB952_SSR_BIT_LED_WLAN)
-
-static struct gpio_led rb952_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RB952_GPIO_LED_USER,
- .active_low = 0,
- }, {
- .name = "rb:blue:wlan",
- .gpio = RB952_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "rb:green:port1",
- .gpio = RB952_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "rb:green:port2",
- .gpio = RB952_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "rb:green:port3",
- .gpio = RB952_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "rb:green:port4",
- .gpio = RB952_GPIO_LED_LAN4,
- .active_low = 1,
- }, {
- .name = "rb:green:port5",
- .gpio = RB952_GPIO_LED_LAN5,
- .active_low = 1,
- },
-};
-
-
-/* RB 962UiGS-5HacT2HnT gpios */
-#define RB962_WIFI_LED_1 1
-#define RB962_WIFI_LED_2 2
-#define RB962_GPIO_POE_STATUS 2
-#define RB962_GPIO_POE_POWER 3
-#define RB962_GPIO_LED_USER 12
-#define RB962_GPIO_USB_PWROFF 13
-#define RB962_GPIO_BTN_RESET 20
-
-static struct gpio_led rb962_leds_gpio[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RB962_GPIO_LED_USER,
- .active_low = 1,
- },
-};
-
-static const struct ar8327_led_info rb962_leds_ar8327[] = {
- AR8327_LED_INFO(PHY0_0, HW, "rb:green:port1"),
- AR8327_LED_INFO(PHY1_0, HW, "rb:green:port2"),
- AR8327_LED_INFO(PHY2_0, HW, "rb:green:port3"),
- AR8327_LED_INFO(PHY3_0, HW, "rb:green:port4"),
- AR8327_LED_INFO(PHY4_0, HW, "rb:green:port5"),
-};
-
-static struct ar8327_pad_cfg rb962_ar8327_pad0_cfg = {
- .mode = AR8327_PAD_MAC_RGMII,
- .txclk_delay_en = true,
- .rxclk_delay_en = true,
- .txclk_delay_sel = AR8327_CLK_DELAY_SEL1,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2,
- .mac06_exchange_dis = true,
-};
-
-static struct ar8327_pad_cfg rb962_ar8327_pad6_cfg = {
- /* Use SGMII interface for GMAC6 of the AR8337 switch */
- .mode = AR8327_PAD_MAC_SGMII,
- .rxclk_delay_en = true,
- .rxclk_delay_sel = AR8327_CLK_DELAY_SEL0,
-};
-
-static struct ar8327_led_cfg rb962_ar8327_led_cfg = {
- .led_ctrl0 = 0xc737c737,
- .led_ctrl1 = 0x00000000,
- .led_ctrl2 = 0x00000000,
- .led_ctrl3 = 0x0030c300,
- .open_drain = false,
-};
-
-static struct ar8327_platform_data rb962_ar8327_data = {
- .pad0_cfg = &rb962_ar8327_pad0_cfg,
- .pad6_cfg = &rb962_ar8327_pad6_cfg,
- .port0_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .port6_cfg = {
- .force_link = 1,
- .speed = AR8327_PORT_SPEED_1000,
- .duplex = 1,
- .txpause = 1,
- .rxpause = 1,
- },
- .led_cfg = &rb962_ar8327_led_cfg,
- .num_leds = ARRAY_SIZE(rb962_leds_ar8327),
- .leds = rb962_leds_ar8327,
-};
-
-static struct mdio_board_info rb962_mdio0_info[] = {
- {
- .bus_id = "ag71xx-mdio.0",
- .mdio_addr = 0,
- .platform_data = &rb962_ar8327_data,
- },
-};
-
-/* RB wAP-2nD gpios */
-#define RBWAP_GPIO_LED_USER 14
-#define RBWAP_GPIO_LED_WLAN 11
-#define RBWAP_GPIO_BTN_RESET 16
-
-static struct gpio_led rbwap_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RBWAP_GPIO_LED_USER,
- .active_low = 1,
- }, {
- .name = "rb:green:wlan",
- .gpio = RBWAP_GPIO_LED_WLAN,
- .active_low = 1,
- },
-};
-
-/* RB cAP-2nD gpios */
-#define RBCAP_GPIO_LED_1 14
-#define RBCAP_GPIO_LED_2 12
-#define RBCAP_GPIO_LED_3 11
-#define RBCAP_GPIO_LED_4 4
-#define RBCAP_GPIO_LED_ALL 13
-
-static struct gpio_led rbcap_leds[] __initdata = {
- {
- .name = "rb:green:rssi1",
- .gpio = RBCAP_GPIO_LED_1,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi2",
- .gpio = RBCAP_GPIO_LED_2,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi3",
- .gpio = RBCAP_GPIO_LED_3,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi4",
- .gpio = RBCAP_GPIO_LED_4,
- .active_low = 1,
- },
-};
-
-/* RB mAP-2nD gpios */
-#define RBMAP_SSR_BIT_LED_LAN1 0
-#define RBMAP_SSR_BIT_LED_LAN2 1
-#define RBMAP_SSR_BIT_LED_POEO 2
-#define RBMAP_SSR_BIT_LED_USER 3
-#define RBMAP_SSR_BIT_LED_WLAN 4
-#define RBMAP_SSR_BIT_USB_POWER 5
-#define RBMAP_SSR_BIT_LED_APCAP 6
-#define RBMAP_GPIO_BTN_RESET 16
-#define RBMAP_GPIO_SSR_CS 11
-#define RBMAP_GPIO_LED_POWER 4
-#define RBMAP_GPIO_POE_POWER 14
-#define RBMAP_GPIO_POE_STATUS 12
-#define RBMAP_GPIO_USB_PWROFF RBSPI_SSR_GPIO(RBMAP_SSR_BIT_USB_POWER)
-#define RBMAP_GPIO_LED_LAN1 RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_LAN1)
-#define RBMAP_GPIO_LED_LAN2 RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_LAN2)
-#define RBMAP_GPIO_LED_POEO RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_POEO)
-#define RBMAP_GPIO_LED_USER RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_USER)
-#define RBMAP_GPIO_LED_WLAN RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_WLAN)
-#define RBMAP_GPIO_LED_APCAP RBSPI_SSR_GPIO(RBMAP_SSR_BIT_LED_APCAP)
-
-static struct gpio_led rbmap_leds[] __initdata = {
- {
- .name = "rb:green:power",
- .gpio = RBMAP_GPIO_LED_POWER,
- .active_low = 1,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- }, {
- .name = "rb:green:eth1",
- .gpio = RBMAP_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "rb:green:eth2",
- .gpio = RBMAP_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "rb:red:poe_out",
- .gpio = RBMAP_GPIO_LED_POEO,
- .active_low = 1,
- }, {
- .name = "rb:green:user",
- .gpio = RBMAP_GPIO_LED_USER,
- .active_low = 1,
- }, {
- .name = "rb:green:wlan",
- .gpio = RBMAP_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "rb:green:ap_cap",
- .gpio = RBMAP_GPIO_LED_APCAP,
- .active_low = 1,
- },
-};
-
-/* RB LHG 5nD gpios */
-#define RBLHG_GPIO_LED_0 13
-#define RBLHG_GPIO_LED_1 12
-#define RBLHG_GPIO_LED_2 4
-#define RBLHG_GPIO_LED_3 21
-#define RBLHG_GPIO_LED_4 18
-#define RBLHG_GPIO_LED_ETH 14
-#define RBLHG_GPIO_LED_POWER 11
-#define RBLHG_GPIO_LED_USER 20
-#define RBLHG_GPIO_BTN_RESET 15
-
-static struct gpio_led rblhg_leds[] __initdata = {
- {
- .name = "rb:green:rssi0",
- .gpio = RBLHG_GPIO_LED_0,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi1",
- .gpio = RBLHG_GPIO_LED_1,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi2",
- .gpio = RBLHG_GPIO_LED_2,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi3",
- .gpio = RBLHG_GPIO_LED_3,
- .active_low = 1,
- }, {
- .name = "rb:green:rssi4",
- .gpio = RBLHG_GPIO_LED_4,
- .active_low = 1,
- }, {
- .name = "rb:green:eth",
- .gpio = RBLHG_GPIO_LED_ETH,
- .active_low = 1,
- }, {
- .name = "rb:green:user",
- .gpio = RBLHG_GPIO_LED_USER,
- .active_low = 1,
- }, {
- .name = "rb:blue:power",
- .gpio = RBLHG_GPIO_LED_POWER,
- .active_low = 0,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- },
-};
-
-/* RB w APG-5HacT2HnD (wAP AC) gpios*/
-#define RBWAPGSC_WIFI_LED_1 1
-#define RBWAPGSC_WIFI_LED_2 8
-#define RBWAPGSC_WIFI_LED_3 9
-#define RBWAPGSC_GPIO_LED_POWER 16
-#define RBWAPGSC_GPIO_BTN_RESET 1
-#define RBWAPGSC_GPIO_MDIO_MDC 12
-#define RBWAPGSC_GPIO_MDIO_DATA 11
-#define RBWAPGSC_MDIO_PHYADDR 0
-
-static struct gpio_led rbwapgsc_leds[] __initdata = {
- {
- .name = "rb:green:power",
- .gpio = RBWAPGSC_GPIO_LED_POWER,
- .active_low = 1,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- },
-};
-
-static struct mdio_gpio_platform_data rbwapgsc_mdio_data = {
- .mdc = RBWAPGSC_GPIO_MDIO_MDC,
- .mdio = RBWAPGSC_GPIO_MDIO_DATA,
- .phy_mask = ~BIT(RBWAPGSC_MDIO_PHYADDR),
-};
-
-static struct platform_device rbwapgsc_phy_device = {
- .name = "mdio-gpio",
- .id = 1,
- .dev = {
- .platform_data = &rbwapgsc_mdio_data
- },
-};
-
-static struct at803x_platform_data rbwapgsc_at803x_data = {
- .override_sgmii_aneg = 1,
-};
-
-static struct mdio_board_info rbwapgsc_mdio_info[] = {
- {
- .bus_id = "gpio-1",
- .mdio_addr = RBWAPGSC_MDIO_PHYADDR,
- .platform_data = &rbwapgsc_at803x_data,
- },
-};
-
-/* RB911L GPIOs */
-#define RB911L_GPIO_BTN_RESET 15
-#define RB911L_GPIO_LED_1 13
-#define RB911L_GPIO_LED_2 12
-#define RB911L_GPIO_LED_3 4
-#define RB911L_GPIO_LED_4 21
-#define RB911L_GPIO_LED_5 18
-#define RB911L_GPIO_LED_ETH 20
-#define RB911L_GPIO_LED_POWER 11
-#define RB911L_GPIO_LED_USER 3
-#define RB911L_GPIO_PIN_HOLE 14 /* for reference, active low */
-
-static struct gpio_led rb911l_leds[] __initdata = {
- {
- .name = "rb:green:eth",
- .gpio = RB911L_GPIO_LED_ETH,
- .active_low = 1,
- }, {
- .name = "rb:green:led1",
- .gpio = RB911L_GPIO_LED_1,
- .active_low = 1,
- }, {
- .name = "rb:green:led2",
- .gpio = RB911L_GPIO_LED_2,
- .active_low = 1,
- }, {
- .name = "rb:green:led3",
- .gpio = RB911L_GPIO_LED_3,
- .active_low = 1,
- }, {
- .name = "rb:green:led4",
- .gpio = RB911L_GPIO_LED_4,
- .active_low = 1,
- }, {
- .name = "rb:green:led5",
- .gpio = RB911L_GPIO_LED_5,
- .active_low = 1,
- }, {
- .name = "rb:green:power",
- .gpio = RB911L_GPIO_LED_POWER,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- .active_low = 1,
- .open_drain = 1,
- }, {
- .name = "rb:green:user",
- .gpio = RB911L_GPIO_LED_USER,
- .active_low = 1,
- .open_drain = 1,
- },
-};
-
-/* RB 931-2nD gpios */
-#define RB931_GPIO_BTN_RESET 0
-#define RB931_GPIO_BTN_MODE 9
-#define RB931_GPIO_LED_USER 1
-
-static struct gpio_keys_button rb931_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RB931_GPIO_BTN_RESET,
- .active_low = 1,
- }, {
- .desc = "Mode button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = RBSPI_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RB931_GPIO_BTN_MODE,
- .active_low = 1,
- }
-};
-
-static struct gpio_led rb931_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RB931_GPIO_LED_USER,
- .active_low = 1,
- },
-};
-
-/* RB wAP R-2nD (wAP R) gpios*/
-#define RBWAPR_GPIO_LED_USER 14
-#define RBWAPR_GPIO_LED1 12
-#define RBWAPR_GPIO_LED2 13
-#define RBWAPR_GPIO_LED3 3
-#define RBWAPR_GPIO_PCIE_PWROFF 15
-#define RBWAPR_GPIO_CONTROL 10
-#define RBWAPR_GPIO_BTN_RESET 16
-
-static struct gpio_led rbwapr_leds[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = RBWAPR_GPIO_LED_USER,
- .active_low = 0,
- },{
- .name = "rb:green:led1",
- .gpio = RBWAPR_GPIO_LED1,
- .active_low = 1,
- },{
- .name = "rb:green:led2",
- .gpio = RBWAPR_GPIO_LED2,
- .active_low = 1,
- },{
- .name = "rb:green:led3",
- .gpio = RBWAPR_GPIO_LED3,
- .active_low = 0,
- },
-};
-
-
-static struct gen_74x164_chip_platform_data rbspi_ssr_data = {
- .base = RBSPI_SSR_GPIO_BASE,
- .num_registers = 1,
-};
-
-/* the spi-ath79 driver can only natively handle CS0. Other CS are bit-banged */
-static int rbspi_spi_cs_gpios[] = {
- -ENOENT, /* CS0 is always -ENOENT: natively handled */
- -ENOENT, /* CS1 can be updated by the code as necessary */
-};
-
-static struct ath79_spi_platform_data rbspi_ath79_spi_data = {
- .bus_num = 0,
- .cs_gpios = rbspi_spi_cs_gpios,
-};
-
-/*
- * Global spi_board_info: devices that don't have an SSR only have the SPI NOR
- * flash on bus0 CS0, while devices that have an SSR add it on the same bus CS1
- */
-static struct spi_board_info rbspi_spi_info[] = {
- {
- .bus_num = 0,
- .chip_select = 0,
- .max_speed_hz = 25000000,
- .modalias = "m25p80",
- .platform_data = &rbspi_spi_flash_data,
- }, {
- .bus_num = 0,
- .chip_select = 1,
- .max_speed_hz = 25000000,
- .modalias = "74x164",
- .platform_data = &rbspi_ssr_data,
- }
-};
-
-void __init rbspi_wlan_init(int wmac_offset)
-{
- char *art_buf;
- u8 wlan_mac[ETH_ALEN];
-
- art_buf = rb_get_wlan_data();
- if (!art_buf)
- return;
-
- ath79_init_mac(wlan_mac, ath79_mac_base, wmac_offset);
- ath79_register_wmac(art_buf + 0x1000, wlan_mac);
-
- kfree(art_buf);
-}
-
-#define RBSPI_MACH_BUFLEN 64
-/*
- * Common platform init routine for all SPI NOR devices.
- */
-static __init const struct rb_info *rbspi_platform_setup(void)
-{
- const struct rb_info *info;
- char buf[RBSPI_MACH_BUFLEN] = "MikroTik ";
- char *str;
- int len = RBSPI_MACH_BUFLEN - strlen(buf) - 1;
-
- info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x20000);
- if (!info)
- return NULL;
-
- if (info->board_name) {
- str = "RouterBOARD ";
- if (strncmp(info->board_name, str, strlen(str))) {
- strncat(buf, str, len);
- len -= strlen(str);
- }
- strncat(buf, info->board_name, len);
- }
- else
- strncat(buf, "UNKNOWN", len);
-
- mips_set_machine_name(buf);
-
- /* fix partitions based on flash parsing */
- rbspi_init_partitions(info);
-
- return info;
-}
-
-/*
- * Common peripherals init routine for all SPI NOR devices.
- * Sets SPI and USB.
- */
-static void __init rbspi_peripherals_setup(u32 flags)
-{
- unsigned spi_n;
-
- if (flags & RBSPI_HAS_SSR)
- spi_n = ARRAY_SIZE(rbspi_spi_info);
- else
- spi_n = 1; /* only one device on bus0 */
-
- rbspi_ath79_spi_data.num_chipselect = spi_n;
- rbspi_ath79_spi_data.cs_gpios = rbspi_spi_cs_gpios;
- ath79_register_spi(&rbspi_ath79_spi_data, rbspi_spi_info, spi_n);
-
- if (flags & RBSPI_HAS_USB)
- ath79_register_usb();
-
- if (flags & RBSPI_HAS_PCI)
- ath79_register_pci();
-}
-
-/*
- * Common network init routine for all SPI NOR devices.
- * Sets LAN/WAN/WLAN.
- */
-static void __init rbspi_network_setup(u32 flags, int gmac1_offset,
- int wmac0_offset, int wmac1_offset)
-{
- /* for QCA953x that will init mdio1_device/data */
- ath79_register_mdio(0, 0x0);
- if (flags & RBSPI_HAS_MDIO1)
- ath79_register_mdio(1, 0x0);
-
- if (flags & RBSPI_HAS_WAN4) {
- ath79_setup_ar934x_eth_cfg(0);
-
- /* set switch to oper mode 1, PHY4 connected to CPU */
- ath79_switch_data.phy4_mii_en = 1;
- ath79_switch_data.phy_poll_mask |= BIT(4);
-
- /* init GMAC0 connected to PHY4 at 100M */
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
- ath79_eth0_data.phy_mask = BIT(4);
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0);
- ath79_register_eth(0);
- } else {
- /* set the SoC to SW_ONLY_MODE, which connects all PHYs
- * to the internal switch.
- * We hijack ath79_setup_ar934x_eth_cfg() to set the switch in
- * the QCA953x, this works because this configuration bit is
- * the same as the AR934x. There's no equivalent function for
- * QCA953x for now. */
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
- }
-
- /* init GMAC1 */
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, gmac1_offset);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
- if (flags & RBSPI_HAS_WLAN0)
- rbspi_wlan_init(wmac0_offset);
-
- if (flags & RBSPI_HAS_WLAN1)
- rbspi_wlan_init(wmac1_offset);
-}
-
-static __init void rbspi_register_reset_button(int gpio)
-{
- rbspi_gpio_keys_reset[0].gpio = gpio;
- ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rbspi_gpio_keys_reset),
- rbspi_gpio_keys_reset);
-}
-
-/*
- * Init the mAP lite hardware (QCA953x).
- * The mAP L-2nD (mAP lite) has a single ethernet port, connected to PHY0.
- * Trying to use GMAC0 in direct mode was unsucessful, so we're
- * using SW_ONLY_MODE, which connects PHY0 to MAC1 on the internal
- * switch, which is connected to GMAC1 on the SoC. GMAC0 is unused.
- */
-static void __init rbmapl_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 1 */
- rbspi_network_setup(flags, 0, 1, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbmapl_leds), rbmapl_leds);
-
- /* mAP lite has a single reset button as gpio 16 */
- rbspi_register_reset_button(RBMAPL_GPIO_BTN_RESET);
-
- /* clear internal multiplexing */
- ath79_gpio_output_select(RBMAPL_GPIO_LED_ETH, AR934X_GPIO_OUT_GPIO);
- ath79_gpio_output_select(RBMAPL_GPIO_LED_POWER, AR934X_GPIO_OUT_GPIO);
-}
-
-/*
- * Init the hAP lite hardware (QCA953x).
- * The 941-2nD (hAP lite) has 4 ethernet ports, with port 2-4
- * being assigned to LAN on the casing, and port 1 being assigned
- * to "internet" (WAN) on the casing. Port 1 is connected to PHY3.
- * Since WAN is neither PHY0 nor PHY4, we cannot use GMAC0 with this device.
- */
-static void __init rbhapl_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 4 */
- rbspi_network_setup(flags, 0, 4, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbhapl_leds), rbhapl_leds);
-
- /* hAP lite has a single reset button as gpio 16 */
- rbspi_register_reset_button(RBHAPL_GPIO_BTN_RESET);
-}
-
-/*
- * The hAP, hAP ac lite, hEX lite and hEX PoE lite share the same platform
- */
-static void __init rbspi_952_750r2_setup(u32 flags)
-{
- if (flags & RBSPI_HAS_SSR)
- rbspi_spi_cs_gpios[1] = RB952_GPIO_SSR_CS;
-
- rbspi_peripherals_setup(flags);
-
- /*
- * GMAC1 is HW MAC + 1, WLAN0 MAC IS HW MAC + 5 (hAP),
- * WLAN1 MAC IS HW MAC + 6 (hAP ac lite)
- */
- rbspi_network_setup(flags, 1, 5, 6);
-
- if (flags & RBSPI_HAS_USB)
- gpio_request_one(RB952_GPIO_USB_PWROFF, GPIOF_ACTIVE_LOW |
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power off");
-
- if (flags & RBSPI_HAS_POE)
- gpio_request_one(RB952_GPIO_POE_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "POE power");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb952_leds), rb952_leds);
-
- /* These devices have a single reset button as gpio 16 */
- rbspi_register_reset_button(RB952_GPIO_BTN_RESET);
-}
-
-/*
- * Init the hAP (ac lite) hardware (QCA953x).
- * The 951Ui-2nD (hAP) has 5 ethernet ports, with ports 2-5 being assigned
- * to LAN on the casing, and port 1 being assigned to "internet" (WAN).
- * Port 1 is connected to PHY4 (the ports are labelled in reverse physical
- * number), so the SoC can be set to connect GMAC0 to PHY4 and GMAC1 to the
- * internal switch for the LAN ports.
- * The device also has USB, PoE output and an SSR used for LED multiplexing.
- * The 952Ui-5ac2nD (hAP ac lite) is nearly identical to the hAP, it adds a
- * QCA9887 5GHz radio via PCI and moves 2.4GHz from WLAN0 to WLAN1.
- */
-static void __init rb952_setup(void)
-{
- u32 flags = RBSPI_HAS_WAN4 | RBSPI_HAS_USB |
- RBSPI_HAS_SSR | RBSPI_HAS_POE;
-
- if (!rbspi_platform_setup())
- return;
-
- /* differentiate the hAP from the hAP ac lite */
- if (strstr(mips_get_machine_name(), "952Ui-5ac2nD"))
- flags |= RBSPI_HAS_WLAN1 | RBSPI_HAS_PCI;
- else
- flags |= RBSPI_HAS_WLAN0;
-
- rbspi_952_750r2_setup(flags);
-}
-
-/*
- * Init the hEX (PoE) lite hardware (QCA953x).
- * 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
- * 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)
-{
- u32 flags = RBSPI_HAS_WAN4 | RBSPI_HAS_SSR;
-
- if (!rbspi_platform_setup())
- return;
-
- /* differentiate the hEX lite from the hEX PoE lite */
- if (strstr(mips_get_machine_name(), "750UP r2"))
- 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);
-}
-
-/*
- * Init the hAP ac / 962UiGS-5HacT2HnT hardware (QCA9558).
- * The hAP ac has 5 ethernet ports provided by an AR8337 switch. Port 1 is
- * assigned to WAN, ports 2-5 are assigned to LAN. Port 0 is connected to the
- * SoC, ports 1-5 of the switch are connected to physical ports 1-5 in order.
- * The SFP cage is not assigned by default on RouterOS. Extra work is required
- * to support this interface as it is directly connected to the SoC (eth1).
- * Wireless is provided by a 2.4GHz radio on the SoC (WLAN1) and a 5GHz radio
- * attached via PCI (QCA9880). Red and green WLAN LEDs are populated however
- * they are not attached to GPIOs, extra work is required to support these.
- * PoE and USB output power control is supported.
- */
-static void __init rb962_setup(void)
-{
- u32 flags = RBSPI_HAS_USB | RBSPI_HAS_POE | RBSPI_HAS_PCI;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* Do not call rbspi_network_setup as we have a discrete switch chip */
- ath79_eth0_pll_data.pll_1000 = 0xae000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0xa0001313;
-
- ath79_register_mdio(0, 0x0);
- mdiobus_register_board_info(rb962_mdio0_info,
- ARRAY_SIZE(rb962_mdio0_info));
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 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_register_eth(0);
-
- /* WLAN1 MAC is HW MAC + 7 */
- rbspi_wlan_init(7);
-
- if (flags & RBSPI_HAS_USB)
- gpio_request_one(RB962_GPIO_USB_PWROFF, GPIOF_ACTIVE_LOW |
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "USB power off");
-
- /* PoE output GPIO is inverted, set GPIOF_ACTIVE_LOW for consistency */
- if (flags & RBSPI_HAS_POE)
- gpio_request_one(RB962_GPIO_POE_POWER,
- GPIOF_OUT_INIT_HIGH | GPIOF_ACTIVE_LOW |
- GPIOF_EXPORT_DIR_FIXED,
- "POE power");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb962_leds_gpio),
- rb962_leds_gpio);
-
- /* This device has a single reset button as gpio 20 */
- rbspi_register_reset_button(RB962_GPIO_BTN_RESET);
-}
-
-/*
- * Init the LHG hardware (AR9344).
- * The LHG 5nD has a single ethernet port connected to PHY0.
- * Wireless is provided via 5GHz WLAN1.
- */
-static void __init rblhg_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN1 | RBSPI_HAS_MDIO1;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN1 MAC is HW MAC + 1 */
- rbspi_network_setup(flags, 0, 0, 1);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rblhg_leds), rblhg_leds);
-
- rbspi_register_reset_button(RBLHG_GPIO_BTN_RESET);
-}
-
-/*
- * Init the wAP hardware.
- * The wAP 2nD has a single ethernet port.
- */
-static void __init rbwap_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 1 */
- rbspi_network_setup(flags, 0, 1, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbwap_leds), rbwap_leds);
-
- /* wAP has a single reset button as GPIO 16 */
- rbspi_register_reset_button(RBWAP_GPIO_BTN_RESET);
-}
-
-/*
- * Init the cAP hardware (EXPERIMENTAL).
- * The cAP 2nD has a single ethernet port, and a global LED switch.
- */
-static void __init rbcap_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 1 */
- rbspi_network_setup(flags, 0, 1, 0);
-
- gpio_request_one(RBCAP_GPIO_LED_ALL,
- GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
- "LEDs enable");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbcap_leds), rbcap_leds);
-}
-
-/*
- * Init the mAP hardware.
- * The mAP 2nD has two ethernet ports, PoE output, SSR for LED
- * multiplexing and USB port.
- */
-static void __init rbmap_setup(void)
-{
- u32 flags = RBSPI_HAS_USB | RBSPI_HAS_WLAN0 |
- RBSPI_HAS_SSR | RBSPI_HAS_POE;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_spi_cs_gpios[1] = RBMAP_GPIO_SSR_CS;
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 2 */
- rbspi_network_setup(flags, 0, 2, 0);
-
- if (flags & RBSPI_HAS_POE)
- gpio_request_one(RBMAP_GPIO_POE_POWER,
- GPIOF_OUT_INIT_LOW | GPIOF_EXPORT_DIR_FIXED,
- "POE power");
-
- if (flags & RBSPI_HAS_USB)
- gpio_request_one(RBMAP_GPIO_USB_PWROFF,
- GPIOF_OUT_INIT_HIGH | GPIOF_ACTIVE_LOW |
- GPIOF_EXPORT_DIR_FIXED,
- "USB power off");
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbmap_leds), rbmap_leds);
-
- /* mAP 2nD has a single reset button as gpio 16 */
- rbspi_register_reset_button(RBMAP_GPIO_BTN_RESET);
-}
-
-/*
- * Init the wAPGSC (RB wAPG-5HacT2HnD // wAP AC) hardware.
- * The wAPGSC has one Ethernet port via AR8033 with PoE input, dual radio (SoC
- * 2.4 GHz and external QCA9880) and a ZT2046Q temperature and voltage sensor
- * (currently not supported).
- */
-static void __init rbwapgsc_setup(void)
-{
- u32 flags = RBSPI_HAS_PCI;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- platform_device_register(&rbwapgsc_phy_device);
-
- mdiobus_register_board_info(rbwapgsc_mdio_info,
- ARRAY_SIZE(rbwapgsc_mdio_info));
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
- ath79_eth1_data.mii_bus_dev = &rbwapgsc_phy_device.dev;
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
- ath79_eth1_data.phy_mask = BIT(RBWAPGSC_MDIO_PHYADDR);
- ath79_eth1_data.enable_sgmii_fixup = 1;
- ath79_eth1_pll_data.pll_1000 = 0x03000101;
- ath79_eth1_pll_data.pll_100 = 0x80000101;
- ath79_eth1_pll_data.pll_10 = 0x80001313;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
- ath79_register_eth(1);
-
- rbspi_wlan_init(2);
-
- rbspi_register_reset_button(RBWAPGSC_GPIO_BTN_RESET);
-
- ath79_gpio_function_enable(QCA955X_GPIO_FUNC_JTAG_DISABLE|
- QCA955X_GPIO_REG_OUT_FUNC4|
- QCA955X_GPIO_REG_OUT_FUNC3);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbwapgsc_leds),
- rbwapgsc_leds);
-}
-
-/*
- * Setup the 911L hardware (AR9344).
- */
-static void __init rb911l_setup(void)
-{
- const struct rb_info *info;
-
- info = rbspi_platform_setup();
- if (!info)
- return;
-
- if (!rb_has_hw_option(info, RB_HW_OPT_NO_NAND)) {
- /*
- * Old hardware revisions might be equipped with a NAND flash
- * chip instead of the 16MiB SPI NOR device. Those boards are
- * not supported at the moment, so throw a warning and skip
- * the peripheral setup to avoid messing up the data in the
- * flash chip.
- */
- WARN(1, "The NAND flash on this board is not supported.\n");
- } else {
- rbspi_peripherals_setup(0);
- }
-
- ath79_register_mdio(1, 0x0);
-
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
-
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_eth1_data.speed = SPEED_1000;
- ath79_eth1_data.duplex = DUPLEX_FULL;
-
- ath79_register_eth(1);
-
- rbspi_wlan_init(1);
-
- rbspi_register_reset_button(RB911L_GPIO_BTN_RESET);
-
- /* Make the eth LED controllable by software. */
- ath79_gpio_output_select(RB911L_GPIO_LED_ETH, AR934X_GPIO_OUT_GPIO);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb911l_leds), rb911l_leds);
-}
-
-/*
- * Init the hAP mini hardware (QCA953x).
- * The 931-2nD (hAP mini) has 3 ethernet ports, with port 2-3
- * being assigned to LAN on the casing, and port 1 being assigned
- * to "internet" (WAN) on the casing. Port 1 is connected to PHY2.
- * Since WAN is neither PHY0 nor PHY4, we cannot use GMAC0 with this device.
- */
-static void __init rb931_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 3 */
- rbspi_network_setup(flags, 0, 3, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rb931_leds), rb931_leds);
-
- /* hAP mini has two buttons */
- ath79_register_gpio_keys_polled(-1, RBSPI_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rb931_gpio_keys),
- rb931_gpio_keys);
-}
-
-/*
- * Init the wAP R hardware.
- * The wAP R-2nD has a single ethernet port and a mini PCIe slot.
- * The OEM source shows it has usb (used over PCIe for LTE devices),
- * and the 'control' GPIO is assumed to be an output pin not tied to an LED.
- */
-static void __init rbwapr_setup(void)
-{
- u32 flags = RBSPI_HAS_WLAN0 | RBSPI_HAS_USB | RBSPI_HAS_PCI;
-
- if (!rbspi_platform_setup())
- return;
-
- rbspi_peripherals_setup(flags);
-
- /* GMAC1 is HW MAC, WLAN0 MAC is HW MAC + 1 */
- rbspi_network_setup(flags, 0, 1, 0);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbwapr_leds), rbwapr_leds);
-
- gpio_request_one(RBWAPR_GPIO_PCIE_PWROFF, GPIOF_OUT_INIT_HIGH |
- GPIOF_ACTIVE_LOW | GPIOF_EXPORT_DIR_FIXED,
- "PCIE power off");
-
- gpio_request_one(RBWAPR_GPIO_CONTROL, GPIOF_OUT_INIT_LOW |
- GPIOF_ACTIVE_LOW | GPIOF_EXPORT_DIR_FIXED,
- "control");
-
- rbspi_register_reset_button(RBWAPR_GPIO_BTN_RESET);
-}
-
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAPL, "map-hb", rbmapl_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_941, "H951L", rbhapl_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_911L, "911L", rb911l_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_952, "952-hb", rb952_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_962, "962", rb962_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_750UPR2, "750-hb", rb750upr2_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_LHG5, "lhg", rblhg_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAP, "wap-hb", rbwap_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPR, "wap-lte", rbwapr_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_CAP, "cap-hb", rbcap_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_MAP, "map2-hb", rbmap_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_WAPAC, "wapg-sc", rbwapgsc_setup);
-MIPS_MACHINE_NONAME(ATH79_MACH_RB_931, "931", rb931_setup);
+++ /dev/null
-/*
- * MikroTik RouterBOARD SXT Lite support
- *
- * Copyright (C) 2012 Stijn Tintel <stijn@linux-ipv6.be>
- * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (C) 2013 Vyacheslav Adamanov <adamanov@gmail.com>
- *
- * 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.
- */
-
-#define pr_fmt(fmt) "sxtlite: " fmt
-
-#include <linux/version.h>
-#include <linux/phy.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/ath9k_platform.h>
-#include <linux/mtd/mtd.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0)
-#include <linux/mtd/nand.h>
-#else
-#include <linux/mtd/rawnand.h>
-#endif
-#include <linux/mtd/partitions.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-#include <linux/rle.h>
-#include <linux/routerboot.h>
-#include <linux/gpio.h>
-#include <linux/version.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include "common.h"
-#include "dev-ap9x-pci.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-eth.h"
-#include "dev-m25p80.h"
-#include "dev-nfc.h"
-#include "dev-wmac.h"
-#include "dev-usb.h"
-#include "machtypes.h"
-#include "routerboot.h"
-#include <linux/ar8216_platform.h>
-
-#define SXTLITE_GPIO_NAND_NCE 14
-#define SXTLITE_GPIO_LED_USER 3
-#define SXTLITE_GPIO_LED_1 13
-#define SXTLITE_GPIO_LED_2 12
-#define SXTLITE_GPIO_LED_3 4
-#define SXTLITE_GPIO_LED_4 21
-#define SXTLITE_GPIO_LED_5 18
-#define SXTLITE_GPIO_LED_POWER 11
-
-#define SXTLITE_GPIO_BUZZER 19
-
-#define SXTLITE_GPIO_BTN_RESET 15
-
-#define SXTLITE_KEYS_POLL_INTERVAL 20
-#define SXTLITE_KEYS_DEBOUNCE_INTERVAL (3 * SXTLITE_KEYS_POLL_INTERVAL)
-
-static struct mtd_partition rbsxtlite_nand_partitions[] = {
- {
- .name = "booter",
- .offset = 0,
- .size = (256 * 1024),
- .mask_flags = MTD_WRITEABLE,
- },
- {
- .name = "kernel",
- .offset = (256 * 1024),
- .size = (4 * 1024 * 1024) - (256 * 1024),
- },
- {
- .name = "ubi",
- .offset = MTDPART_OFS_NXTBLK,
- .size = MTDPART_SIZ_FULL,
- },
-};
-
-static struct gpio_led rbsxtlite_leds_gpio[] __initdata = {
- {
- .name = "rb:green:user",
- .gpio = SXTLITE_GPIO_LED_USER,
- .active_low = 1,
- },
- {
- .name = "rb:green:led1",
- .gpio = SXTLITE_GPIO_LED_1,
- .active_low = 1,
- },
- {
- .name = "rb:green:led2",
- .gpio = SXTLITE_GPIO_LED_2,
- .active_low = 1,
- },
- {
- .name = "rb:green:led3",
- .gpio = SXTLITE_GPIO_LED_3,
- .active_low = 1,
- },
- {
- .name = "rb:green:led4",
- .gpio = SXTLITE_GPIO_LED_4,
- .active_low = 1,
- },
- {
- .name = "rb:green:led5",
- .gpio = SXTLITE_GPIO_LED_5,
- .active_low = 1,
- },
- {
- .name = "rb:green:power",
- .gpio = SXTLITE_GPIO_LED_POWER,
- .default_state = LEDS_GPIO_DEFSTATE_ON,
- },
-};
-
-static struct gpio_keys_button rbsxtlite_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = SXTLITE_KEYS_DEBOUNCE_INTERVAL,
- .gpio = SXTLITE_GPIO_BTN_RESET,
- .active_low = 0,
- },
-};
-
-static int __init rbsxtlite_rbinfo_init(void)
-{
- const struct rb_info *info;
-
- info = rb_init_info((void *)(KSEG1ADDR(AR71XX_SPI_BASE)), 0x10000);
- if (!info)
- return -EINVAL;
- return 0;
-
-}
-
-void __init rbsxtlite_wlan_init(void)
-{
- char *art_buf;
- u8 wlan_mac[ETH_ALEN];
-
- art_buf = rb_get_wlan_data();
- if (art_buf == NULL)
- return;
-
- ath79_init_mac(wlan_mac, ath79_mac_base, 1);
- ath79_register_wmac(art_buf + 0x1000, wlan_mac);
-
- kfree(art_buf);
-}
-
-static void rbsxtlite_nand_select_chip(int chip_no)
-{
- switch (chip_no) {
- case 0:
- gpio_set_value(SXTLITE_GPIO_NAND_NCE, 0);
- break;
- default:
- gpio_set_value(SXTLITE_GPIO_NAND_NCE, 1);
- break;
- }
- ndelay(500);
-}
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
-static struct nand_ecclayout rbsxtlite_nand_ecclayout = {
- .eccbytes = 6,
- .eccpos = { 8, 9, 10, 13, 14, 15 },
- .oobavail = 9,
- .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1 } }
-};
-
-#else
-
-static int rbsxtlite_ooblayout_ecc(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 8;
- oobregion->length = 3;
- return 0;
- case 1:
- oobregion->offset = 13;
- oobregion->length = 3;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static int rbsxtlite_ooblayout_free(struct mtd_info *mtd, int section,
- struct mtd_oob_region *oobregion)
-{
- switch (section) {
- case 0:
- oobregion->offset = 0;
- oobregion->length = 4;
- return 0;
- case 1:
- oobregion->offset = 4;
- oobregion->length = 1;
- return 0;
- case 2:
- oobregion->offset = 6;
- oobregion->length = 2;
- return 0;
- case 3:
- oobregion->offset = 11;
- oobregion->length = 2;
- return 0;
- default:
- return -ERANGE;
- }
-}
-
-static const struct mtd_ooblayout_ops rbsxtlite_nand_ecclayout_ops = {
- .ecc = rbsxtlite_ooblayout_ecc,
- .free = rbsxtlite_ooblayout_free,
-};
-#endif /* < 4.6 */
-
-static int rbsxtlite_nand_scan_fixup(struct mtd_info *mtd)
-{
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- struct nand_chip *chip = mtd->priv;
-#endif
-
- if (mtd->writesize == 512) {
- /*
- * Use the OLD Yaffs-1 OOB layout, otherwise RouterBoot
- * will not be able to find the kernel that we load.
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
- chip->ecc.layout = &rbsxtlite_nand_ecclayout;
-#else
- mtd_set_ooblayout(mtd, &rbsxtlite_nand_ecclayout_ops);
-#endif
- }
-
- return 0;
-}
-
-void __init rbsxtlite_gpio_init(void)
-{
- gpio_request_one(SXTLITE_GPIO_NAND_NCE, GPIOF_OUT_INIT_HIGH, "NAND nCE");
-}
-
-void __init rbsxtlite_nand_init(void)
-{
- ath79_nfc_set_scan_fixup(rbsxtlite_nand_scan_fixup);
- ath79_nfc_set_parts(rbsxtlite_nand_partitions,
- ARRAY_SIZE(rbsxtlite_nand_partitions));
- ath79_nfc_set_select_chip(rbsxtlite_nand_select_chip);
- ath79_nfc_set_swap_dma(true);
- ath79_register_nfc();
-}
-
-
-static void __init rbsxtlite_setup(void)
-{
- if(rbsxtlite_rbinfo_init())
- return;
- rbsxtlite_nand_init();
- rbsxtlite_wlan_init();
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rbsxtlite_leds_gpio),
- rbsxtlite_leds_gpio);
- ath79_register_gpio_keys_polled(-1, SXTLITE_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rbsxtlite_gpio_keys),
- rbsxtlite_gpio_keys);
-
- ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
-
- ath79_register_mdio(1, 0x0);
-
- /* GMAC0 is left unused */
-
- /* GMAC1 is connected to MAC0 on the internal switch */
- /* The ethernet port connects to PHY P0, which connects to MAC1
- on the internal switch */
- ath79_init_mac(ath79_eth1_data.mac_addr, ath79_mac_base, 0);
- ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
- ath79_register_eth(1);
-
-
-}
-
-
-MIPS_MACHINE(ATH79_MACH_RB_SXTLITE2ND, "sxt2n", "MikroTik RouterBOARD SXT Lite2",
- rbsxtlite_setup);
-
-MIPS_MACHINE(ATH79_MACH_RB_SXTLITE5ND, "sxt5n", "MikroTik RouterBOARD SXT Lite5",
- rbsxtlite_setup);
-
+++ /dev/null
-/*
- * TP-LINK RE355/RE450 board support
- *
- * Copyright (c) 2013 Gabor Juhos <juhosg@openwrt.org>
- * Copyright (c) 2016 Tal Keren <kooolk@gmail.com>
- * Copyright (c) 2018 Henryk Heisig <hyniu@o2.pl>
- *
- * Based on the Qualcomm Atheros AP135/AP136 reference board support code
- * Copyright (c) 2012 Qualcomm Atheros
- *
- * 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/pci.h>
-#include <linux/phy.h>
-#include <linux/gpio.h>
-#include <linux/platform_data/mdio-gpio.h>
-#include <linux/platform_device.h>
-#include <linux/ar8216_platform.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.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-wmac.h"
-#include "machtypes.h"
-#include "pci.h"
-
-#define RE450_GPIO_LED_SYSTEM 12
-#define RE450_GPIO_LED_WLAN2G 13
-#define RE450_GPIO_LED_WLAN5G 14
-#define RE450_GPIO_LED_LAN_DATA 17
-#define RE450_GPIO_LED_JUMPSTART 21
-#define RE450_GPIO_LED_JUMPSTART_RED 22
-#define RE450_GPIO_LED_LAN_LINK 23
-
-#define RE450_GPIO_BTN_RESET 18
-#define RE450_GPIO_BTN_LED 19
-#define RE450_GPIO_BTN_JUMPSTART 20
-
-#define RE450_GPIO_SMI_MDIO 1
-#define RE450_GPIO_SMI_MDC 3
-
-#define RE450_LAN_PHYADDR 4
-
-#define RE450_KEYS_POLL_INTERVAL 20 /* msecs */
-#define RE450_KEYS_DEBOUNCE_INTERVAL (3 * RE450_KEYS_POLL_INTERVAL)
-
-#define RE450_WMAC_CALDATA_OFFSET 0x1000
-
-static const char *tl_re450_part_probes[] = {
- "cmdlinepart",
- NULL,
-};
-
-static struct flash_platform_data tl_re450_flash_data = {
- .part_probes = tl_re450_part_probes,
-};
-
-static struct gpio_led re355_leds_gpio[] __initdata = {
- {
- .name = "re355:blue:power",
- .gpio = RE450_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "re355:blue:wlan2g",
- .gpio = RE450_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
- {
- .name = "re355:blue:wlan5g",
- .gpio = RE450_GPIO_LED_WLAN5G,
- .active_low = 1,
- },
- {
- .name = "re355:blue:wps",
- .gpio = RE450_GPIO_LED_JUMPSTART,
- },
- {
- .name = "re355:red:wps",
- .gpio = RE450_GPIO_LED_JUMPSTART_RED,
- },
- {
- .name = "re355:green:lan_data",
- .gpio = RE450_GPIO_LED_LAN_DATA,
- .active_low = 1,
- },
- {
- .name = "re355:green:lan_link",
- .gpio = RE450_GPIO_LED_LAN_LINK,
- .active_low = 1,
- },
-};
-
-static struct gpio_led re450_leds_gpio[] __initdata = {
- {
- .name = "re450:blue:power",
- .gpio = RE450_GPIO_LED_SYSTEM,
- .active_low = 1,
- },
- {
- .name = "re450:blue:wlan2g",
- .gpio = RE450_GPIO_LED_WLAN2G,
- .active_low = 1,
- },
- {
- .name = "re450:blue:wlan5g",
- .gpio = RE450_GPIO_LED_WLAN5G,
- .active_low = 1,
- },
- {
- .name = "re450:blue:wps",
- .gpio = RE450_GPIO_LED_JUMPSTART,
- },
- {
- .name = "re450:red:wps",
- .gpio = RE450_GPIO_LED_JUMPSTART_RED,
- },
- {
- .name = "re450:green:lan_data",
- .gpio = RE450_GPIO_LED_LAN_DATA,
- .active_low = 1,
- },
- {
- .name = "re450:green:lan_link",
- .gpio = RE450_GPIO_LED_LAN_LINK,
- .active_low = 1,
- },
-};
-
-static struct gpio_keys_button re450_gpio_keys[] __initdata = {
- {
- .desc = "Reset button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = RE450_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RE450_GPIO_BTN_RESET,
- .active_low = 1,
- },
- {
- .desc = "WPS button",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RE450_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RE450_GPIO_BTN_JUMPSTART,
- .active_low = 1,
- },
- {
- .desc = "Control LED button",
- .type = EV_KEY,
- .code = BTN_0,
- .debounce_interval = RE450_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RE450_GPIO_BTN_LED,
- .active_low = 1,
- },
-};
-
-static struct mdio_gpio_platform_data re450_mdio = {
- .mdc = RE450_GPIO_SMI_MDC,
- .mdio = RE450_GPIO_SMI_MDIO,
- .phy_mask = ~BIT(RE450_LAN_PHYADDR),
-};
-
-static struct platform_device re450_phy_device = {
- .name = "mdio-gpio",
- .id = 0,
- .dev = {
- .platform_data = &re450_mdio,
- },
-};
-
-static void __init rex5x_setup(void)
-{
- u8 *mac = (u8 *) KSEG1ADDR(0x1f610008);
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
- u8 tmpmac[ETH_ALEN];
-
- ath79_register_m25p80(&tl_re450_flash_data);
- ath79_register_gpio_keys_polled(-1, RE450_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(re450_gpio_keys),
- re450_gpio_keys);
-
- ath79_init_mac(tmpmac, mac, -1);
- ath79_register_wmac(art + RE450_WMAC_CALDATA_OFFSET, tmpmac);
-
- ath79_register_pci();
-
- /* MDIO Interface */
- platform_device_register(&re450_phy_device);
-
- ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN);
-
- /* GMAC0 is connected to the RGMII interface to an Atheros AR8035-A */
- ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
- ath79_eth0_data.mii_bus_dev = &re450_phy_device.dev;
- ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
- ath79_eth0_data.phy_mask = BIT(RE450_LAN_PHYADDR);
- ath79_eth0_pll_data.pll_1000 = 0xa6000000;
- ath79_eth0_pll_data.pll_100 = 0xa0000101;
- ath79_eth0_pll_data.pll_10 = 0x80001313;
- ath79_register_eth(0);
-}
-
-static void __init re355_setup(void)
-{
- rex5x_setup();
- ath79_register_leds_gpio(-1, ARRAY_SIZE(re355_leds_gpio),
- re355_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_RE355, "RE355", "TP-LINK RE355",
- re355_setup)
-
-static void __init re450_setup(void)
-{
- rex5x_setup();
- ath79_register_leds_gpio(-1, ARRAY_SIZE(re450_leds_gpio),
- re450_leds_gpio);
-}
-
-MIPS_MACHINE(ATH79_MACH_RE450, "RE450", "TP-LINK RE450",
- re450_setup)
+++ /dev/null
-/*
- * eTactica EG-200 board, based on 8devices Carambola2 module
- *
- * Copyright (C) 2015 Karl Palsson <karlp@etactica.com>
- *
- * 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 <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define RME_EG200_GPIO_LED_WLAN 0
-#define RME_EG200_GPIO_LED_ETH0 13
-#define RME_EG200_GPIO_LED_ETACTICA 15
-#define RME_EG200_GPIO_LED_MODBUS 16
-
-#define RME_EG200_GPIO_BTN_RESTORE 11
-
-#define RME_EG200_KEYS_POLL_INTERVAL 20 /* msecs */
-#define RME_EG200_KEYS_DEBOUNCE_INTERVAL (3 * RME_EG200_KEYS_POLL_INTERVAL)
-
-#define RME_EG200_MAC0_OFFSET 0x0000
-#define RME_EG200_CALDATA_OFFSET 0x1000
-#define RME_EG200_WMAC_MAC_OFFSET 0x1002
-
-static struct gpio_led rme_eg200_leds_gpio[] __initdata = {
- {
- .name = "eg200:red:wlan",
- .gpio = RME_EG200_GPIO_LED_WLAN,
- .active_low = 1,
- }, {
- .name = "eg200:red:eth0",
- .gpio = RME_EG200_GPIO_LED_ETH0,
- .active_low = 1,
- }, {
- .name = "eg200:red:etactica",
- .gpio = RME_EG200_GPIO_LED_ETACTICA,
- .active_low = 0,
- }, {
- .name = "eg200:red:modbus",
- .gpio = RME_EG200_GPIO_LED_MODBUS,
- .active_low = 0,
- }
-};
-
-static struct gpio_keys_button rme_eg200_keys[] __initdata = {
- {
- .desc = "restore button",
- .type = EV_KEY,
- .code = KEY_WPS_BUTTON,
- .debounce_interval = RME_EG200_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RME_EG200_GPIO_BTN_RESTORE,
- .active_low = 1,
- },
-};
-
-static void __init rme_eg200_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
-
- ath79_register_m25p80(NULL);
- ath79_register_wmac(art + RME_EG200_CALDATA_OFFSET,
- art + RME_EG200_WMAC_MAC_OFFSET);
-
- ath79_setup_ar933x_phy4_switch(true, true);
-
- ath79_init_mac(ath79_eth0_data.mac_addr, art + RME_EG200_MAC0_OFFSET, 0);
-
- ath79_register_mdio(0, 0x0);
-
- /* WAN port */
- ath79_register_eth(0);
-
- ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
- AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
-
- ath79_register_leds_gpio(-1, ARRAY_SIZE(rme_eg200_leds_gpio),
- rme_eg200_leds_gpio);
- ath79_register_gpio_keys_polled(-1, RME_EG200_KEYS_POLL_INTERVAL,
- ARRAY_SIZE(rme_eg200_keys),
- rme_eg200_keys);
- ath79_register_usb();
-}
-
-MIPS_MACHINE(ATH79_MACH_RME_EG200, "RME-EG200", "eTactica EG-200",
- rme_eg200_setup);
+++ /dev/null
-/*
- * Teltonika RUT900 series boards support
- *
- * Copyright (C) 2018 Piotr Dymacz <pepe2k@gmail.com>
- *
- * 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 <linux/gpio.h>
-#include <linux/i2c.h>
-#include <linux/i2c-algo-bit.h>
-#include <linux/i2c-gpio.h>
-#include <linux/platform_data/pca953x.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-ath79/ath79.h>
-#include <asm/mach-ath79/ar71xx_regs.h>
-
-#include "common.h"
-#include "dev-eth.h"
-#include "dev-gpio-buttons.h"
-#include "dev-leds-gpio.h"
-#include "dev-m25p80.h"
-#include "dev-usb.h"
-#include "dev-wmac.h"
-#include "machtypes.h"
-
-#define RUT9XX_GPIO_LED_LAN1 14
-#define RUT9XX_GPIO_LED_LAN2 13
-#define RUT9XX_GPIO_LED_LAN3 22
-#define RUT9XX_GPIO_LED_WAN 1
-
-#define RUT9XX_PCA9539_GPIO_BASE 32
-#define RUT9XX_PCA9539_GPIO_SIGNAL1 (0 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_SIGNAL2 (1 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_SIGNAL3 (2 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_SIGNAL4 (3 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_SIGNAL5 (4 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_STATUS_R (5 + RUT9XX_PCA9539_GPIO_BASE)
-#define RUT9XX_PCA9539_GPIO_STATUS_G (6 + RUT9XX_PCA9539_GPIO_BASE)
-
-#define RUT9XX_GPIO_BTN_RESET 15
-
-#define RUT9XX_GPIO_I2C_SCK 16
-#define RUT9XX_GPIO_I2C_SDA 17
-
-#define RUT9XX_GPIO_EXT_LNA0 2
-
-#define RUT9XX_WMAC_CALDATA_OFFSET 0x1000
-
-#define RUT9XX_KEYS_POLL_INTERVAL 20
-#define RUT9XX_KEYS_DEBOUNCE_INTERVAL (3 * RUT9XX_KEYS_POLL_INTERVAL)
-
-static struct gpio_led rut900_leds_gpio[] __initdata = {
- {
- .name = "rut900:green:lan1",
- .gpio = RUT9XX_GPIO_LED_LAN1,
- .active_low = 1,
- }, {
- .name = "rut900:green:lan2",
- .gpio = RUT9XX_GPIO_LED_LAN2,
- .active_low = 1,
- }, {
- .name = "rut900:green:lan3",
- .gpio = RUT9XX_GPIO_LED_LAN3,
- .active_low = 1,
- }, {
- .name = "rut900:green:signal1",
- .gpio = RUT9XX_PCA9539_GPIO_SIGNAL1,
- .active_low = 0,
- }, {
- .name = "rut900:green:signal2",
- .gpio = RUT9XX_PCA9539_GPIO_SIGNAL2,
- .active_low = 0,
- }, {
- .name = "rut900:green:signal3",
- .gpio = RUT9XX_PCA9539_GPIO_SIGNAL3,
- .active_low = 0,
- }, {
- .name = "rut900:green:signal4",
- .gpio = RUT9XX_PCA9539_GPIO_SIGNAL4,
- .active_low = 0,
- }, {
- .name = "rut900:green:signal5",
- .gpio = RUT9XX_PCA9539_GPIO_SIGNAL5,
- .active_low = 0,
- }, {
- .name = "rut900:green:status",
- .gpio = RUT9XX_PCA9539_GPIO_STATUS_G,
- .active_low = 0,
- }, {
- .name = "rut900:green:wan",
- .gpio = RUT9XX_GPIO_LED_WAN,
- .active_low = 1,
- }, {
- .name = "rut900:red:status",
- .gpio = RUT9XX_PCA9539_GPIO_STATUS_R,
- .active_low = 0,
- },
-};
-
-static struct gpio_keys_button rut900_gpio_keys[] __initdata = {
- {
- .desc = "reset",
- .type = EV_KEY,
- .code = KEY_RESTART,
- .debounce_interval = RUT9XX_KEYS_DEBOUNCE_INTERVAL,
- .gpio = RUT9XX_GPIO_BTN_RESET,
- .active_low = 1,
- },
-};
-
-static struct i2c_gpio_platform_data rut900_i2c_gpio_data = {
- .sda_pin = RUT9XX_GPIO_I2C_SDA,
- .scl_pin = RUT9XX_GPIO_I2C_SCK,
- .udelay = 10,
-};
-
-static struct platform_device rut900_i2c_device = {
- .name = "i2c-gpio",
- .id = 0,
- .dev = {
- .platform_data = &rut900_i2c_gpio_data,
- },
-};
-
-static struct pca953x_platform_data rut9xx_pca9539_data = {
- .gpio_base = RUT9XX_PCA9539_GPIO_BASE,
- .irq_base = -1,
-};
-
-static struct i2c_board_info rut900_i2c_devs[] __initdata = {
- {
- I2C_BOARD_INFO("pca9539", 0x74),
- .platform_data = &rut9xx_pca9539_data,
- },
-};
-
-static void __init rut900_setup(void)
-{
- u8 *art = (u8 *) KSEG1ADDR(0x1f030000);
- u8 *mac = (u8 *) KSEG1ADDR(0x1f020000);
- u8 wlan_mac[ETH_ALEN];
-
- ath79_register_m25p80(NULL);
-
- ath79_register_mdio(1, 0x0);
-
<