summaryrefslogtreecommitdiff
path: root/target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch')
-rw-r--r--target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch b/target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch
new file mode 100644
index 0000000..83e8b92
--- /dev/null
+++ b/target/linux/brcm63xx/patches-3.9/037-MIPS-BCM63XX-recognize-Cable-Modem-firmware-format.patch
@@ -0,0 +1,101 @@
+From f3b3faafe7b5a1c07b12d18e96c36bc8a0eecaed Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <florian@openwrt.org>
+Date: Tue, 18 Jun 2013 16:55:41 +0000
+Subject: [PATCH 3/6] MIPS: BCM63XX: recognize Cable Modem firmware format
+
+Add the firmware header format which is used by Broadcom Cable Modem
+SoCs such as the BCM3368 SoC. We export the bcm_hcs firmware format
+structure because it is used by user-land tools to create firmware
+images for these SoCs and will later be used by a corresponding MTD
+parser.
+
+Signed-off-by: Florian Fainelli <florian@openwrt.org>
+Cc: linux-mips@linux-mips.org
+Cc: cernekee@gmail.com
+Cc: jogo@openwrt.org
+Patchwork: https://patchwork.linux-mips.org/patch/5496/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+---
+ arch/mips/bcm63xx/boards/board_bcm963xx.c | 14 ++++++++++++--
+ include/uapi/linux/Kbuild | 1 +
+ include/uapi/linux/bcm933xx_hcs.h | 24 ++++++++++++++++++++++++
+ 3 files changed, 37 insertions(+), 2 deletions(-)
+ create mode 100644 include/uapi/linux/bcm933xx_hcs.h
+
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -28,8 +28,12 @@
+ #include <bcm63xx_dev_usb_usbd.h>
+ #include <board_bcm963xx.h>
+
++#include <uapi/linux/bcm933xx_hcs.h>
++
+ #define PFX "board_bcm963xx: "
+
++#define HCS_OFFSET_128K 0x20000
++
+ static struct board_info board;
+
+ /*
+@@ -722,8 +726,9 @@ void __init board_prom_init(void)
+ unsigned int i;
+ u8 *boot_addr, *cfe;
+ char cfe_version[32];
+- char *board_name;
++ char *board_name = NULL;
+ u32 val;
++ struct bcm_hcs *hcs;
+
+ /* read base address of boot chip select (0)
+ * 6328/6362 do not have MPI but boot from a fixed address
+@@ -747,7 +752,12 @@ void __init board_prom_init(void)
+
+ bcm63xx_nvram_init(boot_addr + BCM963XX_NVRAM_OFFSET);
+
+- board_name = bcm63xx_nvram_get_name();
++ if (BCMCPU_IS_3368()) {
++ hcs = (struct bcm_hcs *)boot_addr;
++ board_name = hcs->filename;
++ } else {
++ board_name = bcm63xx_nvram_get_name();
++ }
+ /* find board by name */
+ for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) {
+ if (strncmp(board_name, bcm963xx_boards[i]->name, 16))
+--- a/include/uapi/linux/Kbuild
++++ b/include/uapi/linux/Kbuild
+@@ -62,6 +62,7 @@ header-y += auxvec.h
+ header-y += ax25.h
+ header-y += b1lli.h
+ header-y += baycom.h
++header-y += bcm933xx_hcs.h
+ header-y += bfs_fs.h
+ header-y += binfmts.h
+ header-y += blkpg.h
+--- /dev/null
++++ b/include/uapi/linux/bcm933xx_hcs.h
+@@ -0,0 +1,24 @@
++/*
++ * Broadcom Cable Modem firmware format
++ */
++
++#ifndef __BCM933XX_HCS_H
++#define __BCM933XX_HCS_H
++
++#include <linux/types.h>
++
++struct bcm_hcs {
++ __u16 magic;
++ __u16 control;
++ __u16 rev_maj;
++ __u16 rev_min;
++ __u32 build_date;
++ __u32 filelen;
++ __u32 ldaddress;
++ char filename[64];
++ __u16 hcs;
++ __u16 her_znaet_chto;
++ __u32 crc;
++};
++
++#endif /* __BCM933XX_HCS */