Skip to content

Commit

Permalink
mtd: bcm63xxpart: make fixed part length calculation more generic
Browse files Browse the repository at this point in the history
The CFE does not use 4K sectors even if the flash supports it, so
for the fixed partitions like CFE itself or NVRAM the erase block
size is always 64k or bigger.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Reviewed-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
  • Loading branch information
Jonas Gorski authored and Artem Bityutskiy committed Nov 21, 2012
1 parent e190401 commit 4e4fb63
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/mtd/bcm63xxpart.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@

#define BCM63XX_EXTENDED_SIZE 0xBFC00000 /* Extended flash address */

#define BCM63XX_MIN_CFE_SIZE 0x10000 /* always at least 64KiB */
#define BCM63XX_MIN_NVRAM_SIZE 0x10000 /* always at least 64KiB */
#define BCM63XX_CFE_BLOCK_SIZE 0x10000 /* always at least 64KiB */

#define BCM63XX_CFE_MAGIC_OFFSET 0x4e0

Expand Down Expand Up @@ -79,15 +78,19 @@ static int bcm63xx_parse_cfe_partitions(struct mtd_info *master,
unsigned int rootfsaddr, kerneladdr, spareaddr;
unsigned int rootfslen, kernellen, sparelen, totallen;
unsigned int cfelen, nvramlen;
unsigned int cfe_erasesize;
int i;
u32 computed_crc;
bool rootfs_first = false;

if (bcm63xx_detect_cfe(master))
return -EINVAL;

cfelen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_CFE_SIZE);
nvramlen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_NVRAM_SIZE);
cfe_erasesize = max_t(uint32_t, master->erasesize,
BCM63XX_CFE_BLOCK_SIZE);

cfelen = cfe_erasesize;
nvramlen = cfe_erasesize;

/* Allocate memory for buffer */
buf = vmalloc(sizeof(struct bcm_tag));
Expand Down

0 comments on commit 4e4fb63

Please sign in to comment.