#include <sys/ioctl.h>
#include <mtd/mtd-user.h>
-#include <linux/bcm963xx_tag.h>
#include "mtd.h"
#include "crc32.h"
+#define TAGVER_LEN 4 /* Length of Tag Version */
+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
+#define SIG1_LEN 20 /* Company Signature 1 Length */
+#define SIG2_LEN 14 /* Company Signature 2 Length */
+#define BOARDID_LEN 16 /* Length of BoardId */
+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
+#define CHIPID_LEN 6 /* Chip Id Length */
+#define IMAGE_LEN 10 /* Length of Length Field */
+#define ADDRESS_LEN 12 /* Length of Address field */
+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
+
+#define NUM_PIRELLI 2
+#define IMAGETAG_CRC_START 0xFFFFFFFF
+
+#define PIRELLI_BOARDS { \
+ "AGPF-S0", \
+ "DWV-S0", \
+}
+/*
+ * The broadcom firmware assumes the rootfs starts the image,
+ * therefore uses the rootfs start (flash_image_address)
+ * to determine where to flash the image. Since we have the kernel first
+ * we have to give it the kernel address, but the crc uses the length
+ * associated with this address (root_length), which is added to the kernel
+ * length (kernel_length) to determine the length of image to flash and thus
+ * needs to be rootfs + deadcode (jffs2 EOF marker)
+*/
+
+struct bcm_tag {
+ /* 0-3: Version of the image tag */
+ char tag_version[TAGVER_LEN];
+ /* 4-23: Company Line 1 */
+ char sig_1[SIG1_LEN];
+ /* 24-37: Company Line 2 */
+ char sig_2[SIG2_LEN];
+ /* 38-43: Chip this image is for */
+ char chip_id[CHIPID_LEN];
+ /* 44-59: Board name */
+ char board_id[BOARDID_LEN];
+ /* 60-61: Map endianness -- 1 BE 0 LE */
+ char big_endian[ENDIANFLAG_LEN];
+ /* 62-71: Total length of image */
+ char total_length[IMAGE_LEN];
+ /* 72-83: Address in memory of CFE */
+ char cfe__address[ADDRESS_LEN];
+ /* 84-93: Size of CFE */
+ char cfe_length[IMAGE_LEN];
+ /* 94-105: Address in memory of image start
+ * (kernel for OpenWRT, rootfs for stock firmware)
+ */
+ char flash_image_start[ADDRESS_LEN];
+ /* 106-115: Size of rootfs */
+ char root_length[IMAGE_LEN];
+ /* 116-127: Address in memory of kernel */
+ char kernel_address[ADDRESS_LEN];
+ /* 128-137: Size of kernel */
+ char kernel_length[IMAGE_LEN];
+ /* 138-139: Unused at the moment */
+ char dual_image[DUALFLAG_LEN];
+ /* 140-141: Unused at the moment */
+ char inactive_flag[INACTIVEFLAG_LEN];
+ /* 142-161: RSA Signature (not used; some vendors may use this) */
+ char rsa_signature[RSASIG_LEN];
+ /* 162-191: Compilation and related information (not used in OpenWrt) */
+ char information1[TAGINFO1_LEN];
+ /* 192-195: Version flash layout */
+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
+ /* 196-199: kernel+rootfs CRC32 */
+ __u32 fskernel_crc;
+ /* 200-215: Unused except on Alice Gate where is is information */
+ char information2[TAGINFO2_LEN];
+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
+ __u32 image_crc;
+ /* 220-223: CRC32 of rootfs partition */
+ __u32 rootfs_crc;
+ /* 224-227: CRC32 of kernel partition */
+ __u32 kernel_crc;
+ /* 228-231: Image sequence number */
+ char image_sequence[4];
+ /* 222-235: Openwrt: real rootfs length */
+ __u32 real_rootfs_length;
+ /* 236-239: CRC32 of header excluding last 20 bytes */
+ __u32 header_crc;
+ /* 240-255: Unused at present */
+ char reserved2[16];
+};
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1025,6 +1025,7 @@ config MIPS_HUGE_TLB_SUPPORT
+@@ -1026,6 +1026,7 @@ config MIPS_HUGE_TLB_SUPPORT
config IRQ_CPU
bool
bool
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -94,28 +94,6 @@ static struct irq_chip mips_mt_cpu_irq_c
- .irq_eoi = unmask_mips_irq,
+@@ -98,28 +98,6 @@ static struct irq_chip mips_mt_cpu_irq_c
+ .irq_enable = unmask_mips_irq,
};
-void __init mips_cpu_irq_init(void)
static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hw)
{
-@@ -138,8 +116,7 @@ static const struct irq_domain_ops mips_
+@@ -142,8 +120,7 @@ static const struct irq_domain_ops mips_
.xlate = irq_domain_xlate_onecell,
};
{
struct irq_domain *domain;
-@@ -151,7 +128,16 @@ int __init mips_cpu_intc_init(struct dev
+@@ -155,7 +132,16 @@ int __init mips_cpu_intc_init(struct dev
&mips_cpu_intc_irq_domain_ops, NULL);
if (!domain)
panic("Failed to add irqdomain for MIPS CPU");
#endif /* _ASM_IRQ_CPU_H */
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -135,8 +135,8 @@ void __init mips_cpu_irq_init(void)
+@@ -139,8 +139,8 @@ void __init mips_cpu_irq_init(void)
__mips_cpu_irq_init(NULL);
}
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -94,6 +94,24 @@ static struct irq_chip mips_mt_cpu_irq_c
- .irq_eoi = unmask_mips_irq,
+@@ -98,6 +98,24 @@ static struct irq_chip mips_mt_cpu_irq_c
+ .irq_enable = unmask_mips_irq,
};
+asmlinkage void __weak plat_irq_dispatch(void)
@@ -35,7 +35,7 @@
#include <asm/mach-bcm63xx/bcm63xx_nvram.h>
- #include <linux/bcm963xx_tag.h>
+ #include <asm/mach-bcm63xx/bcm963xx_tag.h>
-#include <asm/mach-bcm63xx/board_bcm963xx.h>
+#include <asm/mach-bcm63xx/bcm63xx_board.h>
obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o
--- /dev/null
+++ b/drivers/irqchip/irq-bcm6345-periph.c
-@@ -0,0 +1,340 @@
+@@ -0,0 +1,341 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ irq_hw_number_t hwirq = irqd_to_hwirq(data);
+ struct intc_data *priv = data->domain->host_data;
+ unsigned int i, reg, bit;
++ unsigned long flags;
+ bool enabled;
+ int cpu;
+
+ if (!priv->block[cpu].parent_irq)
+ return -EINVAL;
+
-+ raw_spin_lock(&priv->lock);
++ raw_spin_lock_irqsave(&priv->lock, flags);
+ enabled = !irqd_irq_masked(data);
+ for (i = 0; i < MAX_PARENT_IRQS; i++) {
+ struct intc_block *block = &priv->block[i];
+ __bcm6345_periph_enable(block, reg, bit, false);
+ }
+ }
-+ raw_spin_unlock(&priv->lock);
++ raw_spin_unlock_irqrestore(&priv->lock, flags);
+
+ return 0;
+}
+ int num_words);
+
+#endif /* __INCLUDE_LINUX_IRQCHIP_IRQ_BCM6345_PERIPH_H */
-diff --git a/drivers/irqchip/irq-bcm6345-periph.c b/drivers/irqchip/irq-bcm6345-periph.c
-index dfab88e..b280164 100644
---- a/drivers/irqchip/irq-bcm6345-periph.c
-+++ b/drivers/irqchip/irq-bcm6345-periph.c
-@@ -149,6 +149,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- irq_hw_number_t hwirq = irqd_to_hwirq(data);
- struct intc_data *priv = data->domain->host_data;
- unsigned int i, reg, bit;
-+ unsigned long flags;
- bool enabled;
- int cpu;
-
-@@ -168,7 +169,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- if (!priv->block[cpu].parent_irq)
- return -EINVAL;
-
-- raw_spin_lock(&priv->lock);
-+ raw_spin_lock_irqsave(&priv->lock, flags);
- enabled = !irqd_irq_masked(data);
- for (i = 0; i < MAX_PARENT_IRQS; i++) {
- struct intc_block *block = &priv->block[i];
-@@ -184,7 +185,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- __bcm6345_periph_enable(block, reg, bit, false);
- }
- }
-- raw_spin_unlock(&priv->lock);
-+ raw_spin_unlock_irqrestore(&priv->lock, flags);
-
- return 0;
- }
---- a/include/uapi/linux/bcm963xx_tag.h
-+++ b/include/uapi/linux/bcm963xx_tag.h
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
@@ -85,8 +85,10 @@ struct bcm_tag {
__u32 rootfs_crc;
/* 224-227: CRC32 of kernel partition */
+#include <linux/of.h>
#include <asm/mach-bcm63xx/bcm63xx_nvram.h>
- #include <linux/bcm963xx_tag.h>
+ #include <asm/mach-bcm63xx/bcm963xx_tag.h>
@@ -43,66 +44,35 @@
#define BCM63XX_CFE_MAGIC_OFFSET 0x4e0
bool
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -94,28 +94,6 @@ static struct irq_chip mips_mt_cpu_irq_c
- .irq_eoi = unmask_mips_irq,
+@@ -98,28 +98,6 @@ static struct irq_chip mips_mt_cpu_irq_c
+ .irq_enable = unmask_mips_irq,
};
-void __init mips_cpu_irq_init(void)
static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hw)
{
-@@ -138,8 +116,7 @@ static const struct irq_domain_ops mips_
+@@ -142,8 +120,7 @@ static const struct irq_domain_ops mips_
.xlate = irq_domain_xlate_onecell,
};
{
struct irq_domain *domain;
-@@ -151,7 +128,16 @@ int __init mips_cpu_intc_init(struct dev
+@@ -155,7 +132,16 @@ int __init mips_cpu_intc_init(struct dev
&mips_cpu_intc_irq_domain_ops, NULL);
if (!domain)
panic("Failed to add irqdomain for MIPS CPU");
#endif /* _ASM_IRQ_CPU_H */
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -135,8 +135,8 @@ void __init mips_cpu_irq_init(void)
+@@ -139,8 +139,8 @@ void __init mips_cpu_irq_init(void)
__mips_cpu_irq_init(NULL);
}
--- a/arch/mips/kernel/irq_cpu.c
+++ b/arch/mips/kernel/irq_cpu.c
-@@ -94,6 +94,24 @@ static struct irq_chip mips_mt_cpu_irq_c
- .irq_eoi = unmask_mips_irq,
+@@ -98,6 +98,24 @@ static struct irq_chip mips_mt_cpu_irq_c
+ .irq_enable = unmask_mips_irq,
};
+asmlinkage void __weak plat_irq_dispatch(void)
@@ -35,7 +35,7 @@
#include <asm/mach-bcm63xx/bcm63xx_nvram.h>
- #include <linux/bcm963xx_tag.h>
+ #include <asm/mach-bcm63xx/bcm963xx_tag.h>
-#include <asm/mach-bcm63xx/board_bcm963xx.h>
+#include <asm/mach-bcm63xx/bcm63xx_board.h>
---- a/include/uapi/linux/bcm963xx_tag.h
-+++ b/include/uapi/linux/bcm963xx_tag.h
+--- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
++++ b/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
@@ -85,8 +85,10 @@ struct bcm_tag {
__u32 rootfs_crc;
/* 224-227: CRC32 of kernel partition */
+#include <linux/of.h>
#include <asm/mach-bcm63xx/bcm63xx_nvram.h>
- #include <linux/bcm963xx_tag.h>
+ #include <asm/mach-bcm63xx/bcm963xx_tag.h>
@@ -43,66 +44,35 @@
#define BCM63XX_CFE_MAGIC_OFFSET 0x4e0
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -32,7 +32,7 @@
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/partitions.h>
-
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -67,6 +67,7 @@ header-y += binfmts.h
- header-y += blkpg.h
- header-y += blktrace_api.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -34,7 +34,7 @@
- #include <linux/mtd/partitions.h>
-
- #include <asm/mach-bcm63xx/bcm63xx_nvram.h>
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -68,6 +68,7 @@ header-y += binfmts.h
- header-y += blkpg.h
- header-y += blktrace_api.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -34,7 +34,7 @@
- #include <linux/mtd/partitions.h>
-
- #include <asm/mach-bcm63xx/bcm63xx_nvram.h>
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -68,6 +68,7 @@ header-y += binfmts.h
- header-y += blkpg.h
- header-y += blktrace_api.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
obj-$(CONFIG_CICADA_PHY) += cicada.o
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
-@@ -366,6 +366,7 @@ header-y += stddef.h
+@@ -365,6 +365,7 @@ header-y += stddef.h
header-y += string.h
header-y += suspend_ioctls.h
header-y += swab.h
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -34,7 +34,7 @@
- #include <linux/mtd/partitions.h>
-
- #include <asm/mach-bcm63xx/bcm63xx_nvram.h>
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -70,6 +70,7 @@ header-y += blktrace_api.h
- header-y += bpf.h
- header-y += bpf_common.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
obj-$(CONFIG_CICADA_PHY) += cicada.o
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
-@@ -375,6 +375,7 @@ header-y += stddef.h
+@@ -374,6 +374,7 @@ header-y += stddef.h
header-y += string.h
header-y += suspend_ioctls.h
header-y += swab.h
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -34,7 +34,7 @@
- #include <linux/mtd/partitions.h>
-
- #include <asm/mach-bcm63xx/bcm63xx_nvram.h>
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -71,6 +71,7 @@ header-y += blktrace_api.h
- header-y += bpf_common.h
- header-y += bpf.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -32,7 +32,7 @@
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/partitions.h>
-
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -67,6 +67,7 @@ header-y += binfmts.h
- header-y += blkpg.h
- header-y += blktrace_api.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += can.h
- header-y += capability.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */
+++ /dev/null
---- a/arch/mips/include/asm/mach-bcm63xx/bcm963xx_tag.h
-+++ /dev/null
-@@ -1,96 +0,0 @@
--#ifndef __BCM963XX_TAG_H
--#define __BCM963XX_TAG_H
--
--#define TAGVER_LEN 4 /* Length of Tag Version */
--#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
--#define SIG1_LEN 20 /* Company Signature 1 Length */
--#define SIG2_LEN 14 /* Company Signature 2 Length */
--#define BOARDID_LEN 16 /* Length of BoardId */
--#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
--#define CHIPID_LEN 6 /* Chip Id Length */
--#define IMAGE_LEN 10 /* Length of Length Field */
--#define ADDRESS_LEN 12 /* Length of Address field */
--#define DUALFLAG_LEN 2 /* Dual Image flag Length */
--#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
--#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
--#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
--#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
--#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
--#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
--
--#define NUM_PIRELLI 2
--#define IMAGETAG_CRC_START 0xFFFFFFFF
--
--#define PIRELLI_BOARDS { \
-- "AGPF-S0", \
-- "DWV-S0", \
--}
--
--/*
-- * The broadcom firmware assumes the rootfs starts the image,
-- * therefore uses the rootfs start (flash_image_address)
-- * to determine where to flash the image. Since we have the kernel first
-- * we have to give it the kernel address, but the crc uses the length
-- * associated with this address (root_length), which is added to the kernel
-- * length (kernel_length) to determine the length of image to flash and thus
-- * needs to be rootfs + deadcode (jffs2 EOF marker)
--*/
--
--struct bcm_tag {
-- /* 0-3: Version of the image tag */
-- char tag_version[TAGVER_LEN];
-- /* 4-23: Company Line 1 */
-- char sig_1[SIG1_LEN];
-- /* 24-37: Company Line 2 */
-- char sig_2[SIG2_LEN];
-- /* 38-43: Chip this image is for */
-- char chip_id[CHIPID_LEN];
-- /* 44-59: Board name */
-- char board_id[BOARDID_LEN];
-- /* 60-61: Map endianness -- 1 BE 0 LE */
-- char big_endian[ENDIANFLAG_LEN];
-- /* 62-71: Total length of image */
-- char total_length[IMAGE_LEN];
-- /* 72-83: Address in memory of CFE */
-- char cfe__address[ADDRESS_LEN];
-- /* 84-93: Size of CFE */
-- char cfe_length[IMAGE_LEN];
-- /* 94-105: Address in memory of image start
-- * (kernel for OpenWRT, rootfs for stock firmware)
-- */
-- char flash_image_start[ADDRESS_LEN];
-- /* 106-115: Size of rootfs */
-- char root_length[IMAGE_LEN];
-- /* 116-127: Address in memory of kernel */
-- char kernel_address[ADDRESS_LEN];
-- /* 128-137: Size of kernel */
-- char kernel_length[IMAGE_LEN];
-- /* 138-139: Unused at the moment */
-- char dual_image[DUALFLAG_LEN];
-- /* 140-141: Unused at the moment */
-- char inactive_flag[INACTIVEFLAG_LEN];
-- /* 142-161: RSA Signature (not used; some vendors may use this) */
-- char rsa_signature[RSASIG_LEN];
-- /* 162-191: Compilation and related information (not used in OpenWrt) */
-- char information1[TAGINFO1_LEN];
-- /* 192-195: Version flash layout */
-- char flash_layout_ver[FLASHLAYOUTVER_LEN];
-- /* 196-199: kernel+rootfs CRC32 */
-- __u32 fskernel_crc;
-- /* 200-215: Unused except on Alice Gate where is is information */
-- char information2[TAGINFO2_LEN];
-- /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-- __u32 image_crc;
-- /* 220-223: CRC32 of rootfs partition */
-- __u32 rootfs_crc;
-- /* 224-227: CRC32 of kernel partition */
-- __u32 kernel_crc;
-- /* 228-235: Unused at present */
-- char reserved1[8];
-- /* 236-239: CRC32 of header excluding last 20 bytes */
-- __u32 header_crc;
-- /* 240-255: Unused at present */
-- char reserved2[16];
--};
--
--#endif /* __BCM63XX_TAG_H */
---- a/drivers/mtd/bcm63xxpart.c
-+++ b/drivers/mtd/bcm63xxpart.c
-@@ -34,7 +34,7 @@
- #include <linux/mtd/partitions.h>
-
- #include <asm/mach-bcm63xx/bcm63xx_nvram.h>
--#include <asm/mach-bcm63xx/bcm963xx_tag.h>
-+#include <linux/bcm963xx_tag.h>
- #include <asm/mach-bcm63xx/board_bcm963xx.h>
-
- #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
---- a/include/uapi/linux/Kbuild
-+++ b/include/uapi/linux/Kbuild
-@@ -72,6 +72,7 @@ header-y += blktrace_api.h
- header-y += bpf_common.h
- header-y += bpf.h
- header-y += bpqether.h
-+header-y += bcm963xx_tag.h
- header-y += bsg.h
- header-y += btrfs.h
- header-y += can.h
---- /dev/null
-+++ b/include/uapi/linux/bcm963xx_tag.h
-@@ -0,0 +1,96 @@
-+#ifndef __BCM963XX_TAG_H
-+#define __BCM963XX_TAG_H
-+
-+#define TAGVER_LEN 4 /* Length of Tag Version */
-+#define TAGLAYOUT_LEN 4 /* Length of FlashLayoutVer */
-+#define SIG1_LEN 20 /* Company Signature 1 Length */
-+#define SIG2_LEN 14 /* Company Signature 2 Length */
-+#define BOARDID_LEN 16 /* Length of BoardId */
-+#define ENDIANFLAG_LEN 2 /* Endian Flag Length */
-+#define CHIPID_LEN 6 /* Chip Id Length */
-+#define IMAGE_LEN 10 /* Length of Length Field */
-+#define ADDRESS_LEN 12 /* Length of Address field */
-+#define DUALFLAG_LEN 2 /* Dual Image flag Length */
-+#define INACTIVEFLAG_LEN 2 /* Inactie Flag Length */
-+#define RSASIG_LEN 20 /* Length of RSA Signature in tag */
-+#define TAGINFO1_LEN 30 /* Length of vendor information field1 in tag */
-+#define FLASHLAYOUTVER_LEN 4 /* Length of Flash Layout Version String tag */
-+#define TAGINFO2_LEN 16 /* Length of vendor information field2 in tag */
-+#define ALTTAGINFO_LEN 54 /* Alternate length for vendor information; Pirelli */
-+
-+#define NUM_PIRELLI 2
-+#define IMAGETAG_CRC_START 0xFFFFFFFF
-+
-+#define PIRELLI_BOARDS { \
-+ "AGPF-S0", \
-+ "DWV-S0", \
-+}
-+
-+/*
-+ * The broadcom firmware assumes the rootfs starts the image,
-+ * therefore uses the rootfs start (flash_image_address)
-+ * to determine where to flash the image. Since we have the kernel first
-+ * we have to give it the kernel address, but the crc uses the length
-+ * associated with this address (root_length), which is added to the kernel
-+ * length (kernel_length) to determine the length of image to flash and thus
-+ * needs to be rootfs + deadcode (jffs2 EOF marker)
-+*/
-+
-+struct bcm_tag {
-+ /* 0-3: Version of the image tag */
-+ char tag_version[TAGVER_LEN];
-+ /* 4-23: Company Line 1 */
-+ char sig_1[SIG1_LEN];
-+ /* 24-37: Company Line 2 */
-+ char sig_2[SIG2_LEN];
-+ /* 38-43: Chip this image is for */
-+ char chip_id[CHIPID_LEN];
-+ /* 44-59: Board name */
-+ char board_id[BOARDID_LEN];
-+ /* 60-61: Map endianness -- 1 BE 0 LE */
-+ char big_endian[ENDIANFLAG_LEN];
-+ /* 62-71: Total length of image */
-+ char total_length[IMAGE_LEN];
-+ /* 72-83: Address in memory of CFE */
-+ char cfe__address[ADDRESS_LEN];
-+ /* 84-93: Size of CFE */
-+ char cfe_length[IMAGE_LEN];
-+ /* 94-105: Address in memory of image start
-+ * (kernel for OpenWRT, rootfs for stock firmware)
-+ */
-+ char flash_image_start[ADDRESS_LEN];
-+ /* 106-115: Size of rootfs */
-+ char root_length[IMAGE_LEN];
-+ /* 116-127: Address in memory of kernel */
-+ char kernel_address[ADDRESS_LEN];
-+ /* 128-137: Size of kernel */
-+ char kernel_length[IMAGE_LEN];
-+ /* 138-139: Unused at the moment */
-+ char dual_image[DUALFLAG_LEN];
-+ /* 140-141: Unused at the moment */
-+ char inactive_flag[INACTIVEFLAG_LEN];
-+ /* 142-161: RSA Signature (not used; some vendors may use this) */
-+ char rsa_signature[RSASIG_LEN];
-+ /* 162-191: Compilation and related information (not used in OpenWrt) */
-+ char information1[TAGINFO1_LEN];
-+ /* 192-195: Version flash layout */
-+ char flash_layout_ver[FLASHLAYOUTVER_LEN];
-+ /* 196-199: kernel+rootfs CRC32 */
-+ __u32 fskernel_crc;
-+ /* 200-215: Unused except on Alice Gate where is is information */
-+ char information2[TAGINFO2_LEN];
-+ /* 216-219: CRC32 of image less imagetag (kernel for Alice Gate) */
-+ __u32 image_crc;
-+ /* 220-223: CRC32 of rootfs partition */
-+ __u32 rootfs_crc;
-+ /* 224-227: CRC32 of kernel partition */
-+ __u32 kernel_crc;
-+ /* 228-235: Unused at present */
-+ char reserved1[8];
-+ /* 236-239: CRC32 of header excluding last 20 bytes */
-+ __u32 header_crc;
-+ /* 240-255: Unused at present */
-+ char reserved2[16];
-+};
-+
-+#endif /* __BCM63XX_TAG_H */