aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar7
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-01-05 13:49:38 +0100
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-01-08 16:45:08 +0100
commit4bc92c1e7526ee48e04c25ec4b468e7527e18b6e (patch)
tree3359b7456b0a2306e55ed5fb78820d7658916fbc /target/linux/ar7
parent2a0e0dec02accb77163d8251e1be4fdaa538d8e9 (diff)
downloadupstream-4bc92c1e7526ee48e04c25ec4b468e7527e18b6e.tar.gz
upstream-4bc92c1e7526ee48e04c25ec4b468e7527e18b6e.tar.bz2
upstream-4bc92c1e7526ee48e04c25ec4b468e7527e18b6e.zip
ar7: remove unmaintained target
This target seems to have been unmaintained for quite a while, and not a single tester for the (now outdated) kernel 4.14 patches has been found. Remove the code and all the packages which are only used by this target. To add this target to OpenWrt again port it to a recent and supported kernel version. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'target/linux/ar7')
-rw-r--r--target/linux/ar7/Makefile25
-rw-r--r--target/linux/ar7/ac49x/config-default4
-rw-r--r--target/linux/ar7/ac49x/profiles/210-None.mk17
-rw-r--r--target/linux/ar7/ac49x/target.mk10
-rw-r--r--target/linux/ar7/base-files.mk11
-rwxr-xr-xtarget/linux/ar7/base-files/etc/board.d/02_network28
-rw-r--r--target/linux/ar7/base-files/etc/diag.sh32
-rwxr-xr-xtarget/linux/ar7/base-files/etc/init.d/adam213
-rw-r--r--target/linux/ar7/config-4.14169
-rw-r--r--target/linux/ar7/files/drivers/mtd/ac49xpart.c221
-rw-r--r--target/linux/ar7/files/drivers/mtd/titanpart.c234
-rw-r--r--target/linux/ar7/generic/config-default5
-rw-r--r--target/linux/ar7/generic/profiles/100-Annex-A.mk18
-rw-r--r--target/linux/ar7/generic/profiles/110-Annex-B.mk18
-rw-r--r--target/linux/ar7/generic/profiles/200-Texas.mk18
-rw-r--r--target/linux/ar7/generic/profiles/210-None.mk17
-rw-r--r--target/linux/ar7/generic/target.mk12
-rw-r--r--target/linux/ar7/image/Makefile137
-rw-r--r--target/linux/ar7/patches-4.14/100-fix-highmem-offset.patch11
-rw-r--r--target/linux/ar7/patches-4.14/110-flash.patch22
-rw-r--r--target/linux/ar7/patches-4.14/160-vlynq_try_remote_first.patch300
-rw-r--r--target/linux/ar7/patches-4.14/200-free-mem-below-kernel-offset.patch15
-rw-r--r--target/linux/ar7/patches-4.14/300-add-ac49x-platform.patch85
-rw-r--r--target/linux/ar7/patches-4.14/310-ac49x-prom-support.patch20
-rw-r--r--target/linux/ar7/patches-4.14/320-ac49x-mtd-partitions.patch35
-rw-r--r--target/linux/ar7/patches-4.14/920-ar7part.patch120
-rw-r--r--target/linux/ar7/patches-4.14/925-actiontec_leds.patch95
-rw-r--r--target/linux/ar7/patches-4.14/950-cpmac_titan.patch52
-rw-r--r--target/linux/ar7/src/adam2patcher.c59
29 files changed, 0 insertions, 1803 deletions
diff --git a/target/linux/ar7/Makefile b/target/linux/ar7/Makefile
deleted file mode 100644
index d36340d143..0000000000
--- a/target/linux/ar7/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2006-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:=mipsel
-BOARD:=ar7
-BOARDNAME:=TI AR7
-FEATURES:=squashfs atm low_mem
-SUBTARGETS:=generic ac49x
-
-KERNEL_PATCHVER:=4.14
-
-define Target/Description
- Build firmware images for TI AR7 based routers.
-endef
-
-include $(INCLUDE_DIR)/target.mk
-
-DEFAULT_PACKAGES+= swconfig
-
-$(eval $(call BuildTarget))
diff --git a/target/linux/ar7/ac49x/config-default b/target/linux/ar7/ac49x/config-default
deleted file mode 100644
index d56df86682..0000000000
--- a/target/linux/ar7/ac49x/config-default
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_AR7_AC49X=y
-CONFIG_AR7_TYPE_AC49X=y
-# CONFIG_AR7_TYPE_TI is not set
-CONFIG_MTD_AC49X_PARTS=y
diff --git a/target/linux/ar7/ac49x/profiles/210-None.mk b/target/linux/ar7/ac49x/profiles/210-None.mk
deleted file mode 100644
index 2fcfacde9f..0000000000
--- a/target/linux/ar7/ac49x/profiles/210-None.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2006 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/None
- NAME:=No WiFi
- PACKAGES:=
-endef
-
-define Profile/None/Description
- Package set without WiFi support
-endef
-$(eval $(call Profile,None))
-
diff --git a/target/linux/ar7/ac49x/target.mk b/target/linux/ar7/ac49x/target.mk
deleted file mode 100644
index 47f3ab282d..0000000000
--- a/target/linux/ar7/ac49x/target.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Copyright (C) 2012 OpenWrt.org
-#
-
-SUBTARGET:=ac49x
-BOARDNAME:=AudioCodes AC49x
-
-define Target/Description
- Build firmware images for AudioCodes AC49x based routers.
-endef
diff --git a/target/linux/ar7/base-files.mk b/target/linux/ar7/base-files.mk
deleted file mode 100644
index f21a604b83..0000000000
--- a/target/linux/ar7/base-files.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-define Build/Compile
- $(call Build/Compile/Default)
- $(TARGET_CC) -o $(PKG_BUILD_DIR)/adam2patcher $(PLATFORM_DIR)/src/adam2patcher.c
-endef
-
-define Package/base-files/install-target
- mkdir -p $(1)/sbin
- $(CP) $(PKG_BUILD_DIR)/adam2patcher $(1)/sbin
-endef
-
-
diff --git a/target/linux/ar7/base-files/etc/board.d/02_network b/target/linux/ar7/base-files/etc/board.d/02_network
deleted file mode 100755
index c1c2dc42fe..0000000000
--- a/target/linux/ar7/base-files/etc/board.d/02_network
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-if [ -e "/sys/bus/mdio_bus/drivers/IC+ IP175A/1:00" -o \
- -e "/sys/bus/mdio_bus/drivers/IC+ IP17xx/1:00" ] && \
- [ -x /sbin/swconfig ];
-then
- ucidef_add_switch "eth0" \
- "0:lan" "1:lan" "2:lan" "3:lan" "4t@eth0"
-
-elif [ -e "/sys/bus/mdio_bus/drivers/Infineon ADM6996/1:00" -o \
- -e "/sys/bus/mdio_bus/drivers/Marvell 88E6060/1:10" ];
-then
- ucidef_set_interface_lan "eth0.1"
-
-elif [ -d "/sys/class/net/eth1" ]; then
- ucidef_set_interface_lan "eth0 eth1"
-
-else
- ucidef_set_interface_lan "eth0"
-fi
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/ar7/base-files/etc/diag.sh b/target/linux/ar7/base-files/etc/diag.sh
deleted file mode 100644
index f9aa809405..0000000000
--- a/target/linux/ar7/base-files/etc/diag.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2007-2013 OpenWrt.org
-
-. /lib/functions/leds.sh
-
-get_status_led() {
- [ -d "/sys/class/leds/status" ] && status_led="status"
- [ -d "/sys/class/leds/power:green" ] && status_led="power:green"
-}
-
-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
- ;;
- done)
- status_led_on
-
- [ "$status_led" = "power:green" ] && {
- led_off "power:red"
- }
- ;;
- esac
-}
diff --git a/target/linux/ar7/base-files/etc/init.d/adam2 b/target/linux/ar7/base-files/etc/init.d/adam2
deleted file mode 100755
index 6b786270ea..0000000000
--- a/target/linux/ar7/base-files/etc/init.d/adam2
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh /etc/rc.common
-# ADAM2 patcher for Netgear DG834 and compatible
-# Copyright (C) 2006 OpenWrt.org
-
-START=00
-start() {
- MD5="$(md5sum /dev/mtdblock0 | awk '{print $1}')"
- [ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
- mtd unlock adam2
- /sbin/adam2patcher /dev/mtdblock0
- }
- rm -f /etc/rc.d/S${START}adam2 /etc/init.d/adam2 /sbin/adam2patcher >&- 2>&-
-}
diff --git a/target/linux/ar7/config-4.14 b/target/linux/ar7/config-4.14
deleted file mode 100644
index aacdac63dc..0000000000
--- a/target/linux/ar7/config-4.14
+++ /dev/null
@@ -1,169 +0,0 @@
-CONFIG_ADM6996_PHY=y
-CONFIG_AR7=y
-CONFIG_AR7_TI=y
-# CONFIG_AR7_TYPE_AC49X is not set
-CONFIG_AR7_TYPE_TI=y
-CONFIG_AR7_WDT=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_SG_CHAIN is not set
-# CONFIG_ARCH_HAS_STRICT_KERNEL_RWX is not set
-# CONFIG_ARCH_HAS_STRICT_MODULE_RWX is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15
-# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set
-# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set
-CONFIG_ARCH_SUPPORTS_UPROBES=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_USE_BUILTIN_BSWAP=y
-CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
-CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-CONFIG_BOOT_ELF32=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
-CONFIG_CMDLINE_BOOL=y
-# CONFIG_CMDLINE_OVERRIDE is not set
-CONFIG_CPMAC=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPSR1=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_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_CPU_AUTOPROBE=y
-CONFIG_GENERIC_IO=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=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_GRO_CELLS is not set
-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_COMPILER_H=y
-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_CONTEXT_TRACKING=y
-CONFIG_HAVE_COPY_THREAD_TLS=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_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_HW_RANDOM=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IP17XX_PHY=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_MIPS_CPU=y
-CONFIG_IRQ_WORK=y
-CONFIG_KALLSYMS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MIGRATION=y
-CONFIG_MIPS=y
-CONFIG_MIPS_ASID_BITS=8
-CONFIG_MIPS_ASID_SHIFT=0
-CONFIG_MIPS_CBPF_JIT=y
-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 is not set
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MTD_AC49X_PARTS is not set
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MVSWITCH_PHY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NO_EXCEPT_FILL=y
-CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y
-# CONFIG_NO_IOPORT_MAP is not set
-# CONFIG_OF is not set
-CONFIG_PCI_DRIVERS_LEGACY=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-# CONFIG_RCU_NEED_SEGCBLIST is not set
-# CONFIG_RCU_STALL_COMMON is not set
-# CONFIG_SCHED_INFO is not set
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SERIAL_8250_FSL is not set
-CONFIG_SRCU=y
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_SWCONFIG=y
-CONFIG_SWPHY=y
-CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_MIPS16=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_SYS_SUPPORTS_ZBOOT_UART16550=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TINY_SRCU=y
-CONFIG_VLYNQ=y
-# CONFIG_VLYNQ_DEBUG is not set
diff --git a/target/linux/ar7/files/drivers/mtd/ac49xpart.c b/target/linux/ar7/files/drivers/mtd/ac49xpart.c
deleted file mode 100644
index 4f8a9c1b84..0000000000
--- a/target/linux/ar7/files/drivers/mtd/ac49xpart.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * AudioCodes AC49x PSPBoot-based flash partition table
- * Copyright 2012 Daniel Golle <daniel.golle@gmail.com>
- *
- * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/slab.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/bootmem.h>
-#include <linux/magic.h>
-#include <linux/module.h>
-
-#include <asm/mach-ar7/prom.h>
-
-#define AC49X_MAXENVPARTS 8
-
-#define AC49X_PARTTYPE_LOADER 0
-#define AC49X_PARTTYPE_BOOTENV 1
-#define AC49X_PARTTYPE_LINUX 2
-#define AC49X_PARTTYPE_ROOTFS 3
-#define AC49X_PARTTYPE_UNKNOWN 4
-#define AC49X_NUM_PARTTYPES 5
-
-#define AC49X_FLASH_ADDRMASK 0x00FFFFFF
-
-#define AC49X_LOADER_MAGIC 0x40809000
-#define AC49X_LINUX_MAGIC 0x464c457f /* ELF */
-#define AC49X_BOOTENV_MAGIC 0x4578614d /* MaxE */
-
-#define ROOTFS_MIN_OFFSET 0xC0000
-
-int parse_partvar(const unsigned char *partvar, struct mtd_partition *part)
-{
- unsigned int partstart, partend;
- unsigned int pnum;
-
- pnum = sscanf(partvar, "0x%x,0x%x", &partstart, &partend);
- if (pnum != 2)
- return 1;
-
- part->offset = partstart & AC49X_FLASH_ADDRMASK;
- part->size = partend - partstart;
-
- return 0;
-}
-
-int detect_parttype(struct mtd_info *master, struct mtd_partition part)
-{
- unsigned int magic;
- size_t len;
-
- if (part.size < 4)
- return -1;
-
- mtd_read(master, part.offset, sizeof(magic), &len,
- (uint8_t *)&magic);
-
- if (len != sizeof(magic))
- return -1;
-
- switch (magic) {
- case AC49X_LOADER_MAGIC:
- return AC49X_PARTTYPE_LOADER;
- case AC49X_LINUX_MAGIC:
- return AC49X_PARTTYPE_LINUX;
- case SQUASHFS_MAGIC:
- case CRAMFS_MAGIC:
- case CRAMFS_MAGIC_WEND:
- return AC49X_PARTTYPE_ROOTFS;
- case AC49X_BOOTENV_MAGIC:
- return AC49X_PARTTYPE_BOOTENV;
- default:
- switch (magic & 0xFF) {
- case JFFS2_SUPER_MAGIC:
- return AC49X_PARTTYPE_ROOTFS;
- }
- switch (magic >> 8) {
- case JFFS2_SUPER_MAGIC:
- return AC49X_PARTTYPE_ROOTFS;
- }
- return AC49X_PARTTYPE_UNKNOWN;
- }
-}
-
-const char *partnames[] = {
- "loader",
- "config",
- "linux",
- "rootfs",
- "data"
-};
-
-void gen_partname(unsigned int type,
- unsigned int *typenumeration,
- struct mtd_partition *part)
-{
- char *s = kzalloc(sizeof(char) * 8, GFP_KERNEL);
-
- (typenumeration[type])++;
- if (typenumeration[type] == 1)
- sprintf(s, "%s", partnames[type]);
- else
- sprintf(s, "%s%d", partnames[type], typenumeration[type]);
-
- part->name = s;
-}
-
-static int create_mtd_partitions(struct mtd_info *master,
- const struct mtd_partition **pparts,
- struct mtd_part_parser_data *data)
-{
- unsigned int envpartnum = 0, linuxpartnum = 0;
- unsigned int typenumeration[5] = { 0, 0, 0, 0, 0 };
- unsigned char evn[5];
- const unsigned char *partvar = NULL;
-
- struct mtd_partition *ac49x_parts;
-
- ac49x_parts = kzalloc(sizeof(*ac49x_parts) * AC49X_MAXENVPARTS,
- GFP_KERNEL);
-
- if (!ac49x_parts)
- return -ENOMEM;
-
- linuxpartnum = 0;
- for (envpartnum = 0; envpartnum < AC49X_MAXENVPARTS; envpartnum++) {
- struct mtd_partition parsepart;
- unsigned int offset, size, type;
- int err;
- sprintf(evn, "mtd%d", envpartnum);
- partvar = prom_getenv(evn);
- if (!partvar)
- continue;
- err = parse_partvar(partvar, &parsepart);
- if (err)
- continue;
- offset = parsepart.offset;
- size = parsepart.size;
- type = detect_parttype(master, parsepart);
- gen_partname(type, typenumeration, &parsepart);
- /* protect loader */
- if (type == AC49X_PARTTYPE_LOADER)
- parsepart.mask_flags = MTD_WRITEABLE;
- else
- parsepart.mask_flags = 0;
-
- memcpy(&(ac49x_parts[linuxpartnum]), &parsepart,
- sizeof(struct mtd_partition));
-
- /* scan for contained rootfs */
- if (type == AC49X_PARTTYPE_LINUX) {
- parsepart.offset += ROOTFS_MIN_OFFSET &
- ~(master->erasesize - 1);
- parsepart.size -= ROOTFS_MIN_OFFSET &
- ~(master->erasesize - 1);
- do {
- unsigned int size, offset;
- size = parsepart.size;
- offset = parsepart.offset;
-
- type = detect_parttype(master, parsepart);
- if (type == AC49X_PARTTYPE_ROOTFS) {
- gen_partname(type, typenumeration,
- &parsepart);
- printk(KERN_INFO
- "%s %s: 0x%08x@0x%08x\n",
- "detected sub-partition",
- parsepart.name,
- (unsigned int)parsepart.size,
- (unsigned int)parsepart.offset);
- linuxpartnum++;
- memcpy(&(ac49x_parts[linuxpartnum]),
- &parsepart,
- sizeof(struct mtd_partition));
- break;
- }
- parsepart.offset += master->erasesize;
- parsepart.size -= master->erasesize;
- } while (parsepart.size >= master->erasesize);
- }
- linuxpartnum++;
- }
-
- *pparts = ac49x_parts;
- return linuxpartnum;
-}
-
-static struct mtd_part_parser ac49x_parser = {
- .owner = THIS_MODULE,
- .parse_fn = create_mtd_partitions,
- .name = "ac49xpart",
-};
-
-static int __init ac49x_parser_init(void)
-{
- register_mtd_parser(&ac49x_parser);
- return 0;
-}
-
-module_init(ac49x_parser_init);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Daniel Golle <daniel.golle@gmail.com>");
-MODULE_DESCRIPTION("MTD partitioning for AudioCodes AC49x");
diff --git a/target/linux/ar7/files/drivers/mtd/titanpart.c b/target/linux/ar7/files/drivers/mtd/titanpart.c
deleted file mode 100644
index a6403f6ce2..0000000000
--- a/target/linux/ar7/files/drivers/mtd/titanpart.c
+++ /dev/null
@@ -1,234 +0,0 @@
-#include <linux/kernel.h>
-#include <linux/slab.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/bootmem.h>
-#include <linux/magic.h>
-#include <asm/mach-ar7/prom.h>
-
-#define IMAGE_A_SIZE 0X3c0000
-#define WRTP_PARTS 14
-#define NSP_IMG_MAGIC_NUMBER le32_to_cpu(0x4D544443)
-#define NSP_IMG_SECTION_TYPE_KERNEL (0x01)
-#define NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT (0x02)
-#define NSP_IMG_SECTION_TYPE_FILESYSTEM (0x03)
-#define MAX_NUM_PARTITIONS 14
-
-static int part_count=0;
-static struct mtd_partition titan_parts[WRTP_PARTS];
-
-
-struct nsp_img_hdr_head
-{
- unsigned int magic; /* Magic number to identify this image header */
- unsigned int boot_offset; /* Offset from start of header to kernel code. */
- unsigned int flags; /* Image flags. */
- unsigned int hdr_version; /* Version of this header. */
- unsigned int hdr_size; /* The complete size of all portions of the header */
- unsigned int prod_id; /* This product id */
- unsigned int rel_id; /* Which release this is */
- unsigned int version; /* name-MMM.nnn.ooo-rxx => 0xMMnnooxx. See comment
- below */
- unsigned int image_size; /* Image size (including header) */
- unsigned int info_offset; /* Offset from start of header to info block */
- unsigned int sect_info_offset; /* Offset from start of header to section desc */
- unsigned int chksum_offset; /* Offset from start of header to chksum block */
- unsigned int pad1;
-};
-
-struct nsp_img_hdr_section_info
-{
- unsigned int num_sects; /* Number of section (and section desc blocks) in this image */
- unsigned int sect_size; /* Size of a SINGLE section_desc block */
- unsigned int sections_offset; /* Offset to from start of header to the start of the section blocks */
-};
-
-/* There will be one of more of the following stuctures in the image header. Each
- section will have one of these blocks. */
-struct nsp_img_hdr_sections
-{
- unsigned int offset; /* Offset of section from start of NSP_IMG_HDR_HEAD */
- unsigned int total_size; /* Size of section (including pad size.) */
- unsigned int raw_size; /* Size of section only */
- unsigned int flags; /* Section flags */
- unsigned int chksum; /* Section checksum */
- unsigned int type; /* Section type. What kind of info does this section describe */
- char name[16]; /* Reference name for this section. */
-};
-
-
-
-
-
-static int titan_parse_env_address(char *env_name, unsigned int *flash_base,
- unsigned int *flash_end)
-{
- char image_name[30];
- char *env_ptr;
- char *base_ptr;
- char *end_ptr;
- char * string_ptr;
- /* Get the image variable */
- env_ptr = prom_getenv(env_name);
- if(!env_ptr){
- printk("titan: invalid env name, %s.\n", env_name);
- return -1; /* Error, no image variable */
- }
- strncpy(image_name, env_ptr, 30);
- image_name[29]=0;
- string_ptr = image_name;
- /* Extract the start and stop addresses of the partition */
- base_ptr = strsep(&string_ptr, ",");
- end_ptr = strsep(&string_ptr, ",");
- if ((base_ptr == NULL) || (end_ptr == NULL)) {
- printk("titan: Couldn't tokenize %s start,end.\n", image_name);
- return -1;
- }
-
- *flash_base = (unsigned int) simple_strtol(base_ptr, NULL, 0);
- *flash_end = (unsigned int) simple_strtol(end_ptr, NULL, 0);
- if((!*flash_base) || (!*flash_end)) {
- printk("titan: Unable to convert :%s: :%s: into start,end values.\n",
- env_name, image_name);
- return -1;
- }
- *flash_base &= 0x0fffffff;
- *flash_end &= 0x0fffffff;
- return 0;
-}
-
-
-
-static int titan_get_single_image(char *bootcfg_name, unsigned int *flash_base,
- unsigned int *flash_end)
-{
- char *env_ptr;
- char *base_ptr;
- char *end_ptr;
- char image_name[30];
- char * string_ptr;
-
- if(!bootcfg_name || !flash_base || !flash_end)
- return -1;
-
- env_ptr = prom_getenv(bootcfg_name);
- if(!env_ptr){
- printk("titan: %s variable not found.\n", bootcfg_name);
- return -1; /* Error, no bootcfg variable */
- }
-
- string_ptr = image_name;
- /* Save off the image name */
- strncpy(image_name, env_ptr, 30);
- image_name[29]=0;
-
- end_ptr=strsep(&string_ptr, "\"");
- base_ptr=strsep(&string_ptr, "\""); /* Loose the last " */
- if(!end_ptr || !base_ptr){
- printk("titan: invalid bootcfg format, %s.\n", image_name);
- return -1; /* Error, invalid bootcfg variable */
- }
-
- /* Now, parse the addresses */
- return titan_parse_env_address(base_ptr, flash_base, flash_end);
-}
-
-
-
-static void titan_add_partition(char * env_name, unsigned int flash_base, unsigned int flash_end)
-{
- titan_parts[part_count].name = env_name;
- titan_parts[part_count].offset = flash_base;
- titan_parts[part_count].size = flash_end-flash_base;
- titan_parts[part_count].mask_flags = (strcmp(env_name, "bootloader")==0||
- strcmp(env_name, "boot_env")==0 ||
- strcmp(env_name, "full_image")==0 )?MTD_WRITEABLE:0;
- part_count++;
-
-}
-int create_titan_partitions(struct mtd_info *master,
- struct mtd_partition **pparts,
- unsigned long origin)
-{
- struct nsp_img_hdr_head hdr;
- struct nsp_img_hdr_section_info sect_info;
- struct nsp_img_hdr_sections section;
- unsigned int flash_base, flash_end;
- unsigned int start, end;
- char *name;
- int i;
- int total_sects=0;
- size_t len;
-
- /* Get the bootcfg env variable first */
- if(titan_get_single_image("BOOTCFG", &flash_base, &flash_end)) {
- /* Error, fallback */
- return -1;
- }
-
- /* Get access to the header, and do some validation checks */
- //hdr=(struct nsp_img_hdr_head*)flash_base;
- mtd_read(master, flash_base, sizeof(struct nsp_img_hdr_head), &len, (uint8_t *)&hdr);
- if(hdr.magic != NSP_IMG_MAGIC_NUMBER)
- return -1; /* Not a single image */
-
- mtd_read(master, flash_base + hdr.sect_info_offset, sizeof(struct nsp_img_hdr_section_info), &len, (uint8_t *)&sect_info);
-
- /* Look for the root fs, and add it first. This way we KNOW where the rootfs is */
- for(i=0; i< sect_info.num_sects && i<MAX_NUM_PARTITIONS; i++){
- mtd_read(master, flash_base + sect_info.sections_offset + (i * sect_info.sect_size) , sizeof(struct nsp_img_hdr_sections), &len, (uint8_t *)&section);
- /* Add only the root partition */
- if(section.type != NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT){
- continue;
- }
- start=flash_base + section.offset;
- end=start + section.total_size;
- titan_add_partition("root", start, end);
- total_sects++;
-
- }
-
- for(i=0; i< sect_info.num_sects && i<MAX_NUM_PARTITIONS; i++){
-
- mtd_read(master, flash_base + sect_info.sections_offset + (i * sect_info.sect_size) , sizeof(struct nsp_img_hdr_sections), &len, (uint8_t *)&section);
-
- name=section.name;
- if(section.type == NSP_IMG_SECTION_TYPE_FILESYSTEM_ROOT)
- {
- name = "rootfs";
- start=flash_base + section.offset;
- end=flash_end;
- titan_add_partition(name, start, end);
- total_sects++;
- }
- else if(section.type == NSP_IMG_SECTION_TYPE_KERNEL)
- {
- name = "kernel";
- start=flash_base + section.offset;
- end=start + section.total_size;
- titan_add_partition(name, start, end);
- total_sects++;
- }
-
- }
-
- /* Next, lets add the single image */
- titan_add_partition("primary_image", flash_base, flash_end);
- total_sects++;
-
-
- titan_add_partition("full_image", 0, master->size);
- total_sects++;
-
- if (!titan_parse_env_address("BOOTLOADER", &start, &end)){
- titan_add_partition("bootloader", start, end);
- total_sects++;
- }
- if (!titan_parse_env_address("boot_env", &start, &end)){
- titan_add_partition("boot_env", start, end);
- total_sects++;
- }
- *pparts = titan_parts;
- return total_sects;
-}
diff --git a/target/linux/ar7/generic/config-default b/target/linux/ar7/generic/config-default
deleted file mode 100644
index 10d46e9c26..0000000000
--- a/target/linux/ar7/generic/config-default
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_AR7_TI=y
-# CONFIG_AR7_TYPE_AC49X is not set
-CONFIG_AR7_TYPE_TI=y
-# CONFIG_MTD_AC49X_PARTS is not set
-CONFIG_MTD_AR7_PARTS=y
diff --git a/target/linux/ar7/generic/profiles/100-Annex-A.mk b/target/linux/ar7/generic/profiles/100-Annex-A.mk
deleted file mode 100644
index d8e549ea65..0000000000
--- a/target/linux/ar7/generic/profiles/100-Annex-A.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Copyright (C) 2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/Annex-A
- NAME:=Annex-A DSL firmware (default)
- PACKAGES:=kmod-pppoa ppp-mod-pppoa linux-atm atm-tools br2684ctl \
- kmod-sangam-atm-annex-a
-endef
-
-define Profile/Annex-A/Description
- Package set compatible with Annex-A DSL lines (most countries).
-endef
-$(eval $(call Profile,Annex-A))
-
diff --git a/target/linux/ar7/generic/profiles/110-Annex-B.mk b/target/linux/ar7/generic/profiles/110-Annex-B.mk
deleted file mode 100644
index 55de1fc4ad..0000000000
--- a/target/linux/ar7/generic/profiles/110-Annex-B.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Copyright (C) 2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/Annex-B
- NAME:=Annex-B DSL firmware
- PACKAGES:=kmod-pppoa ppp-mod-pppoa linux-atm atm-tools br2684ctl \
- kmod-sangam-atm-annex-b
-endef
-
-define Profile/Annex-B/Description
- Package set compatible with Annex-B DSL lines (Germany).
-endef
-$(eval $(call Profile,Annex-B))
-
diff --git a/target/linux/ar7/generic/profiles/200-Texas.mk b/target/linux/ar7/generic/profiles/200-Texas.mk
deleted file mode 100644
index 7d868bdb08..0000000000
--- a/target/linux/ar7/generic/profiles/200-Texas.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# Copyright (C) 2006-2009 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/Texas
- NAME:=Texas Instruments WiFi (mac80211)
- PACKAGES:=kmod-acx-mac80211
-endef
-
-define Profile/Texas/Description
- Package set compatible with hardware using Texas Instruments WiFi cards
- using the mac80211 driver.
-endef
-$(eval $(call Profile,Texas))
-
diff --git a/target/linux/ar7/generic/profiles/210-None.mk b/target/linux/ar7/generic/profiles/210-None.mk
deleted file mode 100644
index 2fcfacde9f..0000000000
--- a/target/linux/ar7/generic/profiles/210-None.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2006 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Profile/None
- NAME:=No WiFi
- PACKAGES:=
-endef
-
-define Profile/None/Description
- Package set without WiFi support
-endef
-$(eval $(call Profile,None))
-
diff --git a/target/linux/ar7/generic/target.mk b/target/linux/ar7/generic/target.mk
deleted file mode 100644
index b40d2a4722..0000000000
--- a/target/linux/ar7/generic/target.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Copyright (C) 2012 OpenWrt.org
-#
-
-SUBTARGET:=generic
-BOARDNAME:=Texas Instruments AR7 boards
-
-DEFAULT_PACKAGES+= kmod-mac80211 kmod-acx-mac80211 wpad-basic
-
-define Target/Description
- Build firmware images for TI AR7 based routers.
-endef
diff --git a/target/linux/ar7/image/Makefile b/target/linux/ar7/image/Makefile
deleted file mode 100644
index d20de27113..0000000000
--- a/target/linux/ar7/image/Makefile
+++ /dev/null
@@ -1,137 +0,0 @@
-#
-# Copyright (C) 2006-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/image.mk
-
-DROP_SECTIONS:=.reginfo .mdebug .comment .note .pdr .options .MIPS.options
-OBJCOPY_SREC:=$(TARGET_CROSS)objcopy -S -O srec $(addprefix --remove-section=,$(DROP_SECTIONS))
-
-LOADADDR:=0x94600000
-KERNEL_ENTRY:=0x94100000
-RAMSTART:=0x94000000
-RAMSIZE:=0x00100000
-
-EVA_LOADADDR := 0x94100000
-
-LOADER_MAKEOPTS= \
- KDIR=$(KDIR) \
- LOADADDR=$(LOADADDR) \
- KERNEL_ENTRY=$(KERNEL_ENTRY) \
- RAMSTART=$(RAMSTART) \
- RAMSIZE=$(RAMSIZE)
-
-CFLAGS := -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
- -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic \
- -pipe -mlong-calls -fno-common \
- -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \
- -DLOADADDR=$(LOADADDR)
-
-define Build/Clean
- $(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader $(LOADER_MAKEOPTS) clean
-endef
-
-define Image/Prepare
- cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma
- $(STAGING_DIR_HOST)/bin/lzma2eva $(EVA_LOADADDR) 0x$${shell $(TARGET_CROSS)nm $(KDIR)/vmlinux | grep -w kernel_entry | cut -d' ' -f1} $(KDIR)/vmlinux.lzma $(KDIR)/loader.eva
-
- $(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader \
- $(LOADER_MAKEOPTS) \
- clean compile
- $(OBJCOPY_SREC) $(KDIR)/loader.elf $(KDIR)/loader.srec
- $(OBJCOPY_SREC) $(KDIR)/vmlinux.elf $(KDIR)/vmlinux.srec
- srec2bin $(KDIR)/loader.srec $(KDIR)/loader.bin
- srec2bin $(KDIR)/vmlinux.srec $(KDIR)/vmlinux.bin
-ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
- $(OBJCOPY_SREC) $(KDIR)/vmlinux-initramfs.elf \
- $(KDIR)/vmlinux-initramfs.srec
- srec2bin $(KDIR)/vmlinux-initramfs.srec $(KDIR)/vmlinux-initramfs.bin
-endif
-endef
-
-define align/jffs2-64k
-bs=65536 conv=sync
-endef
-
-define align/jffs2-128k
-bs=131072 conv=sync
-endef
-
-define align/squashfs
-endef
-
-define Image/Build/CyberTAN
- (dd if=/dev/zero bs=16 count=1; cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin) | \
- $(STAGING_DIR_HOST)/bin/addpattern -p $(3) -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(4)-code.bin
-endef
-
-define Image/Build/Titan
- $(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4C575943 -s 0x0b010000
- $(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-na-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4D575943 -s 0x0b010000
-endef
-
-define Image/Build/AudioCodes
- ( dd if=$(KDIR)/vmlinux.elf bs=64k conv=sync ; dd if=$(KDIR)/root.$(1) ) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(1).bin
-endef
-
-#define Image/Build/sErCoMm
-# cat sercomm/adam2.bin "$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin" > "$(KDIR)/dgfw.tmp"
-# dd if=sercomm/$(2) of="$(KDIR)/dgfw.tmp" bs=$$$$((0x3e0000 - 80)) seek=1 conv=notrunc
-# $(STAGING_DIR_HOST)/bin/dgfirmware -f -w "$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3).img" "$(KDIR)/dgfw.tmp"
-# rm -f "$(KDIR)/dgfw.tmp"
-#endef
-
-define Image/Build/EVA
- dd if=$(KDIR)/loader.eva $(call align/$(1)) > $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin
- cat $(KDIR)/root.$(1) >> $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin
- $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(KERNEL)-$(1).bin)
-endef
-
-define Image/Build/Initramfs
- $(CP) $(KDIR)/vmlinux-initramfs.bin $(BIN_DIR)/$(IMG_PREFIX)-initramfs.bin
-endef
-
-ifeq ($(CONFIG_AR7_TI),y)
-define Image/Build
- dd if=$(KDIR)/loader.bin $(call align/$(1)) > $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin
- cat $(KDIR)/root.$(1) >> $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin
- $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin)
- $(call Image/Build/CyberTAN,$(1),AG1B,AG1B,$(1))
- $(call Image/Build/CyberTAN,$(1),AG1A,AG1A,$(1))
- $(call Image/Build/CyberTAN,$(1),WA21,WA21,$(1))
- $(call Image/Build/CyberTAN,$(1),WA22,WA22,$(1))
- $(call Image/Build/CyberTAN,$(1),WAG2,WAG2,$(1))
- $(call Image/Build/CyberTAN,$(1),AG310,AV2A -b -r 1.0,$(1))
- $(call Image/Build/CyberTAN,$(1),AG241v2,AG3A -b -r 2.0,$(1))
- $(call Image/Build/CyberTAN,$(1),AG241v2b,AG3B -b -r 2.0,$(1))
- $(call Image/Build/CyberTAN,$(1),AG241v1,AG3A -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WAG54GP2v1,ATWL -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WAG54GP2v2,CTWL -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WA31,WA31 -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WA32,WA32 -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WA7A,WA7A -b,$(1))
- $(call Image/Build/CyberTAN,$(1),WA7B,WA7B -b,$(1))
-# $(call Image/Build/sErCoMm,$(1),dg834,$(1))
-# $(call Image/Build/sErCoMm,$(1),jdr454wb,$(1))
- $(call Image/Build/EVA,$(1),EVA)
- $(call Image/Build/Titan,$(1),Titan,Titan,$(1))
-ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
- $(call Image/Build/Initramfs)
-endif
-endef
-endif
-
-ifeq ($(CONFIG_AR7_AC49X),y)
-define Image/Build
-# $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin)
- $(call Image/Build/AudioCodes,$(1),mp202,$(1))
-ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
- $(call Image/Build/Initramfs)
-endif
-endef
-endif
-
-$(eval $(call BuildImage))
diff --git a/target/linux/ar7/patches-4.14/100-fix-highmem-offset.patch b/target/linux/ar7/patches-4.14/100-fix-highmem-offset.patch
deleted file mode 100644
index f1a7549786..0000000000
--- a/target/linux/ar7/patches-4.14/100-fix-highmem-offset.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/arch/mips/include/asm/mach-ar7/spaces.h
-+++ b/arch/mips/include/asm/mach-ar7/spaces.h
-@@ -20,6 +20,8 @@
- #define UNCAC_BASE _AC(0xb4000000, UL) /* 0xa0000000 + PHYS_OFFSET */
- #define IO_BASE UNCAC_BASE
-
-+#define HIGHMEM_START _AC(0x20000000, UL)
-+
- #include <asm/mach-generic/spaces.h>
-
- #endif /* __ASM_AR7_SPACES_H */
diff --git a/target/linux/ar7/patches-4.14/110-flash.patch b/target/linux/ar7/patches-4.14/110-flash.patch
deleted file mode 100644
index e83eac9181..0000000000
--- a/target/linux/ar7/patches-4.14/110-flash.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/drivers/mtd/Makefile
-+++ b/drivers/mtd/Makefile
-@@ -13,7 +13,7 @@ obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
- obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
- obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
- obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
--obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o
-+obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o titanpart.o
- obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
- obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
- obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
---- a/arch/mips/ar7/platform.c
-+++ b/arch/mips/ar7/platform.c
-@@ -197,7 +197,7 @@ static struct resource physmap_flash_res
- .name = "mem",
- .flags = IORESOURCE_MEM,
- .start = 0x10000000,
-- .end = 0x107fffff,
-+ .end = 0x11ffffff,
- };
-
- static const char *ar7_probe_types[] = { "ar7part", NULL };
diff --git a/target/linux/ar7/patches-4.14/160-vlynq_try_remote_first.patch b/target/linux/ar7/patches-4.14/160-vlynq_try_remote_first.patch
deleted file mode 100644
index 1d1310d82e..0000000000
--- a/target/linux/ar7/patches-4.14/160-vlynq_try_remote_first.patch
+++ /dev/null
@@ -1,300 +0,0 @@
---- a/drivers/vlynq/vlynq.c
-+++ b/drivers/vlynq/vlynq.c
-@@ -119,20 +119,40 @@ static int vlynq_linked(struct vlynq_dev
- return 0;
- }
-
-+static volatile int vlynq_delay_value_new = 0;
-+
-+static void vlynq_delay_wait(u32 count)
-+{
-+ /* Code adopted from original vlynq driver */
-+ int i = 0;
-+ volatile int *ptr = &vlynq_delay_value_new;
-+ *ptr = 0;
-+
-+ /* We are assuming that the each cycle takes about
-+ * 23 assembly instructions. */
-+ for(i = 0; i < (count + 23)/23; i++)
-+ *ptr = *ptr + 1;
-+}
-+
- static void vlynq_reset(struct vlynq_device *dev)
- {
-+ u32 rtm = readl(&dev->local->revision);
-+
-+ rtm = rtm < 0x00010205 || readl(&dev->local->status) & 0x800 == 0 ?
-+ 0 : 0x600000;
-+
- writel(readl(&dev->local->control) | VLYNQ_CTRL_RESET,
- &dev->local->control);
-
- /* Wait for the devices to finish resetting */
-- msleep(5);
-+ vlynq_delay_wait(0xffffff);
-
- /* Remove reset bit */
-- writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET,
-+ writel(readl(&dev->local->control) & ~VLYNQ_CTRL_RESET | rtm,
- &dev->local->control);
-
- /* Give some time for the devices to settle */
-- msleep(5);
-+ vlynq_delay_wait(0xffffff);
- }
-
- static void vlynq_irq_unmask(struct irq_data *d)
-@@ -379,6 +399,61 @@ void vlynq_unregister_driver(struct vlyn
- }
- EXPORT_SYMBOL(vlynq_unregister_driver);
-
-+enum vlynq_clk_src {
-+ vlynq_clk_external,
-+ vlynq_clk_local,
-+ vlynq_clk_remote,
-+ vlynq_clk_invalid,
-+};
-+
-+static int __vlynq_set_clocks(struct vlynq_device *dev,
-+ enum vlynq_clk_src clk_dir,
-+ int lclk_div, int rclk_div)
-+{
-+ u32 reg;
-+
-+ if (clk_dir == vlynq_clk_invalid) {
-+ printk(KERN_ERR "%s: attempt to set invalid clocking\n",
-+ dev_name(&dev->dev));
-+ return -EINVAL;
-+ }
-+
-+ reg = readl(&dev->local->control);
-+ if (readl(&dev->local->revision) < 0x00010205) {
-+ if (clk_dir & vlynq_clk_local)
-+ reg |= VLYNQ_CTRL_CLOCK_INT;
-+ else
-+ reg &= ~VLYNQ_CTRL_CLOCK_INT;
-+ }
-+ reg &= ~VLYNQ_CTRL_CLOCK_MASK;
-+ reg |= VLYNQ_CTRL_CLOCK_DIV(lclk_div);
-+ writel(reg, &dev->local->control);
-+
-+ if (!vlynq_linked(dev))
-+ return -ENODEV;
-+
-+ printk(KERN_INFO "%s: local VLYNQ protocol rev. is 0x%08x\n",
-+ dev_name(&dev->dev), readl(&dev->local->revision));
-+ printk(KERN_INFO "%s: remote VLYNQ protocol rev. is 0x%08x\n",
-+ dev_name(&dev->dev), readl(&dev->remote->revision));
-+
-+ reg = readl(&dev->remote->control);
-+ if (readl(&dev->remote->revision) < 0x00010205) {
-+ if (clk_dir & vlynq_clk_remote)
-+ reg |= VLYNQ_CTRL_CLOCK_INT;
-+ else
-+ reg &= ~VLYNQ_CTRL_CLOCK_INT;
-+ }
-+ reg &= ~VLYNQ_CTRL_CLOCK_MASK;
-+ reg |= VLYNQ_CTRL_CLOCK_DIV(rclk_div);
-+ writel(reg, &dev->remote->control);
-+
-+ if (!vlynq_linked(dev))
-+ return -ENODEV;
-+
-+ return 0;
-+}
-+
- /*
- * A VLYNQ remote device can clock the VLYNQ bus master
- * using a dedicated clock line. In that case, both the
-@@ -392,29 +467,16 @@ static int __vlynq_try_remote(struct vly
- int i;
-
- vlynq_reset(dev);
-- for (i = dev->dev_id ? vlynq_rdiv2 : vlynq_rdiv8; dev->dev_id ?
-- i <= vlynq_rdiv8 : i >= vlynq_rdiv2;
-- dev->dev_id ? i++ : i--) {
-+ for (i = 0; i <= 7; i++) {
-
- if (!vlynq_linked(dev))
- break;
-
-- writel((readl(&dev->remote->control) &
-- ~VLYNQ_CTRL_CLOCK_MASK) |
-- VLYNQ_CTRL_CLOCK_INT |
-- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1),
-- &dev->remote->control);
-- writel((readl(&dev->local->control)
-- & ~(VLYNQ_CTRL_CLOCK_INT |
-- VLYNQ_CTRL_CLOCK_MASK)) |
-- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_rdiv1),
-- &dev->local->control);
--
-- if (vlynq_linked(dev)) {
-- printk(KERN_DEBUG
-- "%s: using remote clock divisor %d\n",
-- dev_name(&dev->dev), i - vlynq_rdiv1 + 1);
-- dev->divisor = i;
-+ if (!__vlynq_set_clocks(dev, vlynq_clk_remote, i, i)) {
-+ printk(KERN_INFO
-+ "%s: using remote clock divisor %d\n",
-+ dev_name(&dev->dev), i + 1);
-+ dev->divisor = i + vlynq_rdiv1;
- return 0;
- } else {
- vlynq_reset(dev);
-@@ -433,25 +495,17 @@ static int __vlynq_try_remote(struct vly
- */
- static int __vlynq_try_local(struct vlynq_device *dev)
- {
-- int i;
-+ int i, dir = !dev->dev_id;
-
- vlynq_reset(dev);
-
-- for (i = dev->dev_id ? vlynq_ldiv2 : vlynq_ldiv8; dev->dev_id ?
-- i <= vlynq_ldiv8 : i >= vlynq_ldiv2;
-- dev->dev_id ? i++ : i--) {
--
-- writel((readl(&dev->local->control) &
-- ~VLYNQ_CTRL_CLOCK_MASK) |
-- VLYNQ_CTRL_CLOCK_INT |
-- VLYNQ_CTRL_CLOCK_DIV(i - vlynq_ldiv1),
-- &dev->local->control);
--
-- if (vlynq_linked(dev)) {
-- printk(KERN_DEBUG
-- "%s: using local clock divisor %d\n",
-- dev_name(&dev->dev), i - vlynq_ldiv1 + 1);
-- dev->divisor = i;
-+ for (i = dir ? 7 : 0; dir ? i >= 0 : i <= 7; dir ? i-- : i++) {
-+
-+ if (!__vlynq_set_clocks(dev, vlynq_clk_local, i, 0)) {
-+ printk(KERN_INFO
-+ "%s: using local clock divisor %d\n",
-+ dev_name(&dev->dev), i + 1);
-+ dev->divisor = i + vlynq_ldiv1;
- return 0;
- } else {
- vlynq_reset(dev);
-@@ -473,18 +527,10 @@ static int __vlynq_try_external(struct v
- if (!vlynq_linked(dev))
- return -ENODEV;
-
-- writel((readl(&dev->remote->control) &
-- ~VLYNQ_CTRL_CLOCK_INT),
-- &dev->remote->control);
--
-- writel((readl(&dev->local->control) &
-- ~VLYNQ_CTRL_CLOCK_INT),
-- &dev->local->control);
--
-- if (vlynq_linked(dev)) {
-- printk(KERN_DEBUG "%s: using external clock\n",
-- dev_name(&dev->dev));
-- dev->divisor = vlynq_div_external;
-+ if (!__vlynq_set_clocks(dev, vlynq_clk_external, 0, 0)) {
-+ printk(KERN_INFO "%s: using external clock\n",
-+ dev_name(&dev->dev));
-+ dev->divisor = vlynq_div_external;
- return 0;
- }
-
-@@ -501,24 +547,16 @@ static int __vlynq_enable_device(struct
- return result;
-
- switch (dev->divisor) {
-- case vlynq_div_external:
- case vlynq_div_auto:
- /* When the device is brought from reset it should have clock
- * generation negotiated by hardware.
- * Check which device is generating clocks and perform setup
- * accordingly */
-- if (vlynq_linked(dev) && readl(&dev->remote->control) &
-- VLYNQ_CTRL_CLOCK_INT) {
-- if (!__vlynq_try_remote(dev) ||
-- !__vlynq_try_local(dev) ||
-- !__vlynq_try_external(dev))
-- return 0;
-- } else {
-- if (!__vlynq_try_external(dev) ||
-- !__vlynq_try_local(dev) ||
-- !__vlynq_try_remote(dev))
-- return 0;
-- }
-+ if (!__vlynq_try_remote(dev) || !__vlynq_try_local(dev))
-+ return 0;
-+ case vlynq_div_external:
-+ if (!__vlynq_try_external(dev))
-+ return 0;
- break;
- case vlynq_ldiv1:
- case vlynq_ldiv2:
-@@ -528,15 +566,12 @@ static int __vlynq_enable_device(struct
- case vlynq_ldiv6:
- case vlynq_ldiv7:
- case vlynq_ldiv8:
-- writel(VLYNQ_CTRL_CLOCK_INT |
-- VLYNQ_CTRL_CLOCK_DIV(dev->divisor -
-- vlynq_ldiv1), &dev->local->control);
-- writel(0, &dev->remote->control);
-- if (vlynq_linked(dev)) {
-- printk(KERN_DEBUG
-- "%s: using local clock divisor %d\n",
-- dev_name(&dev->dev),
-- dev->divisor - vlynq_ldiv1 + 1);
-+ if (!__vlynq_set_clocks(dev, vlynq_clk_local, dev->divisor -
-+ vlynq_ldiv1, 0)) {
-+ printk(KERN_INFO
-+ "%s: using local clock divisor %d\n",
-+ dev_name(&dev->dev),
-+ dev->divisor - vlynq_ldiv1 + 1);
- return 0;
- }
- break;
-@@ -548,20 +583,17 @@ static int __vlynq_enable_device(struct
- case vlynq_rdiv6:
- case vlynq_rdiv7:
- case vlynq_rdiv8:
-- writel(0, &dev->local->control);
-- writel(VLYNQ_CTRL_CLOCK_INT |
-- VLYNQ_CTRL_CLOCK_DIV(dev->divisor -
-- vlynq_rdiv1), &dev->remote->control);
-- if (vlynq_linked(dev)) {
-- printk(KERN_DEBUG
-- "%s: using remote clock divisor %d\n",
-- dev_name(&dev->dev),
-- dev->divisor - vlynq_rdiv1 + 1);
-+ if (!__vlynq_set_clocks(dev, vlynq_clk_remote, 0,
-+ dev->divisor - vlynq_rdiv1)) {
-+ printk(KERN_INFO
-+ "%s: using remote clock divisor %d\n",
-+ dev_name(&dev->dev),
-+ dev->divisor - vlynq_rdiv1 + 1);
- return 0;
- }
- break;
- }
--
-+ vlynq_reset(dev);
- ops->off(dev);
- return -ENODEV;
- }
-@@ -732,14 +764,14 @@ static int vlynq_probe(struct platform_d
- platform_set_drvdata(pdev, dev);
-
- printk(KERN_INFO "%s: regs 0x%p, irq %d, mem 0x%p\n",
-- dev_name(&dev->dev), (void *)dev->regs_start, dev->irq,
-- (void *)dev->mem_start);
-+ dev_name(&dev->dev), (void *)dev->regs_start,
-+ dev->irq, (void *)dev->mem_start);
-
- dev->dev_id = 0;
- dev->divisor = vlynq_div_auto;
-- result = __vlynq_enable_device(dev);
-- if (result == 0) {
-+ if (!__vlynq_enable_device(dev)) {
- dev->dev_id = readl(&dev->remote->chip);
-+ vlynq_reset(dev);
- ((struct plat_vlynq_ops *)(dev->dev.platform_data))->off(dev);
- }
- if (dev->dev_id)
diff --git a/target/linux/ar7/patches-4.14/200-free-mem-below-kernel-offset.patch b/target/linux/ar7/patches-4.14/200-free-mem-below-kernel-offset.patch
deleted file mode 100644
index 7cc3ada818..0000000000
--- a/target/linux/ar7/patches-4.14/200-free-mem-below-kernel-offset.patch
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/arch/mips/ar7/memory.c
-+++ b/arch/mips/ar7/memory.c
-@@ -65,5 +65,11 @@ void __init prom_meminit(void)
-
- void __init prom_free_prom_memory(void)
- {
-- /* Nothing to free */
-+ /* adapted from arch/mips/txx9/generic/setup.c */
-+ unsigned long saddr = PHYS_OFFSET + PAGE_SIZE;
-+ unsigned long eaddr = __pa_symbol(&_text);
-+
-+ /* free memory between prom-record and kernel _text base */
-+ if (saddr < eaddr)
-+ free_init_pages("prom memory", saddr, eaddr);
- }
diff --git a/target/linux/ar7/patches-4.14/300-add-ac49x-platform.patch b/target/linux/ar7/patches-4.14/300-add-ac49x-platform.patch
deleted file mode 100644
index 71cd471a71..0000000000
--- a/target/linux/ar7/patches-4.14/300-add-ac49x-platform.patch
+++ /dev/null
@@ -1,85 +0,0 @@
---- a/arch/mips/ar7/Platform
-+++ b/arch/mips/ar7/Platform
-@@ -3,4 +3,9 @@
- #
- platform-$(CONFIG_AR7) += ar7/
- cflags-$(CONFIG_AR7) += -I$(srctree)/arch/mips/include/asm/mach-ar7
--load-$(CONFIG_AR7) += 0xffffffff94100000
-+load-$(CONFIG_AR7_TI) += 0xffffffff94100000
-+
-+#
-+# AudioCodes AC49x
-+#
-+load-$(CONFIG_AR7_AC49X) += 0xffffffff945ca000
---- a/arch/mips/ar7/setup.c
-+++ b/arch/mips/ar7/setup.c
-@@ -68,6 +68,10 @@ const char *get_system_type(void)
- return "TI AR7 (TNETV1056)";
- case TITAN_CHIP_1060:
- return "TI AR7 (TNETV1060)";
-+ case TITAN_CHIP_AC495:
-+ return "AudioCodes AC495";
-+ case TITAN_CHIP_AC496:
-+ return "AudioCodes AC496";
- }
- default:
- return "TI AR7 (unknown)";
---- a/arch/mips/include/asm/mach-ar7/ar7.h
-+++ b/arch/mips/include/asm/mach-ar7/ar7.h
-@@ -92,6 +92,8 @@
- #define TITAN_CHIP_1055 0x0e
- #define TITAN_CHIP_1056 0x0d
- #define TITAN_CHIP_1060 0x07
-+#define TITAN_CHIP_AC495 0x00
-+#define TITAN_CHIP_AC496 0x02
-
- /* Interrupts */
- #define AR7_IRQ_UART0 15
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -168,7 +168,7 @@ config AR7
- select HAVE_CLK
- help
- Support for the Texas Instruments AR7 System-on-a-Chip
-- family: TNETD7100, 7200 and 7300.
-+ family: TI TNETD7100, 7200, 7300 and AudioCodes AC49x.
-
- config ATH25
- bool "Atheros AR231x/AR531x SoC support"
-@@ -1016,6 +1016,7 @@ config MIPS_PARAVIRT
- endchoice
-
- source "arch/mips/alchemy/Kconfig"
-+source "arch/mips/ar7/Kconfig"
- source "arch/mips/ath25/Kconfig"
- source "arch/mips/ath79/Kconfig"
- source "arch/mips/bcm47xx/Kconfig"
---- /dev/null
-+++ b/arch/mips/ar7/Kconfig
-@@ -0,0 +1,26 @@
-+if AR7
-+
-+config AR7_TI
-+ bool
-+
-+config AR7_AC49X
-+ bool
-+
-+choice
-+ prompt "AR7 SoC family selection"
-+ default AR7_TYPE_TI
-+ depends on AR7
-+ help
-+ Select AR7 MIPS SoC implementation.
-+
-+ config AR7_TYPE_TI
-+ bool "Texas Instruments AR7"
-+ select AR7_TI
-+
-+ config AR7_TYPE_AC49X
-+ bool "AudioCodes AC49X"
-+ select AR7_AC49X
-+
-+endchoice
-+
-+endif
diff --git a/target/linux/ar7/patches-4.14/310-ac49x-prom-support.patch b/target/linux/ar7/patches-4.14/310-ac49x-prom-support.patch
deleted file mode 100644
index dddf22106a..0000000000
--- a/target/linux/ar7/patches-4.14/310-ac49x-prom-support.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/arch/mips/ar7/prom.c
-+++ b/arch/mips/ar7/prom.c
-@@ -70,6 +70,7 @@ struct psbl_rec {
- };
-
- static const char psp_env_version[] __initconst = "TIENV0.8";
-+static const char psp_env_version_ac49x[] __initconst = "MaxENV0.2";
-
- struct psp_env_chunk {
- u8 num;
-@@ -186,7 +187,8 @@ static void __init ar7_init_env(struct e
- struct psbl_rec *psbl = (struct psbl_rec *)(KSEG1ADDR(0x14000300));
- void *psp_env = (void *)KSEG1ADDR(psbl->env_base);
-
-- if (strcmp(psp_env, psp_env_version) == 0) {
-+ if (strcmp(psp_env, psp_env_version) == 0 ||
-+ strcmp(psp_env, psp_env_version_ac49x) == 0) {
- parse_psp_env(psp_env);
- } else {
- for (i = 0; i < MAX_ENTRY; i++, env++)
diff --git a/target/linux/ar7/patches-4.14/320-ac49x-mtd-partitions.patch b/target/linux/ar7/patches-4.14/320-ac49x-mtd-partitions.patch
deleted file mode 100644
index 7ae49b07e8..0000000000
--- a/target/linux/ar7/patches-4.14/320-ac49x-mtd-partitions.patch
+++ /dev/null
@@ -1,35 +0,0 @@
---- a/drivers/mtd/Kconfig
-+++ b/drivers/mtd/Kconfig
-@@ -154,6 +154,11 @@ config MTD_OF_PARTS
- the partition map from the children of the flash node,
- as described in Documentation/devicetree/bindings/mtd/partition.txt.
-
-+config MTD_AC49X_PARTS
-+ tristate "AudioCodes AC49X partitioning support"
-+ ---help---
-+ AudioCodes AC49X partitioning support
-+
- config MTD_AR7_PARTS
- tristate "TI AR7 partitioning support"
- ---help---
---- a/drivers/mtd/Makefile
-+++ b/drivers/mtd/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_MTD_SPLIT) += mtdsplit/
- obj-$(CONFIG_MTD_OF_PARTS) += ofpart.o
- obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
- obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
-+obj-$(CONFIG_MTD_AC49X_PARTS) += ac49xpart.o
- obj-$(CONFIG_MTD_AFS_PARTS) += afs.o
- obj-$(CONFIG_MTD_AR7_PARTS) += ar7part.o titanpart.o
- obj-$(CONFIG_MTD_BCM63XX_PARTS) += bcm63xxpart.o
---- a/arch/mips/ar7/platform.c
-+++ b/arch/mips/ar7/platform.c
-@@ -200,7 +200,7 @@ static struct resource physmap_flash_res
- .end = 0x11ffffff,
- };
-
--static const char *ar7_probe_types[] = { "ar7part", NULL };
-+static const char *ar7_probe_types[] = { "ac49xpart", "ar7part", NULL };
-
- static struct physmap_flash_data physmap_flash_data = {
- .width = 2,
diff --git a/target/linux/ar7/patches-4.14/920-ar7part.patch b/target/linux/ar7/patches-4.14/920-ar7part.patch
deleted file mode 100644
index e520af2083..0000000000
--- a/target/linux/ar7/patches-4.14/920-ar7part.patch
+++ /dev/null
@@ -1,120 +0,0 @@
---- a/drivers/mtd/ar7part.c
-+++ b/drivers/mtd/ar7part.c
-@@ -30,11 +30,14 @@
-
- #include <uapi/linux/magic.h>
-
-+#include <asm/mach-ar7/prom.h>
-+
- #define AR7_PARTS 4
- #define ROOT_OFFSET 0xe0000
-
- #define LOADER_MAGIC1 le32_to_cpu(0xfeedfa42)
- #define LOADER_MAGIC2 le32_to_cpu(0xfeed1281)
-+#define LOADER_MAGIC3 le32_to_cpu(0x434d4d4c)
-
- struct ar7_bin_rec {
- unsigned int checksum;
-@@ -42,12 +45,16 @@ struct ar7_bin_rec {
- unsigned int address;
- };
-
-+int create_titan_partitions(struct mtd_info *master,
-+ const struct mtd_partition **pparts,
-+ struct mtd_part_parser_data *data);
-+
- static int create_mtd_partitions(struct mtd_info *master,
- const struct mtd_partition **pparts,
- struct mtd_part_parser_data *data)
- {
- struct ar7_bin_rec header;
-- unsigned int offset;
-+ unsigned int offset, mtd_start, mtd_end;
- size_t len;
- unsigned int pre_size = master->erasesize, post_size = 0;
- unsigned int root_offset = ROOT_OFFSET;
-@@ -55,6 +62,16 @@ static int create_mtd_partitions(struct
- int retries = 10;
- struct mtd_partition *ar7_parts;
-
-+ const char *prom_str = prom_getenv("ProductID");
-+ char mtd_name[] = "mtd1";
-+ if(prom_str &&
-+ (strcmp(prom_str, "CYWL")==0 ||
-+ strcmp(prom_str, "CYWM")==0 ||
-+ strcmp(prom_str, "CYLM")==0 ||
-+ strcmp(prom_str, "CYLL")==0)){
-+ return create_titan_partitions(master, pparts, data);
-+ }
-+
- ar7_parts = kzalloc(sizeof(*ar7_parts) * AR7_PARTS, GFP_KERNEL);
- if (!ar7_parts)
- return -ENOMEM;
-@@ -83,34 +100,39 @@ static int create_mtd_partitions(struct
-
- pre_size = offset;
-
-- if (!ar7_parts[1].offset) {
-- ar7_parts[1].offset = master->size - master->erasesize;
-- post_size = master->erasesize;
-- }
--
- switch (header.checksum) {
-- case LOADER_MAGIC1:
-- while (header.length) {
-- offset += sizeof(header) + header.length;
-- mtd_read(master, offset, sizeof(header), &len,
-- (uint8_t *)&header);
-- }
-- root_offset = offset + sizeof(header) + 4;
-- break;
- case LOADER_MAGIC2:
-+ for (retries = 0; retries <= 9; retries++) {
-+ mtd_name[3] = '0' + retries;
-+ prom_str = prom_getenv(mtd_name);
-+ if (prom_str == NULL)
-+ continue;
-+ sscanf(prom_str, "%i,%i", &mtd_start, &mtd_end);
-+ if (pre_size == (mtd_start & 0x1ffffff)) {
-+ ar7_parts[1].offset = mtd_end &= 0x1ffffff;
-+ ar7_parts[1].size = post_size = master->size - mtd_end;
-+ break;
-+ }
-+ }
-+ case LOADER_MAGIC1:
-+ root_offset = (header.checksum == LOADER_MAGIC1) ? 4 : 0;
- while (header.length) {
- offset += sizeof(header) + header.length;
- mtd_read(master, offset, sizeof(header), &len,
- (uint8_t *)&header);
- }
-- root_offset = offset + sizeof(header) + 4 + 0xff;
-- root_offset &= ~(uint32_t)0xff;
-+ root_offset += offset + sizeof(header);
- break;
- default:
- printk(KERN_WARNING "Unknown magic: %08x\n", header.checksum);
- break;
- }
-
-+ if (!ar7_parts[1].offset) {
-+ post_size = master->erasesize;
-+ ar7_parts[1].offset = master->size - post_size;
-+ }
-+
- mtd_read(master, root_offset, sizeof(header), &len, (u8 *)&header);
- if (header.checksum != SQUASHFS_MAGIC) {
- root_offset += master->erasesize - 1;
---- a/drivers/mtd/titanpart.c
-+++ b/drivers/mtd/titanpart.c
-@@ -148,8 +148,8 @@ static void titan_add_partition(char * e
-
- }
- int create_titan_partitions(struct mtd_info *master,
-- struct mtd_partition **pparts,
-- unsigned long origin)
-+ const struct mtd_partition **pparts,
-+ struct mtd_part_parser_data *data)
- {
- struct nsp_img_hdr_head hdr;
- struct nsp_img_hdr_section_info sect_info;
diff --git a/target/linux/ar7/patches-4.14/925-actiontec_leds.patch b/target/linux/ar7/patches-4.14/925-actiontec_leds.patch
deleted file mode 100644
index d37fa70f21..0000000000
--- a/target/linux/ar7/patches-4.14/925-actiontec_leds.patch
+++ /dev/null
@@ -1,95 +0,0 @@
---- a/arch/mips/ar7/platform.c
-+++ b/arch/mips/ar7/platform.c
-@@ -459,31 +459,22 @@ static struct gpio_led fb_fon_leds[] = {
- },
- };
-
--static struct gpio_led gt701_leds[] = {
-+static struct gpio_led actiontec_leds[] = {
- {
- .name = "inet:green",
- .gpio = 13,
-- .active_low = 1,
-- },
-- {
-- .name = "usb",
-- .gpio = 12,
-- .active_low = 1,
- },
- {
- .name = "inet:red",
- .gpio = 9,
-- .active_low = 1,
- },
- {
-- .name = "power:red",
-+ .name = "power:green",
- .gpio = 7,
-- .active_low = 1,
- },
- {
-- .name = "power:green",
-+ .name = "power:red",
- .gpio = 8,
-- .active_low = 1,
- .default_trigger = "default-on",
- },
- {
-@@ -491,6 +482,44 @@ static struct gpio_led gt701_leds[] = {
- .gpio = 10,
- .active_low = 1,
- },
-+ {
-+ .name = "wifi",
-+ .gpio = 6,
-+ .active_low = 1,
-+ },
-+ {
-+ .name = "wifi:red",
-+ .gpio = 3,
-+ },
-+ {
-+ .name = "standby",
-+ .gpio = 4,
-+ },
-+ {
-+ .name = "wps",
-+ .gpio = 16,
-+ .active_low = 1,
-+ },
-+ {
-+ .name = "usb",
-+ .gpio = 12,
-+ .active_low = 1,
-+ },
-+ {
-+ .name = "voip",
-+ .gpio = 15,
-+ .active_low = 1,
-+ },
-+ {
-+ .name = "line1",
-+ .gpio = 23,
-+ .active_low = 1,
-+ },
-+ {
-+ .name = "line2",
-+ .gpio = 25,
-+ .active_low = 1,
-+ },
- };
-
- static struct gpio_led_platform_data ar7_led_data;
-@@ -534,9 +563,9 @@ static void __init detect_leds(void)
- } else if (strstr(prid, "CYWM") || strstr(prid, "CYWL")) {
- ar7_led_data.num_leds = ARRAY_SIZE(titan_leds);
- ar7_led_data.leds = titan_leds;
-- } else if (strstr(prid, "GT701")) {
-- ar7_led_data.num_leds = ARRAY_SIZE(gt701_leds);
-- ar7_led_data.leds = gt701_leds;
-+ } else if (strstr(prid, "GT7") || strstr(prid, "PK5000")) {
-+ ar7_led_data.num_leds = ARRAY_SIZE(actiontec_leds);
-+ ar7_led_data.leds = actiontec_leds;
- }
- }
-
diff --git a/target/linux/ar7/patches-4.14/950-cpmac_titan.patch b/target/linux/ar7/patches-4.14/950-cpmac_titan.patch
deleted file mode 100644
index 66ed07970c..0000000000
--- a/target/linux/ar7/patches-4.14/950-cpmac_titan.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- a/drivers/net/ethernet/ti/cpmac.c
-+++ b/drivers/net/ethernet/ti/cpmac.c
-@@ -1123,6 +1123,8 @@ static int cpmac_probe(struct platform_d
- goto fail;
- }
-
-+ ar7_device_reset(pdata->reset_bit);
-+
- dev->irq = platform_get_irq_byname(pdev, "irq");
-
- dev->netdev_ops = &cpmac_netdev_ops;
-@@ -1202,7 +1204,7 @@ int cpmac_init(void)
- cpmac_mii->write = cpmac_mdio_write;
- cpmac_mii->reset = cpmac_mdio_reset;
-
-- cpmac_mii->priv = ioremap(AR7_REGS_MDIO, 256);
-+ cpmac_mii->priv = ioremap(ar7_is_titan() ? TITAN_REGS_MDIO : AR7_REGS_MDIO, 256);
-
- if (!cpmac_mii->priv) {
- pr_err("Can't ioremap mdio registers\n");
-@@ -1213,10 +1215,16 @@ int cpmac_init(void)
- /* FIXME: unhardcode gpio&reset bits */
- ar7_gpio_disable(26);
- ar7_gpio_disable(27);
-- ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
-- ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
-+
-+ if (!ar7_is_titan()) {
-+ ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
-+ ar7_device_reset(AR7_RESET_BIT_CPMAC_HI);
-+ }
- ar7_device_reset(AR7_RESET_BIT_EPHY);
-
-+ if (ar7_is_titan())
-+ ar7_device_reset(TITAN_RESET_BIT_EPHY1);
-+
- cpmac_mii->reset(cpmac_mii);
-
- for (i = 0; i < 300; i++) {
-@@ -1233,7 +1241,11 @@ int cpmac_init(void)
- mask = 0;
- }
-
-- cpmac_mii->phy_mask = ~(mask | 0x80000000);
-+ if (ar7_is_titan())
-+ cpmac_mii->phy_mask = ~(mask | 0x80000000 | 0x40000000);
-+ else
-+ cpmac_mii->phy_mask = ~(mask | 0x80000000);
-+
- snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "cpmac-1");
-
- res = mdiobus_register(cpmac_mii);
diff --git a/target/linux/ar7/src/adam2patcher.c b/target/linux/ar7/src/adam2patcher.c
deleted file mode 100644
index 25a78074a6..0000000000
--- a/target/linux/ar7/src/adam2patcher.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * patcher.c - ADAM2 patcher for Netgear DG834 (and compatible)
- *
- * Copyright (C) 2006 Felix Fietkau
- *
- * 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.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <string.h>
-
-#include <sys/ioctl.h>
-
-int main(int argc, char **argv)
-{
- int fd;
- char *ptr;
- uint32_t *i;
-
- if (argc != 2) {
- fprintf(stderr, "Usage: %s <filename>\n", argv[0]);
- exit(1);
- }
-
- if (((fd = open(argv[1], O_RDWR)) < 0)
- || ((ptr = mmap(0, 128 * 1024, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == (void *) (-1))) {
- fprintf(stderr, "Can't open file\n");
- exit(1);
- }
-
- i = (uint32_t *) &ptr[0x3944];
- if (*i == 0x0c000944) {
- fprintf(stderr, "Unpatched ADAM2 detected. Patching... ");
- *i = 0x00000000;
- msync(i, sizeof(*i), MS_SYNC|MS_INVALIDATE);
- fprintf(stderr, "done!\n");
- } else if (*i == 0x00000000) {
- fprintf(stderr, "Patched ADAM2 detected.\n");
- } else {
- fprintf(stderr, "Unknown ADAM2 detected. Can't patch!\n");
- }
-
- close(fd);
-}