With the index required for DDI register offset calculation available in the device info, DDI_BUF_CTL macro updated to make use of it. Any new macros to access the DDI registers should follow the same procedure. This would free the port enums from tied to the register offset of DDI registers. We can remove all the enum aliases and clean up the enum definitions. The key target of the patch series to remove platform specific definitions of ports like PORT_D_XELPD, PORT_E_XELPD is not yet covered here. The definitions are still retained and will be handled in the follow patch. Removed a WARN_ON as it is no longer valid. The WARN was added in the commit "327f8d8c336d drm/i915: simplify setting of ddi_io_power_domain" The ddi_io_power_domain calculation has changed completely since the commit and doesn't need this WARN_ON anymore. Signed-off-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@xxxxxxxxx> --- drivers/gpu/drm/i915/display/intel_ddi.c | 1 - drivers/gpu/drm/i915/display/intel_display.h | 8 +++----- drivers/gpu/drm/i915/i915_reg.h | 6 ++---- include/drm/i915_component.h | 2 +- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index aae429bd2e2b..00ac683ef96b 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -4474,7 +4474,6 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port) encoder->update_complete = intel_ddi_update_complete; } - drm_WARN_ON(&dev_priv->drm, port > PORT_I); dig_port->ddi_io_power_domain = intel_display_power_ddi_io_domain(dev_priv, port); if (init_dp) { diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h index 884e8e67b17c..aa5ded6b513c 100644 --- a/drivers/gpu/drm/i915/display/intel_display.h +++ b/drivers/gpu/drm/i915/display/intel_display.h @@ -212,18 +212,16 @@ enum port { PORT_H, PORT_I, - /* tgl+ */ - PORT_TC1 = PORT_D, + /* Non-TypeC ports must be defined above */ + PORT_TC1, PORT_TC2, PORT_TC3, PORT_TC4, PORT_TC5, PORT_TC6, - /* XE_LPD repositions D/E offsets and bitfields */ - PORT_D_XELPD = PORT_TC5, + PORT_D_XELPD, PORT_E_XELPD, - I915_MAX_PORTS }; diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 67f3b17b2360..12a6fe7ee010 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -170,6 +170,7 @@ #define _MMIO_CURSOR2(pipe, reg) _MMIO(INTEL_INFO(dev_priv)->display.cursor_offsets[(pipe)] - \ INTEL_INFO(dev_priv)->display.cursor_offsets[PIPE_A] + \ DISPLAY_MMIO_BASE(dev_priv) + (reg)) +#define _MMIO_DDI(i915, port, a, b) _MMIO_PORT(INTEL_INFO(i915)->display.ddi_index[port], a, b) #define __MASKED_FIELD(mask, value) ((mask) << 16 | (value)) #define _MASKED_FIELD(mask, value) ({ \ @@ -6936,10 +6937,7 @@ enum skl_power_gate { /* DDI Buffer Control */ #define _DDI_BUF_CTL_A 0x64000 #define _DDI_BUF_CTL_B 0x64100 -#define DDI_BUF_CTL(i915, port) ({ \ - (void)i915; /* Suppress unused variable warning */ \ - _MMIO_PORT(port, _DDI_BUF_CTL_A, _DDI_BUF_CTL_B); \ - }) +#define DDI_BUF_CTL(i915, port) _MMIO_DDI(i915, port, _DDI_BUF_CTL_A, _DDI_BUF_CTL_B) #define DDI_BUF_CTL_ENABLE (1 << 31) #define DDI_BUF_TRANS_SELECT(n) ((n) << 24) diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h index c1e2a43d2d1e..f95ff82c3b4a 100644 --- a/include/drm/i915_component.h +++ b/include/drm/i915_component.h @@ -35,7 +35,7 @@ enum i915_component_type { /* MAX_PORT is the number of port * It must be sync with I915_MAX_PORTS defined i915_drv.h */ -#define MAX_PORTS 9 +#define MAX_PORTS 17 /** * struct i915_audio_component - Used for direct communication between i915 and hda drivers -- 2.34.1