From 990423f3efad559289c3a084f2cb40a0c0f2834e Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Wed, 12 Jun 2013 14:47:53 +0000
Subject: brcm47xx: add initial support for kernel 3.9

SVN-Revision: 36926
---
 .../027-mtd-bcm47xxpart-get-nvram.patch            | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 target/linux/brcm47xx/patches-3.9/027-mtd-bcm47xxpart-get-nvram.patch

(limited to 'target/linux/brcm47xx/patches-3.9/027-mtd-bcm47xxpart-get-nvram.patch')

diff --git a/target/linux/brcm47xx/patches-3.9/027-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.9/027-mtd-bcm47xxpart-get-nvram.patch
new file mode 100644
index 0000000..4cd78c2
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.9/027-mtd-bcm47xxpart-get-nvram.patch
@@ -0,0 +1,34 @@
+--- a/drivers/mtd/bcm47xxpart.c
++++ b/drivers/mtd/bcm47xxpart.c
+@@ -65,6 +65,7 @@ static int bcm47xxpart_parse(struct mtd_
+ 	int trx_part = -1;
+ 	int last_trx_part = -1;
+ 	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
++	bool found_nvram = false;
+ 
+ 	if (blocksize <= 0x10000)
+ 		blocksize = 0x10000;
+@@ -190,12 +191,23 @@ static int bcm47xxpart_parse(struct mtd_
+ 		if (buf[0] == NVRAM_HEADER) {
+ 			bcm47xxpart_add_part(&parts[curr_part++], "nvram",
+ 					     master->size - blocksize, 0);
++			found_nvram = true;
+ 			break;
+ 		}
+ 	}
+ 
+ 	kfree(buf);
+ 
++	if (!found_nvram) {
++		pr_err("can not find a nvram partition reserve last block\n");
++		bcm47xxpart_add_part(&parts[curr_part++], "nvram_guess",
++				     master->size - blocksize * 2, MTD_WRITEABLE);
++		for (i = 0; i < curr_part; i++) {
++			if (parts[i].size + parts[i].offset == master->size)
++				parts[i].offset -= blocksize * 2;
++		}
++	}
++
+ 	/*
+ 	 * Assume that partitions end at the beginning of the one they are
+ 	 * followed by.
-- 
cgit v1.1