diff mbox series

[v14,04/13] drm/rockchip: vop2: Merge vop2_cluster/esmart_init function

Message ID 20250212093530.52961-5-andyshrk@163.com (mailing list archive)
State New, archived
Headers show
Series VOP Support for rk3576 | expand

Commit Message

Andy Yan Feb. 12, 2025, 9:34 a.m. UTC
From: Andy Yan <andy.yan@rock-chips.com>

Now these two function share the same logic, the can
be merged as one.

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
---

(no changes since v1)

 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 42 +++++---------------
 1 file changed, 11 insertions(+), 31 deletions(-)

Comments

Heiko Stübner Feb. 14, 2025, 10:24 p.m. UTC | #1
Am Mittwoch, 12. Februar 2025, 10:34:59 MEZ schrieb Andy Yan:
> From: Andy Yan <andy.yan@rock-chips.com>
> 
> Now these two function share the same logic, the can
> be merged as one.
> 
> Signed-off-by: Andy Yan <andy.yan@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
Andy Yan Feb. 15, 2025, 7:34 a.m. UTC | #2
Hi Heiko,

At 2025-02-15 06:24:17, "Heiko Stübner" <heiko@sntech.de> wrote:
>Am Mittwoch, 12. Februar 2025, 10:34:59 MEZ schrieb Andy Yan:
>> From: Andy Yan <andy.yan@rock-chips.com>
>> 
>> Now these two function share the same logic, the can
>> be merged as one.
>> 
>> Signed-off-by: Andy Yan <andy.yan@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

Yes, thanks for catching it,  will be fixed in V15.

>
>
>
>
diff mbox series

Patch

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);
 		if (ret)
 			return ret;
 	}