[U-Boot] [PATCH v2 07/10] dm: regmap: Implement simple regmap_read & regmap_write

Simon Glass sjg at chromium.org
Mon Aug 1 03:01:50 CEST 2016


On 27 July 2016 at 08:26, Paul Burton <paul.burton at imgtec.com> wrote:
> The regmap_read & regmap_write functions were previously declared in
> regmap.h but not implemented anywhere. The regmap implementation &
> commit message of 6f98b7504f70 ("dm: Add support for register maps
> (regmap)") indicate that only memory mapped accesses are supported for
> now, so providing simple implementations of regmap_read & regmap_write
> is trivial. The access size is presumed to be 4 bytes & endianness is
> presumed native, which are the defaults for the regmap code in Linux.
>
> Signed-off-by: Paul Burton <paul.burton at imgtec.com>
>
> ---
>
> Changes in v2:
> - New patch
>
>  drivers/core/regmap.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>

nits below

>
> diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c
> index 0299ff0..030a40a 100644
> --- a/drivers/core/regmap.c
> +++ b/drivers/core/regmap.c
> @@ -13,6 +13,8 @@
>  #include <mapmem.h>
>  #include <regmap.h>
>
> +#include <asm/io.h>
> +
>  DECLARE_GLOBAL_DATA_PTR;
>
>  static struct regmap *regmap_alloc_count(int count)
> @@ -117,3 +119,17 @@ int regmap_uninit(struct regmap *map)
>
>         return 0;
>  }
> +
> +int regmap_read(struct regmap *map, uint offset, uint *valp)
> +{
> +       uint32_t *ptr = ioremap(map->base + offset, 4);

blank line here (after decls)

> +       *valp = __raw_readl(ptr);

and here (before return)


> +       return 0;
> +}
> +
> +int regmap_write(struct regmap *map, uint offset, uint val)
> +{
> +       uint32_t *ptr = ioremap(map->base + offset, 4);

and here (after decls)

> +       __raw_writel(val, ptr);

and here (before return)

> +       return 0;
> +}
> --
> 2.9.0
>

- Simon


More information about the U-Boot mailing list