Message ID | 20240916-brcmnand-fixes-v2-6-08632f64c8ec@linaro.org |
---|---|
State | New |
Headers | show |
Series | mtd: nand: brcmnand: Backported fixes from Linux | expand |
> -----Original Message----- > From: Linus Walleij <linus.walleij@linaro.org> > Sent: Monday, September 16, 2024 2:59 AM > To: u-boot@lists.denx.de; Dario Binacchi > <dario.binacchi@amarulasolutions.com>; Michael Trimarchi > <michael@amarulasolutions.com>; Anand Gore > <anand.gore@broadcom.com>; William Zhang > <william.zhang@broadcom.com>; Kursad Oney > <kursad.oney@broadcom.com>; Philippe Reynes > <philippe.reynes@softathome.com> > Cc: Linus Walleij <linus.walleij@linaro.org>; Florian Fainelli > <florian.fainelli@broadcom.com>; Kamal Dasu > <kamal.dasu@broadcom.com>; David Regan <dregan@broadcom.com>; > Miquel Raynal <miquel.raynal@bootlin.com> > Subject: [PATCH v2 6/7] mtd: rawnand: brcmnand: Support write > protection setting from dts > > From: William Zhang <william.zhang@broadcom.com> > > Backport of upstream Linux > commit 8e7daa85641c9559c113f6b217bdc923397de77c > "mtd: rawnand: brcmnand: Support write protection setting from dts" > > Augmented to also support the "write-protect" boolean property. > > The write protection feature is controlled by the module parameter wp_on > with default set to enabled. But not all the board use this feature > especially in BCMBCA broadband board. And module parameter is not > sufficient as different board can have different option. Add a device > tree property and allow this feature to be configured through the board > dts on per board basis. > > Signed-off-by: William Zhang <william.zhang@broadcom.com> > Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> > Reviewed-by: Kamal Dasu <kamal.dasu@broadcom.com> > Reviewed-by: David Regan <dregan@broadcom.com> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > Link: https://lore.kernel.org/linux-mtd/20240223034758.13753-14- > william.zhang@broadcom.com > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> > --- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > index 2f786584a1ae..071b33951648 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > @@ -2844,8 +2844,17 @@ int brcmnand_probe(struct udevice *dev, > struct brcmnand_soc *soc) > /* Disable XOR addressing */ > brcmnand_rmw_reg(ctrl, BRCMNAND_CS_XOR, 0xff, 0, 0); > > + /* Check if the board connects the WP pin */ > +#ifndef __UBOOT__ > + if (of_property_read_bool(dn, "brcm,wp-not-connected")) > +#else > + if (dev_read_bool(ctrl->dev, "brcm,wp-not-connected")) > +#endif /* __UBOOT__ */ > + wp_on = 0; > + > /* Read the write-protect configuration in the device tree */ > - wp_on = dev_read_u32_default(dev, "write-protect", wp_on); > + if (dev_read_bool(ctrl->dev, "write-protect")) write-protect is a u32 property. Should use dev_read_u32 and check return code to see if the property exist or not. > + wp_on = dev_read_u32_default(dev, "write-protect", wp_on); > > if (ctrl->features & BRCMNAND_HAS_WP) { > /* Permanently disable write protection */ > > -- > 2.46.0 Reviewed-by: William Zhang <william.zhang@broadcom.com>
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index 2f786584a1ae..071b33951648 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -2844,8 +2844,17 @@ int brcmnand_probe(struct udevice *dev, struct brcmnand_soc *soc) /* Disable XOR addressing */ brcmnand_rmw_reg(ctrl, BRCMNAND_CS_XOR, 0xff, 0, 0); + /* Check if the board connects the WP pin */ +#ifndef __UBOOT__ + if (of_property_read_bool(dn, "brcm,wp-not-connected")) +#else + if (dev_read_bool(ctrl->dev, "brcm,wp-not-connected")) +#endif /* __UBOOT__ */ + wp_on = 0; + /* Read the write-protect configuration in the device tree */ - wp_on = dev_read_u32_default(dev, "write-protect", wp_on); + if (dev_read_bool(ctrl->dev, "write-protect")) + wp_on = dev_read_u32_default(dev, "write-protect", wp_on); if (ctrl->features & BRCMNAND_HAS_WP) { /* Permanently disable write protection */