Hello Matt, > -----Original Message----- > From: Roper, Matthew D <matthew.d.roper@xxxxxxxxx> > Sent: Tuesday, January 10, 2023 6:32 AM > To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@xxxxxxxxx> > Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; jani.nikula@xxxxxxxxxxxxxxx; Shankar, > Uma <uma.shankar@xxxxxxxxx>; Syrjala, Ville <ville.syrjala@xxxxxxxxx>; > Srivatsa, Anusha <anusha.srivatsa@xxxxxxxxx>; Atwood, Matthew S > <matthew.s.atwood@xxxxxxxxx> > Subject: Re: [RFC 1/2] drm/i915: Add rplu sub platform > > On Sat, Jan 07, 2023 at 11:06:42AM +0530, Chaitanya Kumar Borah wrote: > > Adding RPL-U as a sub platform. In RPL-U a new CDCLK step has been > > added so we need to make a distinction between RPL-P and RPL-U while > > CDCLK initialization. > > > > Adding a sub-platform, enables us to make this differentiation in the > > code. > > > > Signed-off-by: Chaitanya Kumar Borah > <chaitanya.kumar.borah@xxxxxxxxx> > > --- > > arch/x86/kernel/early-quirks.c | 1 + > > drivers/gpu/drm/i915/i915_drv.h | 2 ++ > > drivers/gpu/drm/i915/i915_pci.c | 1 + > > drivers/gpu/drm/i915/intel_device_info.c | 7 +++++++ > > drivers/gpu/drm/i915/intel_device_info.h | 1 + > > drivers/gpu/drm/i915/intel_step.c | 3 +++ > > include/drm/i915_pciids.h | 7 +++++-- > > 7 files changed, 20 insertions(+), 2 deletions(-) > > > > diff --git a/arch/x86/kernel/early-quirks.c > > b/arch/x86/kernel/early-quirks.c index a6c1867fc7aa..1ba9926c8974 > > 100644 > > --- a/arch/x86/kernel/early-quirks.c > > +++ b/arch/x86/kernel/early-quirks.c > > @@ -559,6 +559,7 @@ static const struct pci_device_id intel_early_ids[] > __initconst = { > > INTEL_ADLN_IDS(&gen11_early_ops), > > INTEL_RPLS_IDS(&gen11_early_ops), > > INTEL_RPLP_IDS(&gen11_early_ops), > > + INTEL_RPLU_IDS(&gen11_early_ops), > > }; > > > > struct resource intel_graphics_stolen_res __ro_after_init = > > DEFINE_RES_MEM(0, 0); diff --git a/drivers/gpu/drm/i915/i915_drv.h > > b/drivers/gpu/drm/i915/i915_drv.h index 48fd82722f12..c88e514728a0 > > 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.h > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > @@ -619,6 +619,8 @@ IS_SUBPLATFORM(const struct drm_i915_private > *i915, > > IS_SUBPLATFORM(dev_priv, INTEL_ALDERLAKE_P, > INTEL_SUBPLATFORM_N) > > #define IS_ADLP_RPLP(dev_priv) \ > > IS_SUBPLATFORM(dev_priv, INTEL_ALDERLAKE_P, > INTEL_SUBPLATFORM_RPL) > > +#define IS_ADLP_RPLU(dev_priv) \ > > + IS_SUBPLATFORM(dev_priv, INTEL_ALDERLAKE_P, > INTEL_SUBPLATFORM_RPLU) > > #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \ > > (INTEL_DEVID(dev_priv) & 0xFF00) == > 0x0C00) #define > > IS_BDW_ULT(dev_priv) \ diff --git a/drivers/gpu/drm/i915/i915_pci.c > > b/drivers/gpu/drm/i915/i915_pci.c index 6cc65079b18d..e9f3b99b3e00 > > 100644 > > --- a/drivers/gpu/drm/i915/i915_pci.c > > +++ b/drivers/gpu/drm/i915/i915_pci.c > > @@ -1234,6 +1234,7 @@ static const struct pci_device_id pciidlist[] = { > > INTEL_DG1_IDS(&dg1_info), > > INTEL_RPLS_IDS(&adl_s_info), > > INTEL_RPLP_IDS(&adl_p_info), > > + INTEL_RPLU_IDS(&adl_p_info), > > INTEL_DG2_IDS(&dg2_info), > > INTEL_ATS_M_IDS(&ats_m_info), > > INTEL_MTL_IDS(&mtl_info), > > diff --git a/drivers/gpu/drm/i915/intel_device_info.c > > b/drivers/gpu/drm/i915/intel_device_info.c > > index 849baf6c3b3c..88f3da63948b 100644 > > --- a/drivers/gpu/drm/i915/intel_device_info.c > > +++ b/drivers/gpu/drm/i915/intel_device_info.c > > @@ -201,6 +201,10 @@ static const u16 subplatform_rpl_ids[] = { > > INTEL_RPLP_IDS(0), > > }; > > > > +static const u16 subplatform_rplu_ids[] = { > > + INTEL_RPLU_IDS(0), > > +}; > > + > > static const u16 subplatform_g10_ids[] = { > > INTEL_DG2_G10_IDS(0), > > INTEL_ATS_M150_IDS(0), > > @@ -268,6 +272,9 @@ static void > intel_device_info_subplatform_init(struct drm_i915_private *i915) > > } else if (find_devid(devid, subplatform_rpl_ids, > > ARRAY_SIZE(subplatform_rpl_ids))) { > > mask = BIT(INTEL_SUBPLATFORM_RPL); > > + } else if (find_devid(devid, subplatform_rplu_ids, > > + ARRAY_SIZE(subplatform_rplu_ids))) { > > + mask = BIT(INTEL_SUBPLATFORM_RPLU); > > } else if (find_devid(devid, subplatform_g10_ids, > > ARRAY_SIZE(subplatform_g10_ids))) { > > mask = BIT(INTEL_SUBPLATFORM_G10); > > diff --git a/drivers/gpu/drm/i915/intel_device_info.h > > b/drivers/gpu/drm/i915/intel_device_info.h > > index d588e5fd2eea..3e3ca5eb073f 100644 > > --- a/drivers/gpu/drm/i915/intel_device_info.h > > +++ b/drivers/gpu/drm/i915/intel_device_info.h > > @@ -127,6 +127,7 @@ enum intel_platform { > > * bit set > > */ > > #define INTEL_SUBPLATFORM_N 1 > > +#define INTEL_SUBPLATFORM_RPLU 2 > > > > /* MTL */ > > #define INTEL_SUBPLATFORM_M 0 > > diff --git a/drivers/gpu/drm/i915/intel_step.c > > b/drivers/gpu/drm/i915/intel_step.c > > index 84a6fe736a3b..df75057eaa65 100644 > > --- a/drivers/gpu/drm/i915/intel_step.c > > +++ b/drivers/gpu/drm/i915/intel_step.c > > @@ -194,6 +194,9 @@ void intel_step_init(struct drm_i915_private *i915) > > } else if (IS_ADLP_RPLP(i915)) { > > revids = adlp_rplp_revids; > > size = ARRAY_SIZE(adlp_rplp_revids); > > + } else if (IS_ADLP_RPLU(i915)) { > > Since the two blocks are identical, it might be slightly preferable to just > combine the conditions; that will also help make it clear that this is > intentional and not a copy/paste mistake. > > } else if (IS_ADLP_RPLU(i915) || IS_ADLP_RPLP(i915)) { > ... > Since in the new implementation RPLU also belongs to RPL sub platform. This change is dropped in the latest version. > > + revids = adlp_rplp_revids; > > + size = ARRAY_SIZE(adlp_rplp_revids); > > } else if (IS_ALDERLAKE_P(i915)) { > > revids = adlp_revids; > > size = ARRAY_SIZE(adlp_revids); > > diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h > > index 4a4c190f7698..87bb7e26dfb6 100644 > > --- a/include/drm/i915_pciids.h > > +++ b/include/drm/i915_pciids.h > > @@ -687,10 +687,13 @@ > > /* RPL-P */ > > #define INTEL_RPLP_IDS(info) \ > > INTEL_VGA_DEVICE(0xA720, info), \ > > - INTEL_VGA_DEVICE(0xA721, info), \ > > INTEL_VGA_DEVICE(0xA7A0, info), \ > > + INTEL_VGA_DEVICE(0xA7A8, info) > > + > > +/* RPL-U */ > > +#define INTEL_RPLU_IDS(info) \ > > INTEL_VGA_DEVICE(0xA7A1, info), \ > > - INTEL_VGA_DEVICE(0xA7A8, info), \ > > + INTEL_VGA_DEVICE(0xA721, info), \ > > INTEL_VGA_DEVICE(0xA7A9, info) > > I know the bspec orders them like this, but it's probably better to just sort > these two lists numerically. These bspec pages get reshuffled so often these > days that trying to match the bspec's strange ordering isn't really worth it. > Ack. The new revision has the sequence corrected. Regards Chaitanya > > Matt > > > > > /* DG2 */ > > -- > > 2.25.1 > > > > -- > Matt Roper > Graphics Software Engineer > Linux GPU Platform Enablement > Intel Corporation