Commit 769b081c authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/opregion: convert to struct intel_display



Going forward, struct intel_display shall replace struct
drm_i915_private as the main display device data pointer type. Convert
intel_opregion.[ch] to struct intel_display.

v2:
- Fix declarations for !CONFIG_ACPI (Imre, kernel test robot)
- Pass encoder/connector directly to intel_display() (Imre)

Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/aef94503909bbbf95f0244dc382a4d4cd050b903.1723213547.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent b7f317e6
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -622,7 +622,9 @@ static int opregion_get_panel_type(struct drm_i915_private *i915,
				   const struct intel_bios_encoder_data *devdata,
				   const struct drm_edid *drm_edid, bool use_fallback)
{
	return intel_opregion_get_panel_type(i915);
	struct intel_display *display = &i915->display;

	return intel_opregion_get_panel_type(display);
}

static int vbt_get_panel_type(struct drm_i915_private *i915,
@@ -3158,13 +3160,14 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915,
static const struct vbt_header *intel_bios_get_vbt(struct drm_i915_private *i915,
						   size_t *sizep)
{
	struct intel_display *display = &i915->display;
	const struct vbt_header *vbt = NULL;
	intel_wakeref_t wakeref;

	vbt = firmware_get_vbt(i915, sizep);

	if (!vbt)
		vbt = intel_opregion_get_vbt(i915, sizep);
		vbt = intel_opregion_get_vbt(display, sizep);

	/*
	 * If the OpRegion does not have VBT, look in SPI flash
@@ -3378,6 +3381,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
 */
bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
{
	struct intel_display *display = &i915->display;
	const struct intel_bios_encoder_data *devdata;

	if (list_empty(&i915->display.vbt.display_devices))
@@ -3410,7 +3414,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
		 * additional data.  Trust that if the VBT was written into
		 * the OpRegion then they have validated the LVDS's existence.
		 */
		return intel_opregion_vbt_present(i915);
		return intel_opregion_vbt_present(display);
	}

	return false;
+3 −2
Original line number Diff line number Diff line
@@ -1049,6 +1049,7 @@ static const struct {

void intel_display_debugfs_register(struct drm_i915_private *i915)
{
	struct intel_display *display = &i915->display;
	struct drm_minor *minor = i915->drm.primary;
	int i;

@@ -1067,9 +1068,9 @@ void intel_display_debugfs_register(struct drm_i915_private *i915)
	intel_bios_debugfs_register(i915);
	intel_cdclk_debugfs_register(i915);
	intel_dmc_debugfs_register(i915);
	intel_fbc_debugfs_register(&i915->display);
	intel_fbc_debugfs_register(display);
	intel_hpd_debugfs_register(i915);
	intel_opregion_debugfs_register(i915);
	intel_opregion_debugfs_register(display);
	intel_psr_debugfs_register(i915);
	intel_wm_debugfs_register(i915);
	intel_display_debugfs_params(i915);
+5 −3
Original line number Diff line number Diff line
@@ -1529,9 +1529,11 @@ void intel_display_device_info_print(const struct intel_display_device_info *inf
 */
bool intel_display_device_enabled(struct drm_i915_private *i915)
{
	struct intel_display *display = &i915->display;

	/* Only valid when HAS_DISPLAY() is true */
	drm_WARN_ON(&i915->drm, !HAS_DISPLAY(i915));
	drm_WARN_ON(display->drm, !HAS_DISPLAY(display));

	return !i915->display.params.disable_display &&
		!intel_opregion_headless_sku(i915);
	return !display->params.disable_display &&
		!intel_opregion_headless_sku(display);
}
+4 −2
Original line number Diff line number Diff line
@@ -535,7 +535,7 @@ void intel_display_driver_register(struct drm_i915_private *i915)
		return;

	/* Must be done after probing outputs */
	intel_opregion_register(i915);
	intel_opregion_register(display);
	intel_acpi_video_register(display);

	intel_audio_init(i915);
@@ -626,6 +626,8 @@ void intel_display_driver_remove_nogem(struct drm_i915_private *i915)

void intel_display_driver_unregister(struct drm_i915_private *i915)
{
	struct intel_display *display = &i915->display;

	if (!HAS_DISPLAY(i915))
		return;

@@ -645,7 +647,7 @@ void intel_display_driver_unregister(struct drm_i915_private *i915)
	drm_atomic_helper_shutdown(&i915->drm);

	acpi_video_unregister();
	intel_opregion_unregister(i915);
	intel_opregion_unregister(display);
}

/*
+17 −7
Original line number Diff line number Diff line
@@ -270,10 +270,12 @@ void i915_disable_pipestat(struct drm_i915_private *dev_priv,

static bool i915_has_asle(struct drm_i915_private *i915)
{
	struct intel_display *display = &i915->display;

	if (!IS_PINEVIEW(i915) && !IS_MOBILE(i915))
		return false;

	return intel_opregion_asle_present(i915);
	return intel_opregion_asle_present(display);
}

/**
@@ -497,6 +499,8 @@ void i8xx_pipestat_irq_handler(struct drm_i915_private *dev_priv,
void i915_pipestat_irq_handler(struct drm_i915_private *dev_priv,
			       u32 iir, u32 pipe_stats[I915_MAX_PIPES])
{
	struct intel_display *display = &dev_priv->display;

	bool blc_event = false;
	enum pipe pipe;

@@ -515,12 +519,13 @@ void i915_pipestat_irq_handler(struct drm_i915_private *dev_priv,
	}

	if (blc_event || (iir & I915_ASLE_INTERRUPT))
		intel_opregion_asle_intr(dev_priv);
		intel_opregion_asle_intr(display);
}

void i965_pipestat_irq_handler(struct drm_i915_private *dev_priv,
			       u32 iir, u32 pipe_stats[I915_MAX_PIPES])
{
	struct intel_display *display = &dev_priv->display;
	bool blc_event = false;
	enum pipe pipe;

@@ -539,7 +544,7 @@ void i965_pipestat_irq_handler(struct drm_i915_private *dev_priv,
	}

	if (blc_event || (iir & I915_ASLE_INTERRUPT))
		intel_opregion_asle_intr(dev_priv);
		intel_opregion_asle_intr(display);

	if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
		intel_gmbus_irq_handler(dev_priv);
@@ -695,6 +700,7 @@ static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)

void ilk_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
{
	struct intel_display *display = &dev_priv->display;
	enum pipe pipe;
	u32 hotplug_trigger = de_iir & DE_DP_A_HOTPLUG;

@@ -705,7 +711,7 @@ void ilk_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
		intel_dp_aux_irq_handler(dev_priv);

	if (de_iir & DE_GSE)
		intel_opregion_asle_intr(dev_priv);
		intel_opregion_asle_intr(display);

	if (de_iir & DE_POISON)
		drm_err(&dev_priv->drm, "Poison interrupt\n");
@@ -743,6 +749,7 @@ void ilk_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)

void ivb_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
{
	struct intel_display *display = &dev_priv->display;
	enum pipe pipe;
	u32 hotplug_trigger = de_iir & DE_DP_A_HOTPLUG_IVB;

@@ -770,7 +777,7 @@ void ivb_display_irq_handler(struct drm_i915_private *dev_priv, u32 de_iir)
		intel_dp_aux_irq_handler(dev_priv);

	if (de_iir & DE_GSE_IVB)
		intel_opregion_asle_intr(dev_priv);
		intel_opregion_asle_intr(display);

	for_each_pipe(dev_priv, pipe) {
		if (de_iir & DE_PIPE_VBLANK_IVB(pipe))
@@ -894,6 +901,7 @@ static void intel_pmdemand_irq_handler(struct drm_i915_private *dev_priv)
static void
gen8_de_misc_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
{
	struct intel_display *display = &dev_priv->display;
	bool found = false;

	if (DISPLAY_VER(dev_priv) >= 14) {
@@ -914,7 +922,7 @@ gen8_de_misc_irq_handler(struct drm_i915_private *dev_priv, u32 iir)
			found = true;
		}
	} else if (iir & GEN8_DE_MISC_GSE) {
		intel_opregion_asle_intr(dev_priv);
		intel_opregion_asle_intr(display);
		found = true;
	}

@@ -1218,8 +1226,10 @@ u32 gen11_gu_misc_irq_ack(struct drm_i915_private *i915, const u32 master_ctl)

void gen11_gu_misc_irq_handler(struct drm_i915_private *i915, const u32 iir)
{
	struct intel_display *display = &i915->display;

	if (iir & GEN11_GU_MISC_GSE)
		intel_opregion_asle_intr(i915);
		intel_opregion_asle_intr(display);
}

void gen11_display_irq_handler(struct drm_i915_private *i915)
Loading