[Intel-gfx] [PATCH v2] drm/i915/bxt: Fix off-by-one error in Broxton PLL IDs

Ander Conselvan De Oliveira conselvan2 at gmail.com
Tue Mar 15 07:50:21 UTC 2016


On Mon, 2016-03-14 at 19:55 +0200, Imre Deak wrote:
> After the commit below the Broxton PLL IDs had an off-by-one error, so
> fix this up. Also add a missing brace at intel_shared_dpll_init(), it
> happened to compile only due to the way the IS_BROXTON macro is defined.
> 
> v2:
> - remove debugging left-over
> 
> Fixes: a3c988ea068c ("drm/i915: Make SKL/KBL DPLL0 managed by the shared dpll
> code")
> CC: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
> CC: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c  | 6 +++---
>  drivers/gpu/drm/i915/intel_dpll_mgr.c | 8 ++++----
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index a720628..3cbb02b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -9762,15 +9762,15 @@ static void bxt_get_ddi_pll(struct drm_i915_private
> *dev_priv,
>  	switch (port) {
>  	case PORT_A:
>  		pipe_config->ddi_pll_sel = SKL_DPLL0;
> -		id = DPLL_ID_SKL_DPLL1;
> +		id = DPLL_ID_SKL_DPLL0;
>  		break;
>  	case PORT_B:
>  		pipe_config->ddi_pll_sel = SKL_DPLL1;
> -		id = DPLL_ID_SKL_DPLL2;
> +		id = DPLL_ID_SKL_DPLL1;
>  		break;
>  	case PORT_C:
>  		pipe_config->ddi_pll_sel = SKL_DPLL2;
> -		id = DPLL_ID_SKL_DPLL3;
> +		id = DPLL_ID_SKL_DPLL2;

Hmm, I think the mistake is that BXT relied on SKL DPLL ids in the first place.
This is fine as a fix up, but maybe it would be better to just add separate ids
for broxton too. Or even better, get rid of pll->id.

>  		break;
>  	default:
>  		DRM_ERROR("Incorrect port type\n");
> diff --git a/drivers/gpu/drm/i915/intel_dpll_mgr.c
> b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> index 4b636c4..74d5aec 100644
> --- a/drivers/gpu/drm/i915/intel_dpll_mgr.c
> +++ b/drivers/gpu/drm/i915/intel_dpll_mgr.c
> @@ -1706,9 +1706,9 @@ static const struct intel_dpll_mgr skl_pll_mgr = {
>  };
>  
>  static const struct dpll_info bxt_plls[] = {
> -	{ "PORT PLL A", 0, &bxt_ddi_pll_funcs, 0 },
> -	{ "PORT PLL B", 1, &bxt_ddi_pll_funcs, 0 },
> -	{ "PORT PLL C", 2, &bxt_ddi_pll_funcs, 0 },
> +	{ "PORT PLL A", DPLL_ID_SKL_DPLL0, &bxt_ddi_pll_funcs, 0 },
> +	{ "PORT PLL B", DPLL_ID_SKL_DPLL1, &bxt_ddi_pll_funcs, 0 },
> +	{ "PORT PLL C", DPLL_ID_SKL_DPLL2, &bxt_ddi_pll_funcs, 0 },
>  	{ NULL, -1, NULL, },
>  };
>  
> @@ -1726,7 +1726,7 @@ void intel_shared_dpll_init(struct drm_device *dev)
>  
>  	if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev))
>  		dpll_mgr = &skl_pll_mgr;
> -	else if IS_BROXTON(dev)
> +	else if (IS_BROXTON(dev))

Wow, really don't know how I managed to do this. Thanks for fixing.

Reviewed-by: Ander Conselvan de Oliveira <conselvan2 at gmail.com>

>  		dpll_mgr = &bxt_pll_mgr;
>  	else if (HAS_DDI(dev))
>  		dpll_mgr = &hsw_pll_mgr;


More information about the Intel-gfx mailing list