mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
3b4fced67d
Based on 3.7.6. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 35481
50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
From 465f1b3ff24dbf3bec43dce344a7bc2640e05ffc Mon Sep 17 00:00:00 2001
|
|
From: Jonas Gorski <jonas.gorski@gmail.com>
|
|
Date: Tue, 8 May 2012 09:53:07 +0200
|
|
Subject: [PATCH 22/79] MTD: bcm63xxpart: make fixed part length calculation
|
|
more generic
|
|
|
|
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>
|
|
---
|
|
drivers/mtd/bcm63xxpart.c | 11 +++++++----
|
|
1 file changed, 7 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/mtd/bcm63xxpart.c
|
|
+++ b/drivers/mtd/bcm63xxpart.c
|
|
@@ -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
|
|
|
|
@@ -79,6 +78,7 @@ static int bcm63xx_parse_cfe_partitions(
|
|
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;
|
|
@@ -86,8 +86,11 @@ static int bcm63xx_parse_cfe_partitions(
|
|
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));
|