[OpenWrt-Devel] [PATCH 1/3] ar71xx: rename and extend wrt160nl's trx partition parser

John Crispin blogic at openwrt.org
Thu Mar 5 15:13:37 EST 2015


Hi

the patches should be self contained and buildable. if i understand 2/3
correct it is needed for the fixes in 1/3 to build.

also in 1/3 you rename and change a file in 1 go, which is not that
good.  could you resend the series with the following layout

1/3 - only do the renaming
2/3 - add your changes and fix the patches to build
3/3 - ca stay as it is.

thanks,
	John

On 05/03/2015 17:08, Christian Lamparter wrote:
> This patch re-purposes the functionality of the custom
> partition parser from Linksys' WRT160NL router. This way,
> WD's My Net Wi-fi Range Extender can make use of the same
> Cybertan partition layout.
> 
> Signed-off-by: Christian Lamparter <chunkeey at googlemail.com>
> ---
>  target/linux/ar71xx/config-3.14                    |   2 +-
>  target/linux/ar71xx/config-3.18                    |   2 +-
>  .../ar71xx/files/arch/mips/ath79/mach-wrt160nl.c   |   2 +-
>  .../linux/ar71xx/files/drivers/mtd/cybertan_part.c | 201 ++++++++++++++++++++
>  .../linux/ar71xx/files/drivers/mtd/wrt160nl_part.c | 207 ---------------------
>  .../patches-3.14/404-mtd-cybertan-trx-parser.patch |  26 +++
>  .../patches-3.14/404-mtd-wrt160nl-trx-parser.patch |  25 ---
>  .../patches-3.18/404-mtd-cybertan-trx-parser.patch |  26 +++
>  .../patches-3.18/404-mtd-wrt160nl-trx-parser.patch |  25 ---
>  9 files changed, 256 insertions(+), 260 deletions(-)
>  create mode 100644 target/linux/ar71xx/files/drivers/mtd/cybertan_part.c
>  delete mode 100644 target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c
>  create mode 100644 target/linux/ar71xx/patches-3.14/404-mtd-cybertan-trx-parser.patch
>  delete mode 100644 target/linux/ar71xx/patches-3.14/404-mtd-wrt160nl-trx-parser.patch
>  create mode 100644 target/linux/ar71xx/patches-3.18/404-mtd-cybertan-trx-parser.patch
>  delete mode 100644 target/linux/ar71xx/patches-3.18/404-mtd-wrt160nl-trx-parser.patch
> 
> diff --git a/target/linux/ar71xx/config-3.14 b/target/linux/ar71xx/config-3.14
> index d6691b4..85a0bda 100644
> --- a/target/linux/ar71xx/config-3.14
> +++ b/target/linux/ar71xx/config-3.14
> @@ -255,7 +255,7 @@ CONFIG_MTD_SPLIT_LZMA_FW=y
>  CONFIG_MTD_SPLIT_SEAMA_FW=y
>  CONFIG_MTD_SPLIT_UIMAGE_FW=y
>  CONFIG_MTD_TPLINK_PARTS=y
> -CONFIG_MTD_WRT160NL_PARTS=y
> +CONFIG_MTD_CYBERTAN_PARTS=y
>  CONFIG_MYLOADER=y
>  CONFIG_NEED_DMA_MAP_STATE=y
>  CONFIG_NEED_PER_CPU_KM=y
> diff --git a/target/linux/ar71xx/config-3.18 b/target/linux/ar71xx/config-3.18
> index fa287e2..783bc35 100644
> --- a/target/linux/ar71xx/config-3.18
> +++ b/target/linux/ar71xx/config-3.18
> @@ -256,7 +256,7 @@ CONFIG_MTD_SPLIT_LZMA_FW=y
>  CONFIG_MTD_SPLIT_SEAMA_FW=y
>  CONFIG_MTD_SPLIT_UIMAGE_FW=y
>  CONFIG_MTD_TPLINK_PARTS=y
> -CONFIG_MTD_WRT160NL_PARTS=y
> +CONFIG_MTD_CYBERTAN_PARTS=y
>  CONFIG_MYLOADER=y
>  CONFIG_NEED_DMA_MAP_STATE=y
>  CONFIG_NEED_PER_CPU_KM=y
> diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-wrt160nl.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-wrt160nl.c
> index 21aefe0..ede3c21 100644
> --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-wrt160nl.c
> +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-wrt160nl.c
> @@ -34,7 +34,7 @@
>  #define WRT160NL_NVRAM_SIZE	0x10000
>  
>  static const char *wrt160nl_part_probes[] = {
> -	"wrt160nl",
> +	"cybertan",
>  	NULL,
>  };
>  
> diff --git a/target/linux/ar71xx/files/drivers/mtd/cybertan_part.c b/target/linux/ar71xx/files/drivers/mtd/cybertan_part.c
> new file mode 100644
> index 0000000..be9004d
> --- /dev/null
> +++ b/target/linux/ar71xx/files/drivers/mtd/cybertan_part.c
> @@ -0,0 +1,201 @@
> +/*
> + * Copyright (C) 2009 Christian Daniel <cd at maintech.de>
> + * Copyright (C) 2009 Gabor Juhos <juhosg at openwrt.org>
> + *
> + * 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
> + *
> + * TRX flash partition table.
> + * Based on ar7 map by Felix Fietkau <nbd at openwrt.org>
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/slab.h>
> +#include <linux/vmalloc.h>
> +
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/partitions.h>
> +
> +struct cybertan_header {
> +	char	magic[4];
> +	u8	res1[4];
> +	char	fw_date[3];
> +	char	fw_ver[3];
> +	char	id[4];
> +	char	hw_ver;
> +	char	unused;
> +	u8	flags[2];
> +	u8	res2[10];
> +};
> +
> +#define TRX_PARTS	6
> +#define TRX_MAGIC	0x30524448
> +#define TRX_MAX_OFFSET	3
> +
> +struct trx_header {
> +	uint32_t magic;           /* "HDR0" */
> +	uint32_t len;             /* Length of file including header */
> +	uint32_t crc32;           /* 32-bit CRC from flag_version to end of file */
> +	uint32_t flag_version;    /* 0:15 flags, 16:31 version */
> +	uint32_t offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */
> +};
> +
> +#define IH_MAGIC	0x27051956	/* Image Magic Number */
> +#define IH_NMLEN	32		/* Image Name Length */
> +
> +struct uimage_header {
> +	uint32_t	ih_magic;	/* Image Header Magic Number */
> +	uint32_t	ih_hcrc;	/* Image Header CRC Checksum */
> +	uint32_t	ih_time;	/* Image Creation Timestamp */
> +	uint32_t	ih_size;	/* Image Data Size */
> +	uint32_t	ih_load;	/* Data» Load  Address */
> +	uint32_t	ih_ep;		/* Entry Point Address */
> +	uint32_t	ih_dcrc;	/* Image Data CRC Checksum */
> +	uint8_t		ih_os;		/* Operating System */
> +	uint8_t		ih_arch;	/* CPU architecture */
> +	uint8_t		ih_type;	/* Image Type */
> +	uint8_t		ih_comp;	/* Compression Type */
> +	uint8_t		ih_name[IH_NMLEN];	/* Image Name */
> +};
> +
> +struct firmware_header {
> +	struct cybertan_header	cybertan;
> +	struct trx_header	trx;
> +	struct uimage_header	uimage;
> +} __packed;
> +
> +#define UBOOT_LEN	0x40000
> +#define ART_LEN		0x10000
> +#define NVRAM_LEN	0x10000
> +
> +static int cybertan_parse_partitions(struct mtd_info *master,
> +				     struct mtd_partition **pparts,
> +				     struct mtd_part_parser_data *data)
> +{
> +	struct firmware_header *header;
> +	struct trx_header *theader;
> +	struct uimage_header *uheader;
> +	struct mtd_partition *trx_parts;
> +	size_t retlen;
> +	unsigned int kernel_len;
> +	unsigned int uboot_len;
> +	unsigned int nvram_len;
> +	unsigned int art_len;
> +	int ret;
> +
> +	uboot_len = max_t(unsigned int, master->erasesize, UBOOT_LEN);
> +	nvram_len = max_t(unsigned int, master->erasesize, NVRAM_LEN);
> +	art_len = max_t(unsigned int, master->erasesize, ART_LEN);
> +
> +	trx_parts = kzalloc(TRX_PARTS * sizeof(struct mtd_partition),
> +			    GFP_KERNEL);
> +	if (!trx_parts) {
> +		ret = -ENOMEM;
> +		goto out;
> +	}
> +
> +	header = vmalloc(sizeof(*header));
> +	if (!header) {
> +		return -ENOMEM;
> +		goto free_parts;
> +	}
> +
> +	ret = mtd_read(master, uboot_len, sizeof(*header),
> +		       &retlen, (void *) header);
> +	if (ret)
> +		goto free_hdr;
> +
> +	if (retlen != sizeof(*header)) {
> +		ret = -EIO;
> +		goto free_hdr;
> +	}
> +
> +	theader = &header->trx;
> +	if (le32_to_cpu(theader->magic) != TRX_MAGIC) {
> +		printk(KERN_NOTICE "%s: no TRX header found\n", master->name);
> +		goto free_hdr;
> +	}
> +
> +	uheader = &header->uimage;
> +	if (uheader->ih_magic != IH_MAGIC) {
> +		printk(KERN_NOTICE "%s: no uImage found\n", master->name);
> +		goto free_hdr;
> +	}
> +
> +	kernel_len = le32_to_cpu(theader->offsets[1]) +
> +		sizeof(struct cybertan_header);
> +
> +	trx_parts[0].name = "u-boot";
> +	trx_parts[0].offset = 0;
> +	trx_parts[0].size = uboot_len;
> +	trx_parts[0].mask_flags = MTD_WRITEABLE;
> +
> +	trx_parts[1].name = "kernel";
> +	trx_parts[1].offset = trx_parts[0].offset + trx_parts[0].size;
> +	trx_parts[1].size = kernel_len;
> +	trx_parts[1].mask_flags = 0;
> +
> +	trx_parts[2].name = "rootfs";
> +	trx_parts[2].offset = trx_parts[1].offset + trx_parts[1].size;
> +	trx_parts[2].size = master->size - uboot_len - nvram_len - art_len -
> +		trx_parts[1].size;
> +	trx_parts[2].mask_flags = 0;
> +
> +	trx_parts[3].name = "nvram";
> +	trx_parts[3].offset = master->size - nvram_len - art_len;
> +	trx_parts[3].size = nvram_len;
> +	trx_parts[3].mask_flags = MTD_WRITEABLE;
> +
> +	trx_parts[4].name = "art";
> +	trx_parts[4].offset = master->size - art_len;
> +	trx_parts[4].size = art_len;
> +	trx_parts[4].mask_flags = MTD_WRITEABLE;
> +
> +	trx_parts[5].name = "firmware";
> +	trx_parts[5].offset = uboot_len;
> +	trx_parts[5].size = master->size - uboot_len - nvram_len - art_len;
> +	trx_parts[5].mask_flags = 0;
> +
> +	vfree(header);
> +
> +	*pparts = trx_parts;
> +	return TRX_PARTS;
> +
> +free_hdr:
> +	vfree(header);
> +free_parts:
> +	kfree(trx_parts);
> +out:
> +	return ret;
> +}
> +
> +static struct mtd_part_parser cybertan_parser = {
> +	.owner		= THIS_MODULE,
> +	.parse_fn	= cybertan_parse_partitions,
> +	.name		= "cybertan",
> +};
> +
> +static int __init cybertan_parser_init(void)
> +{
> +	register_mtd_parser(&cybertan_parser);
> +
> +	return 0;
> +}
> +
> +module_init(cybertan_parser_init);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_AUTHOR("Christian Daniel <cd at maintech.de>");
> diff --git a/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c b/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c
> deleted file mode 100644
> index 698bba8..0000000
> --- a/target/linux/ar71xx/files/drivers/mtd/wrt160nl_part.c
> +++ /dev/null
> @@ -1,207 +0,0 @@
> -/*
> - * Copyright (C) 2009 Christian Daniel <cd at maintech.de>
> - * Copyright (C) 2009 Gabor Juhos <juhosg at openwrt.org>
> - *
> - * 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
> - *
> - * TRX flash partition table.
> - * Based on ar7 map by Felix Fietkau <nbd at openwrt.org>
> - *
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/slab.h>
> -#include <linux/vmalloc.h>
> -
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -
> -struct cybertan_header {
> -	char	magic[4];
> -	u8	res1[4];
> -	char	fw_date[3];
> -	char	fw_ver[3];
> -	char	id[4];
> -	char	hw_ver;
> -	char	unused;
> -	u8	flags[2];
> -	u8	res2[10];
> -};
> -
> -#define TRX_PARTS	6
> -#define TRX_MAGIC	0x30524448
> -#define TRX_MAX_OFFSET	3
> -
> -struct trx_header {
> -	uint32_t magic;           /* "HDR0" */
> -	uint32_t len;             /* Length of file including header */
> -	uint32_t crc32;           /* 32-bit CRC from flag_version to end of file */
> -	uint32_t flag_version;    /* 0:15 flags, 16:31 version */
> -	uint32_t offsets[TRX_MAX_OFFSET]; /* Offsets of partitions from start of header */
> -};
> -
> -#define IH_MAGIC	0x27051956	/* Image Magic Number */
> -#define IH_NMLEN	32		/* Image Name Length */
> -
> -struct uimage_header {
> -	uint32_t	ih_magic;	/* Image Header Magic Number */
> -	uint32_t	ih_hcrc;	/* Image Header CRC Checksum */
> -	uint32_t	ih_time;	/* Image Creation Timestamp */
> -	uint32_t	ih_size;	/* Image Data Size */
> -	uint32_t	ih_load;	/* Data» Load  Address */
> -	uint32_t	ih_ep;		/* Entry Point Address */
> -	uint32_t	ih_dcrc;	/* Image Data CRC Checksum */
> -	uint8_t		ih_os;		/* Operating System */
> -	uint8_t		ih_arch;	/* CPU architecture */
> -	uint8_t		ih_type;	/* Image Type */
> -	uint8_t		ih_comp;	/* Compression Type */
> -	uint8_t		ih_name[IH_NMLEN];	/* Image Name */
> -};
> -
> -struct wrt160nl_header {
> -	struct cybertan_header	cybertan;
> -	struct trx_header	trx;
> -	struct uimage_header	uimage;
> -} __attribute__ ((packed));
> -
> -#define WRT160NL_UBOOT_LEN	0x40000
> -#define WRT160NL_ART_LEN	0x10000
> -#define WRT160NL_NVRAM_LEN	0x10000
> -
> -static int wrt160nl_parse_partitions(struct mtd_info *master,
> -				     struct mtd_partition **pparts,
> -				     struct mtd_part_parser_data *data)
> -{
> -	struct wrt160nl_header *header;
> -	struct trx_header *theader;
> -	struct uimage_header *uheader;
> -	struct mtd_partition *trx_parts;
> -	size_t retlen;
> -	unsigned int kernel_len;
> -	unsigned int uboot_len;
> -	unsigned int nvram_len;
> -	unsigned int art_len;
> -	int ret;
> -
> -	uboot_len = max_t(unsigned int, master->erasesize, WRT160NL_UBOOT_LEN);
> -	nvram_len = max_t(unsigned int, master->erasesize, WRT160NL_NVRAM_LEN);
> -	art_len = max_t(unsigned int, master->erasesize, WRT160NL_ART_LEN);
> -
> -	trx_parts = kzalloc(TRX_PARTS * sizeof(struct mtd_partition),
> -			    GFP_KERNEL);
> -	if (!trx_parts) {
> -		ret = -ENOMEM;
> -		goto out;
> -	}
> -
> -	header = vmalloc(sizeof(*header));
> -	if (!header) {
> -		return -ENOMEM;
> -		goto free_parts;
> -	}
> -
> -	ret = mtd_read(master, uboot_len, sizeof(*header),
> -		       &retlen, (void *) header);
> -	if (ret)
> -		goto free_hdr;
> -
> -	if (retlen != sizeof(*header)) {
> -		ret = -EIO;
> -		goto free_hdr;
> -	}
> -
> -	if (strncmp(header->cybertan.magic, "NL16", 4) != 0) {
> -		printk(KERN_NOTICE "%s: no WRT160NL signature found\n",
> -			master->name);
> -		goto free_hdr;
> -	}
> -
> -	theader = &header->trx;
> -	if (le32_to_cpu(theader->magic) != TRX_MAGIC) {
> -		printk(KERN_NOTICE "%s: no TRX header found\n", master->name);
> -		goto free_hdr;
> -	}
> -
> -	uheader = &header->uimage;
> -	if (uheader->ih_magic != IH_MAGIC) {
> -		printk(KERN_NOTICE "%s: no uImage found\n", master->name);
> -		goto free_hdr;
> -	}
> -
> -	kernel_len = le32_to_cpu(theader->offsets[1]) +
> -		sizeof(struct cybertan_header);
> -
> -	trx_parts[0].name = "u-boot";
> -	trx_parts[0].offset = 0;
> -	trx_parts[0].size = uboot_len;
> -	trx_parts[0].mask_flags = MTD_WRITEABLE;
> -
> -	trx_parts[1].name = "kernel";
> -	trx_parts[1].offset = trx_parts[0].offset + trx_parts[0].size;
> -	trx_parts[1].size = kernel_len;
> -	trx_parts[1].mask_flags = 0;
> -
> -	trx_parts[2].name = "rootfs";
> -	trx_parts[2].offset = trx_parts[1].offset + trx_parts[1].size;
> -	trx_parts[2].size = master->size - uboot_len - nvram_len - art_len -
> -		trx_parts[1].size;
> -	trx_parts[2].mask_flags = 0;
> -
> -	trx_parts[3].name = "nvram";
> -	trx_parts[3].offset = master->size - nvram_len - art_len;
> -	trx_parts[3].size = nvram_len;
> -	trx_parts[3].mask_flags = MTD_WRITEABLE;
> -
> -	trx_parts[4].name = "art";
> -	trx_parts[4].offset = master->size - art_len;
> -	trx_parts[4].size = art_len;
> -	trx_parts[4].mask_flags = MTD_WRITEABLE;
> -
> -	trx_parts[5].name = "firmware";
> -	trx_parts[5].offset = uboot_len;
> -	trx_parts[5].size = master->size - uboot_len - nvram_len - art_len;
> -	trx_parts[5].mask_flags = 0;
> -
> -	vfree(header);
> -
> -	*pparts = trx_parts;
> -	return TRX_PARTS;
> -
> -free_hdr:
> -	vfree(header);
> -free_parts:
> -	kfree(trx_parts);
> -out:
> -	return ret;
> -}
> -
> -static struct mtd_part_parser wrt160nl_parser = {
> -	.owner		= THIS_MODULE,
> -	.parse_fn	= wrt160nl_parse_partitions,
> -	.name		= "wrt160nl",
> -};
> -
> -static int __init wrt160nl_parser_init(void)
> -{
> -	register_mtd_parser(&wrt160nl_parser);
> -
> -	return 0;
> -}
> -
> -module_init(wrt160nl_parser_init);
> -
> -MODULE_LICENSE("GPL");
> -MODULE_AUTHOR("Christian Daniel <cd at maintech.de>");
> diff --git a/target/linux/ar71xx/patches-3.14/404-mtd-cybertan-trx-parser.patch b/target/linux/ar71xx/patches-3.14/404-mtd-cybertan-trx-parser.patch
> new file mode 100644
> index 0000000..678e8d5
> --- /dev/null
> +++ b/target/linux/ar71xx/patches-3.14/404-mtd-cybertan-trx-parser.patch
> @@ -0,0 +1,26 @@
> +--- a/drivers/mtd/Kconfig
> ++++ b/drivers/mtd/Kconfig
> +@@ -184,6 +184,13 @@ config MTD_BCM47XX_PARTS
> + 	  This provides partitions parser for devices based on BCM47xx
> + 	  boards.
> + 
> ++config MTD_CYBERTAN_PARTS
> ++	tristate "Cybertan partitioning support"
> ++	depends on ATH79
> ++	---help---
> ++	   Cybertan partitioning support
> ++	   Used by Linksys WRT160NL and WD My Net Wi-fi Range Extender
> ++
> + config MTD_MYLOADER_PARTS
> + 	tristate "MyLoader partition parsing"
> + 	depends on ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX || ATH79
> +--- a/drivers/mtd/Makefile
> ++++ b/drivers/mtd/Makefile
> +@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
> + obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
> + obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
> + obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
> ++obj-$(CONFIG_MTD_CYBERTAN_PARTS) += cybertan_part.o
> + 
> + # 'Users' - code which presents functionality to userspace.
> + obj-$(CONFIG_MTD_BLKDEVS)	+= mtd_blkdevs.o
> diff --git a/target/linux/ar71xx/patches-3.14/404-mtd-wrt160nl-trx-parser.patch b/target/linux/ar71xx/patches-3.14/404-mtd-wrt160nl-trx-parser.patch
> deleted file mode 100644
> index e49d72e..0000000
> --- a/target/linux/ar71xx/patches-3.14/404-mtd-wrt160nl-trx-parser.patch
> +++ /dev/null
> @@ -1,25 +0,0 @@
> ---- a/drivers/mtd/Kconfig
> -+++ b/drivers/mtd/Kconfig
> -@@ -184,6 +184,12 @@ config MTD_BCM47XX_PARTS
> - 	  This provides partitions parser for devices based on BCM47xx
> - 	  boards.
> - 
> -+config MTD_WRT160NL_PARTS
> -+	tristate "Linksys WRT160NL partitioning support"
> -+	depends on MTD_PARTITIONS && ATH79_MACH_WRT160NL
> -+	---help---
> -+	   Linksys WRT160NL partitioning support
> -+
> - config MTD_MYLOADER_PARTS
> - 	tristate "MyLoader partition parsing"
> - 	depends on ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX || ATH79
> ---- a/drivers/mtd/Makefile
> -+++ b/drivers/mtd/Makefile
> -@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
> - obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
> - obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
> - obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
> -+obj-$(CONFIG_MTD_WRT160NL_PARTS) += wrt160nl_part.o
> - 
> - # 'Users' - code which presents functionality to userspace.
> - obj-$(CONFIG_MTD_BLKDEVS)	+= mtd_blkdevs.o
> diff --git a/target/linux/ar71xx/patches-3.18/404-mtd-cybertan-trx-parser.patch b/target/linux/ar71xx/patches-3.18/404-mtd-cybertan-trx-parser.patch
> new file mode 100644
> index 0000000..678e8d5
> --- /dev/null
> +++ b/target/linux/ar71xx/patches-3.18/404-mtd-cybertan-trx-parser.patch
> @@ -0,0 +1,26 @@
> +--- a/drivers/mtd/Kconfig
> ++++ b/drivers/mtd/Kconfig
> +@@ -184,6 +184,13 @@ config MTD_BCM47XX_PARTS
> + 	  This provides partitions parser for devices based on BCM47xx
> + 	  boards.
> + 
> ++config MTD_CYBERTAN_PARTS
> ++	tristate "Cybertan partitioning support"
> ++	depends on ATH79
> ++	---help---
> ++	   Cybertan partitioning support
> ++	   Used by Linksys WRT160NL and WD My-Net Range Extender
> ++
> + config MTD_MYLOADER_PARTS
> + 	tristate "MyLoader partition parsing"
> + 	depends on ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX || ATH79
> +--- a/drivers/mtd/Makefile
> ++++ b/drivers/mtd/Makefile
> +@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
> + obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
> + obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
> + obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
> ++obj-$(CONFIG_MTD_CYBERTAN_PARTS) += cybertan_part.o
> + 
> + # 'Users' - code which presents functionality to userspace.
> + obj-$(CONFIG_MTD_BLKDEVS)	+= mtd_blkdevs.o
> diff --git a/target/linux/ar71xx/patches-3.18/404-mtd-wrt160nl-trx-parser.patch b/target/linux/ar71xx/patches-3.18/404-mtd-wrt160nl-trx-parser.patch
> deleted file mode 100644
> index e49d72e..0000000
> --- a/target/linux/ar71xx/patches-3.18/404-mtd-wrt160nl-trx-parser.patch
> +++ /dev/null
> @@ -1,25 +0,0 @@
> ---- a/drivers/mtd/Kconfig
> -+++ b/drivers/mtd/Kconfig
> -@@ -184,6 +184,12 @@ config MTD_BCM47XX_PARTS
> - 	  This provides partitions parser for devices based on BCM47xx
> - 	  boards.
> - 
> -+config MTD_WRT160NL_PARTS
> -+	tristate "Linksys WRT160NL partitioning support"
> -+	depends on MTD_PARTITIONS && ATH79_MACH_WRT160NL
> -+	---help---
> -+	   Linksys WRT160NL partitioning support
> -+
> - config MTD_MYLOADER_PARTS
> - 	tristate "MyLoader partition parsing"
> - 	depends on ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX || ATH79
> ---- a/drivers/mtd/Makefile
> -+++ b/drivers/mtd/Makefile
> -@@ -16,6 +16,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
> - obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
> - obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
> - obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
> -+obj-$(CONFIG_MTD_WRT160NL_PARTS) += wrt160nl_part.o
> - 
> - # 'Users' - code which presents functionality to userspace.
> - obj-$(CONFIG_MTD_BLKDEVS)	+= mtd_blkdevs.o
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list