[brcm63xx] add preliminary support for 3.6 kernel
[openwrt.git] / target / linux / brcm63xx / patches-3.6 / 103-MTD-bcm63xxpart-make-fixed-part-length-calculation-m.patch
1 From 465f1b3ff24dbf3bec43dce344a7bc2640e05ffc Mon Sep 17 00:00:00 2001
2 From: Jonas Gorski <jonas.gorski@gmail.com>
3 Date: Tue, 8 May 2012 09:53:07 +0200
4 Subject: [PATCH 22/79] MTD: bcm63xxpart: make fixed part length calculation
5  more generic
6
7 The CFE does not use 4K sectors even if the flash supports it, so
8 for the fixed partitions like CFE itself or NVRAM the erase block
9 size is always 64k or bigger.
10
11 Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
12 ---
13  drivers/mtd/bcm63xxpart.c |   11 +++++++----
14  1 file changed, 7 insertions(+), 4 deletions(-)
15
16 --- a/drivers/mtd/bcm63xxpart.c
17 +++ b/drivers/mtd/bcm63xxpart.c
18 @@ -37,8 +37,7 @@
19  
20  #define BCM63XX_EXTENDED_SIZE  0xBFC00000      /* Extended flash address */
21  
22 -#define BCM63XX_MIN_CFE_SIZE   0x10000         /* always at least 64KiB */
23 -#define BCM63XX_MIN_NVRAM_SIZE 0x10000         /* always at least 64KiB */
24 +#define BCM63XX_CFE_BLOCK_SIZE 0x10000         /* always at least 64KiB */
25  
26  #define BCM63XX_CFE_MAGIC_OFFSET 0x4e0
27  
28 @@ -79,6 +78,7 @@ static int bcm63xx_parse_cfe_partitions(
29         unsigned int rootfsaddr, kerneladdr, spareaddr;
30         unsigned int rootfslen, kernellen, sparelen, totallen;
31         unsigned int cfelen, nvramlen;
32 +       unsigned int cfe_erasesize;
33         int i;
34         u32 computed_crc;
35         bool rootfs_first = false;
36 @@ -86,8 +86,11 @@ static int bcm63xx_parse_cfe_partitions(
37         if (bcm63xx_detect_cfe(master))
38                 return -EINVAL;
39  
40 -       cfelen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_CFE_SIZE);
41 -       nvramlen = max_t(uint32_t, master->erasesize, BCM63XX_MIN_NVRAM_SIZE);
42 +       cfe_erasesize = max_t(uint32_t, master->erasesize,
43 +                             BCM63XX_CFE_BLOCK_SIZE);
44 +
45 +       cfelen = cfe_erasesize;
46 +       nvramlen = cfe_erasesize;
47  
48         /* Allocate memory for buffer */
49         buf = vmalloc(sizeof(struct bcm_tag));