All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH] drm/i915: convert dpms functions of dvo/sdvo/crt
Date: Tue, 4 Sep 2012 13:10:52 -0700	[thread overview]
Message-ID: <20120904131052.76413d4c@jbarnes-desktop> (raw)
In-Reply-To: <1346224343-19691-1-git-send-email-daniel.vetter@ffwll.ch>

On Wed, 29 Aug 2012 09:12:23 +0200
Daniel Vetter <daniel.vetter@ffwll.ch> wrote:

> Yeah, big patch but I couldn't come up with a neat idea of how to
> split it up further, that wouldn't break dpms on cloned configs
> somehow. But the changes in dvo/sdvo/crt are all pretty much
> orthonogal, so it's not too bad a patch.
> 
> These are the only encoders that support cloning, which requires a few
> special changes compared to the previous patches.
> - Compute the desired state of the display pipe by walking all
>   connected encoders and checking whether any has active connectors.
>   To make this clearer, drop the old mode parameter to the crtc dpms
>   function and rename it to intel_crtc_update_dpms.
> - There's the curious case of intel_crtc->dpms_mode. With the previous
>   patches to remove the overlay pipe A code and to rework the load
>   detect pipe code, the big users are gone. We still keep it to avoid
>   enabling the pipe twice, but we duplicate this logic with
>   crtc->active, too. Still, leave this for now and just push a fake
>   dpms mode into it that reflects the state of the display pipe.
> 
> Changes in the encoder dpms functions:
> - We clamp the dpms state to the supported range right away. This is
>   escpecially important for the VGA outputs, where only older hw
>   supports the intermediate states. This (and the crt->adpa_reg patch)
>   allows us to unify the crt dpms code again between all variants
>   (gmch, vlv and pch).
> - We only enable/disable the output for dvo/sdvo and leave the encoder
>   running. The encoder will be disabled/enabled when we switch the
>   state of the entire output pipeline (which will happen right away
>   for non-cloned setups). This way the duplication is reduced and
>   strange interaction when disabling output ports at the wrong time
>   avoided.
> 
> The dpms code for all three types of connectors contains a bit of
> duplicated logic, but I think keeping these special cases separate is
> simpler: CRT is the only one that hanldes intermediate dpms state
> (which requires extra logic to enable/disable things in the right
> order), and introducing some abstraction just to share the code
> between dvo and sdvo smells like overkill. We can do that once someone
> bothers to implement cloning for the more modern outputs. But I doubt
> that this will ever happen.
> 
> v2: s/crtc/crt/_set_dpms, noticed by Paulo Zanoni.
> 
> Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/i915/intel_crt.c     | 97 +++++++++++++++++++-----------------
>  drivers/gpu/drm/i915/intel_display.c | 37 +++++++-------
>  drivers/gpu/drm/i915/intel_drv.h     |  1 +
>  drivers/gpu/drm/i915/intel_dvo.c     | 39 +++++++++++----
>  drivers/gpu/drm/i915/intel_sdvo.c    | 60 ++++++++++------------
>  5 files changed, 122 insertions(+), 112 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index 543ea40..76646c7 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -84,13 +84,17 @@ static void intel_enable_crt(struct intel_encoder *encoder)
>  	I915_WRITE(crt->adpa_reg, temp);
>  }
>  
> -static void pch_crt_dpms(struct drm_encoder *encoder, int mode)
> +/* Note: The caller is required to filter out dpms modes not supported by the
> + * platform. */
> +static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode)
>  {
> -	struct drm_device *dev = encoder->dev;
> +	struct drm_device *dev = encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> +	struct intel_crt *crt = intel_encoder_to_crt(encoder);
>  	u32 temp;
>  
> -	temp = I915_READ(PCH_ADPA);
> +	temp = I915_READ(crt->adpa_reg);
> +	temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
>  	temp &= ~ADPA_DAC_ENABLE;
>  
>  	switch (mode) {
> @@ -98,44 +102,59 @@ static void pch_crt_dpms(struct drm_encoder *encoder, int mode)
>  		temp |= ADPA_DAC_ENABLE;
>  		break;
>  	case DRM_MODE_DPMS_STANDBY:
> +		temp |= ADPA_DAC_ENABLE | ADPA_HSYNC_CNTL_DISABLE;
> +		break;
>  	case DRM_MODE_DPMS_SUSPEND:
> +		temp |= ADPA_DAC_ENABLE | ADPA_VSYNC_CNTL_DISABLE;
> +		break;
>  	case DRM_MODE_DPMS_OFF:
> -		/* Just leave port enable cleared */
> +		temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE;
>  		break;
>  	}
>  
> -	I915_WRITE(PCH_ADPA, temp);
> +	I915_WRITE(crt->adpa_reg, temp);
>  }
>  
> -static void gmch_crt_dpms(struct drm_encoder *encoder, int mode)
> +static void intel_crt_dpms(struct drm_connector *connector, int mode)
>  {
> -	struct drm_device *dev = encoder->dev;
> -	struct drm_i915_private *dev_priv = dev->dev_private;
> -	u32 temp;
> -
> -	temp = I915_READ(ADPA);
> -	temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE);
> -	temp &= ~ADPA_DAC_ENABLE;
> +	struct drm_device *dev = connector->dev;
> +	struct intel_encoder *encoder = intel_attached_encoder(connector);
> +	struct drm_crtc *crtc;
> +	int old_dpms;
>  
> -	if (IS_VALLEYVIEW(dev) && mode != DRM_MODE_DPMS_ON)
> +	/* PCH platforms and VLV only support on/off. */
> +	if (INTEL_INFO(dev)->gen < 5 && mode != DRM_MODE_DPMS_ON)
>  		mode = DRM_MODE_DPMS_OFF;
>  
> -	switch (mode) {
> -	case DRM_MODE_DPMS_ON:
> -		temp |= ADPA_DAC_ENABLE;
> -		break;
> -	case DRM_MODE_DPMS_STANDBY:
> -		temp |= ADPA_DAC_ENABLE | ADPA_HSYNC_CNTL_DISABLE;
> -		break;
> -	case DRM_MODE_DPMS_SUSPEND:
> -		temp |= ADPA_DAC_ENABLE | ADPA_VSYNC_CNTL_DISABLE;
> -		break;
> -	case DRM_MODE_DPMS_OFF:
> -		temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE;
> -		break;
> +	if (mode == connector->dpms)
> +		return;
> +
> +	old_dpms = connector->dpms;
> +	connector->dpms = mode;
> +
> +	/* Only need to change hw state when actually enabled */
> +	crtc = encoder->base.crtc;
> +	if (!crtc) {
> +		encoder->connectors_active = false;
> +		return;
>  	}
>  
> -	I915_WRITE(ADPA, temp);
> +	/* We need the pipe to run for anything but OFF. */
> +	if (mode == DRM_MODE_DPMS_OFF)
> +		encoder->connectors_active = false;
> +	else
> +		encoder->connectors_active = true;
> +
> +	if (mode < old_dpms) {
> +		/* From off to on, enable the pipe first. */
> +		intel_crtc_update_dpms(crtc);
> +
> +		intel_crt_set_dpms(encoder, mode);
> +	} else {
> +		intel_crt_set_dpms(encoder, mode);
> +
> +		intel_crtc_update_dpms(crtc);
> +	}
>  }
>  
>  static int intel_crt_mode_valid(struct drm_connector *connector,
> @@ -596,27 +615,17 @@ static void intel_crt_reset(struct drm_connector *connector)
>   * Routines for controlling stuff on the analog port
>   */
>  
> -static const struct drm_encoder_helper_funcs pch_encoder_funcs = {
> -	.mode_fixup = intel_crt_mode_fixup,
> -	.prepare = intel_encoder_noop,
> -	.commit = intel_encoder_noop,
> -	.mode_set = intel_crt_mode_set,
> -	.dpms = pch_crt_dpms,
> -	.disable = intel_encoder_disable,
> -};
> -
> -static const struct drm_encoder_helper_funcs gmch_encoder_funcs = {
> +static const struct drm_encoder_helper_funcs crt_encoder_funcs = {
>  	.mode_fixup = intel_crt_mode_fixup,
>  	.prepare = intel_encoder_noop,
>  	.commit = intel_encoder_noop,
>  	.mode_set = intel_crt_mode_set,
> -	.dpms = gmch_crt_dpms,
>  	.disable = intel_encoder_disable,
>  };
>  
>  static const struct drm_connector_funcs intel_crt_connector_funcs = {
>  	.reset = intel_crt_reset,
> -	.dpms = drm_helper_connector_dpms,
> +	.dpms = intel_crt_dpms,
>  	.detect = intel_crt_detect,
>  	.fill_modes = drm_helper_probe_single_connector_modes,
>  	.destroy = intel_crt_destroy,
> @@ -657,7 +666,6 @@ void intel_crt_init(struct drm_device *dev)
>  	struct intel_crt *crt;
>  	struct intel_connector *intel_connector;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	const struct drm_encoder_helper_funcs *encoder_helper_funcs;
>  
>  	/* Skip machines without VGA that falsely report hotplug events */
>  	if (dmi_check_system(intel_no_crt))
> @@ -696,11 +704,6 @@ void intel_crt_init(struct drm_device *dev)
>  	connector->doublescan_allowed = 0;
>  
>  	if (HAS_PCH_SPLIT(dev))
> -		encoder_helper_funcs = &pch_encoder_funcs;
> -	else
> -		encoder_helper_funcs = &gmch_encoder_funcs;
> -
> -	if (HAS_PCH_SPLIT(dev))
>  		crt->adpa_reg = PCH_ADPA;
>  	else if (IS_VALLEYVIEW(dev))
>  		crt->adpa_reg = VLV_ADPA;
> @@ -710,7 +713,7 @@ void intel_crt_init(struct drm_device *dev)
>  	crt->base.disable = intel_disable_crt;
>  	crt->base.enable = intel_enable_crt;
>  
> -	drm_encoder_helper_add(&crt->base.base, encoder_helper_funcs);
> +	drm_encoder_helper_add(&crt->base.base, &crt_encoder_funcs);
>  	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
>  
>  	drm_sysfs_connector_add(connector);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index cbd356f..0d48ebe 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3462,34 +3462,31 @@ static void i9xx_crtc_off(struct drm_crtc *crtc)
>  /**
>   * Sets the power management mode of the pipe and plane.
>   */
> -static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
> +void intel_crtc_update_dpms(struct drm_crtc *crtc)
>  {
>  	struct drm_device *dev = crtc->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct drm_i915_master_private *master_priv;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> +	struct intel_encoder *intel_encoder;
>  	int pipe = intel_crtc->pipe;
> -	bool enabled;
> +	bool enabled, enable = false;
> +	int mode;
> +
> +	for_each_encoder_on_crtc(dev, crtc, intel_encoder)
> +		enable |= intel_encoder->connectors_active;
> +
> +	mode = enable ? DRM_MODE_DPMS_ON : DRM_MODE_DPMS_OFF;
>  
>  	if (intel_crtc->dpms_mode == mode)
>  		return;
>  
>  	intel_crtc->dpms_mode = mode;
>  
> -	/* XXX: When our outputs are all unaware of DPMS modes other than off
> -	 * and on, we should map those modes to DRM_MODE_DPMS_OFF in the CRTC.
> -	 */
> -	switch (mode) {
> -	case DRM_MODE_DPMS_ON:
> -	case DRM_MODE_DPMS_STANDBY:
> -	case DRM_MODE_DPMS_SUSPEND:
> +	if (enable)
>  		dev_priv->display.crtc_enable(crtc);
> -		break;
> -
> -	case DRM_MODE_DPMS_OFF:
> +	else
>  		dev_priv->display.crtc_disable(crtc);
> -		break;
> -	}
>  
>  	if (!dev->primary->master)
>  		return;
> @@ -3498,7 +3495,7 @@ static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
>  	if (!master_priv->sarea_priv)
>  		return;
>  
> -	enabled = crtc->enabled && mode != DRM_MODE_DPMS_OFF;
> +	enabled = crtc->enabled && enable;
>  
>  	switch (pipe) {
>  	case 0:
> @@ -3517,11 +3514,12 @@ static void intel_crtc_dpms(struct drm_crtc *crtc, int mode)
>  
>  static void intel_crtc_disable(struct drm_crtc *crtc)
>  {
> -	struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
>  	struct drm_device *dev = crtc->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  
> -	crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
> +	/* crtc->disable is only called when we have no encoders, hence this
> +	 * will disable the pipe. */
> +	intel_crtc_update_dpms(crtc);
>  	dev_priv->display.off(crtc);
>  
>  	assert_plane_disabled(dev->dev_private, to_intel_crtc(crtc)->plane);
> @@ -3581,11 +3579,11 @@ void intel_encoder_dpms(struct intel_encoder *encoder, int mode)
>  	if (mode == DRM_MODE_DPMS_ON) {
>  		encoder->connectors_active = true;
>  
> -		intel_crtc_dpms(encoder->base.crtc, DRM_MODE_DPMS_ON);
> +		intel_crtc_update_dpms(encoder->base.crtc);
>  	} else {
>  		encoder->connectors_active = false;
>  
> -		intel_crtc_dpms(encoder->base.crtc, DRM_MODE_DPMS_OFF);
> +		intel_crtc_update_dpms(encoder->base.crtc);
>  	}
>  }
>  
> @@ -6609,7 +6607,6 @@ static void intel_crtc_reset(struct drm_crtc *crtc)
>  }
>  
>  static struct drm_crtc_helper_funcs intel_helper_funcs = {
> -	.dpms = intel_crtc_dpms,
>  	.mode_fixup = intel_crtc_mode_fixup,
>  	.mode_set = intel_crtc_mode_set,
>  	.mode_set_base = intel_pipe_set_base,
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 759dcba..2456245 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -411,6 +411,7 @@ extern void intel_panel_destroy_backlight(struct drm_device *dev);
>  extern enum drm_connector_status intel_panel_detect(struct drm_device *dev);
>  
>  extern void intel_crtc_load_lut(struct drm_crtc *crtc);
> +extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
>  extern void intel_encoder_prepare(struct drm_encoder *encoder);
>  extern void intel_encoder_commit(struct drm_encoder *encoder);
>  extern void intel_encoder_noop(struct drm_encoder *encoder);
> diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> index 4ad988f..c55a13e 100644
> --- a/drivers/gpu/drm/i915/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/intel_dvo.c
> @@ -129,21 +129,39 @@ static void intel_enable_dvo(struct intel_encoder *encoder)
>  	intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true);
>  }
>  
> -static void intel_dvo_dpms(struct drm_encoder *encoder, int mode)
> +static void intel_dvo_dpms(struct drm_connector *connector, int mode)
>  {
> -	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
> -	struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder);
> -	u32 dvo_reg = intel_dvo->dev.dvo_reg;
> -	u32 temp = I915_READ(dvo_reg);
> +	struct intel_dvo *intel_dvo = intel_attached_dvo(connector);
> +	struct drm_crtc *crtc;
> +
> +	/* dvo supports only 2 dpms states. */
> +	if (mode != DRM_MODE_DPMS_ON)
> +		mode = DRM_MODE_DPMS_OFF;
> +
> +	if (mode == connector->dpms)
> +		return;
> +
> +	connector->dpms = mode;
> +
> +	/* Only need to change hw state when actually enabled */
> +	crtc = intel_dvo->base.base.crtc;
> +	if (!crtc) {
> +		intel_dvo->base.connectors_active = false;
> +		return;
> +	}
>  
>  	if (mode == DRM_MODE_DPMS_ON) {
> -		I915_WRITE(dvo_reg, temp | DVO_ENABLE);
> -		I915_READ(dvo_reg);
> +		intel_dvo->base.connectors_active = true;
> +
> +		intel_crtc_update_dpms(crtc);
> +
>  		intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true);
>  	} else {
>  		intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false);
> -		I915_WRITE(dvo_reg, temp & ~DVO_ENABLE);
> -		I915_READ(dvo_reg);
> +
> +		intel_dvo->base.connectors_active = false;
> +
> +		intel_crtc_update_dpms(crtc);
>  	}
>  }
>  
> @@ -299,7 +317,6 @@ static void intel_dvo_destroy(struct drm_connector *connector)
>  }
>  
>  static const struct drm_encoder_helper_funcs intel_dvo_helper_funcs = {
> -	.dpms = intel_dvo_dpms,
>  	.mode_fixup = intel_dvo_mode_fixup,
>  	.prepare = intel_encoder_noop,
>  	.mode_set = intel_dvo_mode_set,
> @@ -308,7 +325,7 @@ static const struct drm_encoder_helper_funcs intel_dvo_helper_funcs = {
>  };
>  
>  static const struct drm_connector_funcs intel_dvo_connector_funcs = {
> -	.dpms = drm_helper_connector_dpms,
> +	.dpms = intel_dvo_dpms,
>  	.detect = intel_dvo_detect,
>  	.destroy = intel_dvo_destroy,
>  	.fill_modes = drm_helper_probe_single_connector_modes,
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 20feaa3..a01c470 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1192,51 +1192,44 @@ static void intel_enable_sdvo(struct intel_encoder *encoder)
>  	intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output);
>  }
>  
> -static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode)
> +static void intel_sdvo_dpms(struct drm_connector *connector, int mode)
>  {
> -	struct drm_device *dev = encoder->dev;
> -	struct drm_i915_private *dev_priv = dev->dev_private;
> -	struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder);
> -	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> -	u32 temp;
> +	struct drm_crtc *crtc;
> +	struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector);
> +
> +	/* dvo supports only 2 dpms states. */
> +	if (mode != DRM_MODE_DPMS_ON)
> +		mode = DRM_MODE_DPMS_OFF;
> +
> +	if (mode == connector->dpms)
> +		return;
> +
> +	connector->dpms = mode;
> +
> +	/* Only need to change hw state when actually enabled */
> +	crtc = intel_sdvo->base.base.crtc;
> +	if (!crtc) {
> +		intel_sdvo->base.connectors_active = false;
> +		return;
> +	}
>  
>  	if (mode != DRM_MODE_DPMS_ON) {
>  		intel_sdvo_set_active_outputs(intel_sdvo, 0);
>  		if (0)
>  			intel_sdvo_set_encoder_power_state(intel_sdvo, mode);
>  
> -		if (mode == DRM_MODE_DPMS_OFF) {
> -			temp = I915_READ(intel_sdvo->sdvo_reg);
> -			if ((temp & SDVO_ENABLE) != 0) {
> -				intel_sdvo_write_sdvox(intel_sdvo, temp & ~SDVO_ENABLE);
> -			}
> -		}
> +		intel_sdvo->base.connectors_active = false;
> +
> +		intel_crtc_update_dpms(crtc);
>  	} else {
> -		bool input1, input2;
> -		int i;
> -		u8 status;
> -
> -		temp = I915_READ(intel_sdvo->sdvo_reg);
> -		if ((temp & SDVO_ENABLE) == 0)
> -			intel_sdvo_write_sdvox(intel_sdvo, temp | SDVO_ENABLE);
> -		for (i = 0; i < 2; i++)
> -			intel_wait_for_vblank(dev, intel_crtc->pipe);
> -
> -		status = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2);
> -		/* Warn if the device reported failure to sync.
> -		 * A lot of SDVO devices fail to notify of sync, but it's
> -		 * a given it the status is a success, we succeeded.
> -		 */
> -		if (status == SDVO_CMD_STATUS_SUCCESS && !input1) {
> -			DRM_DEBUG_KMS("First %s output reported failure to "
> -					"sync\n", SDVO_NAME(intel_sdvo));
> -		}
> +		intel_sdvo->base.connectors_active = true;
> +
> +		intel_crtc_update_dpms(crtc);
>  
>  		if (0)
>  			intel_sdvo_set_encoder_power_state(intel_sdvo, mode);
>  		intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output);
>  	}
> -	return;
>  }
>  
>  static int intel_sdvo_mode_valid(struct drm_connector *connector,
> @@ -1895,7 +1888,6 @@ done:
>  }
>  
>  static const struct drm_encoder_helper_funcs intel_sdvo_helper_funcs = {
> -	.dpms = intel_sdvo_dpms,
>  	.mode_fixup = intel_sdvo_mode_fixup,
>  	.prepare = intel_encoder_noop,
>  	.mode_set = intel_sdvo_mode_set,
> @@ -1904,7 +1896,7 @@ static const struct drm_encoder_helper_funcs intel_sdvo_helper_funcs = {
>  };
>  
>  static const struct drm_connector_funcs intel_sdvo_connector_funcs = {
> -	.dpms = drm_helper_connector_dpms,
> +	.dpms = intel_sdvo_dpms,
>  	.detect = intel_sdvo_detect,
>  	.fill_modes = drm_helper_probe_single_connector_modes,
>  	.set_property = intel_sdvo_set_property,

Only comment here is that having code that writes reserved bits being
shared between platforms that handle those bits and those that don't
will make me look twice everytime... (just like the existing code makes
you check the gen & VLV bit everytime). But maybe that gets fixed in a
later patch.

Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center

  reply	other threads:[~2012-09-04 20:10 UTC|newest]

Thread overview: 173+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-19 19:12 [PATCH 00/58] modeset-rework, the basic conversion Daniel Vetter
2012-08-19 19:12 ` [PATCH 01/58] drm/i915: add crtc->enable/disable vfuncs insted of dpms Daniel Vetter
2012-08-29 17:51   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 02/58] drm/i915: rip out crtc prepare/commit indirection Daniel Vetter
2012-08-29 17:52   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 03/58] drm/i915: add direct encoder disable/enable infrastructure Daniel Vetter
2012-08-29 18:01   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 04/58] drm/i915/hdmi: convert to encoder->disable/enable Daniel Vetter
2012-09-04 19:24   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 05/58] drm/i915/tv: convert to encoder enable/disable Daniel Vetter
2012-09-04 19:25   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 06/58] drm/i915/lvds: convert to encoder disable/enable Daniel Vetter
2012-09-04 19:26   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 07/58] drm/i915/dp: " Daniel Vetter
2012-09-04 19:33   ` Jesse Barnes
2012-09-04 19:42     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 08/58] drm/i915/crt: " Daniel Vetter
2012-09-04 19:50   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 09/58] drm/i915/sdvo: " Daniel Vetter
2012-09-04 19:52   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 10/58] drm/i915/dvo: " Daniel Vetter
2012-09-04 19:53   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 11/58] drm/i915: convert dpms functions of dvo/sdvo/crt Daniel Vetter
2012-08-29  7:12   ` [PATCH] " Daniel Vetter
2012-09-04 20:10     ` Jesse Barnes [this message]
2012-08-19 19:12 ` [PATCH 12/58] drm/i915: rip out encoder->disable/enable checks Daniel Vetter
2012-09-04 20:11   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 13/58] drm/i915: clean up encoder_prepare/commit Daniel Vetter
2012-09-04 20:12   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 14/58] drm/i915: copy&paste drm_crtc_helper_set_config Daniel Vetter
2012-09-04 20:13   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 15/58] drm/i915: call set_base directly Daniel Vetter
2012-09-04 20:15   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 16/58] drm/i915: inline intel_best_encoder Daniel Vetter
2012-09-04 20:18   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 17/58] drm/i915: copy&paste drm_crtc_helper_set_mode Daniel Vetter
2012-09-04 20:19   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 18/58] drm/i915: simplify intel_crtc_prepare_encoders Daniel Vetter
2012-09-04 20:20   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 19/58] drm/i915: rip out encoder->prepare/commit Daniel Vetter
2012-09-04 20:21   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 20/58] drm/i915: call crtc functions directly Daniel Vetter
2012-09-04 20:22   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 21/58] drm/i915: WARN when trying to enabled an unused crtc Daniel Vetter
2012-09-04 20:23   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 22/58] drm/i915: Add interfaces to read out encoder/connector hw state Daniel Vetter
2012-09-04 20:25   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 23/58] drm/i915/dp: implement get_hw_state Daniel Vetter
2012-09-04 20:26   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 24/58] drm/i915/hdmi: " Daniel Vetter
2012-09-04 20:28   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 25/58] drm/i915/tv: " Daniel Vetter
2012-09-04 20:28   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 26/58] drm/i915/lvds: " Daniel Vetter
2012-09-04 20:28   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 27/58] drm/i915/crt: " Daniel Vetter
2012-09-04 20:29   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 28/58] drm/i915/sdvo: " Daniel Vetter
2012-09-04 20:31   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 29/58] drm/i915/dvo: " Daniel Vetter
2012-09-04 20:32   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 30/58] drm/i915: read out the modeset hw state at load and resume time Daniel Vetter
2012-09-05 16:14   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 31/58] drm/i915: check connector hw/sw state Daniel Vetter
2012-09-05 16:26   ` Jesse Barnes
2012-09-05 19:10     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 32/58] drm/i915: rip out intel_crtc->dpms_mode Daniel Vetter
2012-09-05 16:27   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 33/58] drm/i915: rip out intel_dp->dpms_mode Daniel Vetter
2012-09-05 16:28   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 34/58] drm/i915: ensure the force pipe A quirk is actually followed Daniel Vetter
2012-09-05 16:32   ` Jesse Barnes
2012-09-05 19:12     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 35/58] drm/i915: introduce struct intel_set_config Daniel Vetter
2012-09-05 16:34   ` Jesse Barnes
2012-09-05 19:27     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 36/58] drm/i915: extract modeset config save/restore code Daniel Vetter
2012-09-05 16:36   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 37/58] drm/i915: extract intel_set_config_compute_mode_changes Daniel Vetter
2012-09-05 16:42   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 38/58] drm/i915: extract intel_set_config_update_output_state Daniel Vetter
2012-09-05 16:44   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 39/58] drm/i915: implement crtc helper semantics relied upon by the fb helper Daniel Vetter
2012-09-05 16:45   ` Jesse Barnes
2012-09-05 19:15     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 40/58] drm/i915: don't update the fb base if there is no fb Daniel Vetter
2012-09-05 16:47   ` Jesse Barnes
2012-08-19 19:12 ` [PATCH 41/58] drm/i915: convert pointless error checks in set_config to BUGs Daniel Vetter
2012-09-05 16:50   ` Jesse Barnes
2012-09-05 19:19     ` Daniel Vetter
2012-08-19 19:12 ` [PATCH 42/58] drm/i915: don't save all the encoder/crtc state in set_config Daniel Vetter
2012-09-05 16:52   ` Jesse Barnes
2012-09-05 19:21     ` Daniel Vetter
2012-08-19 19:13 ` [PATCH 43/58] drm/i915: stage modeset output changes Daniel Vetter
2012-09-05 17:51   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 44/58] drm/i915: push crtc->fb update into pipe_set_base Daniel Vetter
2012-09-04 19:33   ` [PATCH] " Daniel Vetter
2012-09-05 17:55     ` Jesse Barnes
2012-09-05 19:59       ` Daniel Vetter
2012-09-05 17:54   ` [PATCH 44/58] " Jesse Barnes
2012-08-19 19:13 ` [PATCH 45/58] drm/i915: remove crtc disabling special case Daniel Vetter
2012-09-05 17:56   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 46/58] drm/i915: move output commit and crtc disabling into set_mode Daniel Vetter
2012-09-05 17:58   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 47/58] drm/i915: extract adjusted mode computation Daniel Vetter
2012-09-05 18:00   ` Jesse Barnes
2012-09-05 19:30     ` Daniel Vetter
2012-08-19 19:13 ` [PATCH 48/58] drm/i915: use staged outuput config in tv->mode_fixup Daniel Vetter
2012-09-05 18:02   ` Jesse Barnes
2012-09-06  7:30     ` Daniel Vetter
2012-08-19 19:13 ` [PATCH 49/58] drm/i915: use staged outuput config in lvds->mode_fixup Daniel Vetter
2012-09-05 18:02   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 50/58] drm/i915: compute masks of crtcs affected in set_mode Daniel Vetter
2012-08-29 10:34   ` [PATCH] " Daniel Vetter
2012-09-05 18:09     ` Jesse Barnes
2012-09-05 19:38       ` Daniel Vetter
2012-09-05 19:45         ` Jesse Barnes
2012-09-05 18:07   ` [PATCH 50/58] " Jesse Barnes
2012-08-19 19:13 ` [PATCH 51/58] drm/i915: implement new set_mode code flow Daniel Vetter
2012-09-05 18:14   ` Jesse Barnes
2012-09-05 19:43     ` Daniel Vetter
2012-09-05 19:49       ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 52/58] drm/i915: push commit_output_state past crtc disabling Daniel Vetter
2012-09-05 18:17   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 53/58] drm/i915: s/intel_encoder_disable/intel_encoder_noop Daniel Vetter
2012-09-05 18:17   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 54/58] drm/i915: WARN if the pipe won't turn off Daniel Vetter
2012-09-05 18:18   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 55/58] drm/i915: switch the load detect code to the staged modeset config Daniel Vetter
2012-09-05 18:19   ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 56/58] drm/i915: push commit_output_state past the crtc/encoder preparing Daniel Vetter
2012-08-31 18:12   ` [PATCH] " Daniel Vetter
2012-09-04 19:32     ` Daniel Vetter
2012-09-05 18:28       ` Jesse Barnes
2012-09-05 19:48         ` Daniel Vetter
2012-09-05 18:56           ` [PATCH] drm/i915: push crtc->fb update into pipe_set_base Daniel Vetter
2012-09-05 19:50           ` [PATCH] drm/i915: push commit_output_state past the crtc/encoder preparing Jesse Barnes
2012-09-06 20:46             ` Jesse Barnes
2012-08-19 19:13 ` [PATCH 57/58] drm/i915: disable all crtcs at suspend time Daniel Vetter
2012-08-29 21:13   ` [PATCH] drm/i915: no longer call drm_helper_resume_force_mode Daniel Vetter
2012-09-05 18:31     ` Jesse Barnes
2012-09-05 19:56       ` Daniel Vetter
2012-09-05 20:04         ` Jesse Barnes
2012-09-06 20:47           ` Jesse Barnes
2012-09-05 18:29   ` [PATCH 57/58] drm/i915: disable all crtcs at suspend time Jesse Barnes
2012-08-19 19:13 ` [PATCH 58/58] drm/i915: add tons of modeset state checks Daniel Vetter
2012-08-20  8:24   ` [PATCH] " Daniel Vetter
2012-08-20 12:22   ` Daniel Vetter
2012-08-31 18:12     ` [PATCH 1/2] " Daniel Vetter
2012-08-31 18:12       ` [PATCH 2/2] drm/i915: improve modeset state checking after dpms calls Daniel Vetter
2012-09-05 18:34         ` Jesse Barnes
2012-09-05 18:33       ` [PATCH 1/2] drm/i915: add tons of modeset state checks Jesse Barnes
2012-08-20 13:17 ` [PATCH 00/58] modeset-rework, the basic conversion Jani Nikula
2012-08-21  3:27 ` Ben Widawsky
2012-08-21 17:48 ` Lespiau, Damien
2012-08-21 18:11   ` Daniel Vetter
2012-08-22 10:46     ` Lespiau, Damien
2012-08-22 11:03       ` Lespiau, Damien
2012-08-22 19:13         ` Lespiau, Damien
2012-08-22 21:21           ` Daniel Vetter
2012-08-23 12:26             ` Lespiau, Damien
2012-08-23 22:39               ` Daniel Vetter
2012-08-29 12:26                 ` Lespiau, Damien
2012-08-30 10:40                   ` Rodrigo Vivi
2012-08-21 19:48 ` Chris Wilson
2012-08-27  8:04 ` Vijay Purushothaman
2012-09-03 17:50 ` Paulo Zanoni
2012-09-05 23:23 ` Jesse Barnes
2012-09-06  6:55   ` Daniel Vetter
2012-09-06  7:23     ` Daniel Vetter
2012-09-07  1:08   ` Jesse Barnes
2012-09-07  8:55     ` Daniel Vetter
2012-09-06 21:00 ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120904131052.76413d4c@jbarnes-desktop \
    --to=jbarnes@virtuousgeek.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.