Message ID | 1431877266-28566-7-git-send-email-hauke@hauke-m.de |
---|---|
State | Rejected |
Headers | show |
Hi Hauke, On Sun, May 17, 2015 at 5:41 PM, Hauke Mehrtens <hauke@hauke-m.de> wrote: > On the bcm53xx and bcm47xx SoC the bcm47xxpart partition parser is able > to parse the partitions automatically by reading some special header > used on these SoCs flash partition and some guessing. Without this > patch the default list is used, with this patch this partition parser > is used if the others haven't found a partition. > > Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> > --- > drivers/mtd/nand/brcmnand/brcmnand.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c > index 468a212..cc5dc1e 100644 > --- a/drivers/mtd/nand/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/brcmnand/brcmnand.c > @@ -1879,6 +1879,9 @@ static int brcmnand_setup_dev(struct brcmnand_host *host) > return 0; > } > > +static const char * const probes[] = {"cmdlinepart", "ofpart", "bcm47xxpart", > + NULL}; > + I know this is a bit more work, but how about moving the "linux,part-probe" parsing code from drivers/mtd/maps/physmap_of.c to mtd_device_parse_register? then mtd_device_parse_register could do something like if (!probes && ppdata && ppdata->of_node) probes = of_get_probes(ppdata->of_node); and you could just add a linux,part-probe = "..."; property to the dts files (It looks too easy/obvious so I guess I'm overlooking something fundamental ;P) > static int brcmnand_init_cs(struct brcmnand_host *host) > { > struct brcmnand_controller *ctrl = host->ctrl; > @@ -1956,7 +1959,7 @@ static int brcmnand_init_cs(struct brcmnand_host *host) > if (nand_scan_tail(mtd)) > return -ENXIO; > > - return mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0); > + return mtd_device_parse_register(mtd, probes, &ppdata, NULL, 0); > } Then you wouldn't need to change this at all. Regards Jonas
On 05/17/2015 06:05 PM, Jonas Gorski wrote: > Hi Hauke, > > On Sun, May 17, 2015 at 5:41 PM, Hauke Mehrtens <hauke@hauke-m.de> wrote: >> On the bcm53xx and bcm47xx SoC the bcm47xxpart partition parser is able >> to parse the partitions automatically by reading some special header >> used on these SoCs flash partition and some guessing. Without this >> patch the default list is used, with this patch this partition parser >> is used if the others haven't found a partition. >> >> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> >> --- >> drivers/mtd/nand/brcmnand/brcmnand.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c >> index 468a212..cc5dc1e 100644 >> --- a/drivers/mtd/nand/brcmnand/brcmnand.c >> +++ b/drivers/mtd/nand/brcmnand/brcmnand.c >> @@ -1879,6 +1879,9 @@ static int brcmnand_setup_dev(struct brcmnand_host *host) >> return 0; >> } >> >> +static const char * const probes[] = {"cmdlinepart", "ofpart", "bcm47xxpart", >> + NULL}; >> + > > I know this is a bit more work, but how about moving the > "linux,part-probe" parsing code from drivers/mtd/maps/physmap_of.c to > mtd_device_parse_register? > > then mtd_device_parse_register could do something like > > if (!probes && ppdata && ppdata->of_node) > probes = of_get_probes(ppdata->of_node); > > and you could just add a linux,part-probe = "..."; property to the dts files > > (It looks too easy/obvious so I guess I'm overlooking something fundamental ;P) > Yes I will try to get this done in a generic way through device tree. I was already searching for a way to provide the partition parser from device tree and was wondering why it was not there. I will send an independent patch which adds this feature and this patch from this series can be dropped. Hauke
diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c index 468a212..cc5dc1e 100644 --- a/drivers/mtd/nand/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/brcmnand/brcmnand.c @@ -1879,6 +1879,9 @@ static int brcmnand_setup_dev(struct brcmnand_host *host) return 0; } +static const char * const probes[] = {"cmdlinepart", "ofpart", "bcm47xxpart", + NULL}; + static int brcmnand_init_cs(struct brcmnand_host *host) { struct brcmnand_controller *ctrl = host->ctrl; @@ -1956,7 +1959,7 @@ static int brcmnand_init_cs(struct brcmnand_host *host) if (nand_scan_tail(mtd)) return -ENXIO; - return mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0); + return mtd_device_parse_register(mtd, probes, &ppdata, NULL, 0); } static void brcmnand_save_restore_cs_config(struct brcmnand_host *host,
On the bcm53xx and bcm47xx SoC the bcm47xxpart partition parser is able to parse the partitions automatically by reading some special header used on these SoCs flash partition and some guessing. Without this patch the default list is used, with this patch this partition parser is used if the others haven't found a partition. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> --- drivers/mtd/nand/brcmnand/brcmnand.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)