Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 361416
b: refs/heads/master
c: 91d542f
h: refs/heads/master
v: v3
  • Loading branch information
Rafał Miłecki authored and David Woodhouse committed Mar 8, 2013
1 parent b8c4570 commit b351010
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5ca1088f10d6179a610067ebedc56edc7d98b986
refs/heads/master: 91d542f4dcc231749c36114ed8e26bb27d4521e4
32 changes: 25 additions & 7 deletions trunk/drivers/mtd/bcm47xxpart.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ static int bcm47xxpart_parse(struct mtd_info *master,
struct trx_header *trx;
int trx_part = -1;
int last_trx_part = -1;
int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };

if (blocksize <= 0x10000)
blocksize = 0x10000;
Expand Down Expand Up @@ -99,13 +100,6 @@ static int bcm47xxpart_parse(struct mtd_info *master,
continue;
}

/* Standard NVRAM */
if (buf[0x000 / 4] == NVRAM_HEADER) {
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
offset, 0);
continue;
}

/*
* board_data starts with board_id which differs across boards,
* but we can use 'MPFR' (hopefully) magic at 0x100
Expand Down Expand Up @@ -174,6 +168,30 @@ static int bcm47xxpart_parse(struct mtd_info *master,
continue;
}
}

/* Look for NVRAM at the end of the last block. */
for (i = 0; i < ARRAY_SIZE(possible_nvram_sizes); i++) {
if (curr_part > BCM47XXPART_MAX_PARTS) {
pr_warn("Reached maximum number of partitions, scanning stopped!\n");
break;
}

offset = master->size - possible_nvram_sizes[i];
if (mtd_read(master, offset, 0x4, &bytes_read,
(uint8_t *)buf) < 0) {
pr_err("mtd_read error while reading at offset 0x%X!\n",
offset);
continue;
}

/* Standard NVRAM */
if (buf[0] == NVRAM_HEADER) {
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
master->size - blocksize, 0);
break;
}
}

kfree(buf);

/*
Expand Down

0 comments on commit b351010

Please sign in to comment.