Changeset 35912


Ignore:
Timestamp:
2013-03-09T20:48:03+01:00 (5 years ago)
Author:
hauke
Message:

brcm47xx: add some more partition parser fixes by Rafał Miłecki

Location:
trunk/target/linux/brcm47xx/patches-3.8
Files:
3 added
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/brcm47xx/patches-3.8/027-mtd-bcm47xxpart-get-nvram.patch

    r35911 r35912  
    11--- a/drivers/mtd/bcm47xxpart.c 
    22+++ b/drivers/mtd/bcm47xxpart.c 
    3 @@ -58,6 +58,7 @@ static int bcm47xxpart_parse(struct mtd_ 
     3@@ -65,6 +65,7 @@ static int bcm47xxpart_parse(struct mtd_ 
    44        int trx_part = -1; 
    55        int last_trx_part = -1; 
    6         int max_bytes_to_read = 0x8004; 
     6        int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; 
    77+       bool found_nvram = false; 
    88  
    99        if (blocksize <= 0x10000) 
    1010                blocksize = 0x10000; 
    11 @@ -107,6 +108,7 @@ static int bcm47xxpart_parse(struct mtd_ 
     11@@ -190,12 +191,23 @@ static int bcm47xxpart_parse(struct mtd_ 
     12                if (buf[0] == NVRAM_HEADER) { 
    1213                        bcm47xxpart_add_part(&parts[curr_part++], "nvram", 
    13                                              offset, 0); 
    14                         offset = rounddown(offset, blocksize); 
     14                                             master->size - blocksize, 0); 
    1515+                       found_nvram = true; 
    16                         continue; 
     16                        break; 
    1717                } 
     18        } 
    1819  
    19 @@ -194,6 +196,15 @@ static int bcm47xxpart_parse(struct mtd_ 
    20                                                parts[trx_part].offset; 
    21         } 
     20        kfree(buf); 
    2221  
    2322+       if (!found_nvram) { 
    2423+               pr_err("can not find a nvram partition reserve last block\n"); 
    2524+               bcm47xxpart_add_part(&parts[curr_part++], "nvram_guess", 
    26 +                                    master->size - blocksize, MTD_WRITEABLE); 
     25+                                    master->size - blocksize * 2, MTD_WRITEABLE); 
    2726+               for (i = 0; i < curr_part; i++) { 
    2827+                       if (parts[i].size + parts[i].offset == master->size) 
    29 +                               parts[i].offset -= blocksize; 
     28+                               parts[i].offset -= blocksize * 2; 
    3029+               } 
    3130+       } 
    32         *pparts = parts; 
    33         return curr_part; 
    34  }; 
     31+ 
     32        /* 
     33         * Assume that partitions end at the beginning of the one they are 
     34         * followed by. 
Note: See TracChangeset for help on using the changeset viewer.