[U-Boot] [PATCH 4/5] dm: regmap: Fix mask in regmap_update_bits()
Jean-Jacques Hiblot
jjhiblot at ti.com
Fri Oct 25 09:40:51 UTC 2019
On 12/10/2019 00:16, Simon Glass wrote:
> This function assumes that the 'val' parameter has no masked bits set.
> This is not defined by the function prototype though. Fix the function to
> mask the value and update the documentation.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> drivers/core/regmap.c | 2 +-
> include/regmap.h | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c
> index d1d12eef385..e9e55c9d165 100644
> --- a/drivers/core/regmap.c
> +++ b/drivers/core/regmap.c
> @@ -462,5 +462,5 @@ int regmap_update_bits(struct regmap *map, uint offset, uint mask, uint val)
>
> reg &= ~mask;
>
> - return regmap_write(map, offset, reg | val);
> + return regmap_write(map, offset, reg | (val & mask));
> }
> diff --git a/include/regmap.h b/include/regmap.h
> index 0854200a9c1..9ada1af5ef0 100644
> --- a/include/regmap.h
> +++ b/include/regmap.h
> @@ -295,7 +295,8 @@ int regmap_raw_read_range(struct regmap *map, uint range_num, uint offset,
> * @map: The map returned by regmap_init_mem*()
> * @offset: Offset of the memory
> * @mask: Mask to apply to the read value
> - * @val: Value to apply to the value to write
> + * @val: Value to OR with the read value after masking. Note that any
> + * bits set in @val which are not set in @mask are ignored
> * Return: 0 if OK, -ve on error
> */
> int regmap_update_bits(struct regmap *map, uint offset, uint mask, uint val);
Reviewed-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
More information about the U-Boot
mailing list