Commit 1d3cc7ab authored by José Roberto de Souza's avatar José Roberto de Souza Committed by Rodrigo Vivi

drm/i915/tgl: Set subplatforms

There is no way to differentiate TGL-U from TGL-Y by the PCI ids as
some ids are available in both SKUs.
So here using the root device id in the PCI bus that iGPU is in
to differentiate between U and Y.

BSpec: 44455
Reviewed-by: default avatarSwathi Dhanavanthri <swathi.dhanavanthri@intel.com>
Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200807192629.64134-1-jose.souza@intel.comSigned-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 05e31dd7
...@@ -1497,6 +1497,12 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, ...@@ -1497,6 +1497,12 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915,
#define IS_ICL_WITH_PORT_F(dev_priv) \ #define IS_ICL_WITH_PORT_F(dev_priv) \
IS_SUBPLATFORM(dev_priv, INTEL_ICELAKE, INTEL_SUBPLATFORM_PORTF) IS_SUBPLATFORM(dev_priv, INTEL_ICELAKE, INTEL_SUBPLATFORM_PORTF)
#define IS_TGL_U(dev_priv) \
IS_SUBPLATFORM(dev_priv, INTEL_TIGERLAKE, INTEL_SUBPLATFORM_ULT)
#define IS_TGL_Y(dev_priv) \
IS_SUBPLATFORM(dev_priv, INTEL_TIGERLAKE, INTEL_SUBPLATFORM_ULX)
#define SKL_REVID_A0 0x0 #define SKL_REVID_A0 0x0
#define SKL_REVID_B0 0x1 #define SKL_REVID_B0 0x1
#define SKL_REVID_C0 0x2 #define SKL_REVID_C0 0x2
......
...@@ -12353,4 +12353,10 @@ enum skl_power_gate { ...@@ -12353,4 +12353,10 @@ enum skl_power_gate {
#define DSB_ENABLE (1 << 31) #define DSB_ENABLE (1 << 31)
#define DSB_STATUS (1 << 0) #define DSB_STATUS (1 << 0)
#define TGL_ROOT_DEVICE_ID 0x9A00
#define TGL_ROOT_DEVICE_MASK 0xFF00
#define TGL_ROOT_DEVICE_SKU_MASK 0xF
#define TGL_ROOT_DEVICE_SKU_ULX 0x2
#define TGL_ROOT_DEVICE_SKU_ULT 0x4
#endif /* _I915_REG_H_ */ #endif /* _I915_REG_H_ */
...@@ -346,6 +346,25 @@ void intel_device_info_subplatform_init(struct drm_i915_private *i915) ...@@ -346,6 +346,25 @@ void intel_device_info_subplatform_init(struct drm_i915_private *i915)
mask = BIT(INTEL_SUBPLATFORM_PORTF); mask = BIT(INTEL_SUBPLATFORM_PORTF);
} }
if (IS_TIGERLAKE(i915)) {
struct pci_dev *root, *pdev = i915->drm.pdev;
root = list_first_entry(&pdev->bus->devices, typeof(*root), bus_list);
drm_WARN_ON(&i915->drm, mask);
drm_WARN_ON(&i915->drm, (root->device & TGL_ROOT_DEVICE_MASK) !=
TGL_ROOT_DEVICE_ID);
switch (root->device & TGL_ROOT_DEVICE_SKU_MASK) {
case TGL_ROOT_DEVICE_SKU_ULX:
mask = BIT(INTEL_SUBPLATFORM_ULX);
break;
case TGL_ROOT_DEVICE_SKU_ULT:
mask = BIT(INTEL_SUBPLATFORM_ULT);
break;
}
}
GEM_BUG_ON(mask & ~INTEL_SUBPLATFORM_BITS); GEM_BUG_ON(mask & ~INTEL_SUBPLATFORM_BITS);
RUNTIME_INFO(i915)->platform_mask[pi] |= mask; RUNTIME_INFO(i915)->platform_mask[pi] |= mask;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment