[03/14] drm/ast: Implement register helpers in ast_drv.h

Sui Jingfeng suijingfeng at loongson.cn
Sat Jun 17 06:54:27 UTC 2023


On 2023/6/16 21:52, Thomas Zimmermann wrote:
> There are already a number of register I/O functions in ast_drv.h.
> For consistency, move the remaining functions there as well. No
> functional changes.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
Reviewed-by: Sui Jingfeng <suijingfeng at loongson.cn>
> ---
>   drivers/gpu/drm/ast/ast_drv.h  | 34 ++++++++++++++++++++++++----------
>   drivers/gpu/drm/ast/ast_main.c | 28 ----------------------------
>   2 files changed, 24 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
> index fc4760a67596f..0141705beaee9 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -257,22 +257,36 @@ static inline void ast_io_write8(struct ast_device *ast, u32 reg, u8 val)
>   	iowrite8(val, ast->ioregs + reg);
>   }
>   
> -static inline void ast_set_index_reg(struct ast_device *ast,
> -				     uint32_t base, uint8_t index,
> -				     uint8_t val)
> +static inline u8 ast_get_index_reg(struct ast_device *ast, u32 base, u8 index)
> +{
> +	ast_io_write8(ast, base, index);
> +	++base;
> +	return ast_io_read8(ast, base);
> +}
> +
> +static inline u8 ast_get_index_reg_mask(struct ast_device *ast, u32 base, u8 index,
> +					u8 preserve_mask)
> +{
> +	u8 val = ast_get_index_reg(ast, base, index);
> +
> +	return val & preserve_mask;
> +}
> +
> +static inline void ast_set_index_reg(struct ast_device *ast, u32 base, u8 index, u8 val)
>   {
>   	ast_io_write8(ast, base, index);
>   	++base;
>   	ast_io_write8(ast, base, val);
>   }
>   
> -void ast_set_index_reg_mask(struct ast_device *ast,
> -			    uint32_t base, uint8_t index,
> -			    uint8_t mask, uint8_t val);
> -uint8_t ast_get_index_reg(struct ast_device *ast,
> -			  uint32_t base, uint8_t index);
> -uint8_t ast_get_index_reg_mask(struct ast_device *ast,
> -			       uint32_t base, uint8_t index, uint8_t mask);
> +static inline void ast_set_index_reg_mask(struct ast_device *ast, u32 base, u8 index,
> +					  u8 preserve_mask, u8 val)
> +{
> +	u8 tmp = ast_get_index_reg_mask(ast, base, index, preserve_mask);
> +
> +	tmp |= val;
> +	ast_set_index_reg(ast, base, index, tmp);
> +}
>   
>   static inline void ast_open_key(struct ast_device *ast)
>   {
> diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
> index da33cfc6366ec..862fdf02f6100 100644
> --- a/drivers/gpu/drm/ast/ast_main.c
> +++ b/drivers/gpu/drm/ast/ast_main.c
> @@ -35,34 +35,6 @@
>   
>   #include "ast_drv.h"
>   
> -void ast_set_index_reg_mask(struct ast_device *ast,
> -			    uint32_t base, uint8_t index,
> -			    uint8_t mask, uint8_t val)
> -{
> -	u8 tmp;
> -	ast_io_write8(ast, base, index);
> -	tmp = (ast_io_read8(ast, base + 1) & mask) | val;
> -	ast_set_index_reg(ast, base, index, tmp);
> -}
> -
> -uint8_t ast_get_index_reg(struct ast_device *ast,
> -			  uint32_t base, uint8_t index)
> -{
> -	uint8_t ret;
> -	ast_io_write8(ast, base, index);
> -	ret = ast_io_read8(ast, base + 1);
> -	return ret;
> -}
> -
> -uint8_t ast_get_index_reg_mask(struct ast_device *ast,
> -			       uint32_t base, uint8_t index, uint8_t mask)
> -{
> -	uint8_t ret;
> -	ast_io_write8(ast, base, index);
> -	ret = ast_io_read8(ast, base + 1) & mask;
> -	return ret;
> -}
> -
>   static void ast_detect_config_mode(struct drm_device *dev, u32 *scu_rev)
>   {
>   	struct device_node *np = dev->dev->of_node;

-- 
Jingfeng



More information about the dri-devel mailing list