diff mbox series

[6/7] drm/msm/dpu: call dpu_rm_get_intf() from dpu_encoder_get_intf()

Message ID 20230430235732.3341119-7-dmitry.baryshkov@linaro.org
State Superseded
Headers show
Series drm/msm/dpu: simplify DPU encoder init | expand

Commit Message

Dmitry Baryshkov April 30, 2023, 11:57 p.m. UTC
There is little sense to get intf index just to call dpu_rm_get_intf()
on it. Move dpu_rm_get_intf() call to dpu_encoder_get_intf() function.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

Comments

Abhinav Kumar May 2, 2023, 11:57 p.m. UTC | #1
On 4/30/2023 4:57 PM, Dmitry Baryshkov wrote:
> There is little sense to get intf index just to call dpu_rm_get_intf()
> on it. Move dpu_rm_get_intf() call to dpu_encoder_get_intf() function.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 ++++++++------------
>   1 file changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> index 507ff3f88c67..b35e92c658ad 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> @@ -1259,22 +1259,23 @@ static void dpu_encoder_virt_atomic_disable(struct drm_encoder *drm_enc,
>   	mutex_unlock(&dpu_enc->enc_lock);
>   }
>   
> -static enum dpu_intf dpu_encoder_get_intf(const struct dpu_mdss_cfg *catalog,
> +static struct dpu_hw_intf *dpu_encoder_get_intf(const struct dpu_mdss_cfg *catalog,
> +		struct dpu_rm *dpu_rm,
>   		enum dpu_intf_type type, u32 controller_id)
>   {
>   	int i = 0;
>   
>   	if (type == INTF_WB)
> -		return INTF_MAX;
> +		return NULL;
>   
>   	for (i = 0; i < catalog->intf_count; i++) {
>   		if (catalog->intf[i].type == type
>   		    && catalog->intf[i].controller_id == controller_id) {
> -			return catalog->intf[i].id;
> +			return dpu_rm_get_intf(dpu_rm, catalog->intf[i].id);
>   		}

Why has the for loop been retained in this function but not for 
writeback? is there any difference? Doesnt looks like there needs to be.

>   	}
>   
> -	return INTF_MAX;
> +	return NULL;
>   }
>   
>   void dpu_encoder_vblank_callback(struct drm_encoder *drm_enc,
> @@ -2244,7 +2245,6 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
>   		 * h_tile_instance_ids[2] = {1, 0}; DSI1 = left, DSI0 = right
>   		 */
>   		u32 controller_id = disp_info->h_tile_instance[i];
> -		enum dpu_intf intf_idx;
>   
>   		if (disp_info->num_of_h_tiles > 1) {
>   			if (i == 0)
> @@ -2258,12 +2258,9 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
>   		DPU_DEBUG("h_tile_instance %d = %d, split_role %d\n",
>   				i, controller_id, phys_params.split_role);
>   
> -		intf_idx = dpu_encoder_get_intf(dpu_kms->catalog,
> -							    disp_info->intf_type,
> -							    controller_id);
> -
> -		if (intf_idx >= INTF_0 && intf_idx < INTF_MAX)
> -			phys_params.hw_intf = dpu_rm_get_intf(&dpu_kms->rm, intf_idx);
> +		phys_params.hw_intf = dpu_encoder_get_intf(dpu_kms->catalog, &dpu_kms->rm,
> +							   disp_info->intf_type,
> +							   controller_id);
>   
>   		if (disp_info->intf_type == INTF_WB && controller_id < WB_MAX)
>   			phys_params.hw_wb = dpu_rm_get_wb(&dpu_kms->rm, controller_id);
> @@ -2287,7 +2284,6 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
>   			DPU_ERROR_ENC(dpu_enc, "failed to add phys encs\n");
>   			break;
>   		}
> -
unnecessary change?
>   	}
>   
>   	mutex_unlock(&dpu_enc->enc_lock);
Dmitry Baryshkov May 2, 2023, 11:58 p.m. UTC | #2
On 03/05/2023 02:57, Abhinav Kumar wrote:
> 
> 
> On 4/30/2023 4:57 PM, Dmitry Baryshkov wrote:
>> There is little sense to get intf index just to call dpu_rm_get_intf()
>> on it. Move dpu_rm_get_intf() call to dpu_encoder_get_intf() function.
>>
>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> ---
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 ++++++++------------
>>   1 file changed, 8 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c 
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>> index 507ff3f88c67..b35e92c658ad 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>> @@ -1259,22 +1259,23 @@ static void 
>> dpu_encoder_virt_atomic_disable(struct drm_encoder *drm_enc,
>>       mutex_unlock(&dpu_enc->enc_lock);
>>   }
>> -static enum dpu_intf dpu_encoder_get_intf(const struct dpu_mdss_cfg 
>> *catalog,
>> +static struct dpu_hw_intf *dpu_encoder_get_intf(const struct 
>> dpu_mdss_cfg *catalog,
>> +        struct dpu_rm *dpu_rm,
>>           enum dpu_intf_type type, u32 controller_id)
>>   {
>>       int i = 0;
>>       if (type == INTF_WB)
>> -        return INTF_MAX;
>> +        return NULL;
>>       for (i = 0; i < catalog->intf_count; i++) {
>>           if (catalog->intf[i].type == type
>>               && catalog->intf[i].controller_id == controller_id) {
>> -            return catalog->intf[i].id;
>> +            return dpu_rm_get_intf(dpu_rm, catalog->intf[i].id);
>>           }
> 
> Why has the for loop been retained in this function but not for 
> writeback? is there any difference? Doesnt looks like there needs to be.

For writeback we always return controller_id (WB_2). For interfaces we 
have to map type+controller_id to the INTF instance.

> 
>>       }
>> -    return INTF_MAX;
>> +    return NULL;
>>   }
>>   void dpu_encoder_vblank_callback(struct drm_encoder *drm_enc,
>> @@ -2244,7 +2245,6 @@ static int dpu_encoder_setup_display(struct 
>> dpu_encoder_virt *dpu_enc,
>>            * h_tile_instance_ids[2] = {1, 0}; DSI1 = left, DSI0 = right
>>            */
>>           u32 controller_id = disp_info->h_tile_instance[i];
>> -        enum dpu_intf intf_idx;
>>           if (disp_info->num_of_h_tiles > 1) {
>>               if (i == 0)
>> @@ -2258,12 +2258,9 @@ static int dpu_encoder_setup_display(struct 
>> dpu_encoder_virt *dpu_enc,
>>           DPU_DEBUG("h_tile_instance %d = %d, split_role %d\n",
>>                   i, controller_id, phys_params.split_role);
>> -        intf_idx = dpu_encoder_get_intf(dpu_kms->catalog,
>> -                                disp_info->intf_type,
>> -                                controller_id);
>> -
>> -        if (intf_idx >= INTF_0 && intf_idx < INTF_MAX)
>> -            phys_params.hw_intf = dpu_rm_get_intf(&dpu_kms->rm, 
>> intf_idx);
>> +        phys_params.hw_intf = dpu_encoder_get_intf(dpu_kms->catalog, 
>> &dpu_kms->rm,
>> +                               disp_info->intf_type,
>> +                               controller_id);
>>           if (disp_info->intf_type == INTF_WB && controller_id < WB_MAX)
>>               phys_params.hw_wb = dpu_rm_get_wb(&dpu_kms->rm, 
>> controller_id);
>> @@ -2287,7 +2284,6 @@ static int dpu_encoder_setup_display(struct 
>> dpu_encoder_virt *dpu_enc,
>>               DPU_ERROR_ENC(dpu_enc, "failed to add phys encs\n");
>>               break;
>>           }
>> -
> unnecessary change?


ack, it sneaked in. I'll drop it for v2.

>>       }
>>       mutex_unlock(&dpu_enc->enc_lock);
Abhinav Kumar May 3, 2023, 12:04 a.m. UTC | #3
On 5/2/2023 4:58 PM, Dmitry Baryshkov wrote:
> On 03/05/2023 02:57, Abhinav Kumar wrote:
>>
>>
>> On 4/30/2023 4:57 PM, Dmitry Baryshkov wrote:
>>> There is little sense to get intf index just to call dpu_rm_get_intf()
>>> on it. Move dpu_rm_get_intf() call to dpu_encoder_get_intf() function.
>>>
>>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>> ---
>>>   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 20 ++++++++------------
>>>   1 file changed, 8 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c 
>>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>>> index 507ff3f88c67..b35e92c658ad 100644
>>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
>>> @@ -1259,22 +1259,23 @@ static void 
>>> dpu_encoder_virt_atomic_disable(struct drm_encoder *drm_enc,
>>>       mutex_unlock(&dpu_enc->enc_lock);
>>>   }
>>> -static enum dpu_intf dpu_encoder_get_intf(const struct dpu_mdss_cfg 
>>> *catalog,
>>> +static struct dpu_hw_intf *dpu_encoder_get_intf(const struct 
>>> dpu_mdss_cfg *catalog,
>>> +        struct dpu_rm *dpu_rm,
>>>           enum dpu_intf_type type, u32 controller_id)
>>>   {
>>>       int i = 0;
>>>       if (type == INTF_WB)
>>> -        return INTF_MAX;
>>> +        return NULL;
>>>       for (i = 0; i < catalog->intf_count; i++) {
>>>           if (catalog->intf[i].type == type
>>>               && catalog->intf[i].controller_id == controller_id) {
>>> -            return catalog->intf[i].id;
>>> +            return dpu_rm_get_intf(dpu_rm, catalog->intf[i].id);
>>>           }
>>
>> Why has the for loop been retained in this function but not for 
>> writeback? is there any difference? Doesnt looks like there needs to be.
> 
> For writeback we always return controller_id (WB_2). For interfaces we 
> have to map type+controller_id to the INTF instance.

Ah correct, got it now. With that minor comment fixed from below,

Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>

> 
>>
>>>       }
>>> -    return INTF_MAX;
>>> +    return NULL;
>>>   }
>>>   void dpu_encoder_vblank_callback(struct drm_encoder *drm_enc,
>>> @@ -2244,7 +2245,6 @@ static int dpu_encoder_setup_display(struct 
>>> dpu_encoder_virt *dpu_enc,
>>>            * h_tile_instance_ids[2] = {1, 0}; DSI1 = left, DSI0 = right
>>>            */
>>>           u32 controller_id = disp_info->h_tile_instance[i];
>>> -        enum dpu_intf intf_idx;
>>>           if (disp_info->num_of_h_tiles > 1) {
>>>               if (i == 0)
>>> @@ -2258,12 +2258,9 @@ static int dpu_encoder_setup_display(struct 
>>> dpu_encoder_virt *dpu_enc,
>>>           DPU_DEBUG("h_tile_instance %d = %d, split_role %d\n",
>>>                   i, controller_id, phys_params.split_role);
>>> -        intf_idx = dpu_encoder_get_intf(dpu_kms->catalog,
>>> -                                disp_info->intf_type,
>>> -                                controller_id);
>>> -
>>> -        if (intf_idx >= INTF_0 && intf_idx < INTF_MAX)
>>> -            phys_params.hw_intf = dpu_rm_get_intf(&dpu_kms->rm, 
>>> intf_idx);
>>> +        phys_params.hw_intf = dpu_encoder_get_intf(dpu_kms->catalog, 
>>> &dpu_kms->rm,
>>> +                               disp_info->intf_type,
>>> +                               controller_id);
>>>           if (disp_info->intf_type == INTF_WB && controller_id < WB_MAX)
>>>               phys_params.hw_wb = dpu_rm_get_wb(&dpu_kms->rm, 
>>> controller_id);
>>> @@ -2287,7 +2284,6 @@ static int dpu_encoder_setup_display(struct 
>>> dpu_encoder_virt *dpu_enc,
>>>               DPU_ERROR_ENC(dpu_enc, "failed to add phys encs\n");
>>>               break;
>>>           }
>>> -
>> unnecessary change?
> 
> 
> ack, it sneaked in. I'll drop it for v2.
> 
>>>       }
>>>       mutex_unlock(&dpu_enc->enc_lock);
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 507ff3f88c67..b35e92c658ad 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -1259,22 +1259,23 @@  static void dpu_encoder_virt_atomic_disable(struct drm_encoder *drm_enc,
 	mutex_unlock(&dpu_enc->enc_lock);
 }
 
-static enum dpu_intf dpu_encoder_get_intf(const struct dpu_mdss_cfg *catalog,
+static struct dpu_hw_intf *dpu_encoder_get_intf(const struct dpu_mdss_cfg *catalog,
+		struct dpu_rm *dpu_rm,
 		enum dpu_intf_type type, u32 controller_id)
 {
 	int i = 0;
 
 	if (type == INTF_WB)
-		return INTF_MAX;
+		return NULL;
 
 	for (i = 0; i < catalog->intf_count; i++) {
 		if (catalog->intf[i].type == type
 		    && catalog->intf[i].controller_id == controller_id) {
-			return catalog->intf[i].id;
+			return dpu_rm_get_intf(dpu_rm, catalog->intf[i].id);
 		}
 	}
 
-	return INTF_MAX;
+	return NULL;
 }
 
 void dpu_encoder_vblank_callback(struct drm_encoder *drm_enc,
@@ -2244,7 +2245,6 @@  static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 		 * h_tile_instance_ids[2] = {1, 0}; DSI1 = left, DSI0 = right
 		 */
 		u32 controller_id = disp_info->h_tile_instance[i];
-		enum dpu_intf intf_idx;
 
 		if (disp_info->num_of_h_tiles > 1) {
 			if (i == 0)
@@ -2258,12 +2258,9 @@  static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 		DPU_DEBUG("h_tile_instance %d = %d, split_role %d\n",
 				i, controller_id, phys_params.split_role);
 
-		intf_idx = dpu_encoder_get_intf(dpu_kms->catalog,
-							    disp_info->intf_type,
-							    controller_id);
-
-		if (intf_idx >= INTF_0 && intf_idx < INTF_MAX)
-			phys_params.hw_intf = dpu_rm_get_intf(&dpu_kms->rm, intf_idx);
+		phys_params.hw_intf = dpu_encoder_get_intf(dpu_kms->catalog, &dpu_kms->rm,
+							   disp_info->intf_type,
+							   controller_id);
 
 		if (disp_info->intf_type == INTF_WB && controller_id < WB_MAX)
 			phys_params.hw_wb = dpu_rm_get_wb(&dpu_kms->rm, controller_id);
@@ -2287,7 +2284,6 @@  static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 			DPU_ERROR_ENC(dpu_enc, "failed to add phys encs\n");
 			break;
 		}
-
 	}
 
 	mutex_unlock(&dpu_enc->enc_lock);