Commit fdc38738 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/gmbus: convert to struct intel_display



struct intel_display will replace struct drm_i915_private as the main
device pointer for display code. Switch gmbus code over to it.

Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/d784e4799ab5095baa5c8fd840920066878c6273.1730146000.git.jani.nikula@intel.com
parent 331313aa
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -2787,7 +2787,6 @@ static bool child_device_size_valid(struct intel_display *display, int size)
static void
parse_general_definitions(struct intel_display *display)
{
	struct drm_i915_private *i915 = to_i915(display->drm);
	const struct bdb_general_definitions *defs;
	struct intel_bios_encoder_data *devdata;
	const struct child_device_config *child;
@@ -2812,7 +2811,7 @@ parse_general_definitions(struct intel_display *display)

	bus_pin = defs->crt_ddc_gmbus_pin;
	drm_dbg_kms(display->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
	if (intel_gmbus_is_valid_pin(i915, bus_pin))
	if (intel_gmbus_is_valid_pin(display, bus_pin))
		display->vbt.crt_ddc_pin = bus_pin;

	if (!child_device_size_valid(display, defs->child_dev_size))
@@ -3329,7 +3328,6 @@ bool intel_bios_is_tv_present(struct intel_display *display)
 */
bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin)
{
	struct drm_i915_private *i915 = to_i915(display->drm);
	const struct intel_bios_encoder_data *devdata;

	if (list_empty(&display->vbt.display_devices))
@@ -3346,7 +3344,7 @@ bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin)
		    child->device_type != DEVICE_TYPE_LFP)
			continue;

		if (intel_gmbus_is_valid_pin(i915, child->i2c_pin))
		if (intel_gmbus_is_valid_pin(display, child->i2c_pin))
			*i2c_pin = child->i2c_pin;

		/* However, we cannot trust the BIOS writers to populate
+4 −2
Original line number Diff line number Diff line
@@ -935,6 +935,7 @@ intel_crt_detect(struct drm_connector *connector,

static int intel_crt_get_modes(struct drm_connector *connector)
{
	struct intel_display *display = to_intel_display(connector->dev);
	struct drm_device *dev = connector->dev;
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector));
@@ -954,7 +955,7 @@ static int intel_crt_get_modes(struct drm_connector *connector)
		goto out;

	/* Try to probe digital port for output in DVI-I -> VGA mode. */
	ddc = intel_gmbus_get_adapter(dev_priv, GMBUS_PIN_DPB);
	ddc = intel_gmbus_get_adapter(display, GMBUS_PIN_DPB);
	ret = intel_crt_ddc_get_modes(connector, ddc);

out:
@@ -1009,6 +1010,7 @@ static const struct drm_encoder_funcs intel_crt_enc_funcs = {

void intel_crt_init(struct drm_i915_private *dev_priv)
{
	struct intel_display *display = &dev_priv->display;
	struct drm_connector *connector;
	struct intel_crt *crt;
	struct intel_connector *intel_connector;
@@ -1057,7 +1059,7 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
	drm_connector_init_with_ddc(&dev_priv->drm, connector,
				    &intel_crt_connector_funcs,
				    DRM_MODE_CONNECTOR_VGA,
				    intel_gmbus_get_adapter(dev_priv, ddc_pin));
				    intel_gmbus_get_adapter(display, ddc_pin));

	drm_encoder_init(&dev_priv->drm, &crt->base.base, &intel_crt_enc_funcs,
			 DRM_MODE_ENCODER_DAC, "CRT");
+2 −2
Original line number Diff line number Diff line
@@ -432,7 +432,7 @@ int intel_display_driver_probe_nogem(struct drm_i915_private *i915)

	intel_pps_setup(display);

	intel_gmbus_setup(i915);
	intel_gmbus_setup(display);

	drm_dbg_kms(&i915->drm, "%d display pipe%s available.\n",
		    INTEL_NUM_PIPES(i915),
@@ -608,7 +608,7 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915)

	intel_overlay_cleanup(i915);

	intel_gmbus_teardown(i915);
	intel_gmbus_teardown(display);

	destroy_workqueue(i915->display.wq.flip);
	destroy_workqueue(i915->display.wq.modeset);
+6 −5
Original line number Diff line number Diff line
@@ -543,12 +543,13 @@ void i965_pipestat_irq_handler(struct drm_i915_private *dev_priv,
		intel_opregion_asle_intr(display);

	if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
		intel_gmbus_irq_handler(dev_priv);
		intel_gmbus_irq_handler(display);
}

void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
				     u32 pipe_stats[I915_MAX_PIPES])
{
	struct intel_display *display = &dev_priv->display;
	enum pipe pipe;

	for_each_pipe(dev_priv, pipe) {
@@ -566,7 +567,7 @@ void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv,
	}

	if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS)
		intel_gmbus_irq_handler(dev_priv);
		intel_gmbus_irq_handler(display);
}

static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
@@ -588,7 +589,7 @@ static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
		intel_dp_aux_irq_handler(display);

	if (pch_iir & SDE_GMBUS)
		intel_gmbus_irq_handler(dev_priv);
		intel_gmbus_irq_handler(display);

	if (pch_iir & SDE_AUDIO_HDCP_MASK)
		drm_dbg(&dev_priv->drm, "PCH HDCP audio interrupt\n");
@@ -677,7 +678,7 @@ static void cpt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
		intel_dp_aux_irq_handler(display);

	if (pch_iir & SDE_GMBUS_CPT)
		intel_gmbus_irq_handler(dev_priv);
		intel_gmbus_irq_handler(display);

	if (pch_iir & SDE_AUDIO_CP_REQ_CPT)
		drm_dbg(&dev_priv->drm, "Audio CP request interrupt\n");
@@ -1109,7 +1110,7 @@ void gen8_de_irq_handler(struct drm_i915_private *dev_priv, u32 master_ctl)

			if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) &&
			    (iir & BXT_DE_PORT_GMBUS)) {
				intel_gmbus_irq_handler(dev_priv);
				intel_gmbus_irq_handler(display);
				found = true;
			}

+3 −2
Original line number Diff line number Diff line
@@ -323,6 +323,7 @@ enum {
static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv,
				      int gpio, bool value)
{
	struct intel_display *display = &dev_priv->display;
	int index;

	if (drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) == 11 && gpio >= MIPI_RESET_2))
@@ -367,7 +368,7 @@ static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv,
	case MIPI_AVEE_EN_2:
		index = gpio == MIPI_AVEE_EN_1 ? 1 : 2;

		intel_de_rmw(dev_priv, GPIO(dev_priv, index),
		intel_de_rmw(display, GPIO(display, index),
			     GPIO_CLOCK_VAL_OUT,
			     GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_DIR_OUT |
			     GPIO_CLOCK_VAL_MASK | (value ? GPIO_CLOCK_VAL_OUT : 0));
@@ -376,7 +377,7 @@ static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv,
	case MIPI_VIO_EN_2:
		index = gpio == MIPI_VIO_EN_1 ? 1 : 2;

		intel_de_rmw(dev_priv, GPIO(dev_priv, index),
		intel_de_rmw(display, GPIO(display, index),
			     GPIO_DATA_VAL_OUT,
			     GPIO_DATA_DIR_MASK | GPIO_DATA_DIR_OUT |
			     GPIO_DATA_VAL_MASK | (value ? GPIO_DATA_VAL_OUT : 0));
Loading