Message ID | 20211103151117.18690-2-zajec5@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [1/2] dt-bindings: mtd: brcmnand: add "no-wp" property | expand |
On 11/3/21 8:11 AM, Rafał Miłecki wrote: > From: Rafał Miłecki <rafal@milecki.pl> > > Some boards may use WP-capable controller but still have WP not > connected. This change fixes: > [ 1.175550] bcm63138_nand ff801800.nand: timeout on status poll (expected c0000040 got c00000c0) > [ 1.184524] bcm63138_nand ff801800.nand: nand #WP expected on > [ 1.285547] bcm63138_nand ff801800.nand: timeout on status poll (expected c0000040 got c00000c0) > [ 1.294516] bcm63138_nand ff801800.nand: nand #WP expected on > [ 1.395548] bcm63138_nand ff801800.nand: timeout on status poll (expected c0000040 got c00000c0) > [ 1.404517] bcm63138_nand ff801800.nand: nand #WP expected on > > Signed-off-by: Rafał Miłecki <rafal@milecki.pl> > --- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > index f75929783b94..8b6167457f0c 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > @@ -714,7 +714,8 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) > if (ctrl->nand_version >= 0x0500) > ctrl->features |= BRCMNAND_HAS_1K_SECTORS; > > - if (ctrl->nand_version >= 0x0700) > + if (ctrl->nand_version >= 0x0700 && > + !of_property_read_bool(ctrl->dev->of_node, "no-wp")) > ctrl->features |= BRCMNAND_HAS_WP; Should not this be a logical OR here or rather, should it be moved out of the check on ctrl->nand_version entirely? What revision of the NAND controller do you have on that chip? > else if (of_property_read_bool(ctrl->dev->of_node, "brcm,nand-has-wp")) > ctrl->features |= BRCMNAND_HAS_WP; >
On 2021-11-03 18:50, Florian Fainelli wrote: > On 11/3/21 8:11 AM, Rafał Miłecki wrote: >> From: Rafał Miłecki <rafal@milecki.pl> >> >> Some boards may use WP-capable controller but still have WP not >> connected. This change fixes: >> [ 1.175550] bcm63138_nand ff801800.nand: timeout on status poll >> (expected c0000040 got c00000c0) >> [ 1.184524] bcm63138_nand ff801800.nand: nand #WP expected on >> [ 1.285547] bcm63138_nand ff801800.nand: timeout on status poll >> (expected c0000040 got c00000c0) >> [ 1.294516] bcm63138_nand ff801800.nand: nand #WP expected on >> [ 1.395548] bcm63138_nand ff801800.nand: timeout on status poll >> (expected c0000040 got c00000c0) >> [ 1.404517] bcm63138_nand ff801800.nand: nand #WP expected on >> >> Signed-off-by: Rafał Miłecki <rafal@milecki.pl> >> --- >> drivers/mtd/nand/raw/brcmnand/brcmnand.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c >> b/drivers/mtd/nand/raw/brcmnand/brcmnand.c >> index f75929783b94..8b6167457f0c 100644 >> --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c >> +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c >> @@ -714,7 +714,8 @@ static int brcmnand_revision_init(struct >> brcmnand_controller *ctrl) >> if (ctrl->nand_version >= 0x0500) >> ctrl->features |= BRCMNAND_HAS_1K_SECTORS; >> >> - if (ctrl->nand_version >= 0x0700) >> + if (ctrl->nand_version >= 0x0700 && >> + !of_property_read_bool(ctrl->dev->of_node, "no-wp")) >> ctrl->features |= BRCMNAND_HAS_WP; > > Should not this be a logical OR here or rather, should it be moved out > of the check on ctrl->nand_version entirely? What revision of the NAND > controller do you have on that chip? It's NAND controller version 0x0701 (v7.1) and I think it's correct. I think we want WP enabled on rev 7.0+ unless it was explicitly disabled.
On 11/3/21 11:03 AM, Rafał Miłecki wrote: > On 2021-11-03 18:50, Florian Fainelli wrote: >> On 11/3/21 8:11 AM, Rafał Miłecki wrote: >>> From: Rafał Miłecki <rafal@milecki.pl> >>> >>> Some boards may use WP-capable controller but still have WP not >>> connected. This change fixes: >>> [ 1.175550] bcm63138_nand ff801800.nand: timeout on status poll >>> (expected c0000040 got c00000c0) >>> [ 1.184524] bcm63138_nand ff801800.nand: nand #WP expected on >>> [ 1.285547] bcm63138_nand ff801800.nand: timeout on status poll >>> (expected c0000040 got c00000c0) >>> [ 1.294516] bcm63138_nand ff801800.nand: nand #WP expected on >>> [ 1.395548] bcm63138_nand ff801800.nand: timeout on status poll >>> (expected c0000040 got c00000c0) >>> [ 1.404517] bcm63138_nand ff801800.nand: nand #WP expected on >>> >>> Signed-off-by: Rafał Miłecki <rafal@milecki.pl> >>> --- >>> drivers/mtd/nand/raw/brcmnand/brcmnand.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c >>> b/drivers/mtd/nand/raw/brcmnand/brcmnand.c >>> index f75929783b94..8b6167457f0c 100644 >>> --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c >>> +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c >>> @@ -714,7 +714,8 @@ static int brcmnand_revision_init(struct >>> brcmnand_controller *ctrl) >>> if (ctrl->nand_version >= 0x0500) >>> ctrl->features |= BRCMNAND_HAS_1K_SECTORS; >>> >>> - if (ctrl->nand_version >= 0x0700) >>> + if (ctrl->nand_version >= 0x0700 && >>> + !of_property_read_bool(ctrl->dev->of_node, "no-wp")) >>> ctrl->features |= BRCMNAND_HAS_WP; >> >> Should not this be a logical OR here or rather, should it be moved out >> of the check on ctrl->nand_version entirely? What revision of the NAND >> controller do you have on that chip? > > It's NAND controller version 0x0701 (v7.1) and I think it's correct. > > I think we want WP enabled on rev 7.0+ unless it was explicitly disabled. True, I somehow got confused about the negative logic, so maybe we need to combine the logic of all of these lines into a single one: if ((ctrl->nand_version >= 0x700 || of_property_read_bool(ctrl->dev->of_node, "brcm,nand-has-wp")) && !of_property_read_bool(ctrl->dev->of_node, "no-wp") such that it is clearer, Kamal, what do you think?
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index f75929783b94..8b6167457f0c 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -714,7 +714,8 @@ static int brcmnand_revision_init(struct brcmnand_controller *ctrl) if (ctrl->nand_version >= 0x0500) ctrl->features |= BRCMNAND_HAS_1K_SECTORS; - if (ctrl->nand_version >= 0x0700) + if (ctrl->nand_version >= 0x0700 && + !of_property_read_bool(ctrl->dev->of_node, "no-wp")) ctrl->features |= BRCMNAND_HAS_WP; else if (of_property_read_bool(ctrl->dev->of_node, "brcm,nand-has-wp")) ctrl->features |= BRCMNAND_HAS_WP;