All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/4] drm/i915: abstract PCH type detection from PCH id
Date: Tue, 13 Feb 2018 17:35:58 +0200	[thread overview]
Message-ID: <87sha4lx5t.fsf@intel.com> (raw)
In-Reply-To: <20180205222149.ujrv536wrqlx2pke@intel.com>

On Mon, 05 Feb 2018, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote:
> On Mon, Feb 05, 2018 at 05:31:36PM +0000, Jani Nikula wrote:
>> Make the logic in intel_detect_pch() easier to follow, and make the PCH
>> id to type mapping reusable. No functional changes.
>
> I wondered here if we should change intel_pch from enum to array
> { pch_id, pch_type, supported_platforms, "name" }
>
> but besides requiring a loop at this point supported_platforms would
> be tricky one.

I think both Ville and I tried to figure out a handy way to express the
supported platforms statically, but didn't come up with anything.

Pushed the series, thanks for the review.

BR,
Jani.

>
> so, never mind...
>
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
>> ---
>>  drivers/gpu/drm/i915/i915_drv.c | 148 ++++++++++++++++++++--------------------
>>  1 file changed, 73 insertions(+), 75 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
>> index e9f1daf258fe..08e97b6e976b 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.c
>> +++ b/drivers/gpu/drm/i915/i915_drv.c
>> @@ -122,6 +122,75 @@ static bool i915_error_injected(struct drm_i915_private *dev_priv)
>>  		      i915_error_injected(dev_priv) ? KERN_DEBUG : KERN_ERR, \
>>  		      fmt, ##__VA_ARGS__)
>>  
>> +/* Map PCH device id to PCH type, or PCH_NONE if unknown. */
>> +static enum intel_pch
>> +intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)
>> +{
>> +	switch (id) {
>> +	case INTEL_PCH_IBX_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found Ibex Peak PCH\n");
>> +		WARN_ON(!IS_GEN5(dev_priv));
>> +		return PCH_IBX;
>> +	case INTEL_PCH_CPT_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found CougarPoint PCH\n");
>> +		WARN_ON(!IS_GEN6(dev_priv) && !IS_IVYBRIDGE(dev_priv));
>> +		return PCH_CPT;
>> +	case INTEL_PCH_PPT_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found PantherPoint PCH\n");
>> +		WARN_ON(!IS_GEN6(dev_priv) && !IS_IVYBRIDGE(dev_priv));
>> +		/* PantherPoint is CPT compatible */
>> +		return PCH_CPT;
>> +	case INTEL_PCH_LPT_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found LynxPoint PCH\n");
>> +		WARN_ON(!IS_HASWELL(dev_priv) && !IS_BROADWELL(dev_priv));
>> +		WARN_ON(IS_HSW_ULT(dev_priv) || IS_BDW_ULT(dev_priv));
>> +		return PCH_LPT;
>> +	case INTEL_PCH_LPT_LP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found LynxPoint LP PCH\n");
>> +		WARN_ON(!IS_HASWELL(dev_priv) && !IS_BROADWELL(dev_priv));
>> +		WARN_ON(!IS_HSW_ULT(dev_priv) && !IS_BDW_ULT(dev_priv));
>> +		return PCH_LPT;
>> +	case INTEL_PCH_WPT_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found WildcatPoint PCH\n");
>> +		WARN_ON(!IS_HASWELL(dev_priv) && !IS_BROADWELL(dev_priv));
>> +		WARN_ON(IS_HSW_ULT(dev_priv) || IS_BDW_ULT(dev_priv));
>> +		/* WildcatPoint is LPT compatible */
>> +		return PCH_LPT;
>> +	case INTEL_PCH_WPT_LP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found WildcatPoint LP PCH\n");
>> +		WARN_ON(!IS_HASWELL(dev_priv) && !IS_BROADWELL(dev_priv));
>> +		WARN_ON(!IS_HSW_ULT(dev_priv) && !IS_BDW_ULT(dev_priv));
>> +		/* WildcatPoint is LPT compatible */
>> +		return PCH_LPT;
>> +	case INTEL_PCH_SPT_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found SunrisePoint PCH\n");
>> +		WARN_ON(!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv));
>> +		return PCH_SPT;
>> +	case INTEL_PCH_SPT_LP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found SunrisePoint LP PCH\n");
>> +		WARN_ON(!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv));
>> +		return PCH_SPT;
>> +	case INTEL_PCH_KBP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found Kaby Lake PCH (KBP)\n");
>> +		WARN_ON(!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv) &&
>> +			!IS_COFFEELAKE(dev_priv));
>> +		return PCH_KBP;
>> +	case INTEL_PCH_CNP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found Cannon Lake PCH (CNP)\n");
>> +		WARN_ON(!IS_CANNONLAKE(dev_priv) && !IS_COFFEELAKE(dev_priv));
>> +		return PCH_CNP;
>> +	case INTEL_PCH_CNP_LP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found Cannon Lake LP PCH (CNP-LP)\n");
>> +		WARN_ON(!IS_CANNONLAKE(dev_priv) && !IS_COFFEELAKE(dev_priv));
>> +		return PCH_CNP;
>> +	case INTEL_PCH_ICP_DEVICE_ID_TYPE:
>> +		DRM_DEBUG_KMS("Found Ice Lake PCH\n");
>> +		WARN_ON(!IS_ICELAKE(dev_priv));
>> +		return PCH_ICP;
>> +	default:
>> +		return PCH_NONE;
>> +	}
>> +}
>>  
>>  static enum intel_pch intel_virt_detect_pch(struct drm_i915_private *dev_priv)
>>  {
>> @@ -183,6 +252,7 @@ static void intel_detect_pch(struct drm_i915_private *dev_priv)
>>  	 */
>>  	while ((pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, pch))) {
>>  		unsigned short id;
>> +		enum intel_pch pch_type;
>>  
>>  		if (pch->vendor != PCI_VENDOR_ID_INTEL)
>>  			continue;
>> @@ -191,81 +261,9 @@ static void intel_detect_pch(struct drm_i915_private *dev_priv)
>>  
>>  		dev_priv->pch_id = id;
>>  
>> -		if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_IBX;
>> -			DRM_DEBUG_KMS("Found Ibex Peak PCH\n");
>> -			WARN_ON(!IS_GEN5(dev_priv));
>> -		} else if (id == INTEL_PCH_CPT_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_CPT;
>> -			DRM_DEBUG_KMS("Found CougarPoint PCH\n");
>> -			WARN_ON(!IS_GEN6(dev_priv) &&
>> -				!IS_IVYBRIDGE(dev_priv));
>> -		} else if (id == INTEL_PCH_PPT_DEVICE_ID_TYPE) {
>> -			/* PantherPoint is CPT compatible */
>> -			dev_priv->pch_type = PCH_CPT;
>> -			DRM_DEBUG_KMS("Found PantherPoint PCH\n");
>> -			WARN_ON(!IS_GEN6(dev_priv) &&
>> -				!IS_IVYBRIDGE(dev_priv));
>> -		} else if (id == INTEL_PCH_LPT_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_LPT;
>> -			DRM_DEBUG_KMS("Found LynxPoint PCH\n");
>> -			WARN_ON(!IS_HASWELL(dev_priv) &&
>> -				!IS_BROADWELL(dev_priv));
>> -			WARN_ON(IS_HSW_ULT(dev_priv) ||
>> -				IS_BDW_ULT(dev_priv));
>> -		} else if (id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_LPT;
>> -			DRM_DEBUG_KMS("Found LynxPoint LP PCH\n");
>> -			WARN_ON(!IS_HASWELL(dev_priv) &&
>> -				!IS_BROADWELL(dev_priv));
>> -			WARN_ON(!IS_HSW_ULT(dev_priv) &&
>> -				!IS_BDW_ULT(dev_priv));
>> -		} else if (id == INTEL_PCH_WPT_DEVICE_ID_TYPE) {
>> -			/* WildcatPoint is LPT compatible */
>> -			dev_priv->pch_type = PCH_LPT;
>> -			DRM_DEBUG_KMS("Found WildcatPoint PCH\n");
>> -			WARN_ON(!IS_HASWELL(dev_priv) &&
>> -				!IS_BROADWELL(dev_priv));
>> -			WARN_ON(IS_HSW_ULT(dev_priv) ||
>> -				IS_BDW_ULT(dev_priv));
>> -		} else if (id == INTEL_PCH_WPT_LP_DEVICE_ID_TYPE) {
>> -			/* WildcatPoint is LPT compatible */
>> -			dev_priv->pch_type = PCH_LPT;
>> -			DRM_DEBUG_KMS("Found WildcatPoint LP PCH\n");
>> -			WARN_ON(!IS_HASWELL(dev_priv) &&
>> -				!IS_BROADWELL(dev_priv));
>> -			WARN_ON(!IS_HSW_ULT(dev_priv) &&
>> -				!IS_BDW_ULT(dev_priv));
>> -		} else if (id == INTEL_PCH_SPT_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_SPT;
>> -			DRM_DEBUG_KMS("Found SunrisePoint PCH\n");
>> -			WARN_ON(!IS_SKYLAKE(dev_priv) &&
>> -				!IS_KABYLAKE(dev_priv));
>> -		} else if (id == INTEL_PCH_SPT_LP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_SPT;
>> -			DRM_DEBUG_KMS("Found SunrisePoint LP PCH\n");
>> -			WARN_ON(!IS_SKYLAKE(dev_priv) &&
>> -				!IS_KABYLAKE(dev_priv));
>> -		} else if (id == INTEL_PCH_KBP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_KBP;
>> -			DRM_DEBUG_KMS("Found Kaby Lake PCH (KBP)\n");
>> -			WARN_ON(!IS_SKYLAKE(dev_priv) &&
>> -				!IS_KABYLAKE(dev_priv) &&
>> -				!IS_COFFEELAKE(dev_priv));
>> -		} else if (id == INTEL_PCH_CNP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_CNP;
>> -			DRM_DEBUG_KMS("Found Cannon Lake PCH (CNP)\n");
>> -			WARN_ON(!IS_CANNONLAKE(dev_priv) &&
>> -				!IS_COFFEELAKE(dev_priv));
>> -		} else if (id == INTEL_PCH_CNP_LP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_CNP;
>> -			DRM_DEBUG_KMS("Found Cannon Lake LP PCH (CNP-LP)\n");
>> -			WARN_ON(!IS_CANNONLAKE(dev_priv) &&
>> -				!IS_COFFEELAKE(dev_priv));
>> -		} else if (id == INTEL_PCH_ICP_DEVICE_ID_TYPE) {
>> -			dev_priv->pch_type = PCH_ICP;
>> -			DRM_DEBUG_KMS("Found Ice Lake PCH\n");
>> -			WARN_ON(!IS_ICELAKE(dev_priv));
>> +		pch_type = intel_pch_type(dev_priv, id);
>> +		if (pch_type != PCH_NONE) {
>> +			dev_priv->pch_type = pch_type;
>>  		} else if (id == INTEL_PCH_P2X_DEVICE_ID_TYPE ||
>>  			   id == INTEL_PCH_P3X_DEVICE_ID_TYPE ||
>>  			   (id == INTEL_PCH_QEMU_DEVICE_ID_TYPE &&
>> -- 
>> 2.11.0
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-02-13 15:36 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 17:31 [PATCH 0/4] drm/i915: pch detection refactoring Jani Nikula
2018-02-05 17:31 ` [PATCH 1/4] drm/i915: abstract PCH type detection from PCH id Jani Nikula
2018-02-05 22:21   ` Rodrigo Vivi
2018-02-13 15:35     ` Jani Nikula [this message]
2018-02-13 15:55       ` Ville Syrjälä
2018-02-05 17:31 ` [PATCH 2/4] drm/i915: abstract virtual PCH id detection Jani Nikula
2018-02-05 22:22   ` Rodrigo Vivi
2018-02-05 17:31 ` [PATCH 3/4] drm/i915: have virtual PCH detection return a PCH id Jani Nikula
2018-02-05 22:27   ` Rodrigo Vivi
2018-02-05 17:31 ` [PATCH 4/4] drm/i915: introduce INTEL_PCH_ID() and use it Jani Nikula
2018-02-05 22:28   ` Rodrigo Vivi
2018-02-05 18:20 ` ✓ Fi.CI.BAT: success for drm/i915: pch detection refactoring Patchwork
2018-02-05 20:39 ` ✗ Fi.CI.IGT: warning " Patchwork
2018-02-06 11:06 ` ✗ Fi.CI.BAT: " Patchwork
2018-02-07 12:43 ` ✓ Fi.CI.BAT: success " 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=87sha4lx5t.fsf@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --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.