All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>,
	intel-gfx@lists.freedesktop.org,
	Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH] drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin.
Date: Fri, 20 Oct 2017 20:40:10 +0300	[thread overview]
Message-ID: <20171020174010.GR10981@intel.com> (raw)
In-Reply-To: <20171020172641.16029-1-rodrigo.vivi@intel.com>

On Fri, Oct 20, 2017 at 10:26:41AM -0700, Rodrigo Vivi wrote:
> Starting on CNL we now need to map VBT DDC Pin to
> BSPec DDC Pin values. Not a direct translation anymore.
> 
> According to VBT
> Block 2 (General Bytes Definition)
> DDC Bus
> 
> +----------+-----------+--------------------+
> | DDI Type | VBT Value | Bspec Mapped Value |
> +----------+-----------+--------------------+
> | DDI-B    | 0x1       | 0x1                |
> | DDI-C    | 0x2       | 0x2                |
> | DDI-D    | 0x3       | 0x4                |
> | DDI-F    | 0x4       | 0x3                |
> +----------+-----------+--------------------+
> 
> v2: Move defines to a better place.
>     This is actually CNL_PCH not CNL only.
> v3: Accepting Ville's suggestions: enums and array to
>     to make this future proof.
> v4: Protect the array access as Ville suggested.
>     Also accepting all Jani's suggestions:
>     	      - use already defined gmbus pin definitions.
> 	      - use map_ddc_pin for disambiguation.
> 	      - Add /* sic */ comment on inverted values
> 	      	so people can easily see it it nos a mistake
> 		we have the map 3 -> 4 and 4 -> 3 :/
> 
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
> Cc: Clinton Taylor <clinton.a.taylor@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_bios.c     | 27 +++++++++++++++++----------
>  drivers/gpu/drm/i915/intel_vbt_defs.h |  8 ++++++++
>  2 files changed, 25 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index e809a9c347d3..a95cf07bd8e1 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -1071,6 +1071,22 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
>  	}
>  }
>  
> +static const u8 cnp_ddc_pin_map[] = {
> +	[DDC_BUS_DDI_B] = GMBUS_PIN_1_BXT,
> +	[DDC_BUS_DDI_C] = GMBUS_PIN_2_BXT,
> +	[DDC_BUS_DDI_D] = GMBUS_PIN_4_CNP, /* sic */
> +	[DDC_BUS_DDI_F] = GMBUS_PIN_3_BXT, /* sic */
> +};
> +
> +static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
> +{
> +	if (HAS_PCH_CNP(dev_priv) &&
> +	    vbt_pin > 0 && vbt_pin < ARRAY_SIZE(cnp_ddc_pin_map))
> +		return cnp_ddc_pin_map[vbt_pin];

Not quite sure what we should do with invalid pins. But I guess this
makes as much sense as anything.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +
> +	return vbt_pin;
> +}
> +
>  static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
>  			   u8 bdb_version)
>  {
> @@ -1163,16 +1179,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
>  		DRM_DEBUG_KMS("Port %c is internal DP\n", port_name(port));
>  
>  	if (is_dvi) {
> -		info->alternate_ddc_pin = ddc_pin;
> -
> -		/*
> -		 * All VBTs that we got so far for B Stepping has this
> -		 * information wrong for Port D. So, let's just ignore for now.
> -		 */
> -		if (IS_CNL_REVID(dev_priv, CNL_REVID_B0, CNL_REVID_B0) &&
> -		    port == PORT_D) {
> -			info->alternate_ddc_pin = 0;
> -		}
> +		info->alternate_ddc_pin = map_ddc_pin(dev_priv, ddc_pin);
>  
>  		sanitize_ddc_pin(dev_priv, port);
>  	}
> diff --git a/drivers/gpu/drm/i915/intel_vbt_defs.h b/drivers/gpu/drm/i915/intel_vbt_defs.h
> index 404569c9fdfc..f225c288a121 100644
> --- a/drivers/gpu/drm/i915/intel_vbt_defs.h
> +++ b/drivers/gpu/drm/i915/intel_vbt_defs.h
> @@ -306,6 +306,14 @@ struct bdb_general_features {
>  
>  #define LEGACY_CHILD_DEVICE_CONFIG_SIZE		33
>  
> +/* DDC Bus DDI Type 155+ */
> +enum vbt_gmbus_ddi {
> +	DDC_BUS_DDI_B = 0x1,
> +	DDC_BUS_DDI_C,
> +	DDC_BUS_DDI_D,
> +	DDC_BUS_DDI_F,
> +};
> +
>  /*
>   * The child device config, aka the display device data structure, provides a
>   * description of a port and its configuration on the platform.
> -- 
> 2.13.5

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

  reply	other threads:[~2017-10-20 17:40 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-19 15:45 [PATCH] drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin Rodrigo Vivi
2017-10-19 16:02 ` Rodrigo Vivi
2017-10-19 16:02 ` Ville Syrjälä
2017-10-19 21:11   ` Rodrigo Vivi
2017-10-20  9:11     ` Jani Nikula
2017-10-20 11:25       ` Ville Syrjälä
2017-10-20 11:29         ` Jani Nikula
2017-10-20 17:26           ` Rodrigo Vivi
2017-10-20 17:40             ` Ville Syrjälä [this message]
2017-10-20 23:24               ` Rodrigo Vivi
2017-10-19 16:12 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-10-19 16:34 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin. (rev2) Patchwork
2017-10-19 17:23 ` ✓ Fi.CI.IGT: " Patchwork
2017-10-19 21:32 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin. (rev3) Patchwork
2017-10-19 22:29 ` ✓ Fi.CI.IGT: " Patchwork
2017-10-20 18:07 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Map VBT DDC Pin to BSpec DDC Pin. (rev4) Patchwork
2017-10-20 20:04 ` ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171020174010.GR10981@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=paulo.r.zanoni@intel.com \
    --cc=rodrigo.vivi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.