]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mtd: rawnand: brcmnand: Support write protection setting from dts
authorWilliam Zhang <william.zhang@broadcom.com>
Mon, 16 Sep 2024 09:58:48 +0000 (11:58 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 5 Oct 2024 17:19:24 +0000 (11:19 -0600)
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>
Reviewed-by: William Zhang <william.zhang@broadcom.com>
drivers/mtd/nand/raw/brcmnand/brcmnand.c

index 2f786584a1ae96f2f40edade86ba051b2079f823..071b3395164833b783abad2027ab09eb8e4efabe 100644 (file)
@@ -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 */