nvmem: rockchip-efuse: parse 'rockchip,efuse-size'
authorFinley Xiao <finley.xiao@rock-chips.com>
Fri, 15 Dec 2017 14:06:08 +0000 (14:06 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Dec 2017 09:39:33 +0000 (10:39 +0100)
The eFuse size is defined in property <reg> before, but the length
of registers is not equal to the size on some platforms, so we
add a new property to redefine it.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
drivers/nvmem/rockchip-efuse.c

index 60bec47..a6ef46d 100644 (file)
@@ -12,6 +12,10 @@ Required properties:
 - clocks: Should be the clock id of eFuse
 - clock-names: Should be "pclk_efuse"
 
+Optional properties:
+- rockchip,efuse-size: Should be exact eFuse size in byte, the eFuse
+  size in property <reg> will be invalid if define this property.
+
 Deprecated properties:
 - compatible: "rockchip,rockchip-efuse"
   Old efuse compatible value compatible to rk3066a, rk3188 and rk3288
index 123de77..a913728 100644 (file)
@@ -217,7 +217,9 @@ static int rockchip_efuse_probe(struct platform_device *pdev)
                return PTR_ERR(efuse->clk);
 
        efuse->dev = &pdev->dev;
-       econfig.size = resource_size(res);
+       if (of_property_read_u32(dev->of_node, "rockchip,efuse-size",
+                                &econfig.size))
+               econfig.size = resource_size(res);
        econfig.reg_read = match->data;
        econfig.priv = efuse;
        econfig.dev = efuse->dev;