[PATCH v2 1/2] of_mtd: Add helpers to get ECC strength and ECC step size
Boris BREZILLON
b.brezillon.dev at gmail.com
Mon Feb 24 11:13:29 EST 2014
On 18/02/2014 19:51, Ezequiel Garcia wrote:
> 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.
>
> Signed-off-by: Ezequiel Garcia <ezequiel.garcia at free-electrons.com>
> ---
> drivers/of/of_mtd.c | 34 ++++++++++++++++++++++++++++++++++
> include/linux/of_mtd.h | 12 ++++++++++++
> 2 files changed, 46 insertions(+)
>
> diff --git a/drivers/of/of_mtd.c b/drivers/of/of_mtd.c
> index a27ec94..b7361ed 100644
> --- a/drivers/of/of_mtd.c
> +++ b/drivers/of/of_mtd.c
> @@ -50,6 +50,40 @@ int of_get_nand_ecc_mode(struct device_node *np)
> 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
> *
> diff --git a/include/linux/of_mtd.h b/include/linux/of_mtd.h
> index cb32d9c..c078f99 100644
> --- a/include/linux/of_mtd.h
> +++ b/include/linux/of_mtd.h
> @@ -13,6 +13,8 @@
>
> #include <linux/of.h>
> 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)
You forgot the semicolon.
> int of_get_nand_bus_width(struct device_node *np);
> bool of_get_nand_on_flash_bbt(struct device_node *np);
>
> @@ -23,6 +25,16 @@ static inline int of_get_nand_ecc_mode(struct device_node *np)
> 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)
> {
> return -ENOSYS;
More information about the linux-mtd
mailing list