Author: luka
Date: 2015-11-10 01:16:33 +0100 (Tue, 10 Nov 2015)
New Revision: 47431

Added:
   trunk/target/linux/kirkwood/patches-3.18/100-find_active_root.patch
   trunk/target/linux/kirkwood/patches-4.3/100-find_active_root.patch
Modified:
   trunk/target/linux/kirkwood/config-3.18
   trunk/target/linux/kirkwood/config-4.3
Log:
kirkwood: find active Linksys root partition

This is imported verbatim from the mvebu WRT1900AC port.

It picks up the current boot partition from the kernel command line,
then renames that partition "ubi" so that it auto-mounts.

Signed-off-by: Claudio Leite <[email protected]>

Modified: trunk/target/linux/kirkwood/config-3.18
===================================================================
--- trunk/target/linux/kirkwood/config-3.18     2015-11-10 00:16:28 UTC (rev 
47430)
+++ trunk/target/linux/kirkwood/config-3.18     2015-11-10 00:16:33 UTC (rev 
47431)
@@ -189,6 +189,7 @@
 CONFIG_MACH_KIRKWOOD=y
 CONFIG_MACH_MVEBU_ANY=y
 # CONFIG_MACH_NETXBIG is not set
+CONFIG_MANGLE_BOOTARGS=y
 CONFIG_MDIO_BOARDINFO=y
 CONFIG_MIGHT_HAVE_PCI=y
 CONFIG_MMC=y

Modified: trunk/target/linux/kirkwood/config-4.3
===================================================================
--- trunk/target/linux/kirkwood/config-4.3      2015-11-10 00:16:28 UTC (rev 
47430)
+++ trunk/target/linux/kirkwood/config-4.3      2015-11-10 00:16:33 UTC (rev 
47431)
@@ -197,6 +197,7 @@
 CONFIG_MACH_KIRKWOOD=y
 CONFIG_MACH_MVEBU_ANY=y
 # CONFIG_MACH_NETXBIG is not set
+CONFIG_MANGLE_BOOTARGS=y
 CONFIG_MDIO_BOARDINFO=y
 CONFIG_MIGHT_HAVE_PCI=y
 CONFIG_MMC=y

Copied: trunk/target/linux/kirkwood/patches-3.18/100-find_active_root.patch 
(from rev 47430, 
trunk/target/linux/mvebu/patches-4.0/100-find_active_root.patch)
===================================================================
--- trunk/target/linux/kirkwood/patches-3.18/100-find_active_root.patch         
                (rev 0)
+++ trunk/target/linux/kirkwood/patches-3.18/100-find_active_root.patch 
2015-11-10 00:16:33 UTC (rev 47431)
@@ -0,0 +1,61 @@
+The WRT1900AC among other Linksys routers uses a dual-firmware layout.
+Dynamically rename the active partition to "ubi".
+
+Signed-off-by: Imre Kaloz <[email protected]>
+
+--- a/drivers/mtd/ofpart.c
++++ b/drivers/mtd/ofpart.c
+@@ -25,12 +25,15 @@ static bool node_has_compatible(struct d
+       return of_get_property(pp, "compatible", NULL);
+ }
+ 
++static int mangled_rootblock;
++
+ static int parse_ofpart_partitions(struct mtd_info *master,
+                                  struct mtd_partition **pparts,
+                                  struct mtd_part_parser_data *data)
+ {
+       struct device_node *node;
+       const char *partname;
++      const char *owrtpart = "ubi";
+       struct device_node *pp;
+       int nr_parts, i;
+ 
+@@ -78,9 +81,15 @@ static int parse_ofpart_partitions(struc
+               (*pparts)[i].offset = of_read_number(reg, a_cells);
+               (*pparts)[i].size = of_read_number(reg + a_cells, s_cells);
+ 
+-              partname = of_get_property(pp, "label", &len);
+-              if (!partname)
+-                      partname = of_get_property(pp, "name", &len);
++              if (mangled_rootblock && (i == mangled_rootblock)) {
++                              partname = owrtpart;
++              } else {
++                      partname = of_get_property(pp, "label", &len);
++
++                      if (!partname)
++                              partname = of_get_property(pp, "name", &len);
++              }
++
+               (*pparts)[i].name = partname;
+ 
+               if (of_get_property(pp, "read-only", &len))
+@@ -178,6 +187,18 @@ static int __init ofpart_parser_init(voi
+       return 0;
+ }
+ 
++static int __init active_root(char *str)
++{
++      get_option(&str, &mangled_rootblock);
++
++      if (!mangled_rootblock)
++              return 1;
++
++      return 1;
++}
++
++__setup("mangled_rootblock=", active_root);
++
+ static void __exit ofpart_parser_exit(void)
+ {
+       deregister_mtd_parser(&ofpart_parser);

Copied: trunk/target/linux/kirkwood/patches-4.3/100-find_active_root.patch 
(from rev 47430, 
trunk/target/linux/mvebu/patches-4.0/100-find_active_root.patch)
===================================================================
--- trunk/target/linux/kirkwood/patches-4.3/100-find_active_root.patch          
                (rev 0)
+++ trunk/target/linux/kirkwood/patches-4.3/100-find_active_root.patch  
2015-11-10 00:16:33 UTC (rev 47431)
@@ -0,0 +1,61 @@
+The WRT1900AC among other Linksys routers uses a dual-firmware layout.
+Dynamically rename the active partition to "ubi".
+
+Signed-off-by: Imre Kaloz <[email protected]>
+
+--- a/drivers/mtd/ofpart.c
++++ b/drivers/mtd/ofpart.c
+@@ -25,12 +25,15 @@ static bool node_has_compatible(struct d
+       return of_get_property(pp, "compatible", NULL);
+ }
+ 
++static int mangled_rootblock;
++
+ static int parse_ofpart_partitions(struct mtd_info *master,
+                                  struct mtd_partition **pparts,
+                                  struct mtd_part_parser_data *data)
+ {
+       struct device_node *node;
+       const char *partname;
++      const char *owrtpart = "ubi";
+       struct device_node *pp;
+       int nr_parts, i;
+ 
+@@ -78,9 +81,15 @@ static int parse_ofpart_partitions(struc
+               (*pparts)[i].offset = of_read_number(reg, a_cells);
+               (*pparts)[i].size = of_read_number(reg + a_cells, s_cells);
+ 
+-              partname = of_get_property(pp, "label", &len);
+-              if (!partname)
+-                      partname = of_get_property(pp, "name", &len);
++              if (mangled_rootblock && (i == mangled_rootblock)) {
++                              partname = owrtpart;
++              } else {
++                      partname = of_get_property(pp, "label", &len);
++
++                      if (!partname)
++                              partname = of_get_property(pp, "name", &len);
++              }
++
+               (*pparts)[i].name = partname;
+ 
+               if (of_get_property(pp, "read-only", &len))
+@@ -178,6 +187,18 @@ static int __init ofpart_parser_init(voi
+       return 0;
+ }
+ 
++static int __init active_root(char *str)
++{
++      get_option(&str, &mangled_rootblock);
++
++      if (!mangled_rootblock)
++              return 1;
++
++      return 1;
++}
++
++__setup("mangled_rootblock=", active_root);
++
+ static void __exit ofpart_parser_exit(void)
+ {
+       deregister_mtd_parser(&ofpart_parser);
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to