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: Jonas Gorski <jonas.gorski@gmail.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
f9fbcdc357
commit
f2d9739b8e
1 changed files with 17 additions and 5 deletions
|
@ -32,22 +32,34 @@
|
|||
#include <linux/mtd/partitions.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_CFE_MAGIC_OFFSET 0x4e0
|
||||
|
||||
static int bcm63xx_detect_cfe(struct mtd_info *master)
|
||||
{
|
||||
int idoffset = 0x4e0;
|
||||
static char idstring[8] = "CFE1CFE1";
|
||||
char buf[9];
|
||||
int ret;
|
||||
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;
|
||||
pr_info("Read Signature value of %s\n", buf);
|
||||
|
||||
return strncmp(idstring, buf, 8);
|
||||
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;
|
||||
|
||||
return strncmp("CFE1CFE1", buf, 8);
|
||||
}
|
||||
|
||||
static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
|
||||
|
|
Loading…
Reference in a new issue