Am Mittwoch, 12. Februar 2025, 10:34:59 MEZ schrieb Andy Yan:
> From: Andy Yan <andy....@rock-chips.com>
> 
> Now these two function share the same logic, the can
> be merged as one.
> 
> Signed-off-by: Andy Yan <andy....@rock-chips.com>
> ---
> 
> (no changes since v1)
> 
>  drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 42 +++++---------------
>  1 file changed, 11 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 
> b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
> index a0d961cb5d21..844df4001159 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
> @@ -2424,18 +2424,18 @@ static int vop2_find_rgb_encoder(struct vop2 *vop2)
>       return -ENOENT;
>  }
>  
> -static int vop2_cluster_init(struct vop2_win *win)
> +static int vop2_regmap_init(struct vop2_win *win, const struct reg_field 
> *regs,
> +                         int nr_regs)
>  {
>       struct vop2 *vop2 = win->vop2;
>       int i;
>  
> -     for (i = 0; i < vop2->data->nr_cluster_regs; i++) {
> +     for (i = 0; i < nr_regs; i++) {
>               const struct reg_field field = {
> -                     .reg = (vop2->data->cluster_reg[i].reg != 0xffffffff) ?
> -                             vop2->data->cluster_reg[i].reg + win->offset :
> -                             vop2->data->cluster_reg[i].reg,
> -                     .lsb = vop2->data->cluster_reg[i].lsb,
> -                     .msb = vop2->data->cluster_reg[i].msb
> +                     .reg = (regs[i].reg != 0xffffffff) ?
> +                             regs[i].reg + win->offset : regs[i].reg,
> +                     .lsb = regs[i].lsb,
> +                     .msb = regs[i].msb
>               };
>  
>               win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, 
> field);
> @@ -2446,28 +2446,6 @@ static int vop2_cluster_init(struct vop2_win *win)
>       return 0;
>  };
>  
> -static int vop2_esmart_init(struct vop2_win *win)
> -{
> -     struct vop2 *vop2 = win->vop2;
> -     int i;
> -
> -     for (i = 0; i < vop2->data->nr_smart_regs; i++) {
> -             const struct reg_field field = {
> -                     .reg = (vop2->data->smart_reg[i].reg != 0xffffffff) ?
> -                             vop2->data->smart_reg[i].reg + win->offset :
> -                             vop2->data->smart_reg[i].reg,
> -                     .lsb = vop2->data->smart_reg[i].lsb,
> -                     .msb = vop2->data->smart_reg[i].msb
> -             };
> -
> -             win->reg[i] = devm_regmap_field_alloc(vop2->dev, vop2->map, 
> field);
> -             if (IS_ERR(win->reg[i]))
> -                     return PTR_ERR(win->reg[i]);
> -     }
> -
> -     return 0;
> -}
> -
>  static int vop2_win_init(struct vop2 *vop2)
>  {
>       const struct vop2_data *vop2_data = vop2->data;
> @@ -2484,9 +2462,11 @@ static int vop2_win_init(struct vop2 *vop2)
>               win->win_id = i;
>               win->vop2 = vop2;
>               if (vop2_cluster_window(win))
> -                     ret = vop2_cluster_init(win);
> +                     ret = vop2_regmap_init(win, vop2->data->cluster_reg,
> +                                            vop2->data->nr_cluster_regs);
>               else
> -                     ret = vop2_esmart_init(win);
> +                     ret = vop2_regmap_init(win, vop2->data->smart_reg,
> +                                            vop2->data->nr_cluster_regs);

                                                ^^ nr_smart_regs
I think




Reply via email to