Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-28 Thread shuang . he
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: 
shuang...@intel.com)
Task id: 7248
-Summary-
Platform  Delta  drm-intel-nightly  Series Applied
ILK -2  302/302  300/302
SNB  315/315  315/315
IVB  336/336  336/336
BYT  283/283  283/283
HSW  378/378  378/378
-Detailed-
Platform  Testdrm-intel-nightly  Series 
Applied
*ILK  igt@kms_flip@flip-vs-dpms-interruptible  PASS(1)  DMESG_WARN(1)
*ILK  igt@kms_flip@wf_vblank-vs-modeset-interruptible  PASS(1)  
DMESG_WARN(1)
Note: You need to pay more attention to line start with '*'
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-26 Thread Jani Nikula
On Tue, 25 Aug 2015, Rodrigo Vivi  wrote:
> SKL-Y can now use the same programming for all VccIO values after an 
> adjustment to I_boost.
> SKL-U DP table adjustments.
> 1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.  The 
> other SKL Y column removes the "0.85V VccIO" so it now applies to all 
> voltages.
> 2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to 201Bh.
> 3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to 201Bh.
> 4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.
>
> v2: Fix compilation warnings as pointed by Paulo.
>
> Reference: Graphics Spec Change r97962
> Cc: Arthur Runyan 
> Signed-off-by: Rodrigo Vivi 
> Reviewed-by: Paulo Zanoni 

Pushed to drm-intel-next-fixes.

BR,
Jani.


> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 75 
> ++--
>  1 file changed, 25 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 56d778f..3b056c4 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -128,7 +128,7 @@ static const struct ddi_buf_trans 
> bdw_ddi_translations_hdmi[] = {
>   { 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   */
>  };
>  
> -/* Skylake H, S, and Skylake Y with 0.95V VccIO */
> +/* Skylake H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
>   { 0x2016, 0x00A0, 0x0 },
>   { 0x5012, 0x009B, 0x0 },
> @@ -143,23 +143,23 @@ static const struct ddi_buf_trans 
> skl_ddi_translations_dp[] = {
>  
>  /* Skylake U */
>  static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
> - { 0x2016, 0x00A2, 0x0 },
> + { 0x201B, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> - { 0x2016, 0x009D, 0x0 },
> + { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost level 0x1 */
> + { 0x201B, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
>   { 0x2016, 0x0088, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>  };
>  
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = {
> +/* Skylake Y */
> +static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
>   { 0x0018, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> + { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost level 0x3 */
>   { 0x0018, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
> @@ -168,7 +168,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_dp[] = {
>  };
>  
>  /*
> - * Skylake H and S, and Skylake Y with 0.95V VccIO
> + * Skylake H and S
>   * eDP 1.4 low vswing translation parameters
>   */
>  static const struct ddi_buf_trans skl_ddi_translations_edp[] = {
> @@ -202,10 +202,10 @@ static const struct ddi_buf_trans 
> skl_u_ddi_translations_edp[] = {
>  };
>  
>  /*
> - * Skylake Y with 0.95V VccIO
> + * Skylake Y
>   * eDP 1.4 low vswing translation parameters
>   */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] = {
> +static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
>   { 0x0018, 0x00A8, 0x0 },
>   { 0x4013, 0x00AB, 0x0 },
>   { 0x7011, 0x00A4, 0x0 },
> @@ -218,7 +218,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_edp[] = {
>   { 0x0018, 0x008A, 0x0 },
>  };
>  
> -/* Skylake H, S and U, and Skylake Y with 0.95V VccIO */
> +/* Skylake U, H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00AC, 0x0 },
>   { 0x5012, 0x009D, 0x0 },
> @@ -233,8 +233,8 @@ static const struct ddi_buf_trans 
> skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00C7, 0x0 },
>  };
>  
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_hdmi[] = {
> +/* Skylake Y */
> +static const struct ddi_buf_trans skl_y_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00A1, 0x0 },
>   { 0x5012, 0x00DF, 0x0 },
>   { 0x7011, 0x0084, 0x0 },
> @@ -244,7 +244,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_hdmi[] = {
>   { 0x6013, 0x00C7, 0x0 },
>   { 0x0018, 0x008A, 0x0 },
>   { 0x3015, 0x00C7, 0x0 },/* Default */
> - { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost */
> + { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost level 0x7 */
>   { 0x0018, 0x00C7, 0x0 },
>  };
>  
> @@ -335,19 +335,11 @@ intel_dig_port_suppo

[Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-24 Thread Rodrigo Vivi
SKL-Y can now use the same programming for all VccIO values after an adjustment 
to I_boost.
SKL-U DP table adjustments.
1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.  The 
other SKL Y column removes the "0.85V VccIO" so it now applies to all voltages.
2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to 201Bh.
3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to 201Bh.
4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.

v2: Fix compilation warnings as pointed by Paulo.

Reference: Graphics Spec Change r97962
Cc: Arthur Runyan 
Signed-off-by: Rodrigo Vivi 
Reviewed-by: Paulo Zanoni 
---
 drivers/gpu/drm/i915/intel_ddi.c | 75 ++--
 1 file changed, 25 insertions(+), 50 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 56d778f..3b056c4 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -128,7 +128,7 @@ static const struct ddi_buf_trans 
bdw_ddi_translations_hdmi[] = {
{ 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   */
 };
 
-/* Skylake H, S, and Skylake Y with 0.95V VccIO */
+/* Skylake H and S */
 static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
{ 0x2016, 0x00A0, 0x0 },
{ 0x5012, 0x009B, 0x0 },
@@ -143,23 +143,23 @@ static const struct ddi_buf_trans 
skl_ddi_translations_dp[] = {
 
 /* Skylake U */
 static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
-   { 0x2016, 0x00A2, 0x0 },
+   { 0x201B, 0x00A2, 0x0 },
{ 0x5012, 0x0088, 0x0 },
{ 0x7011, 0x0087, 0x0 },
-   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
-   { 0x2016, 0x009D, 0x0 },
+   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost level 0x1 */
+   { 0x201B, 0x009D, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
{ 0x7011, 0x00C7, 0x0 },
{ 0x2016, 0x0088, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
 };
 
-/* Skylake Y with 0.85V VccIO */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = {
+/* Skylake Y */
+static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
{ 0x0018, 0x00A2, 0x0 },
{ 0x5012, 0x0088, 0x0 },
{ 0x7011, 0x0087, 0x0 },
-   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
+   { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost level 0x3 */
{ 0x0018, 0x009D, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
{ 0x7011, 0x00C7, 0x0 },
@@ -168,7 +168,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_dp[] = {
 };
 
 /*
- * Skylake H and S, and Skylake Y with 0.95V VccIO
+ * Skylake H and S
  * eDP 1.4 low vswing translation parameters
  */
 static const struct ddi_buf_trans skl_ddi_translations_edp[] = {
@@ -202,10 +202,10 @@ static const struct ddi_buf_trans 
skl_u_ddi_translations_edp[] = {
 };
 
 /*
- * Skylake Y with 0.95V VccIO
+ * Skylake Y
  * eDP 1.4 low vswing translation parameters
  */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] = {
+static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
{ 0x0018, 0x00A8, 0x0 },
{ 0x4013, 0x00AB, 0x0 },
{ 0x7011, 0x00A4, 0x0 },
@@ -218,7 +218,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_edp[] = {
{ 0x0018, 0x008A, 0x0 },
 };
 
-/* Skylake H, S and U, and Skylake Y with 0.95V VccIO */
+/* Skylake U, H and S */
 static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = {
{ 0x0018, 0x00AC, 0x0 },
{ 0x5012, 0x009D, 0x0 },
@@ -233,8 +233,8 @@ static const struct ddi_buf_trans 
skl_ddi_translations_hdmi[] = {
{ 0x0018, 0x00C7, 0x0 },
 };
 
-/* Skylake Y with 0.85V VccIO */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_hdmi[] = {
+/* Skylake Y */
+static const struct ddi_buf_trans skl_y_ddi_translations_hdmi[] = {
{ 0x0018, 0x00A1, 0x0 },
{ 0x5012, 0x00DF, 0x0 },
{ 0x7011, 0x0084, 0x0 },
@@ -244,7 +244,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_hdmi[] = {
{ 0x6013, 0x00C7, 0x0 },
{ 0x0018, 0x008A, 0x0 },
{ 0x3015, 0x00C7, 0x0 },/* Default */
-   { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost */
+   { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost level 0x7 */
{ 0x0018, 0x00C7, 0x0 },
 };
 
@@ -335,19 +335,11 @@ intel_dig_port_supports_hdmi(const struct 
intel_digital_port *intel_dig_port)
 static const struct ddi_buf_trans *skl_get_buf_trans_dp(struct drm_device *dev,
int *n_entries)
 {
-   struct drm_i915_private *dev_priv =

Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-21 Thread Zanoni, Paulo R
Em Qua, 2015-08-05 às 14:59 -0700, Rodrigo Vivi escreveu:
> SKL-Y can now use the same programming for all VccIO values after an 
> adjustment to I_boost.
> SKL-U DP table adjustments.
> 1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.
>   The other SKL Y column removes the "0.85V VccIO" so it now applies 
> to all voltages.
> 2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to 
> 201Bh.
> 3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to 
> 201Bh.
> 4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.
> 
> Reference: Graphics Spec Change r97962
> Cc: Arthur Runyan 
> Signed-off-by: Rodrigo Vivi 

drivers/gpu/drm/i915/intel_ddi.c: In function ‘skl_get_buf_trans_dp’:
drivers/gpu/drm/i915/intel_ddi.c:338:27: warning: unused variable
‘dev_priv’ [-Wunused-variable]
drivers/gpu/drm/i915/intel_ddi.c: In function ‘skl_get_buf_trans_hdmi’:
drivers/gpu/drm/i915/intel_ddi.c:394:27: warning: unused variable
‘dev_priv’ [-Wunused-variable]

With that fixed:
Reviewed-by: Paulo Zanoni 

> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 73 ++
> --
>  1 file changed, 25 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 9a40bfb..9e5a21b 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -128,7 +128,7 @@ static const struct ddi_buf_trans 
> bdw_ddi_translations_hdmi[] = {
>   { 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   > */
> 
>  };
>  
> -/* Skylake H, S, and Skylake Y with 0.95V VccIO */
> +/* Skylake H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
>   { 0x2016, 0x00A0, 0x0 },
>   { 0x5012, 0x009B, 0x0 },
> @@ -143,23 +143,23 @@ static const struct ddi_buf_trans 
> skl_ddi_translations_dp[] = {
>  
>  /* Skylake U */
>  static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
> - { 0x2016, 0x00A2, 0x0 },
> + { 0x201B, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> - { 0x2016, 0x009D, 0x0 },
> + { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost 
> level 0x1 */
> + { 0x201B, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
>   { 0x2016, 0x0088, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>  };
>  
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = 
> {
> +/* Skylake Y */
> +static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
>   { 0x0018, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> + { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost 
> level 0x3 */
>   { 0x0018, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
> @@ -168,7 +168,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_dp[] = {
>  };
>  
>  /*
> - * Skylake H and S, and Skylake Y with 0.95V VccIO
> + * Skylake H and S
>   * eDP 1.4 low vswing translation parameters
>   */
>  static const struct ddi_buf_trans skl_ddi_translations_edp[] = {
> @@ -202,10 +202,10 @@ static const struct ddi_buf_trans 
> skl_u_ddi_translations_edp[] = {
>  };
>  
>  /*
> - * Skylake Y with 0.95V VccIO
> + * Skylake Y
>   * eDP 1.4 low vswing translation parameters
>   */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] 
> = {
> +static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
>   { 0x0018, 0x00A8, 0x0 },
>   { 0x4013, 0x00AB, 0x0 },
>   { 0x7011, 0x00A4, 0x0 },
> @@ -218,7 +218,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_edp[] = {
>   { 0x0018, 0x008A, 0x0 },
>  };
>  
> -/* Skylake H, S and U, and Skylake Y with 0.95V VccIO */
> +/* Skylake U, H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00AC, 0x0 },
>   { 0x5012, 0x009D, 0x0 },
> @@ -233,8 +233,8 @@ static const struct ddi_buf_trans 
> skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00C7, 0x0 },
>  };
>  
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_hdmi[] 
> = {
> +/* Skylake Y */
> +static const struct ddi_buf_trans skl_y_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00A1, 0x0 },
>   { 0x5012, 0x00DF, 0x0 },
>   { 0x7011, 0x0084, 0x0 },
> @@ -244,7 +244,7 @@ static const struct ddi_buf_trans 
> skl_y_085v_ddi_translations_hdmi[] = {
>   { 0x6013, 0x00C7, 0x0 },
>   { 0x0018, 0x008A, 0x0 },
>  

Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-12 Thread shuang . he
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: 
shuang...@intel.com)
Task id: 7079
-Summary-
Platform  Delta  drm-intel-nightly  Series Applied
ILK -1  302/302  301/302
SNB  315/315  315/315
IVB  336/336  336/336
BYT  283/283  283/283
HSW  378/378  378/378
-Detailed-
Platform  Testdrm-intel-nightly  Series 
Applied
*ILK  igt@kms_flip@rcs-wf_vblank-vs-dpms-interruptible  PASS(1)  
DMESG_WARN(1)
Note: You need to pay more attention to line start with '*'
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-07 Thread Rodrigo Vivi
On Wed, Aug 5, 2015 at 6:47 PM Zhang, Xiong Y 
wrote:

> Hi, Vivi:
> Do you think this patch could resolve the following two issues ?
> https://bugs.freedesktop.org/show_bug.cgi?id=91050
> https://bugs.freedesktop.org/show_bug.cgi?id=91269


I'm not sure honestly...  I was just following latest spec updates. But I
believe it has potential..
at least to avoid this vswig parameters on our SDPs.


>
>
> thanks
> > -Original Message-
> > From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On
> Behalf Of
> > Rodrigo Vivi
> > Sent: Thursday, August 6, 2015 5:59 AM
> > To: intel-gfx@lists.freedesktop.org
> > Cc: Runyan, Arthur J; Vivi, Rodrigo
> > Subject: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation
> > programming.
> >
> > SKL-Y can now use the same programming for all VccIO values after an
> > adjustment to I_boost.
> > SKL-U DP table adjustments.
> > 1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.
> The
> > other SKL Y column removes the "0.85V VccIO" so it now applies to all
> > voltages.
> > 2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to
> > 201Bh.
> > 3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to
> > 201Bh.
> > 4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.
> >
> > Reference: Graphics Spec Change r97962
> > Cc: Arthur Runyan 
> > Signed-off-by: Rodrigo Vivi 
> > ---
> >  drivers/gpu/drm/i915/intel_ddi.c | 73
> ++--
> >  1 file changed, 25 insertions(+), 48 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c
> > b/drivers/gpu/drm/i915/intel_ddi.c
> > index 9a40bfb..9e5a21b 100644
> > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > @@ -128,7 +128,7 @@ static const struct ddi_buf_trans
> > bdw_ddi_translations_hdmi[] = {
> >   { 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   */
> >  };
> >
> > -/* Skylake H, S, and Skylake Y with 0.95V VccIO */
> > +/* Skylake H and S */
> >  static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
> >   { 0x2016, 0x00A0, 0x0 },
> >   { 0x5012, 0x009B, 0x0 },
> > @@ -143,23 +143,23 @@ static const struct ddi_buf_trans
> > skl_ddi_translations_dp[] = {
> >
> >  /* Skylake U */
> >  static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
> > - { 0x2016, 0x00A2, 0x0 },
> > + { 0x201B, 0x00A2, 0x0 },
> >   { 0x5012, 0x0088, 0x0 },
> >   { 0x7011, 0x0087, 0x0 },
> > - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> > - { 0x2016, 0x009D, 0x0 },
> > + { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost level 0x1
> */
> > + { 0x201B, 0x009D, 0x0 },
> >   { 0x5012, 0x00C7, 0x0 },
> >   { 0x7011, 0x00C7, 0x0 },
> >   { 0x2016, 0x0088, 0x0 },
> >   { 0x5012, 0x00C7, 0x0 },
> >  };
> >
> > -/* Skylake Y with 0.85V VccIO */
> > -static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = {
> > +/* Skylake Y */
> > +static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
> >   { 0x0018, 0x00A2, 0x0 },
> >   { 0x5012, 0x0088, 0x0 },
> >   { 0x7011, 0x0087, 0x0 },
> > - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> > + { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost level 0x3
> */
> >   { 0x0018, 0x009D, 0x0 },
> >   { 0x5012, 0x00C7, 0x0 },
> >   { 0x7011, 0x00C7, 0x0 },
> > @@ -168,7 +168,7 @@ static const struct ddi_buf_trans
> > skl_y_085v_ddi_translations_dp[] = {  };
> >
> >  /*
> > - * Skylake H and S, and Skylake Y with 0.95V VccIO
> > + * Skylake H and S
> >   * eDP 1.4 low vswing translation parameters
> >   */
> >  static const struct ddi_buf_trans skl_ddi_translations_edp[] = { @@
> -202,10
> > +202,10 @@ static const struct ddi_buf_trans
> skl_u_ddi_translations_edp[] =
> > {  };
> >
> >  /*
> > - * Skylake Y with 0.95V VccIO
> > + * Skylake Y
> >   * eDP 1.4 low vswing translation parameters
> >   */
> > -static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] = {
> > +static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
> >   { 0x0018, 0x00A8, 0x0 },
> >   { 0x4013, 

Re: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-05 Thread Zhang, Xiong Y
Hi, Vivi:
Do you think this patch could resolve the following two issues ?
https://bugs.freedesktop.org/show_bug.cgi?id=91050
https://bugs.freedesktop.org/show_bug.cgi?id=91269

thanks
> -Original Message-
> From: Intel-gfx [mailto:intel-gfx-boun...@lists.freedesktop.org] On Behalf Of
> Rodrigo Vivi
> Sent: Thursday, August 6, 2015 5:59 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: Runyan, Arthur J; Vivi, Rodrigo
> Subject: [Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation
> programming.
> 
> SKL-Y can now use the same programming for all VccIO values after an
> adjustment to I_boost.
> SKL-U DP table adjustments.
> 1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.  The
> other SKL Y column removes the "0.85V VccIO" so it now applies to all
> voltages.
> 2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to
> 201Bh.
> 3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to
> 201Bh.
> 4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.
> 
> Reference: Graphics Spec Change r97962
> Cc: Arthur Runyan 
> Signed-off-by: Rodrigo Vivi 
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 73 
> ++--
>  1 file changed, 25 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 9a40bfb..9e5a21b 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -128,7 +128,7 @@ static const struct ddi_buf_trans
> bdw_ddi_translations_hdmi[] = {
>   { 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   */
>  };
> 
> -/* Skylake H, S, and Skylake Y with 0.95V VccIO */
> +/* Skylake H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
>   { 0x2016, 0x00A0, 0x0 },
>   { 0x5012, 0x009B, 0x0 },
> @@ -143,23 +143,23 @@ static const struct ddi_buf_trans
> skl_ddi_translations_dp[] = {
> 
>  /* Skylake U */
>  static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
> - { 0x2016, 0x00A2, 0x0 },
> + { 0x201B, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> - { 0x2016, 0x009D, 0x0 },
> + { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost level 0x1 */
> + { 0x201B, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
>   { 0x2016, 0x0088, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>  };
> 
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = {
> +/* Skylake Y */
> +static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
>   { 0x0018, 0x00A2, 0x0 },
>   { 0x5012, 0x0088, 0x0 },
>   { 0x7011, 0x0087, 0x0 },
> - { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
> + { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost level 0x3 */
>   { 0x0018, 0x009D, 0x0 },
>   { 0x5012, 0x00C7, 0x0 },
>   { 0x7011, 0x00C7, 0x0 },
> @@ -168,7 +168,7 @@ static const struct ddi_buf_trans
> skl_y_085v_ddi_translations_dp[] = {  };
> 
>  /*
> - * Skylake H and S, and Skylake Y with 0.95V VccIO
> + * Skylake H and S
>   * eDP 1.4 low vswing translation parameters
>   */
>  static const struct ddi_buf_trans skl_ddi_translations_edp[] = { @@ -202,10
> +202,10 @@ static const struct ddi_buf_trans skl_u_ddi_translations_edp[] =
> {  };
> 
>  /*
> - * Skylake Y with 0.95V VccIO
> + * Skylake Y
>   * eDP 1.4 low vswing translation parameters
>   */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] = {
> +static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
>   { 0x0018, 0x00A8, 0x0 },
>   { 0x4013, 0x00AB, 0x0 },
>   { 0x7011, 0x00A4, 0x0 },
> @@ -218,7 +218,7 @@ static const struct ddi_buf_trans
> skl_y_085v_ddi_translations_edp[] = {
>   { 0x0018, 0x008A, 0x0 },
>  };
> 
> -/* Skylake H, S and U, and Skylake Y with 0.95V VccIO */
> +/* Skylake U, H and S */
>  static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00AC, 0x0 },
>   { 0x5012, 0x009D, 0x0 },
> @@ -233,8 +233,8 @@ static const struct ddi_buf_trans
> skl_ddi_translations_hdmi[] = {
>   { 0x0018, 0x00C7, 0x0 },
>  };
> 
> -/* Skylake Y with 0.85V VccIO */
> -static const struct ddi_buf_trans skl_y_085v_ddi_translati

[Intel-gfx] [PATCH] drm/i915/skl: Update DDI buffer translation programming.

2015-08-05 Thread Rodrigo Vivi
SKL-Y can now use the same programming for all VccIO values after an adjustment 
to I_boost.
SKL-U DP table adjustments.
1.   Remove SKL Y 0.95V from "SKL H and S" columns in all tables.  The 
other SKL Y column removes the "0.85V VccIO" so it now applies to all voltages.
2.   DP table changes SKL U 400mV+0db dword 0 value from 2016h to 201Bh.
3.   DP table changes SKL U 600mv+0db dword 0 value from 2016h to 201Bh.
4.   DP table increases I_boost to level 3 for SKL Y 400mv+9.5db.

Reference: Graphics Spec Change r97962
Cc: Arthur Runyan 
Signed-off-by: Rodrigo Vivi 
---
 drivers/gpu/drm/i915/intel_ddi.c | 73 ++--
 1 file changed, 25 insertions(+), 48 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9a40bfb..9e5a21b 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -128,7 +128,7 @@ static const struct ddi_buf_trans 
bdw_ddi_translations_hdmi[] = {
{ 0x80FF, 0x001B0002, 0x0 },/* 9:   100010000   */
 };
 
-/* Skylake H, S, and Skylake Y with 0.95V VccIO */
+/* Skylake H and S */
 static const struct ddi_buf_trans skl_ddi_translations_dp[] = {
{ 0x2016, 0x00A0, 0x0 },
{ 0x5012, 0x009B, 0x0 },
@@ -143,23 +143,23 @@ static const struct ddi_buf_trans 
skl_ddi_translations_dp[] = {
 
 /* Skylake U */
 static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = {
-   { 0x2016, 0x00A2, 0x0 },
+   { 0x201B, 0x00A2, 0x0 },
{ 0x5012, 0x0088, 0x0 },
{ 0x7011, 0x0087, 0x0 },
-   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
-   { 0x2016, 0x009D, 0x0 },
+   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost level 0x1 */
+   { 0x201B, 0x009D, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
{ 0x7011, 0x00C7, 0x0 },
{ 0x2016, 0x0088, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
 };
 
-/* Skylake Y with 0.85V VccIO */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_dp[] = {
+/* Skylake Y */
+static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = {
{ 0x0018, 0x00A2, 0x0 },
{ 0x5012, 0x0088, 0x0 },
{ 0x7011, 0x0087, 0x0 },
-   { 0x80009010, 0x00C7, 0x1 },/* Uses I_boost */
+   { 0x80009010, 0x00C7, 0x3 },/* Uses I_boost level 0x3 */
{ 0x0018, 0x009D, 0x0 },
{ 0x5012, 0x00C7, 0x0 },
{ 0x7011, 0x00C7, 0x0 },
@@ -168,7 +168,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_dp[] = {
 };
 
 /*
- * Skylake H and S, and Skylake Y with 0.95V VccIO
+ * Skylake H and S
  * eDP 1.4 low vswing translation parameters
  */
 static const struct ddi_buf_trans skl_ddi_translations_edp[] = {
@@ -202,10 +202,10 @@ static const struct ddi_buf_trans 
skl_u_ddi_translations_edp[] = {
 };
 
 /*
- * Skylake Y with 0.95V VccIO
+ * Skylake Y
  * eDP 1.4 low vswing translation parameters
  */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_edp[] = {
+static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = {
{ 0x0018, 0x00A8, 0x0 },
{ 0x4013, 0x00AB, 0x0 },
{ 0x7011, 0x00A4, 0x0 },
@@ -218,7 +218,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_edp[] = {
{ 0x0018, 0x008A, 0x0 },
 };
 
-/* Skylake H, S and U, and Skylake Y with 0.95V VccIO */
+/* Skylake U, H and S */
 static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = {
{ 0x0018, 0x00AC, 0x0 },
{ 0x5012, 0x009D, 0x0 },
@@ -233,8 +233,8 @@ static const struct ddi_buf_trans 
skl_ddi_translations_hdmi[] = {
{ 0x0018, 0x00C7, 0x0 },
 };
 
-/* Skylake Y with 0.85V VccIO */
-static const struct ddi_buf_trans skl_y_085v_ddi_translations_hdmi[] = {
+/* Skylake Y */
+static const struct ddi_buf_trans skl_y_ddi_translations_hdmi[] = {
{ 0x0018, 0x00A1, 0x0 },
{ 0x5012, 0x00DF, 0x0 },
{ 0x7011, 0x0084, 0x0 },
@@ -244,7 +244,7 @@ static const struct ddi_buf_trans 
skl_y_085v_ddi_translations_hdmi[] = {
{ 0x6013, 0x00C7, 0x0 },
{ 0x0018, 0x008A, 0x0 },
{ 0x3015, 0x00C7, 0x0 },/* Default */
-   { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost */
+   { 0x80003015, 0x00C7, 0x7 },/* Uses I_boost level 0x7 */
{ 0x0018, 0x00C7, 0x0 },
 };
 
@@ -337,17 +337,10 @@ static const struct ddi_buf_trans 
*skl_get_buf_trans_dp(struct drm_device *dev,
 {
struct drm_i915_private *dev_priv = dev->dev_private;
const struct ddi_buf_trans *ddi_translations;
-   static int is_095v = -1;
 
-   if (is_095v == -1) {
-   u32 spr1 = I915_READ(UAIMI_SPR1);
-
-   is_095v = spr1 & SKL_VCC