Re: [PATCH 21/89] drm/i915/skl: Implement the get_aux_clock_divider() DP vfunc

Damien Lespiau
2014-09-22T13:21:18Z

On Tue, Sep 16, 2014 at 06:12:04PM -0700, Rodrigo Vivi wrote:
> I believe this patch should remove the gen9 part of
> ilk_get_aux_clock_divider.

The previous patch changing ilk_get_aux_clock_divider() got removed
entirely.

> Also there it just returns 0, but here it returns 0 or 1 depending on the
> index.
> This also is incoherent with the commit description.

Yes, when the index is 0, we need to return a non 0 value (chose 1) to
have the code using this vfunc loop once. Then, when the index is
incremented, we return 0 to stop the loop.

--
Damien

> On Thu, Sep 4, 2014 at 4:26 AM, Damien Lespiau <damien.lespiau@intel.com>
> wrote:
>
> We need to provide a vfunc that will make the code in intel_dp_aux_ch()
> loop once to start the AUX transaction. The return value (clock divider)
> is unused on SKL, so just return 1.
>
> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c
> b/drivers/gpu/drm/i915/intel_dp.c
> index a95fb47..4560ced 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -489,6 +489,16 @@ static uint32_t vlv_get_aux_clock_divider(struct
> intel_dp *intel_dp, int index)
> return index ? 0 : 100;
> }
>
> +static uint32_t skl_get_aux_clock_divider(struct intel_dp *intel_dp,
> int index)
> +{
> + /*
> + * SKL doesn't need us to program the AUX clock divider
> (Hardware will
> + * derive the clock from CDCLK automatically). We still
> implement the
> + * get_aux_clock_divider vfunc to plug-in into the existing
> code.
> + */
> + return index ? 0 : 1;
> +}
> +
> static uint32_t i9xx_get_aux_send_ctl(struct intel_dp *intel_dp,
> bool has_aux_irq,
> int send_bytes,
> @@ -4726,7 +4736,9 @@ intel_dp_init_connector(struct intel_digital_port
> *intel_dig_port,
> int type;
>
> /* intel_dp vfuncs */
> - if (IS_VALLEYVIEW(dev))
> + if (INTEL_INFO(dev)->gen >= 9)
> + intel_dp->get_aux_clock_divider =
> skl_get_aux_clock_divider;
> + else if (IS_VALLEYVIEW(dev))
> intel_dp->get_aux_clock_divider =
> vlv_get_aux_clock_divider;
> else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
> intel_dp->get_aux_clock_divider =
> hsw_get_aux_clock_divider;
> --
> 1.8.3.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Rodrigo Vivi
> Blog: http://blog.vivi.eng.br
>