kernel: bcm47xxpart: support T_Meter partitions
authorRafał Miłecki <zajec5@gmail.com>
Wed, 28 Jan 2015 21:26:31 +0000 (21:26 +0000)
committerRafał Miłecki <zajec5@gmail.com>
Wed, 28 Jan 2015 21:26:31 +0000 (21:26 +0000)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 44185

target/linux/generic/patches-3.14/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch [new file with mode: 0644]
target/linux/generic/patches-3.18/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch [new file with mode: 0644]

diff --git a/target/linux/generic/patches-3.14/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch b/target/linux/generic/patches-3.14/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch
new file mode 100644 (file)
index 0000000..3f70225
--- /dev/null
@@ -0,0 +1,47 @@
+From fd54aa583296f9adfb1f519affbc10ba521eb809 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+Date: Wed, 28 Jan 2015 22:14:41 +0100
+Subject: [PATCH] mtd: bcm47xxpart: detect T_Meter partition
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It can be found on many Netgear devices. It consists of many 0x30 blocks
+starting with 4D 54.
+
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+---
+ drivers/mtd/bcm47xxpart.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/mtd/bcm47xxpart.c b/drivers/mtd/bcm47xxpart.c
+index f14ec0f..40dd0db 100644
+--- a/drivers/mtd/bcm47xxpart.c
++++ b/drivers/mtd/bcm47xxpart.c
+@@ -39,6 +39,7 @@
+ #define NVRAM_HEADER                  0x48534C46      /* FLSH */
+ #define POT_MAGIC1                    0x54544f50      /* POTT */
+ #define POT_MAGIC2                    0x504f          /* OP */
++#define T_METER_MAGIC                 0x4D540000      /* MT */
+ #define ML_MAGIC1                     0x39685a42
+ #define ML_MAGIC2                     0x26594131
+ #define TRX_MAGIC                     0x30524448
+@@ -177,6 +178,15 @@ static int bcm47xxpart_parse(struct mtd_info *master,
+                       continue;
+               }
++              /* T_Meter */
++              if ((le32_to_cpu(buf[0x000 / 4]) & 0xFFFF0000) == T_METER_MAGIC &&
++                  (le32_to_cpu(buf[0x030 / 4]) & 0xFFFF0000) == T_METER_MAGIC &&
++                  (le32_to_cpu(buf[0x060 / 4]) & 0xFFFF0000) == T_METER_MAGIC) {
++                      bcm47xxpart_add_part(&parts[curr_part++], "T_Meter", offset,
++                                           MTD_WRITEABLE);
++                      continue;
++              }
++
+               /* TRX */
+               if (buf[0x000 / 4] == TRX_MAGIC) {
+                       if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
+-- 
+1.8.4.5
+
diff --git a/target/linux/generic/patches-3.18/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch b/target/linux/generic/patches-3.18/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch
new file mode 100644 (file)
index 0000000..3f70225
--- /dev/null
@@ -0,0 +1,47 @@
+From fd54aa583296f9adfb1f519affbc10ba521eb809 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+Date: Wed, 28 Jan 2015 22:14:41 +0100
+Subject: [PATCH] mtd: bcm47xxpart: detect T_Meter partition
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It can be found on many Netgear devices. It consists of many 0x30 blocks
+starting with 4D 54.
+
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+---
+ drivers/mtd/bcm47xxpart.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/mtd/bcm47xxpart.c b/drivers/mtd/bcm47xxpart.c
+index f14ec0f..40dd0db 100644
+--- a/drivers/mtd/bcm47xxpart.c
++++ b/drivers/mtd/bcm47xxpart.c
+@@ -39,6 +39,7 @@
+ #define NVRAM_HEADER                  0x48534C46      /* FLSH */
+ #define POT_MAGIC1                    0x54544f50      /* POTT */
+ #define POT_MAGIC2                    0x504f          /* OP */
++#define T_METER_MAGIC                 0x4D540000      /* MT */
+ #define ML_MAGIC1                     0x39685a42
+ #define ML_MAGIC2                     0x26594131
+ #define TRX_MAGIC                     0x30524448
+@@ -177,6 +178,15 @@ static int bcm47xxpart_parse(struct mtd_info *master,
+                       continue;
+               }
++              /* T_Meter */
++              if ((le32_to_cpu(buf[0x000 / 4]) & 0xFFFF0000) == T_METER_MAGIC &&
++                  (le32_to_cpu(buf[0x030 / 4]) & 0xFFFF0000) == T_METER_MAGIC &&
++                  (le32_to_cpu(buf[0x060 / 4]) & 0xFFFF0000) == T_METER_MAGIC) {
++                      bcm47xxpart_add_part(&parts[curr_part++], "T_Meter", offset,
++                                           MTD_WRITEABLE);
++                      continue;
++              }
++
+               /* TRX */
+               if (buf[0x000 / 4] == TRX_MAGIC) {
+                       if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
+-- 
+1.8.4.5
+