From d775e4ef00e08c839a41e101552be171ff638d3d Mon Sep 17 00:00:00 2001 From: Imre Kaloz Date: Tue, 17 Jun 2014 15:13:10 +0000 Subject: preliminary support for the WRT1900AC (work in progress) SVN-Revision: 41232 --- .../patches-3.14/009-add_of_mtd_ecc_helpers.patch | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 target/linux/mvebu/patches-3.14/009-add_of_mtd_ecc_helpers.patch (limited to 'target/linux/mvebu/patches-3.14/009-add_of_mtd_ecc_helpers.patch') diff --git a/target/linux/mvebu/patches-3.14/009-add_of_mtd_ecc_helpers.patch b/target/linux/mvebu/patches-3.14/009-add_of_mtd_ecc_helpers.patch new file mode 100644 index 0000000000..d48885f8e3 --- /dev/null +++ b/target/linux/mvebu/patches-3.14/009-add_of_mtd_ecc_helpers.patch @@ -0,0 +1,84 @@ +From 6d9434ebb76157071164b32ad03fbed165c74382 Mon Sep 17 00:00:00 2001 +From: Ezequiel Garcia +Date: Mon, 24 Feb 2014 19:24:48 -0300 +Subject: of_mtd: Add helpers to get ECC strength and ECC step size + +This commit adds simple helpers to obtain the devicetree properties +that specify the ECC strength and ECC step size to use on a given +NAND controller. + +Acked-by: Boris BREZILLON +Signed-off-by: Ezequiel Garcia +Signed-off-by: Brian Norris + +--- a/drivers/of/of_mtd.c ++++ b/drivers/of/of_mtd.c +@@ -50,6 +50,40 @@ int of_get_nand_ecc_mode(struct device_n + EXPORT_SYMBOL_GPL(of_get_nand_ecc_mode); + + /** ++ * of_get_nand_ecc_step_size - Get ECC step size associated to ++ * the required ECC strength (see below). ++ * @np: Pointer to the given device_node ++ * ++ * return the ECC step size, or errno in error case. ++ */ ++int of_get_nand_ecc_step_size(struct device_node *np) ++{ ++ int ret; ++ u32 val; ++ ++ ret = of_property_read_u32(np, "nand-ecc-step-size", &val); ++ return ret ? ret : val; ++} ++EXPORT_SYMBOL_GPL(of_get_nand_ecc_step_size); ++ ++/** ++ * of_get_nand_ecc_strength - Get required ECC strength over the ++ * correspnding step size as defined by 'nand-ecc-size' ++ * @np: Pointer to the given device_node ++ * ++ * return the ECC strength, or errno in error case. ++ */ ++int of_get_nand_ecc_strength(struct device_node *np) ++{ ++ int ret; ++ u32 val; ++ ++ ret = of_property_read_u32(np, "nand-ecc-strength", &val); ++ return ret ? ret : val; ++} ++EXPORT_SYMBOL_GPL(of_get_nand_ecc_strength); ++ ++/** + * of_get_nand_bus_width - Get nand bus witdh for given device_node + * @np: Pointer to the given device_node + * +--- a/include/linux/of_mtd.h ++++ b/include/linux/of_mtd.h +@@ -13,6 +13,8 @@ + + #include + int of_get_nand_ecc_mode(struct device_node *np); ++int of_get_nand_ecc_step_size(struct device_node *np); ++int of_get_nand_ecc_strength(struct device_node *np); + int of_get_nand_bus_width(struct device_node *np); + bool of_get_nand_on_flash_bbt(struct device_node *np); + +@@ -22,6 +24,16 @@ static inline int of_get_nand_ecc_mode(s + { + return -ENOSYS; + } ++ ++static inline int of_get_nand_ecc_step_size(struct device_node *np) ++{ ++ return -ENOSYS; ++} ++ ++static inline int of_get_nand_ecc_strength(struct device_node *np) ++{ ++ return -ENOSYS; ++} + + static inline int of_get_nand_bus_width(struct device_node *np) + { -- cgit v1.2.3