[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