Message ID | 1386264358-9738-8-git-send-email-ivan.khoronzhuk@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Dec 05, 2013 at 07:25:55PM +0200, Ivan Khoronzhuk wrote: > --- a/drivers/mtd/nand/davinci_nand.c > +++ b/drivers/mtd/nand/davinci_nand.c > @@ -558,6 +557,8 @@ static struct davinci_nand_pdata > "ti,davinci-mask-chipsel", &prop)) > pdata->mask_chipsel = prop; > if (!of_property_read_string(pdev->dev.of_node, > + "nand-ecc-mode", &mode) || Is it possible to use the of_get_nand_ecc_mode() helper? It's unfortunate that davinci_nand had to use custom bindings in the first place, making this more difficult... So I can take this patch as-is. > + !of_property_read_string(pdev->dev.of_node, > "ti,davinci-ecc-mode", &mode)) { > if (!strncmp("none", mode, 4)) > pdata->ecc_mode = NAND_ECC_NONE; > @@ -570,11 +571,15 @@ static struct davinci_nand_pdata > "ti,davinci-ecc-bits", &prop)) > pdata->ecc_bits = prop; > if (!of_property_read_u32(pdev->dev.of_node, > + "nand-bus-width", &prop) || Similar story here, with of_get_nand_bus_width(). > + !of_property_read_u32(pdev->dev.of_node, > "ti,davinci-nand-buswidth", &prop)) > if (prop == 16) > pdata->options |= NAND_BUSWIDTH_16; > - if (of_find_property(pdev->dev.of_node, > - "ti,davinci-nand-use-bbt", &len)) > + if (of_property_read_bool(pdev->dev.of_node, > + "nand-on-flash-bbt") || > + of_property_read_bool(pdev->dev.of_node, > + "ti,davinci-nand-use-bbt")) > pdata->bbt_options = NAND_BBT_USE_FLASH; > } > Brian
On 12/17/2013 10:50 AM, Brian Norris wrote: > On Thu, Dec 05, 2013 at 07:25:55PM +0200, Ivan Khoronzhuk wrote: >> --- a/drivers/mtd/nand/davinci_nand.c >> +++ b/drivers/mtd/nand/davinci_nand.c >> @@ -558,6 +557,8 @@ static struct davinci_nand_pdata >> "ti,davinci-mask-chipsel", &prop)) >> pdata->mask_chipsel = prop; >> if (!of_property_read_string(pdev->dev.of_node, >> + "nand-ecc-mode", &mode) || > > Is it possible to use the of_get_nand_ecc_mode() helper? It's > unfortunate that davinci_nand had to use custom bindings in the first > place, making this more difficult... So I can take this patch as-is. > Yes, I will do nothing for that >> + !of_property_read_string(pdev->dev.of_node, >> "ti,davinci-ecc-mode", &mode)) { >> if (!strncmp("none", mode, 4)) >> pdata->ecc_mode = NAND_ECC_NONE; >> @@ -570,11 +571,15 @@ static struct davinci_nand_pdata >> "ti,davinci-ecc-bits", &prop)) >> pdata->ecc_bits = prop; >> if (!of_property_read_u32(pdev->dev.of_node, >> + "nand-bus-width", &prop) || > > Similar story here, with of_get_nand_bus_width(). > It seems for bus width I can replace it on: prop = of_get_nand_bus_width(pdev->dev.of_node); if ( 0 < prop || !of_property_read_u32(pdev->dev.of_node, "ti,davinci-nand-buswidth", &prop)) if (prop == 16) pdata->options |= NAND_BUSWIDTH_16; >> + !of_property_read_u32(pdev->dev.of_node, >> "ti,davinci-nand-buswidth", &prop)) >> if (prop == 16) >> pdata->options |= NAND_BUSWIDTH_16; >> - if (of_find_property(pdev->dev.of_node, >> - "ti,davinci-nand-use-bbt", &len)) >> + if (of_property_read_bool(pdev->dev.of_node, >> + "nand-on-flash-bbt") || >> + of_property_read_bool(pdev->dev.of_node, >> + "ti,davinci-nand-use-bbt")) >> pdata->bbt_options = NAND_BBT_USE_FLASH; >> } >> > > Brian >
diff --git a/Documentation/devicetree/bindings/mtd/davinci-nand.txt b/Documentation/devicetree/bindings/mtd/davinci-nand.txt index d2a3fc0..befaa5b 100644 --- a/Documentation/devicetree/bindings/mtd/davinci-nand.txt +++ b/Documentation/devicetree/bindings/mtd/davinci-nand.txt @@ -37,7 +37,7 @@ Recommended properties : - ti,davinci-mask-chipsel: mask for chipselect address. Needed to mask addresses for given chipselect. -- ti,davinci-ecc-mode: operation mode of the NAND ecc mode. ECC mode +- nand-ecc-mode: operation mode of the NAND ecc mode. ECC mode valid values for davinci driver: - "none" - "soft" @@ -45,10 +45,25 @@ Recommended properties : - ti,davinci-ecc-bits: used ECC bits, currently supported 1 or 4. -- ti,davinci-nand-buswidth: buswidth 8 or 16. +- nand-bus-width: buswidth 8 or 16. If not present 8. + +- nand-on-flash-bbt: use flash based bad block table support. OOB + identifier is saved in OOB area. If not present + false. + +Deprecated properties: + +- ti,davinci-ecc-mode: operation mode of the NAND ecc mode. ECC mode + valid values for davinci driver: + - "none" + - "soft" + - "hw" + +- ti,davinci-nand-buswidth: buswidth 8 or 16. If not present 8. - ti,davinci-nand-use-bbt: use flash based bad block table support. OOB - identifier is saved in OOB area. + identifier is saved in OOB area. If not present + false. Nand device bindings may contain additional sub-nodes describing partitions of the address space. See partition.txt for more detail. The NAND Flash timing @@ -66,9 +81,9 @@ nand_cs3@62000000 { ti,davinci-mask-ale = <0>; ti,davinci-mask-cle = <0>; ti,davinci-mask-chipsel = <0>; - ti,davinci-ecc-mode = "hw"; + nand-ecc-mode = "hw"; ti,davinci-ecc-bits = <4>; - ti,davinci-nand-use-bbt; + nand-on-flash-bbt; partition@180000 { label = "ubifs"; diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c index c0be223..f7b21b8 100644 --- a/drivers/mtd/nand/davinci_nand.c +++ b/drivers/mtd/nand/davinci_nand.c @@ -534,7 +534,6 @@ static struct davinci_nand_pdata struct davinci_nand_pdata *pdata; const char *mode; u32 prop; - int len; pdata = devm_kzalloc(&pdev->dev, sizeof(struct davinci_nand_pdata), @@ -558,6 +557,8 @@ static struct davinci_nand_pdata "ti,davinci-mask-chipsel", &prop)) pdata->mask_chipsel = prop; if (!of_property_read_string(pdev->dev.of_node, + "nand-ecc-mode", &mode) || + !of_property_read_string(pdev->dev.of_node, "ti,davinci-ecc-mode", &mode)) { if (!strncmp("none", mode, 4)) pdata->ecc_mode = NAND_ECC_NONE; @@ -570,11 +571,15 @@ static struct davinci_nand_pdata "ti,davinci-ecc-bits", &prop)) pdata->ecc_bits = prop; if (!of_property_read_u32(pdev->dev.of_node, + "nand-bus-width", &prop) || + !of_property_read_u32(pdev->dev.of_node, "ti,davinci-nand-buswidth", &prop)) if (prop == 16) pdata->options |= NAND_BUSWIDTH_16; - if (of_find_property(pdev->dev.of_node, - "ti,davinci-nand-use-bbt", &len)) + if (of_property_read_bool(pdev->dev.of_node, + "nand-on-flash-bbt") || + of_property_read_bool(pdev->dev.of_node, + "ti,davinci-nand-use-bbt")) pdata->bbt_options = NAND_BBT_USE_FLASH; }