提交 f2d9739b 编写于 作者: J Jonas Gorski 提交者: David Woodhouse

mtd: bcm63xxpart: check version marker string for newer CFEs

Recent CFEs do not contain the CFE1CFE1 magic anymore, so check for the
"cfe-v" version marker string instead. As very old CFEs do not have
this string, leave the CFE1CFE1 magic as a fallback for detection.
Signed-off-by: NJonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: NArtem Bityutskiy <Artem.Bityutskiy@linux.intel.com>
Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
上级 f9fbcdc3
...@@ -32,22 +32,34 @@ ...@@ -32,22 +32,34 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <asm/mach-bcm63xx/bcm963xx_tag.h> #include <asm/mach-bcm63xx/bcm963xx_tag.h>
#include <asm/mach-bcm63xx/board_bcm963xx.h>
#define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */ #define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */
#define BCM63XX_CFE_MAGIC_OFFSET 0x4e0
static int bcm63xx_detect_cfe(struct mtd_info *master) static int bcm63xx_detect_cfe(struct mtd_info *master)
{ {
int idoffset = 0x4e0;
static char idstring[8] = "CFE1CFE1";
char buf[9]; char buf[9];
int ret; int ret;
size_t retlen; size_t retlen;
ret = master->read(master, idoffset, 8, &retlen, (void *)buf); ret = master->read(master, BCM963XX_CFE_VERSION_OFFSET, 5, &retlen,
(void *)buf);
buf[retlen] = 0;
if (ret)
return ret;
if (strncmp("cfe-v", buf, 5) == 0)
return 0;
/* very old CFE's do not have the cfe-v string, so check for magic */
ret = master->read(master, BCM63XX_CFE_MAGIC_OFFSET, 8, &retlen,
(void *)buf);
buf[retlen] = 0; buf[retlen] = 0;
pr_info("Read Signature value of %s\n", buf);
return strncmp(idstring, buf, 8); return strncmp("CFE1CFE1", buf, 8);
} }
static int bcm63xx_parse_cfe_partitions(struct mtd_info *master, static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册