* [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz @ 2015-05-07 4:22 Sonika Jindal 2015-05-07 4:22 ` [PATCH 2/3] drm/i915: Rename dp rates array as per platform Sonika Jindal ` (2 more replies) 0 siblings, 3 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-07 4:22 UTC (permalink / raw) To: intel-gfx The sink rate read from supported link rate table is in KHz as per spec while in drm, the saved clock is in deca-KHz. So divide the link rate by 10 before storing. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> --- Just resending it along with the other intermediate link rate patches (It was posted orginally on 21st April) Thanks, Sonika drivers/gpu/drm/i915/intel_dp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index bacdec5..6bd5afb 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3906,7 +3906,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) if (val == 0) break; - intel_dp->sink_rates[i] = val * 200; + /* Value read is in kHz while drm clock is saved in deca-kHz */ + intel_dp->sink_rates[i] = (val * 200) / 10; } intel_dp->num_sink_rates = i; } -- 1.7.10.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH 2/3] drm/i915: Rename dp rates array as per platform 2015-05-07 4:22 [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Sonika Jindal @ 2015-05-07 4:22 ` Sonika Jindal 2015-05-07 8:35 ` Ville Syrjälä 2015-05-07 4:22 ` [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support Sonika Jindal 2015-05-07 8:10 ` [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Jani Nikula 2 siblings, 1 reply; 33+ messages in thread From: Sonika Jindal @ 2015-05-07 4:22 UTC (permalink / raw) To: intel-gfx Renaming gen9_rates to skl_rates because other platforms may have different supported rates. Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> --- drivers/gpu/drm/i915/intel_dp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 6bd5afb..c9d50d1 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -84,8 +84,8 @@ static const struct dp_link_dpll chv_dpll[] = { { DP_LINK_BW_5_4, /* m2_int = 27, m2_fraction = 0 */ { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c00000 } } }; -/* Skylake supports following rates */ -static const int gen9_rates[] = { 162000, 216000, 270000, + +static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 216000, 243000, 270000, 324000, 405000, @@ -1161,9 +1161,9 @@ 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 (INTEL_INFO(dev)->gen >= 9) { - *source_rates = gen9_rates; - return ARRAY_SIZE(gen9_rates); + if (IS_SKYLAKE(dev)) { + *source_rates = skl_rates; + return ARRAY_SIZE(skl_rates); } else if (IS_CHERRYVIEW(dev)) { *source_rates = chv_rates; return ARRAY_SIZE(chv_rates); -- 1.7.10.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH 2/3] drm/i915: Rename dp rates array as per platform 2015-05-07 4:22 ` [PATCH 2/3] drm/i915: Rename dp rates array as per platform Sonika Jindal @ 2015-05-07 8:35 ` Ville Syrjälä 2015-05-07 13:19 ` Daniel Vetter 0 siblings, 1 reply; 33+ messages in thread From: Ville Syrjälä @ 2015-05-07 8:35 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx On Thu, May 07, 2015 at 09:52:08AM +0530, Sonika Jindal wrote: > Renaming gen9_rates to skl_rates because other platforms may have different > supported rates. > > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_dp.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 6bd5afb..c9d50d1 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -84,8 +84,8 @@ static const struct dp_link_dpll chv_dpll[] = { > { DP_LINK_BW_5_4, /* m2_int = 27, m2_fraction = 0 */ > { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c00000 } } > }; > -/* Skylake supports following rates */ > -static const int gen9_rates[] = { 162000, 216000, 270000, > + > +static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 216000, > 243000, 270000, 324000, 405000, > @@ -1161,9 +1161,9 @@ 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 (INTEL_INFO(dev)->gen >= 9) { > - *source_rates = gen9_rates; > - return ARRAY_SIZE(gen9_rates); > + if (IS_SKYLAKE(dev)) { > + *source_rates = skl_rates; > + return ARRAY_SIZE(skl_rates); > } else if (IS_CHERRYVIEW(dev)) { > *source_rates = chv_rates; > return ARRAY_SIZE(chv_rates); > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 2/3] drm/i915: Rename dp rates array as per platform 2015-05-07 8:35 ` Ville Syrjälä @ 2015-05-07 13:19 ` Daniel Vetter 0 siblings, 0 replies; 33+ messages in thread From: Daniel Vetter @ 2015-05-07 13:19 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx On Thu, May 07, 2015 at 11:35:40AM +0300, Ville Syrjälä wrote: > On Thu, May 07, 2015 at 09:52:08AM +0530, Sonika Jindal wrote: > > Renaming gen9_rates to skl_rates because other platforms may have different > > supported rates. > > > > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 4:22 [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Sonika Jindal 2015-05-07 4:22 ` [PATCH 2/3] drm/i915: Rename dp rates array as per platform Sonika Jindal @ 2015-05-07 4:22 ` Sonika Jindal 2015-05-07 8:41 ` Ville Syrjälä 2015-05-07 19:04 ` [PATCH 3/3] " shuang.he 2015-05-07 8:10 ` [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Jani Nikula 2 siblings, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-07 4:22 UTC (permalink / raw) To: intel-gfx BXT supports following intermediate link rates for edp: 2.16GHz, 2.43GHz, 3.24GHz, 4.32GHz. Adding support for programming the intermediate rates. Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> --- drivers/gpu/drm/i915/intel_ddi.c | 44 ++++++++++++++++++++++++++++++++++++-- drivers/gpu/drm/i915/intel_dp.c | 7 +++++- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 9c1e74a..c0cb5f7 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c @@ -1397,8 +1397,7 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, clk_div.lanestagger = 0x04; else clk_div.lanestagger = 0x02; - } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || - intel_encoder->type == INTEL_OUTPUT_EDP) { + } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { struct drm_encoder *encoder = &intel_encoder->base; struct intel_dp *intel_dp = enc_to_intel_dp(encoder); @@ -1416,8 +1415,49 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, clk_div = bxt_dp_clk_val[0]; DRM_ERROR("Unknown link rate\n"); } + } else if (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; + + /* + * 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 = drm_dp_bw_code_to_link_rate(intel_dp->link_bw); + else + link_rate = intel_dp->sink_rates[intel_dp->rate_select]; + + switch (link_rate) { + case 162000: + clk_div = bxt_dp_clk_val[0]; + break; + case 216000: + clk_div = bxt_dp_clk_val[3]; + break; + case 243000: + clk_div = bxt_dp_clk_val[4]; + break; + case 270000: + clk_div = bxt_dp_clk_val[1]; + break; + case 324000: + clk_div = bxt_dp_clk_val[5]; + break; + case 432000: + clk_div = bxt_dp_clk_val[6]; + break; + case 540000: + clk_div = bxt_dp_clk_val[2]; + break; + default: + clk_div = bxt_dp_clk_val[0]; + DRM_ERROR("Unknown link rate\n"); + } } + crtc_state->dpll_hw_state.ebb0 = PORT_PLL_P1(clk_div.p1) | PORT_PLL_P2(clk_div.p2); crtc_state->dpll_hw_state.pll0 = clk_div.m2_int; 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 4:22 ` [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support Sonika Jindal @ 2015-05-07 8:41 ` Ville Syrjälä 2015-05-07 8:57 ` Jindal, Sonika 2015-05-07 19:04 ` [PATCH 3/3] " shuang.he 1 sibling, 1 reply; 33+ messages in thread From: Ville Syrjälä @ 2015-05-07 8:41 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx On Thu, May 07, 2015 at 09:52:09AM +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. > > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > --- > drivers/gpu/drm/i915/intel_ddi.c | 44 ++++++++++++++++++++++++++++++++++++-- > drivers/gpu/drm/i915/intel_dp.c | 7 +++++- > 2 files changed, 48 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index 9c1e74a..c0cb5f7 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -1397,8 +1397,7 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, > clk_div.lanestagger = 0x04; > else > clk_div.lanestagger = 0x02; > - } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || > - intel_encoder->type == INTEL_OUTPUT_EDP) { > + } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { > struct drm_encoder *encoder = &intel_encoder->base; > struct intel_dp *intel_dp = enc_to_intel_dp(encoder); > > @@ -1416,8 +1415,49 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, > clk_div = bxt_dp_clk_val[0]; > DRM_ERROR("Unknown link rate\n"); > } > + } else if (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; > + > + /* > + * 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 = drm_dp_bw_code_to_link_rate(intel_dp->link_bw); > + else > + link_rate = intel_dp->sink_rates[intel_dp->rate_select]; The chosen clock should already be passed in, so no there should be no need for this. I see the DP case does has the same issue. > + > + switch (link_rate) { > + case 162000: > + clk_div = bxt_dp_clk_val[0]; > + break; > + case 216000: > + clk_div = bxt_dp_clk_val[3]; > + break; > + case 243000: > + clk_div = bxt_dp_clk_val[4]; > + break; > + case 270000: > + clk_div = bxt_dp_clk_val[1]; > + break; > + case 324000: > + clk_div = bxt_dp_clk_val[5]; > + break; > + case 432000: > + clk_div = bxt_dp_clk_val[6]; > + break; > + case 540000: > + clk_div = bxt_dp_clk_val[2]; > + break; > + default: > + clk_div = bxt_dp_clk_val[0]; > + DRM_ERROR("Unknown link rate\n"); > + } This looks rather fragile. I would suggest storing the link rate in the bxt_clk_div structure and just looping through the array looking for the correct rate. That will also work for normal DP, so less code in the end. > } > > + Spurious whitespace. > crtc_state->dpll_hw_state.ebb0 = > PORT_PLL_P1(clk_div.p1) | PORT_PLL_P2(clk_div.p2); > crtc_state->dpll_hw_state.pll0 = clk_div.m2_int; > 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 8:41 ` Ville Syrjälä @ 2015-05-07 8:57 ` Jindal, Sonika 2015-05-07 11:06 ` [PATCH] " Sonika Jindal 0 siblings, 1 reply; 33+ messages in thread From: Jindal, Sonika @ 2015-05-07 8:57 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx On 5/7/2015 2:11 PM, Ville Syrjälä wrote: > On Thu, May 07, 2015 at 09:52:09AM +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. >> >> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> >> --- >> drivers/gpu/drm/i915/intel_ddi.c | 44 ++++++++++++++++++++++++++++++++++++-- >> drivers/gpu/drm/i915/intel_dp.c | 7 +++++- >> 2 files changed, 48 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c >> index 9c1e74a..c0cb5f7 100644 >> --- a/drivers/gpu/drm/i915/intel_ddi.c >> +++ b/drivers/gpu/drm/i915/intel_ddi.c >> @@ -1397,8 +1397,7 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, >> clk_div.lanestagger = 0x04; >> else >> clk_div.lanestagger = 0x02; >> - } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || >> - intel_encoder->type == INTEL_OUTPUT_EDP) { >> + } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { >> struct drm_encoder *encoder = &intel_encoder->base; >> struct intel_dp *intel_dp = enc_to_intel_dp(encoder); >> >> @@ -1416,8 +1415,49 @@ bxt_ddi_pll_select(struct intel_crtc *intel_crtc, >> clk_div = bxt_dp_clk_val[0]; >> DRM_ERROR("Unknown link rate\n"); >> } >> + } else if (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; >> + >> + /* >> + * 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 = drm_dp_bw_code_to_link_rate(intel_dp->link_bw); >> + else >> + link_rate = intel_dp->sink_rates[intel_dp->rate_select]; > > The chosen clock should already be passed in, so no there should be no > need for this. I see the DP case does has the same issue. Yes it was copied from DP :) > >> + >> + switch (link_rate) { >> + case 162000: >> + clk_div = bxt_dp_clk_val[0]; >> + break; >> + case 216000: >> + clk_div = bxt_dp_clk_val[3]; >> + break; >> + case 243000: >> + clk_div = bxt_dp_clk_val[4]; >> + break; >> + case 270000: >> + clk_div = bxt_dp_clk_val[1]; >> + break; >> + case 324000: >> + clk_div = bxt_dp_clk_val[5]; >> + break; >> + case 432000: >> + clk_div = bxt_dp_clk_val[6]; >> + break; >> + case 540000: >> + clk_div = bxt_dp_clk_val[2]; >> + break; >> + default: >> + clk_div = bxt_dp_clk_val[0]; >> + DRM_ERROR("Unknown link rate\n"); >> + } > > This looks rather fragile. I would suggest storing the link rate in > the bxt_clk_div structure and just looping through the array looking for > the correct rate. That will also work for normal DP, so less code in the > end. Ok, I will do that. > >> } >> >> + > > Spurious whitespace. :( > >> crtc_state->dpll_hw_state.ebb0 = >> PORT_PLL_P1(clk_div.p1) | PORT_PLL_P2(clk_div.p2); >> crtc_state->dpll_hw_state.pll0 = clk_div.m2_int; >> 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 = 0x6c00000 } } >> }; >> >> +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, >> + 324000, 432000, 540000 }; >> static const int skl_rates[] = { 162000, 216000, 270000, >> 324000, 432000, 540000 }; >> static const int chv_rates[] = { 162000, 202500, 210000, 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 > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 8:57 ` Jindal, Sonika @ 2015-05-07 11:06 ` Sonika Jindal 2015-05-07 15:34 ` Ville Syrjälä 2015-05-08 7:39 ` shuang.he 0 siblings, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-07 11:06 UTC (permalink / raw) To: intel-gfx 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 <sonika.jindal@intel.com> --- 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}, + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, + {540000, 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 11:06 ` [PATCH] " Sonika Jindal @ 2015-05-07 15:34 ` Ville Syrjälä 2015-05-08 5:34 ` Sonika Jindal 2015-05-08 7:39 ` shuang.he 1 sibling, 1 reply; 33+ messages in thread From: Ville Syrjälä @ 2015-05-07 15:34 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx 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 <sonika.jindal@intel.com> > --- > 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}, > + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, > + {540000, 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 15:34 ` Ville Syrjälä @ 2015-05-08 5:34 ` Sonika Jindal 2015-05-08 12:26 ` Ville Syrjälä 2015-05-08 19:30 ` shuang.he 0 siblings, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-08 5:34 UTC (permalink / raw) To: intel-gfx 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 <sonika.jindal@intel.com> --- 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}, + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, + {540000, 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-08 5:34 ` Sonika Jindal @ 2015-05-08 12:26 ` Ville Syrjälä 2015-05-11 7:51 ` Sonika Jindal 2015-05-26 9:21 ` Sonika Jindal 2015-05-08 19:30 ` shuang.he 1 sibling, 2 replies; 33+ messages in thread From: Ville Syrjälä @ 2015-05-08 12:26 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx 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 <sonika.jindal@intel.com> > --- > 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}, > + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, > + {540000, 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ä <ville.syrjala@linux.intel.com> > + 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-08 12:26 ` Ville Syrjälä @ 2015-05-11 7:51 ` Sonika Jindal 2015-05-11 9:51 ` Daniel Vetter 2015-05-14 13:30 ` shuang.he 2015-05-26 9:21 ` Sonika Jindal 1 sibling, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-11 7:51 UTC (permalink / raw) To: intel-gfx 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 <sonika.jindal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- 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}, + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, + {540000, 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-11 7:51 ` Sonika Jindal @ 2015-05-11 9:51 ` Daniel Vetter 2015-05-14 13:30 ` shuang.he 1 sibling, 0 replies; 33+ messages in thread From: Daniel Vetter @ 2015-05-11 9:51 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx 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 <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-11 7:51 ` Sonika Jindal 2015-05-11 9:51 ` Daniel Vetter @ 2015-05-14 13:30 ` shuang.he 1 sibling, 0 replies; 33+ messages in thread From: shuang.he @ 2015-05-14 13:30 UTC (permalink / raw) To: shuang.he, ethan.gao, intel-gfx, sonika.jindal Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@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 Test drm-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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-08 12:26 ` Ville Syrjälä 2015-05-11 7:51 ` Sonika Jindal @ 2015-05-26 9:21 ` Sonika Jindal 2015-05-26 9:48 ` Daniel Vetter 2015-05-26 9:54 ` Jani Nikula 1 sibling, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-26 9:21 UTC (permalink / raw) To: intel-gfx 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 <sonika.jindal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- 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}, + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, + {540000, 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 9:21 ` Sonika Jindal @ 2015-05-26 9:48 ` Daniel Vetter 2015-05-26 9:57 ` Jani Nikula 2015-05-26 9:54 ` Jani Nikula 1 sibling, 1 reply; 33+ messages in thread From: Daniel Vetter @ 2015-05-26 9:48 UTC (permalink / raw) To: Sonika Jindal; +Cc: intel-gfx 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 <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> 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}, > + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, > + {540000, 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 -- 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 9:48 ` Daniel Vetter @ 2015-05-26 9:57 ` Jani Nikula 2015-05-26 9:59 ` Daniel Vetter 0 siblings, 1 reply; 33+ messages in thread From: Jani Nikula @ 2015-05-26 9:57 UTC (permalink / raw) To: Daniel Vetter, Sonika Jindal; +Cc: intel-gfx On Tue, 26 May 2015, Daniel Vetter <daniel@ffwll.ch> 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 <sonika.jindal@intel.com> >> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > 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 <vandana.kannan@intel.com> 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}, >> + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, >> + {540000, 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 = 0x6c00000 } } >> }; >> >> +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, >> + 324000, 432000, 540000 }; >> static const int skl_rates[] = { 162000, 216000, 270000, >> 324000, 432000, 540000 }; >> static const int chv_rates[] = { 162000, 202500, 210000, 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 > > -- > 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 -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 9:57 ` Jani Nikula @ 2015-05-26 9:59 ` Daniel Vetter 2015-05-26 10:21 ` Jindal, Sonika 0 siblings, 1 reply; 33+ messages in thread From: Daniel Vetter @ 2015-05-26 9:59 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx On Tue, May 26, 2015 at 12:57:26PM +0300, Jani Nikula wrote: > On Tue, 26 May 2015, Daniel Vetter <daniel@ffwll.ch> 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 <sonika.jindal@intel.com> > >> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > > 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 <vandana.kannan@intel.com> > 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 9:59 ` Daniel Vetter @ 2015-05-26 10:21 ` Jindal, Sonika 2015-05-26 12:20 ` Sonika Jindal 0 siblings, 1 reply; 33+ messages in thread From: Jindal, Sonika @ 2015-05-26 10:21 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula; +Cc: intel-gfx 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 <daniel@ffwll.ch> 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 <sonika.jindal@intel.com> >>>> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> >>> >>> 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 <vandana.kannan@intel.com> >> 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 10:21 ` Jindal, Sonika @ 2015-05-26 12:20 ` Sonika Jindal 2015-06-03 5:19 ` Jindal, Sonika 2015-06-03 6:31 ` Kannan, Vandana 0 siblings, 2 replies; 33+ messages in thread From: Sonika Jindal @ 2015-05-26 12:20 UTC (permalink / raw) To: intel-gfx 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 <sonika.jindal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>(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}, + {270000, 4, 1, 27, 0, 0, 1}, + {540000, 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 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 12:20 ` Sonika Jindal @ 2015-06-03 5:19 ` Jindal, Sonika 2015-06-03 6:31 ` Kannan, Vandana 1 sibling, 0 replies; 33+ messages in thread From: Jindal, Sonika @ 2015-06-03 5:19 UTC (permalink / raw) To: Sonika Jindal, intel-gfx, vandana.kannan 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 <vandana.kannan@intel.com> 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 <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>(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}, > + {270000, 4, 1, 27, 0, 0, 1}, > + {540000, 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 12:20 ` Sonika Jindal 2015-06-03 5:19 ` Jindal, Sonika @ 2015-06-03 6:31 ` Kannan, Vandana 2015-06-03 8:00 ` Jani Nikula 1 sibling, 1 reply; 33+ messages in thread From: Kannan, Vandana @ 2015-06-03 6:31 UTC (permalink / raw) To: Sonika Jindal, intel-gfx 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 <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>(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}, > + {270000, 4, 1, 27, 0, 0, 1}, > + {540000, 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 <vandana.kannan@intel.com> _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-06-03 6:31 ` Kannan, Vandana @ 2015-06-03 8:00 ` Jani Nikula 0 siblings, 0 replies; 33+ messages in thread From: Jani Nikula @ 2015-06-03 8:00 UTC (permalink / raw) To: Kannan, Vandana, Sonika Jindal, intel-gfx On Wed, 03 Jun 2015, "Kannan, Vandana" <vandana.kannan@intel.com> 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 <sonika.jindal@intel.com> >> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>(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}, >> + {270000, 4, 1, 27, 0, 0, 1}, >> + {540000, 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 = 0x6c00000 } } >> }; >> >> +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, >> + 324000, 432000, 540000 }; >> static const int skl_rates[] = { 162000, 216000, 270000, >> 324000, 432000, 540000 }; >> static const int chv_rates[] = { 162000, 202500, 210000, 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 <vandana.kannan@intel.com> > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-26 9:21 ` Sonika Jindal 2015-05-26 9:48 ` Daniel Vetter @ 2015-05-26 9:54 ` Jani Nikula 1 sibling, 0 replies; 33+ messages in thread From: Jani Nikula @ 2015-05-26 9:54 UTC (permalink / raw) To: Sonika Jindal, intel-gfx On Tue, 26 May 2015, Sonika Jindal <sonika.jindal@intel.com> 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 <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > 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}, > + {270000, 4, 1, 27, 0, 0, 1, 3, 8, 1, 9, 0xd}, > + {540000, 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 = 0x6c00000 } } > }; > > +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, > + 324000, 432000, 540000 }; > static const int skl_rates[] = { 162000, 216000, 270000, > 324000, 432000, 540000 }; > static const int chv_rates[] = { 162000, 202500, 210000, 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 Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-08 5:34 ` Sonika Jindal 2015-05-08 12:26 ` Ville Syrjälä @ 2015-05-08 19:30 ` shuang.he 1 sibling, 0 replies; 33+ messages in thread From: shuang.he @ 2015-05-08 19:30 UTC (permalink / raw) To: shuang.he, ethan.gao, intel-gfx, sonika.jindal Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@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 Test drm-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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 11:06 ` [PATCH] " Sonika Jindal 2015-05-07 15:34 ` Ville Syrjälä @ 2015-05-08 7:39 ` shuang.he 1 sibling, 0 replies; 33+ messages in thread From: shuang.he @ 2015-05-08 7:39 UTC (permalink / raw) To: shuang.he, ethan.gao, intel-gfx, sonika.jindal Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@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 Test drm-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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support 2015-05-07 4:22 ` [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support Sonika Jindal 2015-05-07 8:41 ` Ville Syrjälä @ 2015-05-07 19:04 ` shuang.he 1 sibling, 0 replies; 33+ messages in thread From: shuang.he @ 2015-05-07 19:04 UTC (permalink / raw) To: shuang.he, ethan.gao, intel-gfx, sonika.jindal Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) Task id: 6338 -------------------------------------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 Test drm-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 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz 2015-05-07 4:22 [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Sonika Jindal 2015-05-07 4:22 ` [PATCH 2/3] drm/i915: Rename dp rates array as per platform Sonika Jindal 2015-05-07 4:22 ` [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support Sonika Jindal @ 2015-05-07 8:10 ` Jani Nikula 2015-05-07 8:34 ` Ville Syrjälä 2 siblings, 1 reply; 33+ messages in thread From: Jani Nikula @ 2015-05-07 8:10 UTC (permalink / raw) To: Sonika Jindal, intel-gfx On Thu, 07 May 2015, Sonika Jindal <sonika.jindal@intel.com> wrote: > The sink rate read from supported link rate table is in KHz as per spec > while in drm, the saved clock is in deca-KHz. So divide the link rate by > 10 before storing. Please refer to the commit which broke things. git blame is your friend. We need the information to know which kernel version the bug has landed or is about to land to, so we can queue the fix in the same place. If developers don't do this, maintainers will have to anyway, which doesn't scale well, which leads to grumpy maintainers. ;) Thanks, Jani. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > --- > Just resending it along with the other intermediate link rate patches > (It was posted orginally on 21st April) > > Thanks, > Sonika > > drivers/gpu/drm/i915/intel_dp.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index bacdec5..6bd5afb 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -3906,7 +3906,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > if (val == 0) > break; > > - intel_dp->sink_rates[i] = val * 200; > + /* Value read is in kHz while drm clock is saved in deca-kHz */ > + intel_dp->sink_rates[i] = (val * 200) / 10; > } > intel_dp->num_sink_rates = i; > } > -- > 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 Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz 2015-05-07 8:10 ` [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Jani Nikula @ 2015-05-07 8:34 ` Ville Syrjälä 2015-05-07 8:29 ` [PATCH] " Sonika Jindal 0 siblings, 1 reply; 33+ messages in thread From: Ville Syrjälä @ 2015-05-07 8:34 UTC (permalink / raw) To: Jani Nikula; +Cc: intel-gfx On Thu, May 07, 2015 at 11:10:30AM +0300, Jani Nikula wrote: > On Thu, 07 May 2015, Sonika Jindal <sonika.jindal@intel.com> wrote: > > The sink rate read from supported link rate table is in KHz as per spec > > while in drm, the saved clock is in deca-KHz. So divide the link rate by > > 10 before storing. > > Please refer to the commit which broke things. git blame is your > friend. We need the information to know which kernel version the bug has > landed or is about to land to, so we can queue the fix in the same > place. > > If developers don't do this, maintainers will have to anyway, which > doesn't scale well, which leads to grumpy maintainers. ;) Indeed, now I wonder if I broke it during the refactoring or was it already like that before that. Hmm. Doesn't look like it was me, but I did fail to spot it during the review :( Anyway, with the commit msg amended to Jani's liking this is: Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Thanks, > Jani. > > > > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > > --- > > Just resending it along with the other intermediate link rate patches > > (It was posted orginally on 21st April) > > > > Thanks, > > Sonika > > > > drivers/gpu/drm/i915/intel_dp.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > > index bacdec5..6bd5afb 100644 > > --- a/drivers/gpu/drm/i915/intel_dp.c > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > @@ -3906,7 +3906,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > > if (val == 0) > > break; > > > > - intel_dp->sink_rates[i] = val * 200; > > + /* Value read is in kHz while drm clock is saved in deca-kHz */ > > + intel_dp->sink_rates[i] = (val * 200) / 10; > > } > > intel_dp->num_sink_rates = i; > > } > > -- > > 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 Source Technology Center > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915: Sink rate read should be saved in deca-kHz 2015-05-07 8:34 ` Ville Syrjälä @ 2015-05-07 8:29 ` Sonika Jindal 2015-05-07 8:58 ` Jani Nikula 0 siblings, 1 reply; 33+ messages in thread From: Sonika Jindal @ 2015-05-07 8:29 UTC (permalink / raw) To: intel-gfx The sink rate read from supported link rate table is in KHz as per spec while in drm, the saved clock is in deca-KHz. So divide the link rate by 10 before storing. Reading of rates was added by: commit fc0f8e25318f ("drm/i915/skl: Read sink supported rates from edp panel") Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- drivers/gpu/drm/i915/intel_dp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index bacdec5..6bd5afb 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3906,7 +3906,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) if (val == 0) break; - intel_dp->sink_rates[i] = val * 200; + /* Value read is in kHz while drm clock is saved in deca-kHz */ + intel_dp->sink_rates[i] = (val * 200) / 10; } intel_dp->num_sink_rates = i; } -- 1.7.10.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915: Sink rate read should be saved in deca-kHz 2015-05-07 8:29 ` [PATCH] " Sonika Jindal @ 2015-05-07 8:58 ` Jani Nikula 0 siblings, 0 replies; 33+ messages in thread From: Jani Nikula @ 2015-05-07 8:58 UTC (permalink / raw) To: Sonika Jindal, intel-gfx On Thu, 07 May 2015, Sonika Jindal <sonika.jindal@intel.com> wrote: > The sink rate read from supported link rate table is in KHz as per spec > while in drm, the saved clock is in deca-KHz. So divide the link rate by > 10 before storing. > > Reading of rates was added by: > commit fc0f8e25318f ("drm/i915/skl: Read sink supported rates from edp > panel") Thanks; now this git spell $ git tag --contains fc0f8e25318f | grep ^v[0-9] | sort -V | head -n 1 v4.1-rc1 will tell me I need to queue this one to v4.1 through drm-intel-fixes while the rest is for Daniel to merge to drm-intel-next-queued. Pushed, thanks for the patch and review. BR, Jani. > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_dp.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index bacdec5..6bd5afb 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -3906,7 +3906,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) > if (val == 0) > break; > > - intel_dp->sink_rates[i] = val * 200; > + /* Value read is in kHz while drm clock is saved in deca-kHz */ > + intel_dp->sink_rates[i] = (val * 200) / 10; > } > intel_dp->num_sink_rates = i; > } > -- > 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 Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH] drm/i915: Sink rate read should be saved in deca-kHz @ 2015-04-21 5:33 Sonika Jindal 2015-04-21 10:31 ` shuang.he 0 siblings, 1 reply; 33+ messages in thread From: Sonika Jindal @ 2015-04-21 5:33 UTC (permalink / raw) To: intel-gfx The sink rate read from supported link rate table is in KHz as per spec while in drm, the saved clock is in deca-KHz. So divide the link rate by 10 before storing. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> --- drivers/gpu/drm/i915/intel_dp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 14cdd00..ae2cfc3 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3833,7 +3833,8 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) if (val == 0) break; - intel_dp->sink_rates[i] = val * 200; + /* Value read is in kHz while drm clock is saved in deca-kHz */ + intel_dp->sink_rates[i] = (val * 200) / 10; } intel_dp->num_sink_rates = i; } -- 1.7.10.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH] drm/i915: Sink rate read should be saved in deca-kHz 2015-04-21 5:33 Sonika Jindal @ 2015-04-21 10:31 ` shuang.he 0 siblings, 0 replies; 33+ messages in thread From: shuang.he @ 2015-04-21 10:31 UTC (permalink / raw) To: shuang.he, ethan.gao, intel-gfx, sonika.jindal Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) Task id: 6242 -------------------------------------Summary------------------------------------- Platform Delta drm-intel-nightly Series Applied PNV 276/276 276/276 ILK 302/302 302/302 SNB 318/318 318/318 IVB 341/341 341/341 BYT 287/287 287/287 BDW 318/318 318/318 -------------------------------------Detailed------------------------------------- Platform Test drm-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 ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2015-06-03 7:58 UTC | newest] Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-05-07 4:22 [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Sonika Jindal 2015-05-07 4:22 ` [PATCH 2/3] drm/i915: Rename dp rates array as per platform Sonika Jindal 2015-05-07 8:35 ` Ville Syrjälä 2015-05-07 13:19 ` Daniel Vetter 2015-05-07 4:22 ` [PATCH 3/3] drm/i915/bxt: edp1.4 Intermediate Freq support Sonika Jindal 2015-05-07 8:41 ` Ville Syrjälä 2015-05-07 8:57 ` Jindal, Sonika 2015-05-07 11:06 ` [PATCH] " Sonika Jindal 2015-05-07 15:34 ` Ville Syrjälä 2015-05-08 5:34 ` Sonika Jindal 2015-05-08 12:26 ` Ville Syrjälä 2015-05-11 7:51 ` Sonika Jindal 2015-05-11 9:51 ` Daniel Vetter 2015-05-14 13:30 ` shuang.he 2015-05-26 9:21 ` Sonika Jindal 2015-05-26 9:48 ` Daniel Vetter 2015-05-26 9:57 ` Jani Nikula 2015-05-26 9:59 ` Daniel Vetter 2015-05-26 10:21 ` Jindal, Sonika 2015-05-26 12:20 ` Sonika Jindal 2015-06-03 5:19 ` Jindal, Sonika 2015-06-03 6:31 ` Kannan, Vandana 2015-06-03 8:00 ` Jani Nikula 2015-05-26 9:54 ` Jani Nikula 2015-05-08 19:30 ` shuang.he 2015-05-08 7:39 ` shuang.he 2015-05-07 19:04 ` [PATCH 3/3] " shuang.he 2015-05-07 8:10 ` [PATCH 1/3] drm/i915: Sink rate read should be saved in deca-kHz Jani Nikula 2015-05-07 8:34 ` Ville Syrjälä 2015-05-07 8:29 ` [PATCH] " Sonika Jindal 2015-05-07 8:58 ` Jani Nikula -- strict thread matches above, loose matches on Subject: below -- 2015-04-21 5:33 Sonika Jindal 2015-04-21 10:31 ` shuang.he
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.