diff mbox series

[3/4] drm/i915/dsi: Move vlv/icl_dphy_param_init call out of intel_dsi_vbt_init

Message ID 20190524163020.17099-4-hdegoede@redhat.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/dsi: Read back pclk set by GOP and use that as pclk (version 3) | expand

Commit Message

Hans de Goede May 24, 2019, 4:30 p.m. UTC
The vlv/icl_dphy_param_init calls do various calculations to set dphy
parameters based on the pclk.

Move the calling of vlv/icl_dphy_param_init to vlv_dsi_init to give
vlv_dsi_init a chance to tweak the pclk before these calculations are done.

This also removes the single "if (IS_ICELAKE(dev_priv))" check from
intel_dsi_vbt_init making it fully platform agnostic.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/gpu/drm/i915/icl_dsi.c       | 1 +
 drivers/gpu/drm/i915/intel_dsi.h     | 2 ++
 drivers/gpu/drm/i915/intel_dsi_vbt.c | 9 ++-------
 drivers/gpu/drm/i915/vlv_dsi.c       | 2 ++
 4 files changed, 7 insertions(+), 7 deletions(-)

Comments

Ville Syrjälä June 4, 2019, 5:35 p.m. UTC | #1
On Fri, May 24, 2019 at 06:30:19PM +0200, Hans de Goede wrote:
> The vlv/icl_dphy_param_init calls do various calculations to set dphy
> parameters based on the pclk.
> 
> Move the calling of vlv/icl_dphy_param_init to vlv_dsi_init to give
> vlv_dsi_init a chance to tweak the pclk before these calculations are done.
> 
> This also removes the single "if (IS_ICELAKE(dev_priv))" check from
> intel_dsi_vbt_init making it fully platform agnostic.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  drivers/gpu/drm/i915/icl_dsi.c       | 1 +
>  drivers/gpu/drm/i915/intel_dsi.h     | 2 ++
>  drivers/gpu/drm/i915/intel_dsi_vbt.c | 9 ++-------
>  drivers/gpu/drm/i915/vlv_dsi.c       | 2 ++
>  4 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
> index 9d962ea1e635..0f43ef07efec 100644
> --- a/drivers/gpu/drm/i915/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/icl_dsi.c
> @@ -1455,6 +1455,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
>  		goto err;
>  	}
>  
> +	icl_dphy_param_init(intel_dsi);

I think we should move the entire function into this file.

>  	return;
>  
>  err:
> diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
> index 705a609050c0..a58d3d988d9f 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.h
> +++ b/drivers/gpu/drm/i915/intel_dsi.h
> @@ -192,5 +192,7 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
>  void intel_dsi_vbt_exec_sequence(struct intel_dsi *intel_dsi,
>  				 enum mipi_seq seq_id);
>  void intel_dsi_msleep(struct intel_dsi *intel_dsi, int msec);
> +void icl_dphy_param_init(struct intel_dsi *intel_dsi);
> +void vlv_dphy_param_init(struct intel_dsi *intel_dsi);
>  
>  #endif /* _INTEL_DSI_H */
> diff --git a/drivers/gpu/drm/i915/intel_dsi_vbt.c b/drivers/gpu/drm/i915/intel_dsi_vbt.c
> index 3448e8d51057..022bf59418df 100644
> --- a/drivers/gpu/drm/i915/intel_dsi_vbt.c
> +++ b/drivers/gpu/drm/i915/intel_dsi_vbt.c
> @@ -578,7 +578,7 @@ static void intel_dsi_log_params(struct intel_dsi *intel_dsi)
>  #define ICL_HS_ZERO_CNT_MAX	0xf
>  #define ICL_EXIT_ZERO_CNT_MAX	0x7
>  
> -static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
> +void icl_dphy_param_init(struct intel_dsi *intel_dsi)
>  {
>  	struct drm_device *dev = intel_dsi->base.base.dev;
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> @@ -677,7 +677,7 @@ static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
>  	intel_dsi_log_params(intel_dsi);
>  }
>  
> -static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
> +void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
>  {
>  	struct drm_device *dev = intel_dsi->base.base.dev;
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> @@ -914,11 +914,6 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>  
>  	intel_dsi->burst_mode_ratio = burst_mode_ratio;
>  
> -	if (INTEL_GEN(dev_priv) >= 11)
> -		icl_dphy_param_init(intel_dsi);
> -	else
> -		vlv_dphy_param_init(intel_dsi);
> -
>  	/* delays in VBT are in unit of 100us, so need to convert
>  	 * here in ms
>  	 * Delay (100us) * 100 /1000 = Delay / 10 (ms) */
> diff --git a/drivers/gpu/drm/i915/vlv_dsi.c b/drivers/gpu/drm/i915/vlv_dsi.c
> index fce8b58f7f93..3329ccf3b346 100644
> --- a/drivers/gpu/drm/i915/vlv_dsi.c
> +++ b/drivers/gpu/drm/i915/vlv_dsi.c
> @@ -1782,6 +1782,8 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
>  		goto err;
>  	}
>  
> +	vlv_dphy_param_init(intel_dsi);

ditto

> +
>  	/*
>  	 * In case of BYT with CRC PMIC, we need to use GPIO for
>  	 * Panel control.
> -- 
> 2.21.0
Hans de Goede June 5, 2019, 6:13 p.m. UTC | #2
Hi,

On 04-06-19 19:35, Ville Syrjälä wrote:
> On Fri, May 24, 2019 at 06:30:19PM +0200, Hans de Goede wrote:
>> The vlv/icl_dphy_param_init calls do various calculations to set dphy
>> parameters based on the pclk.
>>
>> Move the calling of vlv/icl_dphy_param_init to vlv_dsi_init to give
>> vlv_dsi_init a chance to tweak the pclk before these calculations are done.
>>
>> This also removes the single "if (IS_ICELAKE(dev_priv))" check from
>> intel_dsi_vbt_init making it fully platform agnostic.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>   drivers/gpu/drm/i915/icl_dsi.c       | 1 +
>>   drivers/gpu/drm/i915/intel_dsi.h     | 2 ++
>>   drivers/gpu/drm/i915/intel_dsi_vbt.c | 9 ++-------
>>   drivers/gpu/drm/i915/vlv_dsi.c       | 2 ++
>>   4 files changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
>> index 9d962ea1e635..0f43ef07efec 100644
>> --- a/drivers/gpu/drm/i915/icl_dsi.c
>> +++ b/drivers/gpu/drm/i915/icl_dsi.c
>> @@ -1455,6 +1455,7 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
>>   		goto err;
>>   	}
>>   
>> +	icl_dphy_param_init(intel_dsi);
> 
> I think we should move the entire function into this file.

I was thinking the same thing when I was writing the patch, but I was
not 100% sure. I'm glad that you think the same, I will post a
new version with this fixed (both of them).

Regards,

Hans



> 
>>   	return;
>>   
>>   err:
>> diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
>> index 705a609050c0..a58d3d988d9f 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi.h
>> +++ b/drivers/gpu/drm/i915/intel_dsi.h
>> @@ -192,5 +192,7 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
>>   void intel_dsi_vbt_exec_sequence(struct intel_dsi *intel_dsi,
>>   				 enum mipi_seq seq_id);
>>   void intel_dsi_msleep(struct intel_dsi *intel_dsi, int msec);
>> +void icl_dphy_param_init(struct intel_dsi *intel_dsi);
>> +void vlv_dphy_param_init(struct intel_dsi *intel_dsi);
>>   
>>   #endif /* _INTEL_DSI_H */
>> diff --git a/drivers/gpu/drm/i915/intel_dsi_vbt.c b/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> index 3448e8d51057..022bf59418df 100644
>> --- a/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> +++ b/drivers/gpu/drm/i915/intel_dsi_vbt.c
>> @@ -578,7 +578,7 @@ static void intel_dsi_log_params(struct intel_dsi *intel_dsi)
>>   #define ICL_HS_ZERO_CNT_MAX	0xf
>>   #define ICL_EXIT_ZERO_CNT_MAX	0x7
>>   
>> -static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
>> +void icl_dphy_param_init(struct intel_dsi *intel_dsi)
>>   {
>>   	struct drm_device *dev = intel_dsi->base.base.dev;
>>   	struct drm_i915_private *dev_priv = to_i915(dev);
>> @@ -677,7 +677,7 @@ static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
>>   	intel_dsi_log_params(intel_dsi);
>>   }
>>   
>> -static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
>> +void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
>>   {
>>   	struct drm_device *dev = intel_dsi->base.base.dev;
>>   	struct drm_i915_private *dev_priv = to_i915(dev);
>> @@ -914,11 +914,6 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
>>   
>>   	intel_dsi->burst_mode_ratio = burst_mode_ratio;
>>   
>> -	if (INTEL_GEN(dev_priv) >= 11)
>> -		icl_dphy_param_init(intel_dsi);
>> -	else
>> -		vlv_dphy_param_init(intel_dsi);
>> -
>>   	/* delays in VBT are in unit of 100us, so need to convert
>>   	 * here in ms
>>   	 * Delay (100us) * 100 /1000 = Delay / 10 (ms) */
>> diff --git a/drivers/gpu/drm/i915/vlv_dsi.c b/drivers/gpu/drm/i915/vlv_dsi.c
>> index fce8b58f7f93..3329ccf3b346 100644
>> --- a/drivers/gpu/drm/i915/vlv_dsi.c
>> +++ b/drivers/gpu/drm/i915/vlv_dsi.c
>> @@ -1782,6 +1782,8 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
>>   		goto err;
>>   	}
>>   
>> +	vlv_dphy_param_init(intel_dsi);
> 
> ditto
> 
>> +
>>   	/*
>>   	 * In case of BYT with CRC PMIC, we need to use GPIO for
>>   	 * Panel control.
>> -- 
>> 2.21.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
index 9d962ea1e635..0f43ef07efec 100644
--- a/drivers/gpu/drm/i915/icl_dsi.c
+++ b/drivers/gpu/drm/i915/icl_dsi.c
@@ -1455,6 +1455,7 @@  void icl_dsi_init(struct drm_i915_private *dev_priv)
 		goto err;
 	}
 
+	icl_dphy_param_init(intel_dsi);
 	return;
 
 err:
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index 705a609050c0..a58d3d988d9f 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -192,5 +192,7 @@  bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
 void intel_dsi_vbt_exec_sequence(struct intel_dsi *intel_dsi,
 				 enum mipi_seq seq_id);
 void intel_dsi_msleep(struct intel_dsi *intel_dsi, int msec);
+void icl_dphy_param_init(struct intel_dsi *intel_dsi);
+void vlv_dphy_param_init(struct intel_dsi *intel_dsi);
 
 #endif /* _INTEL_DSI_H */
diff --git a/drivers/gpu/drm/i915/intel_dsi_vbt.c b/drivers/gpu/drm/i915/intel_dsi_vbt.c
index 3448e8d51057..022bf59418df 100644
--- a/drivers/gpu/drm/i915/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/intel_dsi_vbt.c
@@ -578,7 +578,7 @@  static void intel_dsi_log_params(struct intel_dsi *intel_dsi)
 #define ICL_HS_ZERO_CNT_MAX	0xf
 #define ICL_EXIT_ZERO_CNT_MAX	0x7
 
-static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
+void icl_dphy_param_init(struct intel_dsi *intel_dsi)
 {
 	struct drm_device *dev = intel_dsi->base.base.dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
@@ -677,7 +677,7 @@  static void icl_dphy_param_init(struct intel_dsi *intel_dsi)
 	intel_dsi_log_params(intel_dsi);
 }
 
-static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
+void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
 {
 	struct drm_device *dev = intel_dsi->base.base.dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
@@ -914,11 +914,6 @@  bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
 
 	intel_dsi->burst_mode_ratio = burst_mode_ratio;
 
-	if (INTEL_GEN(dev_priv) >= 11)
-		icl_dphy_param_init(intel_dsi);
-	else
-		vlv_dphy_param_init(intel_dsi);
-
 	/* delays in VBT are in unit of 100us, so need to convert
 	 * here in ms
 	 * Delay (100us) * 100 /1000 = Delay / 10 (ms) */
diff --git a/drivers/gpu/drm/i915/vlv_dsi.c b/drivers/gpu/drm/i915/vlv_dsi.c
index fce8b58f7f93..3329ccf3b346 100644
--- a/drivers/gpu/drm/i915/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/vlv_dsi.c
@@ -1782,6 +1782,8 @@  void vlv_dsi_init(struct drm_i915_private *dev_priv)
 		goto err;
 	}
 
+	vlv_dphy_param_init(intel_dsi);
+
 	/*
 	 * In case of BYT with CRC PMIC, we need to use GPIO for
 	 * Panel control.