Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-06-03 Thread Jani Nikula
On Wed, 03 Jun 2015, "Kannan, Vandana"  wrote:
> On 5/26/2015 5:50 PM, Sonika Jindal wrote:
>> BXT supports following intermediate link rates for edp:
>> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
>> Adding support for programming the intermediate rates.
>>
>> v2: Adding clock in bxt_clk_div struct and then look for the entry with
>> required rate (Ville)
>> v3: 'clock' has the selected value, no need to use link_bw or rate_select
>> for selecting pll(Ville)
>> v4: Make bxt_dp_clk_val const and remove size (Ville)
>> v5: Rebased
>> v6: Removed setting of vco while rebasing in v5, adding it back
>>
>> Signed-off-by: Sonika Jindal 
>> Reviewed-by: Ville Syrjälä (v4)

Pushed to drm-intel-next-queued, thanks for the patch and review.

BR,
Jani.

>> ---
>>   drivers/gpu/drm/i915/intel_ddi.c |   39 
>> --
>>   drivers/gpu/drm/i915/intel_dp.c  |7 ++-
>>   2 files changed, 22 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
>> b/drivers/gpu/drm/i915/intel_ddi.c
>> index cacb07b..2a2518d 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>>
>>   /* bxt clock parameters */
>>   struct bxt_clk_div {
>> +int clock;
>>  uint32_t p1;
>>  uint32_t p2;
>>  uint32_t m2_int;
>> @@ -1343,14 +1344,14 @@ struct bxt_clk_div {
>>   };
>>
>>   /* pre-calculated values for DP linkrates */
>> -static struct bxt_clk_div bxt_dp_clk_val[7] = {
>> -/* 162 */ {4, 2, 32, 1677722, 1, 1},
>> -/* 270 */ {4, 1, 27,   0, 0, 1},
>> -/* 540 */ {2, 1, 27,   0, 0, 1},
>> -/* 216 */ {3, 2, 32, 1677722, 1, 1},
>> -/* 243 */ {4, 1, 24, 1258291, 1, 1},
>> -/* 324 */ {4, 1, 32, 1677722, 1, 1},
>> -/* 432 */ {3, 1, 32, 1677722, 1, 1}
>> +static const struct bxt_clk_div bxt_dp_clk_val[] = {
>> +{162000, 4, 2, 32, 1677722, 1, 1},
>> +{27, 4, 1, 27,   0, 0, 1},
>> +{54, 2, 1, 27,   0, 0, 1},
>> +{216000, 3, 2, 32, 1677722, 1, 1},
>> +{243000, 4, 1, 24, 1258291, 1, 1},
>> +{324000, 4, 1, 32, 1677722, 1, 1},
>> +{432000, 3, 1, 32, 1677722, 1, 1}
>>   };
>>
>>   static bool
>> @@ -1390,22 +1391,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>>  vco = best_clock.vco;
>>  } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
>>  intel_encoder->type == INTEL_OUTPUT_EDP) {
>> -struct drm_encoder *encoder = &intel_encoder->base;
>> -struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>> +int i;
>>
>> -switch (intel_dp->link_bw) {
>> -case DP_LINK_BW_1_62:
>> -clk_div = bxt_dp_clk_val[0];
>> -break;
>> -case DP_LINK_BW_2_7:
>> -clk_div = bxt_dp_clk_val[1];
>> -break;
>> -case DP_LINK_BW_5_4:
>> -clk_div = bxt_dp_clk_val[2];
>> -break;
>> -default:
>> -clk_div = bxt_dp_clk_val[0];
>> -DRM_ERROR("Unknown link rate\n");
>> +clk_div = bxt_dp_clk_val[0];
>> +for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
>> +if (bxt_dp_clk_val[i].clock == clock) {
>> +clk_div = bxt_dp_clk_val[i];
>> +break;
>> +}
>>  }
>>  vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
>>  }
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c 
>> b/drivers/gpu/drm/i915/intel_dp.c
>> index abd442a..bd0f958 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>>  { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>>   };
>>
>> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
>> +  324000, 432000, 54 };
>>   static const int skl_rates[] = { 162000, 216000, 27,
>>324000, 432000, 54 };
>>   static const int chv_rates[] = { 162000, 202500, 21, 216000,
>> @@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
>> int **sink_rates)
>>   static int
>>   intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>>   {
>> -if (IS_SKYLAKE(dev)) {
>> +if (IS_BROXTON(dev)) {
>> +*source_rates = bxt_rates;
>> +return ARRAY_SIZE(bxt_rates);
>> +} else if (IS_SKYLAKE(dev)) {
>>  *source_rates = skl_rates;
>>  return ARRAY_SIZE(skl_rates);
>>  } else if (IS_CHERRYVIEW(dev)) {
>>
> Reviewed-by: Vandana Kannan 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani

Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-06-02 Thread Kannan, Vandana



On 5/26/2015 5:50 PM, Sonika Jindal wrote:

BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)
v5: Rebased
v6: Removed setting of vco while rebasing in v5, adding it back

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä (v4)
---
  drivers/gpu/drm/i915/intel_ddi.c |   39 --
  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
  2 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index cacb07b..2a2518d 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,

  /* bxt clock parameters */
  struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1343,14 +1344,14 @@ struct bxt_clk_div {
  };

  /* pre-calculated values for DP linkrates */
-static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1},
-   /* 270 */ {4, 1, 27,   0, 0, 1},
-   /* 540 */ {2, 1, 27,   0, 0, 1},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1}
+static const struct bxt_clk_div bxt_dp_clk_val[] = {
+   {162000, 4, 2, 32, 1677722, 1, 1},
+   {27, 4, 1, 27,   0, 0, 1},
+   {54, 2, 1, 27,   0, 0, 1},
+   {216000, 3, 2, 32, 1677722, 1, 1},
+   {243000, 4, 1, 24, 1258291, 1, 1},
+   {324000, 4, 1, 32, 1677722, 1, 1},
+   {432000, 3, 1, 32, 1677722, 1, 1}
  };

  static bool
@@ -1390,22 +1391,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
vco = best_clock.vco;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;

-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index abd442a..bd0f958 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
  };

+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
  static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
  static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
  static int
  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
  {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {


Reviewed-by: Vandana Kannan 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-06-02 Thread Jindal, Sonika

Hi Vandana,

Can you please review the v6 of this patch?

This was rebased recently on top of your patch:
 commit b6dc71f38a84e36c5445b95f9f7a2dac6b25636f
 Author: Vandana Kannan 
 Date:   Wed May 13 12:18:52 2015 +0530

  drm/i915/bxt: Port PLL programming BUN

Thanks,
Sonika

On 5/26/2015 5:50 PM, Sonika Jindal wrote:

BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)
v5: Rebased
v6: Removed setting of vco while rebasing in v5, adding it back

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä (v4)
---
  drivers/gpu/drm/i915/intel_ddi.c |   39 --
  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
  2 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index cacb07b..2a2518d 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,

  /* bxt clock parameters */
  struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1343,14 +1344,14 @@ struct bxt_clk_div {
  };

  /* pre-calculated values for DP linkrates */
-static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1},
-   /* 270 */ {4, 1, 27,   0, 0, 1},
-   /* 540 */ {2, 1, 27,   0, 0, 1},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1}
+static const struct bxt_clk_div bxt_dp_clk_val[] = {
+   {162000, 4, 2, 32, 1677722, 1, 1},
+   {27, 4, 1, 27,   0, 0, 1},
+   {54, 2, 1, 27,   0, 0, 1},
+   {216000, 3, 2, 32, 1677722, 1, 1},
+   {243000, 4, 1, 24, 1258291, 1, 1},
+   {324000, 4, 1, 32, 1677722, 1, 1},
+   {432000, 3, 1, 32, 1677722, 1, 1}
  };

  static bool
@@ -1390,22 +1391,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
vco = best_clock.vco;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;

-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index abd442a..bd0f958 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
  };

+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
  static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
  static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
  static int
  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
  {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Sonika Jindal
BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)
v5: Rebased
v6: Removed setting of vco while rebasing in v5, adding it back

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä (v4)
---
 drivers/gpu/drm/i915/intel_ddi.c |   39 --
 drivers/gpu/drm/i915/intel_dp.c  |7 ++-
 2 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index cacb07b..2a2518d 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
 
 /* bxt clock parameters */
 struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1343,14 +1344,14 @@ struct bxt_clk_div {
 };
 
 /* pre-calculated values for DP linkrates */
-static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1},
-   /* 270 */ {4, 1, 27,   0, 0, 1},
-   /* 540 */ {2, 1, 27,   0, 0, 1},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1}
+static const struct bxt_clk_div bxt_dp_clk_val[] = {
+   {162000, 4, 2, 32, 1677722, 1, 1},
+   {27, 4, 1, 27,   0, 0, 1},
+   {54, 2, 1, 27,   0, 0, 1},
+   {216000, 3, 2, 32, 1677722, 1, 1},
+   {243000, 4, 1, 24, 1258291, 1, 1},
+   {324000, 4, 1, 32, 1677722, 1, 1},
+   {432000, 3, 1, 32, 1677722, 1, 1}
 };
 
 static bool
@@ -1390,22 +1391,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
vco = best_clock.vco;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;
 
-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index abd442a..bd0f958 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
 };
 
+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
 static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
 static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
 static int
 intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
 {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {
-- 
1.7.10.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Jindal, Sonika



On 5/26/2015 3:29 PM, Daniel Vetter wrote:

On Tue, May 26, 2015 at 12:57:26PM +0300, Jani Nikula wrote:

On Tue, 26 May 2015, Daniel Vetter  wrote:

On Tue, May 26, 2015 at 02:51:38PM +0530, Sonika Jindal wrote:

BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)
v5: Rebased

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä 


This time applied for really. Somehow the previous attempt fell short, and
digging into git reflog didn't reveal any clues. Sorry for the mess I've
made.


Please drop this, the rebase does not take into account

commit b6dc71f38a84e36c5445b95f9f7a2dac6b25636f
Author: Vandana Kannan 
Date:   Wed May 13 12:18:52 2015 +0530

 drm/i915/bxt: Port PLL programming BUN

and now leaves vco at zero.


Yeah dropped again. I didn't do the rebase myself because of these
functional conflicts, but then totally forgot to check that Sonika
bothered to run the patch first.

Generally when I ask for a rebase it means that there's something
nontrivial going on ...


:( Completely my mistake. Removed that line by mistake :(


Thanks, Daniel


___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Daniel Vetter
On Tue, May 26, 2015 at 12:57:26PM +0300, Jani Nikula wrote:
> On Tue, 26 May 2015, Daniel Vetter  wrote:
> > On Tue, May 26, 2015 at 02:51:38PM +0530, Sonika Jindal wrote:
> >> BXT supports following intermediate link rates for edp:
> >> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> >> Adding support for programming the intermediate rates.
> >> 
> >> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> >> required rate (Ville)
> >> v3: 'clock' has the selected value, no need to use link_bw or rate_select
> >> for selecting pll(Ville)
> >> v4: Make bxt_dp_clk_val const and remove size (Ville)
> >> v5: Rebased
> >> 
> >> Signed-off-by: Sonika Jindal 
> >> Reviewed-by: Ville Syrjälä 
> >
> > This time applied for really. Somehow the previous attempt fell short, and
> > digging into git reflog didn't reveal any clues. Sorry for the mess I've
> > made.
> 
> Please drop this, the rebase does not take into account
> 
> commit b6dc71f38a84e36c5445b95f9f7a2dac6b25636f
> Author: Vandana Kannan 
> Date:   Wed May 13 12:18:52 2015 +0530
> 
> drm/i915/bxt: Port PLL programming BUN
> 
> and now leaves vco at zero.

Yeah dropped again. I didn't do the rebase myself because of these
functional conflicts, but then totally forgot to check that Sonika
bothered to run the patch first.

Generally when I ask for a rebase it means that there's something
nontrivial going on ...

Thanks, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Jani Nikula
On Tue, 26 May 2015, Daniel Vetter  wrote:
> On Tue, May 26, 2015 at 02:51:38PM +0530, Sonika Jindal wrote:
>> BXT supports following intermediate link rates for edp:
>> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
>> Adding support for programming the intermediate rates.
>> 
>> v2: Adding clock in bxt_clk_div struct and then look for the entry with
>> required rate (Ville)
>> v3: 'clock' has the selected value, no need to use link_bw or rate_select
>> for selecting pll(Ville)
>> v4: Make bxt_dp_clk_val const and remove size (Ville)
>> v5: Rebased
>> 
>> Signed-off-by: Sonika Jindal 
>> Reviewed-by: Ville Syrjälä 
>
> This time applied for really. Somehow the previous attempt fell short, and
> digging into git reflog didn't reveal any clues. Sorry for the mess I've
> made.

Please drop this, the rebase does not take into account

commit b6dc71f38a84e36c5445b95f9f7a2dac6b25636f
Author: Vandana Kannan 
Date:   Wed May 13 12:18:52 2015 +0530

drm/i915/bxt: Port PLL programming BUN

and now leaves vco at zero.


BR,
Jani.


> -Daniel
>
>> ---
>>  drivers/gpu/drm/i915/intel_ddi.c |   40 
>> +++---
>>  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
>>  2 files changed, 22 insertions(+), 25 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
>> b/drivers/gpu/drm/i915/intel_ddi.c
>> index cacb07b..eb3238a 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>>  
>>  /* bxt clock parameters */
>>  struct bxt_clk_div {
>> +int clock;
>>  uint32_t p1;
>>  uint32_t p2;
>>  uint32_t m2_int;
>> @@ -1343,14 +1344,14 @@ struct bxt_clk_div {
>>  };
>>  
>>  /* pre-calculated values for DP linkrates */
>> -static struct bxt_clk_div bxt_dp_clk_val[7] = {
>> -/* 162 */ {4, 2, 32, 1677722, 1, 1},
>> -/* 270 */ {4, 1, 27,   0, 0, 1},
>> -/* 540 */ {2, 1, 27,   0, 0, 1},
>> -/* 216 */ {3, 2, 32, 1677722, 1, 1},
>> -/* 243 */ {4, 1, 24, 1258291, 1, 1},
>> -/* 324 */ {4, 1, 32, 1677722, 1, 1},
>> -/* 432 */ {3, 1, 32, 1677722, 1, 1}
>> +static const struct bxt_clk_div bxt_dp_clk_val[] = {
>> +{162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
>> +{27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
>> +{54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
>> +{216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
>> +{243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
>> +{324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
>> +{432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
>>  };
>>  
>>  static bool
>> @@ -1390,24 +1391,15 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>>  vco = best_clock.vco;
>>  } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
>>  intel_encoder->type == INTEL_OUTPUT_EDP) {
>> -struct drm_encoder *encoder = &intel_encoder->base;
>> -struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>> +int i;
>>  
>> -switch (intel_dp->link_bw) {
>> -case DP_LINK_BW_1_62:
>> -clk_div = bxt_dp_clk_val[0];
>> -break;
>> -case DP_LINK_BW_2_7:
>> -clk_div = bxt_dp_clk_val[1];
>> -break;
>> -case DP_LINK_BW_5_4:
>> -clk_div = bxt_dp_clk_val[2];
>> -break;
>> -default:
>> -clk_div = bxt_dp_clk_val[0];
>> -DRM_ERROR("Unknown link rate\n");
>> +clk_div = bxt_dp_clk_val[0];
>> +for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
>> +if (bxt_dp_clk_val[i].clock == clock) {
>> +clk_div = bxt_dp_clk_val[i];
>> +break;
>> +}
>>  }
>> -vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
>>  }
>>  
>>  dco_amp = 15;
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c 
>> b/drivers/gpu/drm/i915/intel_dp.c
>> index abd442a..bd0f958 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>>  { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>>  };
>>  
>> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
>> +  324000, 432000, 54 };
>>  static const int skl_rates[] = { 162000, 216000, 27,
>>324000, 432000, 54 };
>>  static const int chv_rates[] = { 162000, 202500, 21, 216000,
>> @@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
>> int **sink_rates)
>>  static int
>>  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>>  {
>> -if (IS_SKYLAKE(dev)) {
>> +if (IS_BROXTON(dev)) {
>> +*s

Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Jani Nikula
On Tue, 26 May 2015, Sonika Jindal  wrote:
> BXT supports following intermediate link rates for edp:
> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> Adding support for programming the intermediate rates.
>
> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> required rate (Ville)
> v3: 'clock' has the selected value, no need to use link_bw or rate_select
> for selecting pll(Ville)
> v4: Make bxt_dp_clk_val const and remove size (Ville)
> v5: Rebased
>
> Signed-off-by: Sonika Jindal 
> Reviewed-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/intel_ddi.c |   40 
> +++---
>  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
>  2 files changed, 22 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index cacb07b..eb3238a 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>  
>  /* bxt clock parameters */
>  struct bxt_clk_div {
> + int clock;
>   uint32_t p1;
>   uint32_t p2;
>   uint32_t m2_int;
> @@ -1343,14 +1344,14 @@ struct bxt_clk_div {
>  };
>  
>  /* pre-calculated values for DP linkrates */
> -static struct bxt_clk_div bxt_dp_clk_val[7] = {
> - /* 162 */ {4, 2, 32, 1677722, 1, 1},
> - /* 270 */ {4, 1, 27,   0, 0, 1},
> - /* 540 */ {2, 1, 27,   0, 0, 1},
> - /* 216 */ {3, 2, 32, 1677722, 1, 1},
> - /* 243 */ {4, 1, 24, 1258291, 1, 1},
> - /* 324 */ {4, 1, 32, 1677722, 1, 1},
> - /* 432 */ {3, 1, 32, 1677722, 1, 1}
> +static const struct bxt_clk_div bxt_dp_clk_val[] = {
> + {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> + {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> + {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> + {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
>  };
>  
>  static bool
> @@ -1390,24 +1391,15 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>   vco = best_clock.vco;
>   } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
>   intel_encoder->type == INTEL_OUTPUT_EDP) {
> - struct drm_encoder *encoder = &intel_encoder->base;
> - struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> + int i;
>  
> - switch (intel_dp->link_bw) {
> - case DP_LINK_BW_1_62:
> - clk_div = bxt_dp_clk_val[0];
> - break;
> - case DP_LINK_BW_2_7:
> - clk_div = bxt_dp_clk_val[1];
> - break;
> - case DP_LINK_BW_5_4:
> - clk_div = bxt_dp_clk_val[2];
> - break;
> - default:
> - clk_div = bxt_dp_clk_val[0];
> - DRM_ERROR("Unknown link rate\n");
> + clk_div = bxt_dp_clk_val[0];
> + for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
> + if (bxt_dp_clk_val[i].clock == clock) {
> + clk_div = bxt_dp_clk_val[i];
> + break;
> + }
>   }
> - vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;


Without vco set, won't this hit the DRM_ERROR("Invalid VCO\n"); path
right below?

BR,
Jani.



>   }
>  
>   dco_amp = 15;
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index abd442a..bd0f958 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>   { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>  };
>  
> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
> +   324000, 432000, 54 };
>  static const int skl_rates[] = { 162000, 216000, 27,
> 324000, 432000, 54 };
>  static const int chv_rates[] = { 162000, 202500, 21, 216000,
> @@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
> int **sink_rates)
>  static int
>  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>  {
> - if (IS_SKYLAKE(dev)) {
> + if (IS_BROXTON(dev)) {
> + *source_rates = bxt_rates;
> + return ARRAY_SIZE(bxt_rates);
> + } else if (IS_SKYLAKE(dev)) {
>   *source_rates = skl_rates;
>   return ARRAY_SIZE(skl_rates);
>   } else if (IS_CHERRYVIEW(dev)) {
> -- 
> 1.7.10.4
>
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Sourc

Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Daniel Vetter
On Tue, May 26, 2015 at 02:51:38PM +0530, Sonika Jindal wrote:
> BXT supports following intermediate link rates for edp:
> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> Adding support for programming the intermediate rates.
> 
> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> required rate (Ville)
> v3: 'clock' has the selected value, no need to use link_bw or rate_select
> for selecting pll(Ville)
> v4: Make bxt_dp_clk_val const and remove size (Ville)
> v5: Rebased
> 
> Signed-off-by: Sonika Jindal 
> Reviewed-by: Ville Syrjälä 

This time applied for really. Somehow the previous attempt fell short, and
digging into git reflog didn't reveal any clues. Sorry for the mess I've
made.
-Daniel

> ---
>  drivers/gpu/drm/i915/intel_ddi.c |   40 
> +++---
>  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
>  2 files changed, 22 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index cacb07b..eb3238a 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>  
>  /* bxt clock parameters */
>  struct bxt_clk_div {
> + int clock;
>   uint32_t p1;
>   uint32_t p2;
>   uint32_t m2_int;
> @@ -1343,14 +1344,14 @@ struct bxt_clk_div {
>  };
>  
>  /* pre-calculated values for DP linkrates */
> -static struct bxt_clk_div bxt_dp_clk_val[7] = {
> - /* 162 */ {4, 2, 32, 1677722, 1, 1},
> - /* 270 */ {4, 1, 27,   0, 0, 1},
> - /* 540 */ {2, 1, 27,   0, 0, 1},
> - /* 216 */ {3, 2, 32, 1677722, 1, 1},
> - /* 243 */ {4, 1, 24, 1258291, 1, 1},
> - /* 324 */ {4, 1, 32, 1677722, 1, 1},
> - /* 432 */ {3, 1, 32, 1677722, 1, 1}
> +static const struct bxt_clk_div bxt_dp_clk_val[] = {
> + {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> + {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> + {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> + {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
>  };
>  
>  static bool
> @@ -1390,24 +1391,15 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>   vco = best_clock.vco;
>   } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
>   intel_encoder->type == INTEL_OUTPUT_EDP) {
> - struct drm_encoder *encoder = &intel_encoder->base;
> - struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> + int i;
>  
> - switch (intel_dp->link_bw) {
> - case DP_LINK_BW_1_62:
> - clk_div = bxt_dp_clk_val[0];
> - break;
> - case DP_LINK_BW_2_7:
> - clk_div = bxt_dp_clk_val[1];
> - break;
> - case DP_LINK_BW_5_4:
> - clk_div = bxt_dp_clk_val[2];
> - break;
> - default:
> - clk_div = bxt_dp_clk_val[0];
> - DRM_ERROR("Unknown link rate\n");
> + clk_div = bxt_dp_clk_val[0];
> + for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
> + if (bxt_dp_clk_val[i].clock == clock) {
> + clk_div = bxt_dp_clk_val[i];
> + break;
> + }
>   }
> - vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
>   }
>  
>   dco_amp = 15;
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index abd442a..bd0f958 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>   { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>  };
>  
> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
> +   324000, 432000, 54 };
>  static const int skl_rates[] = { 162000, 216000, 27,
> 324000, 432000, 54 };
>  static const int chv_rates[] = { 162000, 202500, 21, 216000,
> @@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
> int **sink_rates)
>  static int
>  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>  {
> - if (IS_SKYLAKE(dev)) {
> + if (IS_BROXTON(dev)) {
> + *source_rates = bxt_rates;
> + return ARRAY_SIZE(bxt_rates);
> + } else if (IS_SKYLAKE(dev)) {
>   *source_rates = skl_rates;
>   return ARRAY_SIZE(skl_rates);
>   } else if (IS_CHERRYVIEW(dev)) {
> -- 
> 1.7.10.4
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> 

[Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-26 Thread Sonika Jindal
BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)
v5: Rebased

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/intel_ddi.c |   40 +++---
 drivers/gpu/drm/i915/intel_dp.c  |7 ++-
 2 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index cacb07b..eb3238a 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1334,6 +1334,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
 
 /* bxt clock parameters */
 struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1343,14 +1344,14 @@ struct bxt_clk_div {
 };
 
 /* pre-calculated values for DP linkrates */
-static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1},
-   /* 270 */ {4, 1, 27,   0, 0, 1},
-   /* 540 */ {2, 1, 27,   0, 0, 1},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1}
+static const struct bxt_clk_div bxt_dp_clk_val[] = {
+   {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
+   {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
+   {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
+   {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
 };
 
 static bool
@@ -1390,24 +1391,15 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
vco = best_clock.vco;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;
 
-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
-   vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2;
}
 
dco_amp = 15;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index abd442a..bd0f958 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -91,6 +91,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
 };
 
+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
 static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
 static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1170,7 +1172,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
 static int
 intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
 {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {
-- 
1.7.10.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-14 Thread shuang . he
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: 
shuang...@intel.com)
Task id: 6379
-Summary-
Platform  Delta  drm-intel-nightly  Series Applied
PNV -3  272/272  269/272
ILK  302/302  302/302
SNB -1  315/315  314/315
IVB  343/343  343/343
BYT  287/287  287/287
BDW  317/317  317/317
-Detailed-
Platform  Testdrm-intel-nightly  Series 
Applied
*PNV  igt@gem_tiled_pread_pwrite  PASS(2)  FAIL(1)
*PNV  igt@gem_userptr_blits@coherency-sync  PASS(2)  CRASH(1)
*PNV  igt@gem_userptr_blits@coherency-unsync  PASS(2)  CRASH(1)
 SNB  igt@pm_rpm@dpms-mode-unset-non-lpsp  DMESG_WARN(7)PASS(1)  
DMESG_WARN(1)
(dmesg patch 
applied)WARNING:at_drivers/gpu/drm/i915/intel_uncore.c:#assert_device_not_suspended[i915]()@WARNING:.*
 at .* assert_device_not_suspended+0x
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/bxt: edp1.4 Intermediate Freq support

2015-05-11 Thread Daniel Vetter
On Mon, May 11, 2015 at 01:21:43PM +0530, Sonika Jindal wrote:
> BXT supports following intermediate link rates for edp:
> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> Adding support for programming the intermediate rates.
> 
> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> required rate (Ville)
> v3: 'clock' has the selected value, no need to use link_bw or rate_select
> for selecting pll(Ville)
> v4: Make bxt_dp_clk_val const and remove size (Ville)
> 
> Signed-off-by: Sonika Jindal 
> Reviewed-by: Ville Syrjälä 

Queued for -next, thanks for the patch.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-11 Thread Sonika Jindal
BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)
v4: Make bxt_dp_clk_val const and remove size (Ville)

Signed-off-by: Sonika Jindal 
Reviewed-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/intel_ddi.c |   39 --
 drivers/gpu/drm/i915/intel_dp.c  |7 ++-
 2 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9c1e74a..c648289 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1327,6 +1327,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
 
 /* bxt clock parameters */
 struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1341,14 +1342,14 @@ struct bxt_clk_div {
 };
 
 /* pre-calculated values for DP linkrates */
-static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 270 */ {4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
-   /* 540 */ {2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
+static const struct bxt_clk_div bxt_dp_clk_val[] = {
+   {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
+   {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
+   {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
+   {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
 };
 
 static bool
@@ -1399,22 +1400,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
clk_div.lanestagger = 0x02;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;
 
-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
}
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index c9d50d1..e6ee7c6 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -85,6 +85,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
 };
 
+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
 static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
 static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1161,7 +1163,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
 static int
 intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
 {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {
-- 
1.7.10.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-08 Thread shuang . he
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: 
shuang...@intel.com)
Task id: 6354
-Summary-
Platform  Delta  drm-intel-nightly  Series Applied
PNV  276/276  276/276
ILK  302/302  302/302
SNB  316/316  316/316
IVB  342/342  342/342
BYT  286/286  286/286
BDW  321/321  321/321
-Detailed-
Platform  Testdrm-intel-nightly  Series 
Applied
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/bxt: edp1.4 Intermediate Freq support

2015-05-08 Thread Ville Syrjälä
On Fri, May 08, 2015 at 11:04:06AM +0530, Sonika Jindal wrote:
> BXT supports following intermediate link rates for edp:
> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> Adding support for programming the intermediate rates.
> 
> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> required rate (Ville)
> v3: 'clock' has the selected value, no need to use link_bw or rate_select
> for selecting pll(Ville)
> 
> Signed-off-by: Sonika Jindal 
> ---
>  drivers/gpu/drm/i915/intel_ddi.c |   37 +++--
>  drivers/gpu/drm/i915/intel_dp.c  |7 ++-
>  2 files changed, 21 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 9c1e74a..83bb04d 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1327,6 +1327,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>  
>  /* bxt clock parameters */
>  struct bxt_clk_div {
> + int clock;
>   uint32_t p1;
>   uint32_t p2;
>   uint32_t m2_int;
> @@ -1342,13 +1343,13 @@ struct bxt_clk_div {
>  
>  /* pre-calculated values for DP linkrates */
>  static struct bxt_clk_div bxt_dp_clk_val[7] = {

Just noticed someone forgot to make this array const. Please do that too.
Also no need to specify an explict size for it.

> - /* 162 */ {4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 270 */ {4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> - /* 540 */ {2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> - /* 216 */ {3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 243 */ {4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 324 */ {4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 432 */ {3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
> + {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> + {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> + {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> + {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
>  };
>  
>  static bool
> @@ -1399,22 +1400,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>   clk_div.lanestagger = 0x02;
>   } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
>   intel_encoder->type == INTEL_OUTPUT_EDP) {
> - struct drm_encoder *encoder = &intel_encoder->base;
> - struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> + int i;
>  
> - switch (intel_dp->link_bw) {
> - case DP_LINK_BW_1_62:
> - clk_div = bxt_dp_clk_val[0];
> - break;
> - case DP_LINK_BW_2_7:
> - clk_div = bxt_dp_clk_val[1];
> - break;
> - case DP_LINK_BW_5_4:
> - clk_div = bxt_dp_clk_val[2];
> - break;
> - default:
> - clk_div = bxt_dp_clk_val[0];
> - DRM_ERROR("Unknown link rate\n");
> + clk_div = bxt_dp_clk_val[0];
> + for (i = 0; i < 7; ++i) {

ARRAY_SIZE()

With that stuff changed this is 
Reviewed-by: Ville Syrjälä 

> + if (bxt_dp_clk_val[i].clock == clock) {
> + clk_div = bxt_dp_clk_val[i];
> + break;
> + }
>   }
>   }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index c9d50d1..e6ee7c6 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -85,6 +85,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>   { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>  };
>  
> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
> +   324000, 432000, 54 };
>  static const int skl_rates[] = { 162000, 216000, 27,
> 324000, 432000, 54 };
>  static const int chv_rates[] = { 162000, 202500, 21, 216000,
> @@ -1161,7 +1163,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
> int **sink_rates)
>  static int
>  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>  {
> - if (IS_SKYLAKE(dev)) {
> + if (IS_BROXTON(dev)) {
> + *source_rates = bxt_rates;
> + return ARRAY_SIZE(bxt_rates);
> + } else if (IS_SKYLAKE(dev)) {
>   *source_rates = skl_rates;
>   return ARRAY_SIZE(skl_rates);
>   } else if (IS_CHERRYVIEW(dev)) {
> -- 
> 1.7.10.4

-- 
Ville Syrjälä
Intel OTC
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-08 Thread shuang . he
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: 
shuang...@intel.com)
Task id: 6344
-Summary-
Platform  Delta  drm-intel-nightly  Series Applied
PNV  276/276  276/276
ILK  302/302  302/302
SNB  316/316  316/316
IVB  342/342  342/342
BYT  286/286  286/286
BDW  321/321  321/321
-Detailed-
Platform  Testdrm-intel-nightly  Series 
Applied
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


[Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-07 Thread Sonika Jindal
BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)
v3: 'clock' has the selected value, no need to use link_bw or rate_select
for selecting pll(Ville)

Signed-off-by: Sonika Jindal 
---
 drivers/gpu/drm/i915/intel_ddi.c |   37 +++--
 drivers/gpu/drm/i915/intel_dp.c  |7 ++-
 2 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9c1e74a..83bb04d 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1327,6 +1327,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
 
 /* bxt clock parameters */
 struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1342,13 +1343,13 @@ struct bxt_clk_div {
 
 /* pre-calculated values for DP linkrates */
 static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 270 */ {4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
-   /* 540 */ {2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
+   {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
+   {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
+   {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
+   {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
 };
 
 static bool
@@ -1399,22 +1400,14 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
clk_div.lanestagger = 0x02;
} else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT ||
intel_encoder->type == INTEL_OUTPUT_EDP) {
-   struct drm_encoder *encoder = &intel_encoder->base;
-   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int i;
 
-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < 7; ++i) {
+   if (bxt_dp_clk_val[i].clock == clock) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
}
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index c9d50d1..e6ee7c6 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -85,6 +85,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
 };
 
+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
 static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
 static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1161,7 +1163,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
 static int
 intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
 {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {
-- 
1.7.10.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-07 Thread Ville Syrjälä
On Thu, May 07, 2015 at 04:36:48PM +0530, Sonika Jindal wrote:
> BXT supports following intermediate link rates for edp:
> 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
> Adding support for programming the intermediate rates.
> 
> v2: Adding clock in bxt_clk_div struct and then look for the entry with
> required rate (Ville)
> 
> Signed-off-by: Sonika Jindal 
> ---
>  drivers/gpu/drm/i915/intel_ddi.c |   45 
> +-
>  drivers/gpu/drm/i915/intel_dp.c  |7 +-
>  2 files changed, 31 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 9c1e74a..7b9d226 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1327,6 +1327,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
>  
>  /* bxt clock parameters */
>  struct bxt_clk_div {
> + int clock;
>   uint32_t p1;
>   uint32_t p2;
>   uint32_t m2_int;
> @@ -1342,13 +1343,13 @@ struct bxt_clk_div {
>  
>  /* pre-calculated values for DP linkrates */
>  static struct bxt_clk_div bxt_dp_clk_val[7] = {
> - /* 162 */ {4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 270 */ {4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> - /* 540 */ {2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> - /* 216 */ {3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 243 */ {4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 324 */ {4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> - /* 432 */ {3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
> + {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
> + {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
> + {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
> + {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
> + {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
>  };
>  
>  static bool
> @@ -1401,20 +1402,24 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
>   intel_encoder->type == INTEL_OUTPUT_EDP) {
>   struct drm_encoder *encoder = &intel_encoder->base;
>   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> + int link_rate;
> + int i;
>  
> - switch (intel_dp->link_bw) {
> - case DP_LINK_BW_1_62:
> - clk_div = bxt_dp_clk_val[0];
> - break;
> - case DP_LINK_BW_2_7:
> - clk_div = bxt_dp_clk_val[1];
> - break;
> - case DP_LINK_BW_5_4:
> - clk_div = bxt_dp_clk_val[2];
> - break;
> - default:
> - clk_div = bxt_dp_clk_val[0];
> - DRM_ERROR("Unknown link rate\n");
> + /*
> +  * If edp1.4 intermediate frequency support is present, we set
> +  * link_bw to 0 and a valid rate index in rate_select.
> +  */
> + if (intel_dp->link_bw)
> + link_rate = clock;
> + else
> + link_rate = intel_dp->sink_rates[intel_dp->rate_select];

'clock' should be correct in either case.

> +
> + clk_div = bxt_dp_clk_val[0];
> + for (i = 0; i < 7; ++i) {
> + if (bxt_dp_clk_val[i].clock == link_rate) {
> + clk_div = bxt_dp_clk_val[i];
> + break;
> + }
>   }
>   }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index c9d50d1..e6ee7c6 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -85,6 +85,8 @@ static const struct dp_link_dpll chv_dpll[] = {
>   { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
>  };
>  
> +static const int bxt_rates[] = { 162000, 216000, 243000, 27,
> +   324000, 432000, 54 };
>  static const int skl_rates[] = { 162000, 216000, 27,
> 324000, 432000, 54 };
>  static const int chv_rates[] = { 162000, 202500, 21, 216000,
> @@ -1161,7 +1163,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const 
> int **sink_rates)
>  static int
>  intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
>  {
> - if (IS_SKYLAKE(dev)) {
> + if (IS_BROXTON(dev)) {
> + *source_rates = bxt_rates;
> + return ARRAY_SIZE(bxt_rates);
> + } else if (IS_SKYLAKE(dev)) {
>   *source_rates = skl_rates;
>   return ARRAY_SIZE(skl_rates);
>   } else if (IS_CHERRYVIEW(dev)) {
> -- 
> 1.7.10.4

-- 
Ville Syrjälä
Intel OTC
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/i

[Intel-gfx] [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support

2015-05-07 Thread Sonika Jindal
BXT supports following intermediate link rates for edp:
2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz.
Adding support for programming the intermediate rates.

v2: Adding clock in bxt_clk_div struct and then look for the entry with
required rate (Ville)

Signed-off-by: Sonika Jindal 
---
 drivers/gpu/drm/i915/intel_ddi.c |   45 +-
 drivers/gpu/drm/i915/intel_dp.c  |7 +-
 2 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 9c1e74a..7b9d226 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1327,6 +1327,7 @@ skl_ddi_pll_select(struct intel_crtc *intel_crtc,
 
 /* bxt clock parameters */
 struct bxt_clk_div {
+   int clock;
uint32_t p1;
uint32_t p2;
uint32_t m2_int;
@@ -1342,13 +1343,13 @@ struct bxt_clk_div {
 
 /* pre-calculated values for DP linkrates */
 static struct bxt_clk_div bxt_dp_clk_val[7] = {
-   /* 162 */ {4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 270 */ {4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
-   /* 540 */ {2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
-   /* 216 */ {3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 243 */ {4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 324 */ {4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
-   /* 432 */ {3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
+   {162000, 4, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {27, 4, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0xd},
+   {54, 2, 1, 27,   0, 0, 1, 3,  8, 1, 9, 0x18},
+   {216000, 3, 2, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {243000, 4, 1, 24, 1258291, 1, 1, 5, 11, 2, 9, 0xd},
+   {324000, 4, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0xd},
+   {432000, 3, 1, 32, 1677722, 1, 1, 5, 11, 2, 9, 0x18}
 };
 
 static bool
@@ -1401,20 +1402,24 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc,
intel_encoder->type == INTEL_OUTPUT_EDP) {
struct drm_encoder *encoder = &intel_encoder->base;
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
+   int link_rate;
+   int i;
 
-   switch (intel_dp->link_bw) {
-   case DP_LINK_BW_1_62:
-   clk_div = bxt_dp_clk_val[0];
-   break;
-   case DP_LINK_BW_2_7:
-   clk_div = bxt_dp_clk_val[1];
-   break;
-   case DP_LINK_BW_5_4:
-   clk_div = bxt_dp_clk_val[2];
-   break;
-   default:
-   clk_div = bxt_dp_clk_val[0];
-   DRM_ERROR("Unknown link rate\n");
+   /*
+* If edp1.4 intermediate frequency support is present, we set
+* link_bw to 0 and a valid rate index in rate_select.
+*/
+   if (intel_dp->link_bw)
+   link_rate = clock;
+   else
+   link_rate = intel_dp->sink_rates[intel_dp->rate_select];
+
+   clk_div = bxt_dp_clk_val[0];
+   for (i = 0; i < 7; ++i) {
+   if (bxt_dp_clk_val[i].clock == link_rate) {
+   clk_div = bxt_dp_clk_val[i];
+   break;
+   }
}
}
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index c9d50d1..e6ee7c6 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -85,6 +85,8 @@ static const struct dp_link_dpll chv_dpll[] = {
{ .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c0 } }
 };
 
+static const int bxt_rates[] = { 162000, 216000, 243000, 27,
+ 324000, 432000, 54 };
 static const int skl_rates[] = { 162000, 216000, 27,
  324000, 432000, 54 };
 static const int chv_rates[] = { 162000, 202500, 21, 216000,
@@ -1161,7 +1163,10 @@ intel_dp_sink_rates(struct intel_dp *intel_dp, const int 
**sink_rates)
 static int
 intel_dp_source_rates(struct drm_device *dev, const int **source_rates)
 {
-   if (IS_SKYLAKE(dev)) {
+   if (IS_BROXTON(dev)) {
+   *source_rates = bxt_rates;
+   return ARRAY_SIZE(bxt_rates);
+   } else if (IS_SKYLAKE(dev)) {
*source_rates = skl_rates;
return ARRAY_SIZE(skl_rates);
} else if (IS_CHERRYVIEW(dev)) {
-- 
1.7.10.4

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx