All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode
@ 2015-09-08 10:40 ville.syrjala
  2015-09-08 10:40 ` [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling ville.syrjala
                   ` (7 more replies)
  0 siblings, 8 replies; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Maarten pointed out that we still look at the non-crtc_ timings from
adjusted_mode in many places. While that is only strictly required with
HDMI due to stereo doubling I think it's better to be consistent about
it and always use the crtc_ timings. So this series aims to do just that.

I used spatch and sed to do a bunch of the conversion. I also used spatch
to located the functions that get passed the adjusted_mode (fairly easy
after the mode->adjustead_mode rename), but I was too lazy to figure out
if there is a way to make it rename those function arguments at the same
time, so I just did that part manually.

Series available here:
git://github.com/vsyrjala/linux.git adjusted_mode_crtc_timings

In the branch I also included my earlier drm_edid.c const patches [1],
as I believe this series would run into some compiler warnings without
some of those those patches.

[1] http://lists.freedesktop.org/archives/dri-devel/2015-September/089896.html

Ville Syrjälä (7):
  drm/i915: Use intel_panel for DVO fixed mode handling
  drm/i915: Always call the adjusted mode 'adjusted_mode'
  drm/i915: s/mode/adjusted_mode/ in functions that really get passed
    the adjusted_mode
  drm/i915: Always use crtc_ timings when dealing with adjustead_mode
  drm/i915: Move HDMI aspect ratio setup to .compute_config()
  drm/i915: Constify adjusted_mode
  drm/i915: Add HDMI aspect ratio property for SDVO

 drivers/gpu/drm/i915/dvo.h           |   4 +-
 drivers/gpu/drm/i915/dvo_ch7017.c    |   4 +-
 drivers/gpu/drm/i915/dvo_ch7xxx.c    |   4 +-
 drivers/gpu/drm/i915/dvo_ivch.c      |  12 ++--
 drivers/gpu/drm/i915/dvo_ns2501.c    |   4 +-
 drivers/gpu/drm/i915/dvo_sil164.c    |   4 +-
 drivers/gpu/drm/i915/dvo_tfp410.c    |   4 +-
 drivers/gpu/drm/i915/i915_drv.h      |   2 +-
 drivers/gpu/drm/i915/intel_audio.c   |  24 ++++----
 drivers/gpu/drm/i915/intel_crt.c     |   2 +-
 drivers/gpu/drm/i915/intel_display.c |  20 +++----
 drivers/gpu/drm/i915/intel_dp.c      |   2 +-
 drivers/gpu/drm/i915/intel_dp_mst.c  |   4 +-
 drivers/gpu/drm/i915/intel_drv.h     |   3 +-
 drivers/gpu/drm/i915/intel_dsi.c     |  37 ++++++-------
 drivers/gpu/drm/i915/intel_dvo.c     |  59 +++++++++-----------
 drivers/gpu/drm/i915/intel_hdmi.c    |  40 +++++---------
 drivers/gpu/drm/i915/intel_lvds.c    |   3 +-
 drivers/gpu/drm/i915/intel_modes.c   |   9 +++
 drivers/gpu/drm/i915/intel_panel.c   | 104 +++++++++++++++++------------------
 drivers/gpu/drm/i915/intel_pm.c      |  21 +++----
 drivers/gpu/drm/i915/intel_sdvo.c    |  38 +++++++++++--
 drivers/gpu/drm/i915/intel_sprite.c  |  16 +++---
 23 files changed, 215 insertions(+), 205 deletions(-)

-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-24  8:00   ` Mika Kahola
  2015-09-08 10:40 ` [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode' ville.syrjala
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Replace intel_dvo->panel_fixed_mode with the appropriate intel_panel
stuff. Now all connectors that have a fixed mode use intel_panel.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_dvo.c | 49 ++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index c80fe1f..0bc8aa8 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -97,7 +97,8 @@ struct intel_dvo {
 
 	struct intel_dvo_device dev;
 
-	struct drm_display_mode *panel_fixed_mode;
+	struct intel_connector *attached_connector;
+
 	bool panel_wants_dither;
 };
 
@@ -201,6 +202,8 @@ intel_dvo_mode_valid(struct drm_connector *connector,
 		     struct drm_display_mode *mode)
 {
 	struct intel_dvo *intel_dvo = intel_attached_dvo(connector);
+	const struct drm_display_mode *fixed_mode =
+		to_intel_connector(connector)->panel.fixed_mode;
 	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
 	int target_clock = mode->clock;
 
@@ -209,13 +212,13 @@ intel_dvo_mode_valid(struct drm_connector *connector,
 
 	/* XXX: Validate clock range */
 
-	if (intel_dvo->panel_fixed_mode) {
-		if (mode->hdisplay > intel_dvo->panel_fixed_mode->hdisplay)
+	if (fixed_mode) {
+		if (mode->hdisplay > fixed_mode->hdisplay)
 			return MODE_PANEL;
-		if (mode->vdisplay > intel_dvo->panel_fixed_mode->vdisplay)
+		if (mode->vdisplay > fixed_mode->vdisplay)
 			return MODE_PANEL;
 
-		target_clock = intel_dvo->panel_fixed_mode->clock;
+		target_clock = fixed_mode->clock;
 	}
 
 	if (target_clock > max_dotclk)
@@ -228,6 +231,8 @@ static bool intel_dvo_compute_config(struct intel_encoder *encoder,
 				     struct intel_crtc_state *pipe_config)
 {
 	struct intel_dvo *intel_dvo = enc_to_dvo(encoder);
+	const struct drm_display_mode *fixed_mode =
+		intel_dvo->attached_connector->panel.fixed_mode;
 	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 
 	/* If we have timings from the BIOS for the panel, put them in
@@ -235,21 +240,8 @@ static bool intel_dvo_compute_config(struct intel_encoder *encoder,
 	 * with the panel scaling set up to source from the H/VDisplay
 	 * of the original mode.
 	 */
-	if (intel_dvo->panel_fixed_mode != NULL) {
-#define C(x) adjusted_mode->x = intel_dvo->panel_fixed_mode->x
-		C(hdisplay);
-		C(hsync_start);
-		C(hsync_end);
-		C(htotal);
-		C(vdisplay);
-		C(vsync_start);
-		C(vsync_end);
-		C(vtotal);
-		C(clock);
-#undef C
-
-		drm_mode_set_crtcinfo(adjusted_mode, 0);
-	}
+	if (fixed_mode)
+		intel_fixed_panel_mode(fixed_mode, adjusted_mode);
 
 	return true;
 }
@@ -318,8 +310,9 @@ intel_dvo_detect(struct drm_connector *connector, bool force)
 
 static int intel_dvo_get_modes(struct drm_connector *connector)
 {
-	struct intel_dvo *intel_dvo = intel_attached_dvo(connector);
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
+	const struct drm_display_mode *fixed_mode =
+		to_intel_connector(connector)->panel.fixed_mode;
 
 	/* We should probably have an i2c driver get_modes function for those
 	 * devices which will have a fixed set of modes determined by the chip
@@ -331,9 +324,9 @@ static int intel_dvo_get_modes(struct drm_connector *connector)
 	if (!list_empty(&connector->probed_modes))
 		return 1;
 
-	if (intel_dvo->panel_fixed_mode != NULL) {
+	if (fixed_mode) {
 		struct drm_display_mode *mode;
-		mode = drm_mode_duplicate(connector->dev, intel_dvo->panel_fixed_mode);
+		mode = drm_mode_duplicate(connector->dev, fixed_mode);
 		if (mode) {
 			drm_mode_probed_add(connector, mode);
 			return 1;
@@ -346,6 +339,7 @@ static int intel_dvo_get_modes(struct drm_connector *connector)
 static void intel_dvo_destroy(struct drm_connector *connector)
 {
 	drm_connector_cleanup(connector);
+	intel_panel_fini(&to_intel_connector(connector)->panel);
 	kfree(connector);
 }
 
@@ -372,8 +366,6 @@ static void intel_dvo_enc_destroy(struct drm_encoder *encoder)
 	if (intel_dvo->dev.dev_ops->destroy)
 		intel_dvo->dev.dev_ops->destroy(&intel_dvo->dev);
 
-	kfree(intel_dvo->panel_fixed_mode);
-
 	intel_encoder_destroy(encoder);
 }
 
@@ -438,6 +430,8 @@ void intel_dvo_init(struct drm_device *dev)
 		return;
 	}
 
+	intel_dvo->attached_connector = intel_connector;
+
 	intel_encoder = &intel_dvo->base;
 	drm_encoder_init(dev, &intel_encoder->base,
 			 &intel_dvo_enc_funcs, encoder_type);
@@ -542,8 +536,9 @@ void intel_dvo_init(struct drm_device *dev)
 			 * headers, likely), so for now, just get the current
 			 * mode being output through DVO.
 			 */
-			intel_dvo->panel_fixed_mode =
-				intel_dvo_get_current_mode(connector);
+			intel_panel_init(&intel_connector->panel,
+					 intel_dvo_get_current_mode(connector),
+					 NULL);
 			intel_dvo->panel_wants_dither = true;
 		}
 
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode'
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
  2015-09-08 10:40 ` [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-24  8:01   ` Mika Kahola
  2015-09-28  8:03   ` Daniel Vetter
  2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
                   ` (5 subsequent siblings)
  7 siblings, 2 replies; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Always name any variable pointing at the adjusted mode as
'adjustead_mode'. This will make it much easier to identify
when we should use the crtc_ timings and when we shoudln't.

Conversion was performed with coccinelle:
@@
expression E;
identifier I;
@@
- struct drm_display_mode *I = &E.adjusted_mode;
+ struct drm_display_mode *adjusted_mode = &E.adjusted_mode;
<...
- I
+ adjusted_mode
...>

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_audio.c   |  7 ++++---
 drivers/gpu/drm/i915/intel_display.c | 12 +++++-------
 drivers/gpu/drm/i915/intel_dsi.c     | 13 ++++++-------
 drivers/gpu/drm/i915/intel_hdmi.c    |  9 +++------
 drivers/gpu/drm/i915/intel_lvds.c    |  3 +--
 drivers/gpu/drm/i915/intel_pm.c      | 14 ++++++--------
 drivers/gpu/drm/i915/intel_sdvo.c    |  3 +--
 drivers/gpu/drm/i915/intel_sprite.c  |  8 ++++----
 8 files changed, 30 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index f73de0b..cf4f5d1 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -396,7 +396,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
 {
 	struct drm_encoder *encoder = &intel_encoder->base;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
-	struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	struct drm_connector *connector;
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -419,10 +419,11 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
 	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT))
 		connector->eld[5] |= (1 << 2);
 
-	connector->eld[6] = drm_av_sync_delay(connector, mode) / 2;
+	connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
 
 	if (dev_priv->display.audio_codec_enable)
-		dev_priv->display.audio_codec_enable(connector, intel_encoder, mode);
+		dev_priv->display.audio_codec_enable(connector, intel_encoder,
+						     adjusted_mode);
 
 	if (acomp && acomp->audio_ops && acomp->audio_ops->pin_eld_notify)
 		acomp->audio_ops->pin_eld_notify(acomp->audio_ops->audio_ptr, (int) port);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index e629a1b..b8b7540 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4348,8 +4348,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
 int skl_update_scaler_crtc(struct intel_crtc_state *state)
 {
 	struct intel_crtc *intel_crtc = to_intel_crtc(state->base.crtc);
-	struct drm_display_mode *adjusted_mode =
-		&state->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
 
 	DRM_DEBUG_KMS("Updating scaler for [CRTC:%i] scaler_user index %u.%u\n",
 		      intel_crtc->base.base.id, intel_crtc->pipe, SKL_CRTC_INDEX);
@@ -7575,8 +7574,7 @@ static void intel_set_pipe_timings(struct intel_crtc *intel_crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	enum pipe pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
-	struct drm_display_mode *adjusted_mode =
-		&intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	uint32_t crtc_vtotal, crtc_vblank_end;
 	int vsyncshift = 0;
 
@@ -12767,11 +12765,11 @@ static void update_scanline_offset(struct intel_crtc *crtc)
 	 * one to the value.
 	 */
 	if (IS_GEN2(dev)) {
-		const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
+		const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 		int vtotal;
 
-		vtotal = mode->crtc_vtotal;
-		if (mode->flags & DRM_MODE_FLAG_INTERLACE)
+		vtotal = adjusted_mode->crtc_vtotal;
+		if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
 			vtotal /= 2;
 
 		crtc->scanline_offset = vtotal - 1;
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 781c267..0c26ba5 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -759,8 +759,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
 	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
-	struct drm_display_mode *adjusted_mode =
-		&intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum port port;
 	unsigned int bpp = intel_crtc->config->pipe_bpp;
 	u32 val, tmp;
@@ -842,14 +841,14 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
 				txbyteclkhs(adjusted_mode->htotal, bpp,
-					intel_dsi->lane_count,
-					intel_dsi->burst_mode_ratio) + 1);
+					    intel_dsi->lane_count,
+					    intel_dsi->burst_mode_ratio) + 1);
 		} else {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
 				txbyteclkhs(adjusted_mode->vtotal *
-					adjusted_mode->htotal,
-					bpp, intel_dsi->lane_count,
-					intel_dsi->burst_mode_ratio) + 1);
+					    adjusted_mode->htotal,
+					    bpp, intel_dsi->lane_count,
+					    intel_dsi->burst_mode_ratio) + 1);
 		}
 		I915_WRITE(MIPI_LP_RX_TIMEOUT(port), intel_dsi->lp_rx_timeout);
 		I915_WRITE(MIPI_TURN_AROUND_TIMEOUT(port),
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index feb31d8..0b256c9 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1523,8 +1523,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
 {
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode =
-		&intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 
 	intel_hdmi_prepare(encoder);
 
@@ -1541,8 +1540,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode =
-		&intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum dpio_channel port = vlv_dport_to_channel(dport);
 	int pipe = intel_crtc->pipe;
 	u32 val;
@@ -1808,8 +1806,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode =
-		&intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum dpio_channel ch = vlv_dport_to_channel(dport);
 	int pipe = intel_crtc->pipe;
 	int data, i, stagger;
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 2c2d1f0..5e70acf 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -139,8 +139,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	const struct drm_display_mode *adjusted_mode =
-		&crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	int pipe = crtc->pipe;
 	u32 temp;
 
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 64bc77e..7aa9a4e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -1500,8 +1500,7 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
 	if (crtc) {
 		/* self-refresh has much higher latency */
 		static const int sr_latency_ns = 12000;
-		const struct drm_display_mode *adjusted_mode =
-			&to_intel_crtc(crtc)->config->base.adjusted_mode;
+		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
 		int clock = adjusted_mode->crtc_clock;
 		int htotal = adjusted_mode->crtc_htotal;
 		int hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
@@ -1648,8 +1647,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
 	if (HAS_FW_BLC(dev) && enabled) {
 		/* self-refresh has much higher latency */
 		static const int sr_latency_ns = 6000;
-		const struct drm_display_mode *adjusted_mode =
-			&to_intel_crtc(enabled)->config->base.adjusted_mode;
+		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(enabled)->config->base.adjusted_mode;
 		int clock = adjusted_mode->crtc_clock;
 		int htotal = adjusted_mode->crtc_htotal;
 		int hdisplay = to_intel_crtc(enabled)->config->pipe_src_w;
@@ -2086,7 +2084,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct drm_display_mode *mode = &intel_crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	u32 linetime, ips_linetime;
 
 	if (!intel_crtc->active)
@@ -2095,9 +2093,9 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
 	/* The WM are computed with base on how long it takes to fill a single
 	 * row at the given clock rate, multiplied by 8.
 	 * */
-	linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
-				     mode->crtc_clock);
-	ips_linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
+	linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
+				     adjusted_mode->crtc_clock);
+	ips_linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
 					 dev_priv->cdclk_freq);
 
 	return PIPE_WM_LINETIME_IPS_LINETIME(ips_linetime) |
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index ca3dd7c..3a70c2f 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1189,8 +1189,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
 	struct drm_device *dev = intel_encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode =
-		&crtc->config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	struct drm_display_mode *mode = &crtc->config->base.mode;
 	struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
 	u32 sdvox;
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index ca7e264..a5e599b 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -79,19 +79,19 @@ static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
 void intel_pipe_update_start(struct intel_crtc *crtc)
 {
 	struct drm_device *dev = crtc->base.dev;
-	const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	enum pipe pipe = crtc->pipe;
 	long timeout = msecs_to_jiffies_timeout(1);
 	int scanline, min, max, vblank_start;
 	wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
 	DEFINE_WAIT(wait);
 
-	vblank_start = mode->crtc_vblank_start;
-	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
+	vblank_start = adjusted_mode->crtc_vblank_start;
+	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
 		vblank_start = DIV_ROUND_UP(vblank_start, 2);
 
 	/* FIXME needs to be calibrated sensibly */
-	min = vblank_start - usecs_to_scanlines(mode, 100);
+	min = vblank_start - usecs_to_scanlines(adjusted_mode, 100);
 	max = vblank_start - 1;
 
 	local_irq_disable();
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
  2015-09-08 10:40 ` [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling ville.syrjala
  2015-09-08 10:40 ` [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode' ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-23 11:12   ` Mika Kahola
                     ` (2 more replies)
  2015-09-08 10:40 ` [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode ville.syrjala
                   ` (4 subsequent siblings)
  7 siblings, 3 replies; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Rename the function argument to 'adjusted_mode' whenever the function
only ever gets passed the adjusted_mode.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h     |  2 +-
 drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
 drivers/gpu/drm/i915/intel_dsi.c    | 16 ++++++++--------
 drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
 drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
 drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
 6 files changed, 44 insertions(+), 41 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 503dff5..4f4b504 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
 	void (*crtc_disable)(struct drm_crtc *crtc);
 	void (*audio_codec_enable)(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode);
+				   const struct drm_display_mode *adjusted_mode);
 	void (*audio_codec_disable)(struct intel_encoder *encoder);
 	void (*fdi_link_train)(struct drm_crtc *crtc);
 	void (*init_clock_gating)(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index cf4f5d1..ca90ba3 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -69,17 +69,18 @@ static const struct {
 };
 
 /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
-static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
+static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
 {
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
-		if (mode->clock == hdmi_audio_clock[i].clock)
+		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
 			break;
 	}
 
 	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
-		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
+		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
+			      adjusted_mode->clock);
 		i = 1;
 	}
 
@@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
 
 static void g4x_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	uint8_t *eld = connector->eld;
@@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
 
 static void hsw_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
@@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
 	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
 		tmp |= AUD_CONFIG_N_VALUE_INDEX;
 	else
-		tmp |= audio_config_hdmi_pixel_clock(mode);
+		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
 	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
 }
 
@@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
 
 static void ilk_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
@@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
 	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
 		tmp |= AUD_CONFIG_N_VALUE_INDEX;
 	else
-		tmp |= audio_config_hdmi_pixel_clock(mode);
+		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
 	I915_WRITE(aud_config, tmp);
 }
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 0c26ba5..55af0c5 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
 }
 
 static void set_dsi_timings(struct drm_encoder *encoder,
-			    const struct drm_display_mode *mode)
+			    const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 
 	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
 
-	hactive = mode->hdisplay;
-	hfp = mode->hsync_start - mode->hdisplay;
-	hsync = mode->hsync_end - mode->hsync_start;
-	hbp = mode->htotal - mode->hsync_end;
+	hactive = adjusted_mode->hdisplay;
+	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
+	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
+	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
 
 	if (intel_dsi->dual_link) {
 		hactive /= 2;
@@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 		hbp /= 2;
 	}
 
-	vfp = mode->vsync_start - mode->vdisplay;
-	vsync = mode->vsync_end - mode->vsync_start;
-	vbp = mode->vtotal - mode->vsync_end;
+	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
+	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
+	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
 
 	/* horizontal values are in terms of high speed byte clock */
 	hactive = txbyteclkhs(hactive, bpp, lane_count,
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 2034438a..d071bed 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -172,46 +172,46 @@ done:
 }
 
 static void
-centre_horizontally(struct drm_display_mode *mode,
+centre_horizontally(struct drm_display_mode *adjusted_mode,
 		    int width)
 {
 	u32 border, sync_pos, blank_width, sync_width;
 
 	/* keep the hsync and hblank widths constant */
-	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
-	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
+	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
+	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (mode->hdisplay - width + 1) / 2;
+	border = (adjusted_mode->hdisplay - width + 1) / 2;
 	border += border & 1; /* make the border even */
 
-	mode->crtc_hdisplay = width;
-	mode->crtc_hblank_start = width + border;
-	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
+	adjusted_mode->crtc_hdisplay = width;
+	adjusted_mode->crtc_hblank_start = width + border;
+	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
 
-	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
-	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
+	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
+	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
 }
 
 static void
-centre_vertically(struct drm_display_mode *mode,
+centre_vertically(struct drm_display_mode *adjusted_mode,
 		  int height)
 {
 	u32 border, sync_pos, blank_width, sync_width;
 
 	/* keep the vsync and vblank widths constant */
-	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
-	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
+	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
+	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (mode->vdisplay - height + 1) / 2;
+	border = (adjusted_mode->vdisplay - height + 1) / 2;
 
-	mode->crtc_vdisplay = height;
-	mode->crtc_vblank_start = height + border;
-	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
+	adjusted_mode->crtc_vdisplay = height;
+	adjusted_mode->crtc_vblank_start = height + border;
+	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
 
-	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
-	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
+	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
+	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
 }
 
 static inline u32 panel_fitter_scaling(u32 source, u32 target)
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 3a70c2f..81e9325 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -603,11 +603,11 @@ log_fail:
 	return false;
 }
 
-static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
+static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
 {
-	if (mode->clock >= 100000)
+	if (adjusted_mode->clock >= 100000)
 		return 1;
-	else if (mode->clock >= 50000)
+	else if (adjusted_mode->clock >= 50000)
 		return 2;
 	else
 		return 4;
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index a5e599b..239afa8 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
 	}
 }
 
-static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
+static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
+			      int usecs)
 {
 	/* paranoia */
-	if (!mode->crtc_htotal)
+	if (!adjusted_mode->crtc_htotal)
 		return 1;
 
-	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
+	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
+			    1000 * adjusted_mode->crtc_htotal);
 }
 
 /**
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
                   ` (2 preceding siblings ...)
  2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-24  8:08   ` Mika Kahola
  2015-09-25 13:38   ` [PATCH v2 " ville.syrjala
  2015-09-08 10:40 ` [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config() ville.syrjala
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The adjustead_mode crtc_ timings are what we will program into the hardware,
so it's those timings we should be looking practically everywhere.

The normal and crtc_ timings should differ only when stere doubling is
used. In that case the normal timings are the orignal non-doubled
timigns, and crtc_ timings are the doubled timings used by the hardware.

The only case where we continue to look at the normal timings is when we
pass the adjusted_mode to drm_match_{cea,hdmi}_mode() to find the VIC.
drm_edid keeps the modes aronund in the non-double form only, so it
needs the non-double timings to match against.

Done with sed
's/adjusted_mode->\([vhVH]\)/adjusted_mode->crtc_\1/g'
's/adjusted_mode->clock/adjusted_mode->crtc_clock/g'
with a manual s/VDisplay/vdisplay/ within the comment in intel_dvo.c

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/dvo_ivch.c      |  8 ++---
 drivers/gpu/drm/i915/intel_audio.c   |  4 +--
 drivers/gpu/drm/i915/intel_display.c |  4 +--
 drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
 drivers/gpu/drm/i915/intel_dsi.c     | 24 +++++++--------
 drivers/gpu/drm/i915/intel_dvo.c     |  8 ++---
 drivers/gpu/drm/i915/intel_panel.c   | 58 ++++++++++++++++++------------------
 drivers/gpu/drm/i915/intel_sdvo.c    |  4 +--
 8 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
index 732ce87..e082f75 100644
--- a/drivers/gpu/drm/i915/dvo_ivch.c
+++ b/drivers/gpu/drm/i915/dvo_ivch.c
@@ -414,16 +414,16 @@ static void ivch_mode_set(struct intel_dvo_device *dvo,
 	vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE |
 		VR40_HORIZONTAL_INTERP_ENABLE);
 
-	if (mode->hdisplay != adjusted_mode->hdisplay ||
-	    mode->vdisplay != adjusted_mode->vdisplay) {
+	if (mode->hdisplay != adjusted_mode->crtc_hdisplay ||
+	    mode->vdisplay != adjusted_mode->crtc_vdisplay) {
 		uint16_t x_ratio, y_ratio;
 
 		vr01 |= VR01_PANEL_FIT_ENABLE;
 		vr40 |= VR40_CLOCK_GATING_ENABLE;
 		x_ratio = (((mode->hdisplay - 1) << 16) /
-			   (adjusted_mode->hdisplay - 1)) >> 2;
+			   (adjusted_mode->crtc_hdisplay - 1)) >> 2;
 		y_ratio = (((mode->vdisplay - 1) << 16) /
-			   (adjusted_mode->vdisplay - 1)) >> 2;
+			   (adjusted_mode->crtc_vdisplay - 1)) >> 2;
 		ivch_write(dvo, VR42, x_ratio);
 		ivch_write(dvo, VR41, y_ratio);
 	} else {
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index ca90ba3..5848a50 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -74,13 +74,13 @@ static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
-		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
+		if (adjusted_mode->crtc_clock == hdmi_audio_clock[i].clock)
 			break;
 	}
 
 	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
 		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
-			      adjusted_mode->clock);
+			      adjusted_mode->crtc_clock);
 		i = 1;
 	}
 
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index b8b7540..f83e25d 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4356,7 +4356,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *state)
 	return skl_update_scaler(state, !state->base.active, SKL_CRTC_INDEX,
 		&state->scaler_state.scaler_id, DRM_ROTATE_0,
 		state->pipe_src_w, state->pipe_src_h,
-		adjusted_mode->hdisplay, adjusted_mode->vdisplay);
+		adjusted_mode->crtc_hdisplay, adjusted_mode->crtc_vdisplay);
 }
 
 /**
@@ -6543,7 +6543,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
 	 * WaPruneModeWithIncorrectHsyncOffset:ctg,elk,ilk,snb,ivb,vlv,hsw.
 	 */
 	if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) &&
-		adjusted_mode->hsync_start == adjusted_mode->hdisplay)
+		adjusted_mode->crtc_hsync_start == adjusted_mode->crtc_hdisplay)
 		return -EINVAL;
 
 	if (HAS_IPS(dev))
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index 677d70e..dc2f67e 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -78,7 +78,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
 		return false;
 	}
 
-	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->clock, bpp);
+	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
 
 	pipe_config->pbn = mst_pbn;
 	slots = drm_dp_find_vcpi_slots(&intel_dp->mst_mgr, mst_pbn);
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 55af0c5..2d4ecfb 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 
 	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
 
-	hactive = adjusted_mode->hdisplay;
-	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
-	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
-	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
+	hactive = adjusted_mode->crtc_hdisplay;
+	hfp = adjusted_mode->crtc_hsync_start - adjusted_mode->crtc_hdisplay;
+	hsync = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
+	hbp = adjusted_mode->crtc_htotal - adjusted_mode->crtc_hsync_end;
 
 	if (intel_dsi->dual_link) {
 		hactive /= 2;
@@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 		hbp /= 2;
 	}
 
-	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
-	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
-	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
+	vfp = adjusted_mode->crtc_vsync_start - adjusted_mode->crtc_vdisplay;
+	vsync = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
+	vbp = adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vsync_end;
 
 	/* horizontal values are in terms of high speed byte clock */
 	hactive = txbyteclkhs(hactive, bpp, lane_count,
@@ -767,7 +767,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 
 	DRM_DEBUG_KMS("pipe %c\n", pipe_name(intel_crtc->pipe));
 
-	mode_hdisplay = adjusted_mode->hdisplay;
+	mode_hdisplay = adjusted_mode->crtc_hdisplay;
 
 	if (intel_dsi->dual_link) {
 		mode_hdisplay /= 2;
@@ -794,7 +794,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 		I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg);
 
 		I915_WRITE(MIPI_DPI_RESOLUTION(port),
-			adjusted_mode->vdisplay << VERTICAL_ADDRESS_SHIFT |
+			adjusted_mode->crtc_vdisplay << VERTICAL_ADDRESS_SHIFT |
 			mode_hdisplay << HORIZONTAL_ADDRESS_SHIFT);
 	}
 
@@ -840,13 +840,13 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 		if (is_vid_mode(intel_dsi) &&
 			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
-				txbyteclkhs(adjusted_mode->htotal, bpp,
+				txbyteclkhs(adjusted_mode->crtc_htotal, bpp,
 					    intel_dsi->lane_count,
 					    intel_dsi->burst_mode_ratio) + 1);
 		} else {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
-				txbyteclkhs(adjusted_mode->vtotal *
-					    adjusted_mode->htotal,
+				txbyteclkhs(adjusted_mode->crtc_vtotal *
+					    adjusted_mode->crtc_htotal,
 					    bpp, intel_dsi->lane_count,
 					    intel_dsi->burst_mode_ratio) + 1);
 		}
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 0bc8aa8..555afbc 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -285,11 +285,11 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
 		dvo_val |= DVO_VSYNC_ACTIVE_HIGH;
 
 	/*I915_WRITE(DVOB_SRCDIM,
-	  (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
-	  (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
+	  (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
+	  (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
 	I915_WRITE(dvo_srcdim_reg,
-		   (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
-		   (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
+		   (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
+		   (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
 	/*I915_WRITE(DVOB, dvo_val);*/
 	I915_WRITE(dvo_reg, dvo_val);
 }
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index d071bed..83ec94a 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -113,51 +113,51 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
 	x = y = width = height = 0;
 
 	/* Native modes don't need fitting */
-	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
-	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
+	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
+	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
 		goto done;
 
 	switch (fitting_mode) {
 	case DRM_MODE_SCALE_CENTER:
 		width = pipe_config->pipe_src_w;
 		height = pipe_config->pipe_src_h;
-		x = (adjusted_mode->hdisplay - width + 1)/2;
-		y = (adjusted_mode->vdisplay - height + 1)/2;
+		x = (adjusted_mode->crtc_hdisplay - width + 1)/2;
+		y = (adjusted_mode->crtc_vdisplay - height + 1)/2;
 		break;
 
 	case DRM_MODE_SCALE_ASPECT:
 		/* Scale but preserve the aspect ratio */
 		{
-			u32 scaled_width = adjusted_mode->hdisplay
+			u32 scaled_width = adjusted_mode->crtc_hdisplay
 				* pipe_config->pipe_src_h;
 			u32 scaled_height = pipe_config->pipe_src_w
-				* adjusted_mode->vdisplay;
+				* adjusted_mode->crtc_vdisplay;
 			if (scaled_width > scaled_height) { /* pillar */
 				width = scaled_height / pipe_config->pipe_src_h;
 				if (width & 1)
 					width++;
-				x = (adjusted_mode->hdisplay - width + 1) / 2;
+				x = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
 				y = 0;
-				height = adjusted_mode->vdisplay;
+				height = adjusted_mode->crtc_vdisplay;
 			} else if (scaled_width < scaled_height) { /* letter */
 				height = scaled_width / pipe_config->pipe_src_w;
 				if (height & 1)
 				    height++;
-				y = (adjusted_mode->vdisplay - height + 1) / 2;
+				y = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
 				x = 0;
-				width = adjusted_mode->hdisplay;
+				width = adjusted_mode->crtc_hdisplay;
 			} else {
 				x = y = 0;
-				width = adjusted_mode->hdisplay;
-				height = adjusted_mode->vdisplay;
+				width = adjusted_mode->crtc_hdisplay;
+				height = adjusted_mode->crtc_vdisplay;
 			}
 		}
 		break;
 
 	case DRM_MODE_SCALE_FULLSCREEN:
 		x = y = 0;
-		width = adjusted_mode->hdisplay;
-		height = adjusted_mode->vdisplay;
+		width = adjusted_mode->crtc_hdisplay;
+		height = adjusted_mode->crtc_vdisplay;
 		break;
 
 	default:
@@ -182,7 +182,7 @@ centre_horizontally(struct drm_display_mode *adjusted_mode,
 	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (adjusted_mode->hdisplay - width + 1) / 2;
+	border = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
 	border += border & 1; /* make the border even */
 
 	adjusted_mode->crtc_hdisplay = width;
@@ -204,7 +204,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
 	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (adjusted_mode->vdisplay - height + 1) / 2;
+	border = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
 
 	adjusted_mode->crtc_vdisplay = height;
 	adjusted_mode->crtc_vblank_start = height + border;
@@ -231,10 +231,10 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
 			      u32 *pfit_control)
 {
 	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
-	u32 scaled_width = adjusted_mode->hdisplay *
+	u32 scaled_width = adjusted_mode->crtc_hdisplay *
 		pipe_config->pipe_src_h;
 	u32 scaled_height = pipe_config->pipe_src_w *
-		adjusted_mode->vdisplay;
+		adjusted_mode->crtc_vdisplay;
 
 	/* 965+ is easy, it does everything in hw */
 	if (scaled_width > scaled_height)
@@ -243,7 +243,7 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
 	else if (scaled_width < scaled_height)
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_LETTER;
-	else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
+	else if (adjusted_mode->crtc_hdisplay != pipe_config->pipe_src_w)
 		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
 }
 
@@ -252,10 +252,10 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 			      u32 *border)
 {
 	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
-	u32 scaled_width = adjusted_mode->hdisplay *
+	u32 scaled_width = adjusted_mode->crtc_hdisplay *
 		pipe_config->pipe_src_h;
 	u32 scaled_height = pipe_config->pipe_src_w *
-		adjusted_mode->vdisplay;
+		adjusted_mode->crtc_vdisplay;
 	u32 bits;
 
 	/*
@@ -269,9 +269,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 				    pipe_config->pipe_src_h);
 
 		*border = LVDS_BORDER_ENABLE;
-		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
+		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay) {
 			bits = panel_fitter_scaling(pipe_config->pipe_src_h,
-						    adjusted_mode->vdisplay);
+						    adjusted_mode->crtc_vdisplay);
 
 			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
 					     bits << PFIT_VERT_SCALE_SHIFT);
@@ -285,9 +285,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 				  pipe_config->pipe_src_w);
 
 		*border = LVDS_BORDER_ENABLE;
-		if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
+		if (pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
 			bits = panel_fitter_scaling(pipe_config->pipe_src_w,
-						    adjusted_mode->hdisplay);
+						    adjusted_mode->crtc_hdisplay);
 
 			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
 					     bits << PFIT_VERT_SCALE_SHIFT);
@@ -315,8 +315,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
 	adjusted_mode = &pipe_config->base.adjusted_mode;
 
 	/* Native modes don't need fitting */
-	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
-	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
+	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
+	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
 		goto out;
 
 	switch (fitting_mode) {
@@ -342,8 +342,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
 		 * Full scaling, even if it changes the aspect ratio.
 		 * Fortunately this is all done for us in hw.
 		 */
-		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay ||
-		    pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
+		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay ||
+		    pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
 			pfit_control |= PFIT_ENABLE;
 			if (INTEL_INFO(dev)->gen >= 4)
 				pfit_control |= PFIT_SCALING_AUTO;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 81e9325..810e0bb 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -605,9 +605,9 @@ log_fail:
 
 static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
 {
-	if (adjusted_mode->clock >= 100000)
+	if (adjusted_mode->crtc_clock >= 100000)
 		return 1;
-	else if (adjusted_mode->clock >= 50000)
+	else if (adjusted_mode->crtc_clock >= 50000)
 		return 2;
 	else
 		return 4;
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config()
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
                   ` (3 preceding siblings ...)
  2015-09-08 10:40 ` [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-24  8:08   ` Mika Kahola
  2015-09-08 10:40 ` [PATCH 6/7] drm/i915: Constify adjusted_mode ville.syrjala
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

We shouldn't frob adjusted_mode after .compute_config(), so move the
infoframe aspect ratio setup to .compute_config() from
intel_hdmi_set_avi_infoframe().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 0b256c9..e03dca0 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -454,9 +454,6 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
 	union hdmi_infoframe frame;
 	int ret;
 
-	/* Set user selected PAR to incoming mode's member */
-	adjusted_mode->picture_aspect_ratio = intel_hdmi->aspect_ratio;
-
 	ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
 						       adjusted_mode);
 	if (ret < 0) {
@@ -1312,6 +1309,9 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
 		return false;
 	}
 
+	/* Set user selected PAR to incoming mode's member */
+	adjusted_mode->picture_aspect_ratio = intel_hdmi->aspect_ratio;
+
 	return true;
 }
 
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 6/7] drm/i915: Constify adjusted_mode
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
                   ` (4 preceding siblings ...)
  2015-09-08 10:40 ` [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config() ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-24  8:10   ` Mika Kahola
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO ville.syrjala
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ratio " ville.syrjala
  7 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Make adjusted_mode const whereever we don't have to modify it. This only
covers cases when we have a local adjusted_mode variable, and doesn't
make any difference for cases where we just dereference
pipe_config->adjusted_mode.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/dvo.h           |  4 ++--
 drivers/gpu/drm/i915/dvo_ch7017.c    |  4 ++--
 drivers/gpu/drm/i915/dvo_ch7xxx.c    |  4 ++--
 drivers/gpu/drm/i915/dvo_ivch.c      |  4 ++--
 drivers/gpu/drm/i915/dvo_ns2501.c    |  4 ++--
 drivers/gpu/drm/i915/dvo_sil164.c    |  4 ++--
 drivers/gpu/drm/i915/dvo_tfp410.c    |  4 ++--
 drivers/gpu/drm/i915/intel_audio.c   |  2 +-
 drivers/gpu/drm/i915/intel_crt.c     |  2 +-
 drivers/gpu/drm/i915/intel_display.c |  8 ++++----
 drivers/gpu/drm/i915/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
 drivers/gpu/drm/i915/intel_drv.h     |  2 +-
 drivers/gpu/drm/i915/intel_dsi.c     |  2 +-
 drivers/gpu/drm/i915/intel_dvo.c     |  2 +-
 drivers/gpu/drm/i915/intel_hdmi.c    | 22 +++++++++++-----------
 drivers/gpu/drm/i915/intel_panel.c   | 14 ++++----------
 drivers/gpu/drm/i915/intel_pm.c      |  9 +++------
 drivers/gpu/drm/i915/intel_sdvo.c    |  2 +-
 19 files changed, 44 insertions(+), 53 deletions(-)

diff --git a/drivers/gpu/drm/i915/dvo.h b/drivers/gpu/drm/i915/dvo.h
index 3121633..0e2c1b9 100644
--- a/drivers/gpu/drm/i915/dvo.h
+++ b/drivers/gpu/drm/i915/dvo.h
@@ -94,8 +94,8 @@ struct intel_dvo_dev_ops {
 	 * after this function is called.
 	 */
 	void (*mode_set)(struct intel_dvo_device *dvo,
-			 struct drm_display_mode *mode,
-			 struct drm_display_mode *adjusted_mode);
+			 const struct drm_display_mode *mode,
+			 const struct drm_display_mode *adjusted_mode);
 
 	/*
 	 * Probe for a connected output, and return detect_status.
diff --git a/drivers/gpu/drm/i915/dvo_ch7017.c b/drivers/gpu/drm/i915/dvo_ch7017.c
index 86b27d1..cbb2202 100644
--- a/drivers/gpu/drm/i915/dvo_ch7017.c
+++ b/drivers/gpu/drm/i915/dvo_ch7017.c
@@ -255,8 +255,8 @@ static enum drm_mode_status ch7017_mode_valid(struct intel_dvo_device *dvo,
 }
 
 static void ch7017_mode_set(struct intel_dvo_device *dvo,
-			    struct drm_display_mode *mode,
-			    struct drm_display_mode *adjusted_mode)
+			    const struct drm_display_mode *mode,
+			    const struct drm_display_mode *adjusted_mode)
 {
 	uint8_t lvds_pll_feedback_div, lvds_pll_vco_control;
 	uint8_t outputs_enable, lvds_control_2, lvds_power_down;
diff --git a/drivers/gpu/drm/i915/dvo_ch7xxx.c b/drivers/gpu/drm/i915/dvo_ch7xxx.c
index 80449f4..4b4acc1 100644
--- a/drivers/gpu/drm/i915/dvo_ch7xxx.c
+++ b/drivers/gpu/drm/i915/dvo_ch7xxx.c
@@ -275,8 +275,8 @@ static enum drm_mode_status ch7xxx_mode_valid(struct intel_dvo_device *dvo,
 }
 
 static void ch7xxx_mode_set(struct intel_dvo_device *dvo,
-			    struct drm_display_mode *mode,
-			    struct drm_display_mode *adjusted_mode)
+			    const struct drm_display_mode *mode,
+			    const struct drm_display_mode *adjusted_mode)
 {
 	uint8_t tvco, tpcp, tpd, tlpf, idf;
 
diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
index e082f75..ff9f1b0 100644
--- a/drivers/gpu/drm/i915/dvo_ivch.c
+++ b/drivers/gpu/drm/i915/dvo_ivch.c
@@ -394,8 +394,8 @@ static bool ivch_get_hw_state(struct intel_dvo_device *dvo)
 }
 
 static void ivch_mode_set(struct intel_dvo_device *dvo,
-			  struct drm_display_mode *mode,
-			  struct drm_display_mode *adjusted_mode)
+			  const struct drm_display_mode *mode,
+			  const struct drm_display_mode *adjusted_mode)
 {
 	struct ivch_priv *priv = dvo->dev_priv;
 	uint16_t vr40 = 0;
diff --git a/drivers/gpu/drm/i915/dvo_ns2501.c b/drivers/gpu/drm/i915/dvo_ns2501.c
index 97ae8aa..063859f 100644
--- a/drivers/gpu/drm/i915/dvo_ns2501.c
+++ b/drivers/gpu/drm/i915/dvo_ns2501.c
@@ -546,8 +546,8 @@ static enum drm_mode_status ns2501_mode_valid(struct intel_dvo_device *dvo,
 }
 
 static void ns2501_mode_set(struct intel_dvo_device *dvo,
-			    struct drm_display_mode *mode,
-			    struct drm_display_mode *adjusted_mode)
+			    const struct drm_display_mode *mode,
+			    const struct drm_display_mode *adjusted_mode)
 {
 	const struct ns2501_configuration *conf;
 	struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv);
diff --git a/drivers/gpu/drm/i915/dvo_sil164.c b/drivers/gpu/drm/i915/dvo_sil164.c
index fa01149..26f13eb 100644
--- a/drivers/gpu/drm/i915/dvo_sil164.c
+++ b/drivers/gpu/drm/i915/dvo_sil164.c
@@ -190,8 +190,8 @@ static enum drm_mode_status sil164_mode_valid(struct intel_dvo_device *dvo,
 }
 
 static void sil164_mode_set(struct intel_dvo_device *dvo,
-			    struct drm_display_mode *mode,
-			    struct drm_display_mode *adjusted_mode)
+			    const struct drm_display_mode *mode,
+			    const struct drm_display_mode *adjusted_mode)
 {
 	/* As long as the basics are set up, since we don't have clock
 	 * dependencies in the mode setup, we can just leave the
diff --git a/drivers/gpu/drm/i915/dvo_tfp410.c b/drivers/gpu/drm/i915/dvo_tfp410.c
index 7853719..6f1a0a6 100644
--- a/drivers/gpu/drm/i915/dvo_tfp410.c
+++ b/drivers/gpu/drm/i915/dvo_tfp410.c
@@ -222,8 +222,8 @@ static enum drm_mode_status tfp410_mode_valid(struct intel_dvo_device *dvo,
 }
 
 static void tfp410_mode_set(struct intel_dvo_device *dvo,
-			    struct drm_display_mode *mode,
-			    struct drm_display_mode *adjusted_mode)
+			    const struct drm_display_mode *mode,
+			    const struct drm_display_mode *adjusted_mode)
 {
 	/* As long as the basics are set up, since we don't have clock dependencies
 	* in the mode setup, we can just leave the registers alone and everything
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 5848a50..1f6fbb4 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -397,7 +397,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
 {
 	struct drm_encoder *encoder = &intel_encoder->base;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	struct drm_connector *connector;
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index af5e43b..601a805 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -158,7 +158,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crt *crt = intel_encoder_to_crt(encoder);
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	u32 adpa;
 
 	if (INTEL_INFO(dev)->gen >= 5)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f83e25d..761d75a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4348,7 +4348,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
 int skl_update_scaler_crtc(struct intel_crtc_state *state)
 {
 	struct intel_crtc *intel_crtc = to_intel_crtc(state->base.crtc);
-	struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
 
 	DRM_DEBUG_KMS("Updating scaler for [CRTC:%i] scaler_user index %u.%u\n",
 		      intel_crtc->base.base.id, intel_crtc->pipe, SKL_CRTC_INDEX);
@@ -6427,7 +6427,7 @@ static int ironlake_fdi_compute_config(struct intel_crtc *intel_crtc,
 				       struct intel_crtc_state *pipe_config)
 {
 	struct drm_device *dev = intel_crtc->base.dev;
-	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 	int lane, link_bw, fdi_dotclock, ret;
 	bool needs_recompute = false;
 
@@ -6506,7 +6506,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 
 	/* FIXME should check pixel clock limits on all platforms */
 	if (INTEL_INFO(dev)->gen < 4) {
@@ -7574,7 +7574,7 @@ static void intel_set_pipe_timings(struct intel_crtc *intel_crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	enum pipe pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	uint32_t crtc_vtotal, crtc_vblank_end;
 	int vsyncshift = 0;
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 45ab25e..9b04c29 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1586,7 +1586,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
 	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
 	enum port port = dp_to_dig_port(intel_dp)->port;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 
 	intel_dp_set_link_params(intel_dp, crtc->config);
 
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index dc2f67e..8684d6c 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -40,7 +40,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
 	struct drm_atomic_state *state;
 	int bpp, i;
 	int lane_count, slots;
-	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 	struct drm_connector *drm_connector;
 	struct intel_connector *connector, *found = NULL;
 	struct drm_connector_state *connector_state;
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 46484e4..5c80cf7 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -674,7 +674,7 @@ struct intel_hdmi {
 				const void *frame, ssize_t len);
 	void (*set_infoframes)(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode);
+			       const struct drm_display_mode *adjusted_mode);
 	bool (*infoframe_enabled)(struct drm_encoder *encoder);
 };
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 2d4ecfb..ba36010 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -759,7 +759,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
 	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum port port;
 	unsigned int bpp = intel_crtc->config->pipe_bpp;
 	u32 val, tmp;
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 555afbc..8492053 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -251,7 +251,7 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	struct intel_dvo *intel_dvo = enc_to_dvo(encoder);
 	int pipe = crtc->pipe;
 	u32 dvo_val;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index e03dca0..adbbc7b 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -447,7 +447,7 @@ static void intel_write_infoframe(struct drm_encoder *encoder,
 }
 
 static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
-					 struct drm_display_mode *adjusted_mode)
+					 const struct drm_display_mode *adjusted_mode)
 {
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
@@ -491,7 +491,7 @@ static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder)
 
 static void
 intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder,
-			      struct drm_display_mode *adjusted_mode)
+			      const struct drm_display_mode *adjusted_mode)
 {
 	union hdmi_infoframe frame;
 	int ret;
@@ -506,7 +506,7 @@ intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder,
 
 static void g4x_set_infoframes(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode)
+			       const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
 	struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
@@ -658,7 +658,7 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder)
 
 static void ibx_set_infoframes(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode)
+			       const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
@@ -710,7 +710,7 @@ static void ibx_set_infoframes(struct drm_encoder *encoder,
 
 static void cpt_set_infoframes(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode)
+			       const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
@@ -752,7 +752,7 @@ static void cpt_set_infoframes(struct drm_encoder *encoder,
 
 static void vlv_set_infoframes(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode)
+			       const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
 	struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
@@ -804,7 +804,7 @@ static void vlv_set_infoframes(struct drm_encoder *encoder,
 
 static void hsw_set_infoframes(struct drm_encoder *encoder,
 			       bool enable,
-			       struct drm_display_mode *adjusted_mode)
+			       const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
@@ -841,7 +841,7 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	u32 hdmi_val;
 
 	hdmi_val = SDVO_ENCODING_HDMI;
@@ -1523,7 +1523,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
 {
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 
 	intel_hdmi_prepare(encoder);
 
@@ -1540,7 +1540,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum dpio_channel port = vlv_dport_to_channel(dport);
 	int pipe = intel_crtc->pipe;
 	u32 val;
@@ -1806,7 +1806,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	enum dpio_channel ch = vlv_dport_to_channel(dport);
 	int pipe = intel_crtc->pipe;
 	int data, i, stagger;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 83ec94a..eda9b8c 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -105,12 +105,8 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
 			struct intel_crtc_state *pipe_config,
 			int fitting_mode)
 {
-	struct drm_display_mode *adjusted_mode;
-	int x, y, width, height;
-
-	adjusted_mode = &pipe_config->base.adjusted_mode;
-
-	x = y = width = height = 0;
+	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
+	int x = 0, y = 0, width = 0, height = 0;
 
 	/* Native modes don't need fitting */
 	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
@@ -230,7 +226,7 @@ static inline u32 panel_fitter_scaling(u32 source, u32 target)
 static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
 			      u32 *pfit_control)
 {
-	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 	u32 scaled_width = adjusted_mode->crtc_hdisplay *
 		pipe_config->pipe_src_h;
 	u32 scaled_height = pipe_config->pipe_src_w *
@@ -310,9 +306,7 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
 {
 	struct drm_device *dev = intel_crtc->base.dev;
 	u32 pfit_control = 0, pfit_pgm_ratios = 0, border = 0;
-	struct drm_display_mode *adjusted_mode;
-
-	adjusted_mode = &pipe_config->base.adjusted_mode;
+	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
 
 	/* Native modes don't need fitting */
 	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 7aa9a4e..797f157 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -697,12 +697,9 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc)
 
 	crtc = single_enabled_crtc(dev);
 	if (crtc) {
-		const struct drm_display_mode *adjusted_mode;
+		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
 		int pixel_size = crtc->primary->state->fb->bits_per_pixel / 8;
-		int clock;
-
-		adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
-		clock = adjusted_mode->crtc_clock;
+		int clock = adjusted_mode->crtc_clock;
 
 		/* Display SR */
 		wm = intel_calculate_wm(clock, &pineview_display_wm,
@@ -2084,7 +2081,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
 	u32 linetime, ips_linetime;
 
 	if (!intel_crtc->active)
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 810e0bb..b8ed706 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1189,7 +1189,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
 	struct drm_device *dev = intel_encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
-	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
+	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
 	struct drm_display_mode *mode = &crtc->config->base.mode;
 	struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
 	u32 sdvox;
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
                   ` (5 preceding siblings ...)
  2015-09-08 10:40 ` [PATCH 6/7] drm/i915: Constify adjusted_mode ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-08 10:43   ` Ville Syrjälä
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ratio " ville.syrjala
  7 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Handle the HDMI aspect ratio propert the same way in the SDVO code
as we handle it in the HDMI code.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_hdmi.c  |  9 ---------
 drivers/gpu/drm/i915/intel_modes.c |  9 +++++++++
 drivers/gpu/drm/i915/intel_sdvo.c  | 29 +++++++++++++++++++++++++++++
 4 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 5c80cf7..4e79f27 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1287,6 +1287,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
 int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
 void intel_attach_force_audio_property(struct drm_connector *connector);
 void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
+void intel_attach_aspect_ratio_property(struct drm_connector *connector);
 
 
 /* intel_overlay.c */
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index adbbc7b..5764c46 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1990,15 +1990,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
 };
 
 static void
-intel_attach_aspect_ratio_property(struct drm_connector *connector)
-{
-	if (!drm_mode_create_aspect_ratio_property(connector->dev))
-		drm_object_attach_property(&connector->base,
-			connector->dev->mode_config.aspect_ratio_property,
-			DRM_MODE_PICTURE_ASPECT_NONE);
-}
-
-static void
 intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
 {
 	intel_attach_force_audio_property(connector);
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index 0e860f3..38a4c8c 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
 
 	drm_object_attach_property(&connector->base, prop, 0);
 }
+
+void
+intel_attach_aspect_ratio_property(struct drm_connector *connector)
+{
+	if (!drm_mode_create_aspect_ratio_property(connector->dev))
+		drm_object_attach_property(&connector->base,
+			connector->dev->mode_config.aspect_ratio_property,
+			DRM_MODE_PICTURE_ASPECT_NONE);
+}
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index b8ed706..d844f47 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -107,6 +107,11 @@ struct intel_sdvo {
 	bool color_range_auto;
 
 	/**
+	 * HDMI user specified aspect ratio
+	 */
+	enum hdmi_picture_aspect aspect_ratio;
+
+	/**
 	 * This is set if we're going to treat the device as TV-out.
 	 *
 	 * While we have these nice friendly flags for output types that ought
@@ -147,6 +152,7 @@ struct intel_sdvo {
 	 * the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd
 	 */
 	uint8_t dtd_sdvo_flags;
+
 };
 
 struct intel_sdvo_connector {
@@ -1181,6 +1187,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
 	if (intel_sdvo->is_tv)
 		i9xx_adjust_sdvo_tv_clock(pipe_config);
 
+	/* Set user selected PAR to incoming mode's member */
+	if (intel_sdvo->is_hdmi)
+		adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
+
 	return true;
 }
 
@@ -2043,6 +2053,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
 		goto done;
 	}
 
+	if (property == connector->dev->mode_config.aspect_ratio_property) {
+		switch (val) {
+		case DRM_MODE_PICTURE_ASPECT_NONE:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_4_3:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_16_9:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
+			break;
+		default:
+			return -EINVAL;
+		}
+		goto done;
+	}
+
 #define CHECK_PROPERTY(name, NAME) \
 	if (intel_sdvo_connector->name == property) { \
 		if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
@@ -2382,6 +2409,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
 		intel_attach_broadcast_rgb_property(&connector->base.base);
 		intel_sdvo->color_range_auto = true;
 	}
+	intel_attach_aspect_ratio_property(&connector->base.base);
+	intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
 }
 
 static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 7/7] drm/i915: Add HDMI aspect ratio property for SDVO
  2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
                   ` (6 preceding siblings ...)
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO ville.syrjala
@ 2015-09-08 10:40 ` ville.syrjala
  2015-09-25 13:39   ` [PATCH v2 " ville.syrjala
  7 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-08 10:40 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Handle the HDMI aspect ratio property the same way in the SDVO code
as we handle it in the HDMI code.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_hdmi.c  |  9 ---------
 drivers/gpu/drm/i915/intel_modes.c |  9 +++++++++
 drivers/gpu/drm/i915/intel_sdvo.c  | 29 +++++++++++++++++++++++++++++
 4 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 5c80cf7..4e79f27 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1287,6 +1287,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
 int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
 void intel_attach_force_audio_property(struct drm_connector *connector);
 void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
+void intel_attach_aspect_ratio_property(struct drm_connector *connector);
 
 
 /* intel_overlay.c */
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index adbbc7b..5764c46 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1990,15 +1990,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
 };
 
 static void
-intel_attach_aspect_ratio_property(struct drm_connector *connector)
-{
-	if (!drm_mode_create_aspect_ratio_property(connector->dev))
-		drm_object_attach_property(&connector->base,
-			connector->dev->mode_config.aspect_ratio_property,
-			DRM_MODE_PICTURE_ASPECT_NONE);
-}
-
-static void
 intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
 {
 	intel_attach_force_audio_property(connector);
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index 0e860f3..38a4c8c 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
 
 	drm_object_attach_property(&connector->base, prop, 0);
 }
+
+void
+intel_attach_aspect_ratio_property(struct drm_connector *connector)
+{
+	if (!drm_mode_create_aspect_ratio_property(connector->dev))
+		drm_object_attach_property(&connector->base,
+			connector->dev->mode_config.aspect_ratio_property,
+			DRM_MODE_PICTURE_ASPECT_NONE);
+}
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index b8ed706..d844f47 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -107,6 +107,11 @@ struct intel_sdvo {
 	bool color_range_auto;
 
 	/**
+	 * HDMI user specified aspect ratio
+	 */
+	enum hdmi_picture_aspect aspect_ratio;
+
+	/**
 	 * This is set if we're going to treat the device as TV-out.
 	 *
 	 * While we have these nice friendly flags for output types that ought
@@ -147,6 +152,7 @@ struct intel_sdvo {
 	 * the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd
 	 */
 	uint8_t dtd_sdvo_flags;
+
 };
 
 struct intel_sdvo_connector {
@@ -1181,6 +1187,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
 	if (intel_sdvo->is_tv)
 		i9xx_adjust_sdvo_tv_clock(pipe_config);
 
+	/* Set user selected PAR to incoming mode's member */
+	if (intel_sdvo->is_hdmi)
+		adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
+
 	return true;
 }
 
@@ -2043,6 +2053,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
 		goto done;
 	}
 
+	if (property == connector->dev->mode_config.aspect_ratio_property) {
+		switch (val) {
+		case DRM_MODE_PICTURE_ASPECT_NONE:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_4_3:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_16_9:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
+			break;
+		default:
+			return -EINVAL;
+		}
+		goto done;
+	}
+
 #define CHECK_PROPERTY(name, NAME) \
 	if (intel_sdvo_connector->name == property) { \
 		if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
@@ -2382,6 +2409,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
 		intel_attach_broadcast_rgb_property(&connector->base.base);
 		intel_sdvo->color_range_auto = true;
 	}
+	intel_attach_aspect_ratio_property(&connector->base.base);
+	intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
 }
 
 static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO ville.syrjala
@ 2015-09-08 10:43   ` Ville Syrjälä
  0 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjälä @ 2015-09-08 10:43 UTC (permalink / raw)
  To: intel-gfx

On Tue, Sep 08, 2015 at 01:40:50PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Handle the HDMI aspect ratio propert the same way in the SDVO code
> as we handle it in the HDMI code.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Please, ignore this one. I corrected the typos in the commit message but
forgot to rm the already generated patch.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
@ 2015-09-23 11:12   ` Mika Kahola
  2015-09-23 12:30     ` Ville Syrjälä
  2015-09-24  8:06   ` Mika Kahola
  2015-09-25 13:37   ` [PATCH v2 " ville.syrjala
  2 siblings, 1 reply; 26+ messages in thread
From: Mika Kahola @ 2015-09-23 11:12 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Rename the function argument to 'adjusted_mode' whenever the function
> only ever gets passed the adjusted_mode.
> 
What was the reason why we need to rename the function argument?

-Mika-

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h     |  2 +-
>  drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
>  drivers/gpu/drm/i915/intel_dsi.c    | 16 ++++++++--------
>  drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
>  drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
>  drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
>  6 files changed, 44 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 503dff5..4f4b504 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
>  	void (*crtc_disable)(struct drm_crtc *crtc);
>  	void (*audio_codec_enable)(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode);
> +				   const struct drm_display_mode *adjusted_mode);
>  	void (*audio_codec_disable)(struct intel_encoder *encoder);
>  	void (*fdi_link_train)(struct drm_crtc *crtc);
>  	void (*init_clock_gating)(struct drm_device *dev);
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index cf4f5d1..ca90ba3 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -69,17 +69,18 @@ static const struct {
>  };
>  
>  /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
> -static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
> +static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
>  {
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> -		if (mode->clock == hdmi_audio_clock[i].clock)
> +		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
>  			break;
>  	}
>  
>  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
> -		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
> +		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> +			      adjusted_mode->clock);
>  		i = 1;
>  	}
>  
> @@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void g4x_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	uint8_t *eld = connector->eld;
> @@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void hsw_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
>  }
>  
> @@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void ilk_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(aud_config, tmp);
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 0c26ba5..55af0c5 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
>  }
>  
>  static void set_dsi_timings(struct drm_encoder *encoder,
> -			    const struct drm_display_mode *mode)
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  
>  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
>  
> -	hactive = mode->hdisplay;
> -	hfp = mode->hsync_start - mode->hdisplay;
> -	hsync = mode->hsync_end - mode->hsync_start;
> -	hbp = mode->htotal - mode->hsync_end;
> +	hactive = adjusted_mode->hdisplay;
> +	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> +	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> +	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
>  
>  	if (intel_dsi->dual_link) {
>  		hactive /= 2;
> @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  		hbp /= 2;
>  	}
>  
> -	vfp = mode->vsync_start - mode->vdisplay;
> -	vsync = mode->vsync_end - mode->vsync_start;
> -	vbp = mode->vtotal - mode->vsync_end;
> +	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> +	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> +	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
>  
>  	/* horizontal values are in terms of high speed byte clock */
>  	hactive = txbyteclkhs(hactive, bpp, lane_count,
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 2034438a..d071bed 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -172,46 +172,46 @@ done:
>  }
>  
>  static void
> -centre_horizontally(struct drm_display_mode *mode,
> +centre_horizontally(struct drm_display_mode *adjusted_mode,
>  		    int width)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the hsync and hblank widths constant */
> -	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
> -	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
> +	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> +	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->hdisplay - width + 1) / 2;
> +	border = (adjusted_mode->hdisplay - width + 1) / 2;
>  	border += border & 1; /* make the border even */
>  
> -	mode->crtc_hdisplay = width;
> -	mode->crtc_hblank_start = width + border;
> -	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
> +	adjusted_mode->crtc_hdisplay = width;
> +	adjusted_mode->crtc_hblank_start = width + border;
> +	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
>  
> -	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
> -	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
> +	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
> +	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
>  }
>  
>  static void
> -centre_vertically(struct drm_display_mode *mode,
> +centre_vertically(struct drm_display_mode *adjusted_mode,
>  		  int height)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the vsync and vblank widths constant */
> -	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
> -	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
> +	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> +	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->vdisplay - height + 1) / 2;
> +	border = (adjusted_mode->vdisplay - height + 1) / 2;
>  
> -	mode->crtc_vdisplay = height;
> -	mode->crtc_vblank_start = height + border;
> -	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
> +	adjusted_mode->crtc_vdisplay = height;
> +	adjusted_mode->crtc_vblank_start = height + border;
> +	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
>  
> -	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
> -	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
> +	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
> +	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
>  }
>  
>  static inline u32 panel_fitter_scaling(u32 source, u32 target)
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 3a70c2f..81e9325 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -603,11 +603,11 @@ log_fail:
>  	return false;
>  }
>  
> -static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
> +static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
>  {
> -	if (mode->clock >= 100000)
> +	if (adjusted_mode->clock >= 100000)
>  		return 1;
> -	else if (mode->clock >= 50000)
> +	else if (adjusted_mode->clock >= 50000)
>  		return 2;
>  	else
>  		return 4;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index a5e599b..239afa8 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
>  	}
>  }
>  
> -static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
> +static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
> +			      int usecs)
>  {
>  	/* paranoia */
> -	if (!mode->crtc_htotal)
> +	if (!adjusted_mode->crtc_htotal)
>  		return 1;
>  
> -	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
> +	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
> +			    1000 * adjusted_mode->crtc_htotal);
>  }
>  
>  /**


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-23 11:12   ` Mika Kahola
@ 2015-09-23 12:30     ` Ville Syrjälä
  0 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjälä @ 2015-09-23 12:30 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

On Wed, Sep 23, 2015 at 02:12:18PM +0300, Mika Kahola wrote:
> On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Rename the function argument to 'adjusted_mode' whenever the function
> > only ever gets passed the adjusted_mode.
> > 
> What was the reason why we need to rename the function argument?

Two things; First one being clarity. When you see 'mode' you can't be
sure what it is, 'adjusted_mode' OTOH is pretty clear. The second reason
was that I could then use sed to replace all the adjusted_mode->foo
with adjusted_mode->crtc_foo (which resulted in the next patch).

> 
> -Mika-
> 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_drv.h     |  2 +-
> >  drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
> >  drivers/gpu/drm/i915/intel_dsi.c    | 16 ++++++++--------
> >  drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
> >  drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
> >  drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
> >  6 files changed, 44 insertions(+), 41 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> > index 503dff5..4f4b504 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
> >  	void (*crtc_disable)(struct drm_crtc *crtc);
> >  	void (*audio_codec_enable)(struct drm_connector *connector,
> >  				   struct intel_encoder *encoder,
> > -				   struct drm_display_mode *mode);
> > +				   const struct drm_display_mode *adjusted_mode);
> >  	void (*audio_codec_disable)(struct intel_encoder *encoder);
> >  	void (*fdi_link_train)(struct drm_crtc *crtc);
> >  	void (*init_clock_gating)(struct drm_device *dev);
> > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > index cf4f5d1..ca90ba3 100644
> > --- a/drivers/gpu/drm/i915/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > @@ -69,17 +69,18 @@ static const struct {
> >  };
> >  
> >  /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
> > -static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
> > +static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
> >  {
> >  	int i;
> >  
> >  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> > -		if (mode->clock == hdmi_audio_clock[i].clock)
> > +		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
> >  			break;
> >  	}
> >  
> >  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
> > -		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
> > +		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> > +			      adjusted_mode->clock);
> >  		i = 1;
> >  	}
> >  
> > @@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
> >  
> >  static void g4x_audio_codec_enable(struct drm_connector *connector,
> >  				   struct intel_encoder *encoder,
> > -				   struct drm_display_mode *mode)
> > +				   const struct drm_display_mode *adjusted_mode)
> >  {
> >  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
> >  	uint8_t *eld = connector->eld;
> > @@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
> >  
> >  static void hsw_audio_codec_enable(struct drm_connector *connector,
> >  				   struct intel_encoder *encoder,
> > -				   struct drm_display_mode *mode)
> > +				   const struct drm_display_mode *adjusted_mode)
> >  {
> >  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
> >  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> > @@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
> >  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
> >  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
> >  	else
> > -		tmp |= audio_config_hdmi_pixel_clock(mode);
> > +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
> >  	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
> >  }
> >  
> > @@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
> >  
> >  static void ilk_audio_codec_enable(struct drm_connector *connector,
> >  				   struct intel_encoder *encoder,
> > -				   struct drm_display_mode *mode)
> > +				   const struct drm_display_mode *adjusted_mode)
> >  {
> >  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
> >  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> > @@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
> >  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
> >  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
> >  	else
> > -		tmp |= audio_config_hdmi_pixel_clock(mode);
> > +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
> >  	I915_WRITE(aud_config, tmp);
> >  }
> >  
> > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> > index 0c26ba5..55af0c5 100644
> > --- a/drivers/gpu/drm/i915/intel_dsi.c
> > +++ b/drivers/gpu/drm/i915/intel_dsi.c
> > @@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
> >  }
> >  
> >  static void set_dsi_timings(struct drm_encoder *encoder,
> > -			    const struct drm_display_mode *mode)
> > +			    const struct drm_display_mode *adjusted_mode)
> >  {
> >  	struct drm_device *dev = encoder->dev;
> >  	struct drm_i915_private *dev_priv = dev->dev_private;
> > @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
> >  
> >  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
> >  
> > -	hactive = mode->hdisplay;
> > -	hfp = mode->hsync_start - mode->hdisplay;
> > -	hsync = mode->hsync_end - mode->hsync_start;
> > -	hbp = mode->htotal - mode->hsync_end;
> > +	hactive = adjusted_mode->hdisplay;
> > +	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> > +	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> > +	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
> >  
> >  	if (intel_dsi->dual_link) {
> >  		hactive /= 2;
> > @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
> >  		hbp /= 2;
> >  	}
> >  
> > -	vfp = mode->vsync_start - mode->vdisplay;
> > -	vsync = mode->vsync_end - mode->vsync_start;
> > -	vbp = mode->vtotal - mode->vsync_end;
> > +	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> > +	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> > +	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
> >  
> >  	/* horizontal values are in terms of high speed byte clock */
> >  	hactive = txbyteclkhs(hactive, bpp, lane_count,
> > diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> > index 2034438a..d071bed 100644
> > --- a/drivers/gpu/drm/i915/intel_panel.c
> > +++ b/drivers/gpu/drm/i915/intel_panel.c
> > @@ -172,46 +172,46 @@ done:
> >  }
> >  
> >  static void
> > -centre_horizontally(struct drm_display_mode *mode,
> > +centre_horizontally(struct drm_display_mode *adjusted_mode,
> >  		    int width)
> >  {
> >  	u32 border, sync_pos, blank_width, sync_width;
> >  
> >  	/* keep the hsync and hblank widths constant */
> > -	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
> > -	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
> > +	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> > +	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
> >  	sync_pos = (blank_width - sync_width + 1) / 2;
> >  
> > -	border = (mode->hdisplay - width + 1) / 2;
> > +	border = (adjusted_mode->hdisplay - width + 1) / 2;
> >  	border += border & 1; /* make the border even */
> >  
> > -	mode->crtc_hdisplay = width;
> > -	mode->crtc_hblank_start = width + border;
> > -	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
> > +	adjusted_mode->crtc_hdisplay = width;
> > +	adjusted_mode->crtc_hblank_start = width + border;
> > +	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
> >  
> > -	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
> > -	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
> > +	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
> > +	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
> >  }
> >  
> >  static void
> > -centre_vertically(struct drm_display_mode *mode,
> > +centre_vertically(struct drm_display_mode *adjusted_mode,
> >  		  int height)
> >  {
> >  	u32 border, sync_pos, blank_width, sync_width;
> >  
> >  	/* keep the vsync and vblank widths constant */
> > -	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
> > -	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
> > +	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> > +	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
> >  	sync_pos = (blank_width - sync_width + 1) / 2;
> >  
> > -	border = (mode->vdisplay - height + 1) / 2;
> > +	border = (adjusted_mode->vdisplay - height + 1) / 2;
> >  
> > -	mode->crtc_vdisplay = height;
> > -	mode->crtc_vblank_start = height + border;
> > -	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
> > +	adjusted_mode->crtc_vdisplay = height;
> > +	adjusted_mode->crtc_vblank_start = height + border;
> > +	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
> >  
> > -	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
> > -	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
> > +	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
> > +	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
> >  }
> >  
> >  static inline u32 panel_fitter_scaling(u32 source, u32 target)
> > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> > index 3a70c2f..81e9325 100644
> > --- a/drivers/gpu/drm/i915/intel_sdvo.c
> > +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> > @@ -603,11 +603,11 @@ log_fail:
> >  	return false;
> >  }
> >  
> > -static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
> > +static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
> >  {
> > -	if (mode->clock >= 100000)
> > +	if (adjusted_mode->clock >= 100000)
> >  		return 1;
> > -	else if (mode->clock >= 50000)
> > +	else if (adjusted_mode->clock >= 50000)
> >  		return 2;
> >  	else
> >  		return 4;
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > index a5e599b..239afa8 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
> >  	}
> >  }
> >  
> > -static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
> > +static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
> > +			      int usecs)
> >  {
> >  	/* paranoia */
> > -	if (!mode->crtc_htotal)
> > +	if (!adjusted_mode->crtc_htotal)
> >  		return 1;
> >  
> > -	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
> > +	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
> > +			    1000 * adjusted_mode->crtc_htotal);
> >  }
> >  
> >  /**
> 

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling
  2015-09-08 10:40 ` [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling ville.syrjala
@ 2015-09-24  8:00   ` Mika Kahola
  0 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:00 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Replace intel_dvo->panel_fixed_mode with the appropriate intel_panel
> stuff. Now all connectors that have a fixed mode use intel_panel.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dvo.c | 49 ++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> index c80fe1f..0bc8aa8 100644
> --- a/drivers/gpu/drm/i915/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/intel_dvo.c
> @@ -97,7 +97,8 @@ struct intel_dvo {
>  
>  	struct intel_dvo_device dev;
>  
> -	struct drm_display_mode *panel_fixed_mode;
> +	struct intel_connector *attached_connector;
> +
>  	bool panel_wants_dither;
>  };
>  
> @@ -201,6 +202,8 @@ intel_dvo_mode_valid(struct drm_connector *connector,
>  		     struct drm_display_mode *mode)
>  {
>  	struct intel_dvo *intel_dvo = intel_attached_dvo(connector);
> +	const struct drm_display_mode *fixed_mode =
> +		to_intel_connector(connector)->panel.fixed_mode;
>  	int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
>  	int target_clock = mode->clock;
>  
> @@ -209,13 +212,13 @@ intel_dvo_mode_valid(struct drm_connector *connector,
>  
>  	/* XXX: Validate clock range */
>  
> -	if (intel_dvo->panel_fixed_mode) {
> -		if (mode->hdisplay > intel_dvo->panel_fixed_mode->hdisplay)
> +	if (fixed_mode) {
> +		if (mode->hdisplay > fixed_mode->hdisplay)
>  			return MODE_PANEL;
> -		if (mode->vdisplay > intel_dvo->panel_fixed_mode->vdisplay)
> +		if (mode->vdisplay > fixed_mode->vdisplay)
>  			return MODE_PANEL;
>  
> -		target_clock = intel_dvo->panel_fixed_mode->clock;
> +		target_clock = fixed_mode->clock;
>  	}
>  
>  	if (target_clock > max_dotclk)
> @@ -228,6 +231,8 @@ static bool intel_dvo_compute_config(struct intel_encoder *encoder,
>  				     struct intel_crtc_state *pipe_config)
>  {
>  	struct intel_dvo *intel_dvo = enc_to_dvo(encoder);
> +	const struct drm_display_mode *fixed_mode =
> +		intel_dvo->attached_connector->panel.fixed_mode;
>  	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  
>  	/* If we have timings from the BIOS for the panel, put them in
> @@ -235,21 +240,8 @@ static bool intel_dvo_compute_config(struct intel_encoder *encoder,
>  	 * with the panel scaling set up to source from the H/VDisplay
>  	 * of the original mode.
>  	 */
> -	if (intel_dvo->panel_fixed_mode != NULL) {
> -#define C(x) adjusted_mode->x = intel_dvo->panel_fixed_mode->x
> -		C(hdisplay);
> -		C(hsync_start);
> -		C(hsync_end);
> -		C(htotal);
> -		C(vdisplay);
> -		C(vsync_start);
> -		C(vsync_end);
> -		C(vtotal);
> -		C(clock);
> -#undef C
> -
> -		drm_mode_set_crtcinfo(adjusted_mode, 0);
> -	}
> +	if (fixed_mode)
> +		intel_fixed_panel_mode(fixed_mode, adjusted_mode);
>  
>  	return true;
>  }
> @@ -318,8 +310,9 @@ intel_dvo_detect(struct drm_connector *connector, bool force)
>  
>  static int intel_dvo_get_modes(struct drm_connector *connector)
>  {
> -	struct intel_dvo *intel_dvo = intel_attached_dvo(connector);
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
> +	const struct drm_display_mode *fixed_mode =
> +		to_intel_connector(connector)->panel.fixed_mode;
>  
>  	/* We should probably have an i2c driver get_modes function for those
>  	 * devices which will have a fixed set of modes determined by the chip
> @@ -331,9 +324,9 @@ static int intel_dvo_get_modes(struct drm_connector *connector)
>  	if (!list_empty(&connector->probed_modes))
>  		return 1;
>  
> -	if (intel_dvo->panel_fixed_mode != NULL) {
> +	if (fixed_mode) {
>  		struct drm_display_mode *mode;
> -		mode = drm_mode_duplicate(connector->dev, intel_dvo->panel_fixed_mode);
> +		mode = drm_mode_duplicate(connector->dev, fixed_mode);
>  		if (mode) {
>  			drm_mode_probed_add(connector, mode);
>  			return 1;
> @@ -346,6 +339,7 @@ static int intel_dvo_get_modes(struct drm_connector *connector)
>  static void intel_dvo_destroy(struct drm_connector *connector)
>  {
>  	drm_connector_cleanup(connector);
> +	intel_panel_fini(&to_intel_connector(connector)->panel);
>  	kfree(connector);
>  }
>  
> @@ -372,8 +366,6 @@ static void intel_dvo_enc_destroy(struct drm_encoder *encoder)
>  	if (intel_dvo->dev.dev_ops->destroy)
>  		intel_dvo->dev.dev_ops->destroy(&intel_dvo->dev);
>  
> -	kfree(intel_dvo->panel_fixed_mode);
> -
>  	intel_encoder_destroy(encoder);
>  }
>  
> @@ -438,6 +430,8 @@ void intel_dvo_init(struct drm_device *dev)
>  		return;
>  	}
>  
> +	intel_dvo->attached_connector = intel_connector;
> +
>  	intel_encoder = &intel_dvo->base;
>  	drm_encoder_init(dev, &intel_encoder->base,
>  			 &intel_dvo_enc_funcs, encoder_type);
> @@ -542,8 +536,9 @@ void intel_dvo_init(struct drm_device *dev)
>  			 * headers, likely), so for now, just get the current
>  			 * mode being output through DVO.
>  			 */
> -			intel_dvo->panel_fixed_mode =
> -				intel_dvo_get_current_mode(connector);
> +			intel_panel_init(&intel_connector->panel,
> +					 intel_dvo_get_current_mode(connector),
> +					 NULL);
>  			intel_dvo->panel_wants_dither = true;
>  		}
>  


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode'
  2015-09-08 10:40 ` [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode' ville.syrjala
@ 2015-09-24  8:01   ` Mika Kahola
  2015-09-28  8:03   ` Daniel Vetter
  1 sibling, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:01 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

coccinelle does a fine job on renaming the variables. Although, it does
break the rule of 80 character line width. 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Always name any variable pointing at the adjusted mode as
> 'adjustead_mode'. This will make it much easier to identify
> when we should use the crtc_ timings and when we shoudln't.
> 
> Conversion was performed with coccinelle:
> @@
> expression E;
> identifier I;
> @@
> - struct drm_display_mode *I = &E.adjusted_mode;
> + struct drm_display_mode *adjusted_mode = &E.adjusted_mode;
> <...
> - I
> + adjusted_mode
> ...>
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_audio.c   |  7 ++++---
>  drivers/gpu/drm/i915/intel_display.c | 12 +++++-------
>  drivers/gpu/drm/i915/intel_dsi.c     | 13 ++++++-------
>  drivers/gpu/drm/i915/intel_hdmi.c    |  9 +++------
>  drivers/gpu/drm/i915/intel_lvds.c    |  3 +--
>  drivers/gpu/drm/i915/intel_pm.c      | 14 ++++++--------
>  drivers/gpu/drm/i915/intel_sdvo.c    |  3 +--
>  drivers/gpu/drm/i915/intel_sprite.c  |  8 ++++----
>  8 files changed, 30 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index f73de0b..cf4f5d1 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -396,7 +396,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  {
>  	struct drm_encoder *encoder = &intel_encoder->base;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
> -	struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_connector *connector;
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -419,10 +419,11 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		connector->eld[5] |= (1 << 2);
>  
> -	connector->eld[6] = drm_av_sync_delay(connector, mode) / 2;
> +	connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
>  
>  	if (dev_priv->display.audio_codec_enable)
> -		dev_priv->display.audio_codec_enable(connector, intel_encoder, mode);
> +		dev_priv->display.audio_codec_enable(connector, intel_encoder,
> +						     adjusted_mode);
>  
>  	if (acomp && acomp->audio_ops && acomp->audio_ops->pin_eld_notify)
>  		acomp->audio_ops->pin_eld_notify(acomp->audio_ops->audio_ptr, (int) port);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index e629a1b..b8b7540 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4348,8 +4348,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
>  int skl_update_scaler_crtc(struct intel_crtc_state *state)
>  {
>  	struct intel_crtc *intel_crtc = to_intel_crtc(state->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&state->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
>  
>  	DRM_DEBUG_KMS("Updating scaler for [CRTC:%i] scaler_user index %u.%u\n",
>  		      intel_crtc->base.base.id, intel_crtc->pipe, SKL_CRTC_INDEX);
> @@ -7575,8 +7574,7 @@ static void intel_set_pipe_timings(struct intel_crtc *intel_crtc)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	enum pipe pipe = intel_crtc->pipe;
>  	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	uint32_t crtc_vtotal, crtc_vblank_end;
>  	int vsyncshift = 0;
>  
> @@ -12767,11 +12765,11 @@ static void update_scanline_offset(struct intel_crtc *crtc)
>  	 * one to the value.
>  	 */
>  	if (IS_GEN2(dev)) {
> -		const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  		int vtotal;
>  
> -		vtotal = mode->crtc_vtotal;
> -		if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		vtotal = adjusted_mode->crtc_vtotal;
> +		if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
>  			vtotal /= 2;
>  
>  		crtc->scanline_offset = vtotal - 1;
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 781c267..0c26ba5 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -759,8 +759,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
>  	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum port port;
>  	unsigned int bpp = intel_crtc->config->pipe_bpp;
>  	u32 val, tmp;
> @@ -842,14 +841,14 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
>  				txbyteclkhs(adjusted_mode->htotal, bpp,
> -					intel_dsi->lane_count,
> -					intel_dsi->burst_mode_ratio) + 1);
> +					    intel_dsi->lane_count,
> +					    intel_dsi->burst_mode_ratio) + 1);
>  		} else {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
>  				txbyteclkhs(adjusted_mode->vtotal *
> -					adjusted_mode->htotal,
> -					bpp, intel_dsi->lane_count,
> -					intel_dsi->burst_mode_ratio) + 1);
> +					    adjusted_mode->htotal,
> +					    bpp, intel_dsi->lane_count,
> +					    intel_dsi->burst_mode_ratio) + 1);
>  		}
>  		I915_WRITE(MIPI_LP_RX_TIMEOUT(port), intel_dsi->lp_rx_timeout);
>  		I915_WRITE(MIPI_TURN_AROUND_TIMEOUT(port),
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index feb31d8..0b256c9 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1523,8 +1523,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
>  {
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  
>  	intel_hdmi_prepare(encoder);
>  
> @@ -1541,8 +1540,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel port = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	u32 val;
> @@ -1808,8 +1806,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel ch = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	int data, i, stagger;
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index 2c2d1f0..5e70acf 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -139,8 +139,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
>  	struct drm_device *dev = encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> -	const struct drm_display_mode *adjusted_mode =
> -		&crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	int pipe = crtc->pipe;
>  	u32 temp;
>  
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 64bc77e..7aa9a4e 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -1500,8 +1500,7 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
>  	if (crtc) {
>  		/* self-refresh has much higher latency */
>  		static const int sr_latency_ns = 12000;
> -		const struct drm_display_mode *adjusted_mode =
> -			&to_intel_crtc(crtc)->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
>  		int clock = adjusted_mode->crtc_clock;
>  		int htotal = adjusted_mode->crtc_htotal;
>  		int hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
> @@ -1648,8 +1647,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
>  	if (HAS_FW_BLC(dev) && enabled) {
>  		/* self-refresh has much higher latency */
>  		static const int sr_latency_ns = 6000;
> -		const struct drm_display_mode *adjusted_mode =
> -			&to_intel_crtc(enabled)->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(enabled)->config->base.adjusted_mode;
>  		int clock = adjusted_mode->crtc_clock;
>  		int htotal = adjusted_mode->crtc_htotal;
>  		int hdisplay = to_intel_crtc(enabled)->config->pipe_src_w;
> @@ -2086,7 +2084,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> -	struct drm_display_mode *mode = &intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	u32 linetime, ips_linetime;
>  
>  	if (!intel_crtc->active)
> @@ -2095,9 +2093,9 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
>  	/* The WM are computed with base on how long it takes to fill a single
>  	 * row at the given clock rate, multiplied by 8.
>  	 * */
> -	linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> -				     mode->crtc_clock);
> -	ips_linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> +	linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
> +				     adjusted_mode->crtc_clock);
> +	ips_linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
>  					 dev_priv->cdclk_freq);
>  
>  	return PIPE_WM_LINETIME_IPS_LINETIME(ips_linetime) |
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index ca3dd7c..3a70c2f 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1189,8 +1189,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
>  	struct drm_device *dev = intel_encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_display_mode *mode = &crtc->config->base.mode;
>  	struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
>  	u32 sdvox;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index ca7e264..a5e599b 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -79,19 +79,19 @@ static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
>  void intel_pipe_update_start(struct intel_crtc *crtc)
>  {
>  	struct drm_device *dev = crtc->base.dev;
> -	const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	enum pipe pipe = crtc->pipe;
>  	long timeout = msecs_to_jiffies_timeout(1);
>  	int scanline, min, max, vblank_start;
>  	wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
>  	DEFINE_WAIT(wait);
>  
> -	vblank_start = mode->crtc_vblank_start;
> -	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> +	vblank_start = adjusted_mode->crtc_vblank_start;
> +	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
>  		vblank_start = DIV_ROUND_UP(vblank_start, 2);
>  
>  	/* FIXME needs to be calibrated sensibly */
> -	min = vblank_start - usecs_to_scanlines(mode, 100);
> +	min = vblank_start - usecs_to_scanlines(adjusted_mode, 100);
>  	max = vblank_start - 1;
>  
>  	local_irq_disable();


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
  2015-09-23 11:12   ` Mika Kahola
@ 2015-09-24  8:06   ` Mika Kahola
  2015-09-25 13:37   ` [PATCH v2 " ville.syrjala
  2 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:06 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Rename the function argument to 'adjusted_mode' whenever the function
> only ever gets passed the adjusted_mode.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h     |  2 +-
>  drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
>  drivers/gpu/drm/i915/intel_dsi.c    | 16 ++++++++--------
>  drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
>  drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
>  drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
>  6 files changed, 44 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 503dff5..4f4b504 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
>  	void (*crtc_disable)(struct drm_crtc *crtc);
>  	void (*audio_codec_enable)(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode);
> +				   const struct drm_display_mode *adjusted_mode);
>  	void (*audio_codec_disable)(struct intel_encoder *encoder);
>  	void (*fdi_link_train)(struct drm_crtc *crtc);
>  	void (*init_clock_gating)(struct drm_device *dev);
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index cf4f5d1..ca90ba3 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -69,17 +69,18 @@ static const struct {
>  };
>  
>  /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
> -static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
> +static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
>  {
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> -		if (mode->clock == hdmi_audio_clock[i].clock)
> +		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
>  			break;
>  	}
>  
>  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
> -		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
> +		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> +			      adjusted_mode->clock);
>  		i = 1;
>  	}
>  
> @@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void g4x_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	uint8_t *eld = connector->eld;
> @@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void hsw_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
>  }
>  
> @@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void ilk_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(aud_config, tmp);
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 0c26ba5..55af0c5 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
>  }
>  
>  static void set_dsi_timings(struct drm_encoder *encoder,
> -			    const struct drm_display_mode *mode)
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  
>  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
>  
> -	hactive = mode->hdisplay;
> -	hfp = mode->hsync_start - mode->hdisplay;
> -	hsync = mode->hsync_end - mode->hsync_start;
> -	hbp = mode->htotal - mode->hsync_end;
> +	hactive = adjusted_mode->hdisplay;
> +	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> +	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> +	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
>  
>  	if (intel_dsi->dual_link) {
>  		hactive /= 2;
> @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  		hbp /= 2;
>  	}
>  
> -	vfp = mode->vsync_start - mode->vdisplay;
> -	vsync = mode->vsync_end - mode->vsync_start;
> -	vbp = mode->vtotal - mode->vsync_end;
> +	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> +	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> +	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
>  
>  	/* horizontal values are in terms of high speed byte clock */
>  	hactive = txbyteclkhs(hactive, bpp, lane_count,
The intel_dsi.c has propably changed since the patch has been submitted
for review as the lines in 'drivers/gpu/drm/i915/intel_dsi.c:748',
'drivers/gpu/drm/i915/intel_dsi.c:750',
and 'drivers/gpu/drm/i915/intel_dsi.c:752' need some tlc as variable
'mode' needs to be renamed as 'adjusted_mode'

> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 2034438a..d071bed 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -172,46 +172,46 @@ done:
>  }
>  
>  static void
> -centre_horizontally(struct drm_display_mode *mode,
> +centre_horizontally(struct drm_display_mode *adjusted_mode,
>  		    int width)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the hsync and hblank widths constant */
> -	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
> -	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
> +	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> +	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->hdisplay - width + 1) / 2;
> +	border = (adjusted_mode->hdisplay - width + 1) / 2;
>  	border += border & 1; /* make the border even */
>  
> -	mode->crtc_hdisplay = width;
> -	mode->crtc_hblank_start = width + border;
> -	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
> +	adjusted_mode->crtc_hdisplay = width;
> +	adjusted_mode->crtc_hblank_start = width + border;
> +	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
>  
> -	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
> -	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
> +	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
> +	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
>  }
>  
>  static void
> -centre_vertically(struct drm_display_mode *mode,
> +centre_vertically(struct drm_display_mode *adjusted_mode,
>  		  int height)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the vsync and vblank widths constant */
> -	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
> -	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
> +	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> +	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->vdisplay - height + 1) / 2;
> +	border = (adjusted_mode->vdisplay - height + 1) / 2;
>  
> -	mode->crtc_vdisplay = height;
> -	mode->crtc_vblank_start = height + border;
> -	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
> +	adjusted_mode->crtc_vdisplay = height;
> +	adjusted_mode->crtc_vblank_start = height + border;
> +	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
>  
> -	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
> -	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
> +	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
> +	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
>  }
>  
>  static inline u32 panel_fitter_scaling(u32 source, u32 target)
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 3a70c2f..81e9325 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -603,11 +603,11 @@ log_fail:
>  	return false;
>  }
>  
> -static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
> +static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
>  {
> -	if (mode->clock >= 100000)
> +	if (adjusted_mode->clock >= 100000)
>  		return 1;
> -	else if (mode->clock >= 50000)
> +	else if (adjusted_mode->clock >= 50000)
>  		return 2;
>  	else
>  		return 4;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index a5e599b..239afa8 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
>  	}
>  }
>  
> -static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
> +static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
> +			      int usecs)
>  {
>  	/* paranoia */
> -	if (!mode->crtc_htotal)
> +	if (!adjusted_mode->crtc_htotal)
>  		return 1;
>  
> -	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
> +	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
> +			    1000 * adjusted_mode->crtc_htotal);
>  }
>  
>  /**


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config()
  2015-09-08 10:40 ` [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config() ville.syrjala
@ 2015-09-24  8:08   ` Mika Kahola
  0 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:08 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> We shouldn't frob adjusted_mode after .compute_config(), so move the
> infoframe aspect ratio setup to .compute_config() from
> intel_hdmi_set_avi_infoframe().
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 0b256c9..e03dca0 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -454,9 +454,6 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
>  	union hdmi_infoframe frame;
>  	int ret;
>  
> -	/* Set user selected PAR to incoming mode's member */
> -	adjusted_mode->picture_aspect_ratio = intel_hdmi->aspect_ratio;
> -
>  	ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
>  						       adjusted_mode);
>  	if (ret < 0) {
> @@ -1312,6 +1309,9 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
>  		return false;
>  	}
>  
> +	/* Set user selected PAR to incoming mode's member */
> +	adjusted_mode->picture_aspect_ratio = intel_hdmi->aspect_ratio;
> +
>  	return true;
>  }
>  


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode
  2015-09-08 10:40 ` [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode ville.syrjala
@ 2015-09-24  8:08   ` Mika Kahola
  2015-09-25 13:38   ` [PATCH v2 " ville.syrjala
  1 sibling, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:08 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> The adjustead_mode crtc_ timings are what we will program into the hardware,
> so it's those timings we should be looking practically everywhere.
> 
> The normal and crtc_ timings should differ only when stere doubling is
> used. In that case the normal timings are the orignal non-doubled
> timigns, and crtc_ timings are the doubled timings used by the hardware.
> 
> The only case where we continue to look at the normal timings is when we
> pass the adjusted_mode to drm_match_{cea,hdmi}_mode() to find the VIC.
> drm_edid keeps the modes aronund in the non-double form only, so it
> needs the non-double timings to match against.
> 
> Done with sed
> 's/adjusted_mode->\([vhVH]\)/adjusted_mode->crtc_\1/g'
> 's/adjusted_mode->clock/adjusted_mode->crtc_clock/g'
> with a manual s/VDisplay/vdisplay/ within the comment in intel_dvo.c
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/dvo_ivch.c      |  8 ++---
>  drivers/gpu/drm/i915/intel_audio.c   |  4 +--
>  drivers/gpu/drm/i915/intel_display.c |  4 +--
>  drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
>  drivers/gpu/drm/i915/intel_dsi.c     | 24 +++++++--------
>  drivers/gpu/drm/i915/intel_dvo.c     |  8 ++---
>  drivers/gpu/drm/i915/intel_panel.c   | 58 ++++++++++++++++++------------------
>  drivers/gpu/drm/i915/intel_sdvo.c    |  4 +--
>  8 files changed, 56 insertions(+), 56 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
> index 732ce87..e082f75 100644
> --- a/drivers/gpu/drm/i915/dvo_ivch.c
> +++ b/drivers/gpu/drm/i915/dvo_ivch.c
> @@ -414,16 +414,16 @@ static void ivch_mode_set(struct intel_dvo_device *dvo,
>  	vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE |
>  		VR40_HORIZONTAL_INTERP_ENABLE);
>  
> -	if (mode->hdisplay != adjusted_mode->hdisplay ||
> -	    mode->vdisplay != adjusted_mode->vdisplay) {
> +	if (mode->hdisplay != adjusted_mode->crtc_hdisplay ||
> +	    mode->vdisplay != adjusted_mode->crtc_vdisplay) {
>  		uint16_t x_ratio, y_ratio;
>  
>  		vr01 |= VR01_PANEL_FIT_ENABLE;
>  		vr40 |= VR40_CLOCK_GATING_ENABLE;
>  		x_ratio = (((mode->hdisplay - 1) << 16) /
> -			   (adjusted_mode->hdisplay - 1)) >> 2;
> +			   (adjusted_mode->crtc_hdisplay - 1)) >> 2;
>  		y_ratio = (((mode->vdisplay - 1) << 16) /
> -			   (adjusted_mode->vdisplay - 1)) >> 2;
> +			   (adjusted_mode->crtc_vdisplay - 1)) >> 2;
>  		ivch_write(dvo, VR42, x_ratio);
>  		ivch_write(dvo, VR41, y_ratio);
>  	} else {
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index ca90ba3..5848a50 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -74,13 +74,13 @@ static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> -		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
> +		if (adjusted_mode->crtc_clock == hdmi_audio_clock[i].clock)
>  			break;
>  	}
>  
>  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
>  		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> -			      adjusted_mode->clock);
> +			      adjusted_mode->crtc_clock);
>  		i = 1;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index b8b7540..f83e25d 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4356,7 +4356,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *state)
>  	return skl_update_scaler(state, !state->base.active, SKL_CRTC_INDEX,
>  		&state->scaler_state.scaler_id, DRM_ROTATE_0,
>  		state->pipe_src_w, state->pipe_src_h,
> -		adjusted_mode->hdisplay, adjusted_mode->vdisplay);
> +		adjusted_mode->crtc_hdisplay, adjusted_mode->crtc_vdisplay);
>  }
>  
>  /**
> @@ -6543,7 +6543,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  	 * WaPruneModeWithIncorrectHsyncOffset:ctg,elk,ilk,snb,ivb,vlv,hsw.
>  	 */
>  	if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) &&
> -		adjusted_mode->hsync_start == adjusted_mode->hdisplay)
> +		adjusted_mode->crtc_hsync_start == adjusted_mode->crtc_hdisplay)
>  		return -EINVAL;
>  
>  	if (HAS_IPS(dev))
> diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
> index 677d70e..dc2f67e 100644
> --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> @@ -78,7 +78,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
>  		return false;
>  	}
>  
> -	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->clock, bpp);
> +	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
>  
>  	pipe_config->pbn = mst_pbn;
>  	slots = drm_dp_find_vcpi_slots(&intel_dp->mst_mgr, mst_pbn);
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 55af0c5..2d4ecfb 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  
>  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
>  
> -	hactive = adjusted_mode->hdisplay;
> -	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> -	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> -	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
> +	hactive = adjusted_mode->crtc_hdisplay;
> +	hfp = adjusted_mode->crtc_hsync_start - adjusted_mode->crtc_hdisplay;
> +	hsync = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> +	hbp = adjusted_mode->crtc_htotal - adjusted_mode->crtc_hsync_end;
>  
>  	if (intel_dsi->dual_link) {
>  		hactive /= 2;
> @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  		hbp /= 2;
>  	}
>  
> -	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> -	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> -	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
> +	vfp = adjusted_mode->crtc_vsync_start - adjusted_mode->crtc_vdisplay;
> +	vsync = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> +	vbp = adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vsync_end;
>  
>  	/* horizontal values are in terms of high speed byte clock */
>  	hactive = txbyteclkhs(hactive, bpp, lane_count,
> @@ -767,7 +767,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  
>  	DRM_DEBUG_KMS("pipe %c\n", pipe_name(intel_crtc->pipe));
>  
> -	mode_hdisplay = adjusted_mode->hdisplay;
> +	mode_hdisplay = adjusted_mode->crtc_hdisplay;
>  
>  	if (intel_dsi->dual_link) {
>  		mode_hdisplay /= 2;
> @@ -794,7 +794,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  		I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg);
>  
>  		I915_WRITE(MIPI_DPI_RESOLUTION(port),
> -			adjusted_mode->vdisplay << VERTICAL_ADDRESS_SHIFT |
> +			adjusted_mode->crtc_vdisplay << VERTICAL_ADDRESS_SHIFT |
>  			mode_hdisplay << HORIZONTAL_ADDRESS_SHIFT);
>  	}
>  
> @@ -840,13 +840,13 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  		if (is_vid_mode(intel_dsi) &&
>  			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
> -				txbyteclkhs(adjusted_mode->htotal, bpp,
> +				txbyteclkhs(adjusted_mode->crtc_htotal, bpp,
>  					    intel_dsi->lane_count,
>  					    intel_dsi->burst_mode_ratio) + 1);
>  		} else {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
> -				txbyteclkhs(adjusted_mode->vtotal *
> -					    adjusted_mode->htotal,
> +				txbyteclkhs(adjusted_mode->crtc_vtotal *
> +					    adjusted_mode->crtc_htotal,
>  					    bpp, intel_dsi->lane_count,
>  					    intel_dsi->burst_mode_ratio) + 1);
>  		}
> diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> index 0bc8aa8..555afbc 100644
> --- a/drivers/gpu/drm/i915/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/intel_dvo.c
> @@ -285,11 +285,11 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
>  		dvo_val |= DVO_VSYNC_ACTIVE_HIGH;
>  
>  	/*I915_WRITE(DVOB_SRCDIM,
> -	  (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> -	  (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
> +	  (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> +	  (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
>  	I915_WRITE(dvo_srcdim_reg,
> -		   (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> -		   (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
> +		   (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> +		   (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
>  	/*I915_WRITE(DVOB, dvo_val);*/
>  	I915_WRITE(dvo_reg, dvo_val);
>  }
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index d071bed..83ec94a 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -113,51 +113,51 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
>  	x = y = width = height = 0;
>  
>  	/* Native modes don't need fitting */
> -	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
> -	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
> +	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> +	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
>  		goto done;
>  
>  	switch (fitting_mode) {
>  	case DRM_MODE_SCALE_CENTER:
>  		width = pipe_config->pipe_src_w;
>  		height = pipe_config->pipe_src_h;
> -		x = (adjusted_mode->hdisplay - width + 1)/2;
> -		y = (adjusted_mode->vdisplay - height + 1)/2;
> +		x = (adjusted_mode->crtc_hdisplay - width + 1)/2;
> +		y = (adjusted_mode->crtc_vdisplay - height + 1)/2;
>  		break;
>  
>  	case DRM_MODE_SCALE_ASPECT:
>  		/* Scale but preserve the aspect ratio */
>  		{
> -			u32 scaled_width = adjusted_mode->hdisplay
> +			u32 scaled_width = adjusted_mode->crtc_hdisplay
>  				* pipe_config->pipe_src_h;
>  			u32 scaled_height = pipe_config->pipe_src_w
> -				* adjusted_mode->vdisplay;
> +				* adjusted_mode->crtc_vdisplay;
>  			if (scaled_width > scaled_height) { /* pillar */
>  				width = scaled_height / pipe_config->pipe_src_h;
>  				if (width & 1)
>  					width++;
> -				x = (adjusted_mode->hdisplay - width + 1) / 2;
> +				x = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
>  				y = 0;
> -				height = adjusted_mode->vdisplay;
> +				height = adjusted_mode->crtc_vdisplay;
>  			} else if (scaled_width < scaled_height) { /* letter */
>  				height = scaled_width / pipe_config->pipe_src_w;
>  				if (height & 1)
>  				    height++;
> -				y = (adjusted_mode->vdisplay - height + 1) / 2;
> +				y = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
>  				x = 0;
> -				width = adjusted_mode->hdisplay;
> +				width = adjusted_mode->crtc_hdisplay;
>  			} else {
>  				x = y = 0;
> -				width = adjusted_mode->hdisplay;
> -				height = adjusted_mode->vdisplay;
> +				width = adjusted_mode->crtc_hdisplay;
> +				height = adjusted_mode->crtc_vdisplay;
>  			}
>  		}
>  		break;
>  
>  	case DRM_MODE_SCALE_FULLSCREEN:
>  		x = y = 0;
> -		width = adjusted_mode->hdisplay;
> -		height = adjusted_mode->vdisplay;
> +		width = adjusted_mode->crtc_hdisplay;
> +		height = adjusted_mode->crtc_vdisplay;
>  		break;
>  
>  	default:
> @@ -182,7 +182,7 @@ centre_horizontally(struct drm_display_mode *adjusted_mode,
>  	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (adjusted_mode->hdisplay - width + 1) / 2;
> +	border = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
>  	border += border & 1; /* make the border even */
>  
>  	adjusted_mode->crtc_hdisplay = width;
> @@ -204,7 +204,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
>  	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (adjusted_mode->vdisplay - height + 1) / 2;
> +	border = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
>  
>  	adjusted_mode->crtc_vdisplay = height;
>  	adjusted_mode->crtc_vblank_start = height + border;
> @@ -231,10 +231,10 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
>  			      u32 *pfit_control)
>  {
>  	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> -	u32 scaled_width = adjusted_mode->hdisplay *
> +	u32 scaled_width = adjusted_mode->crtc_hdisplay *
>  		pipe_config->pipe_src_h;
>  	u32 scaled_height = pipe_config->pipe_src_w *
> -		adjusted_mode->vdisplay;
> +		adjusted_mode->crtc_vdisplay;
>  
>  	/* 965+ is easy, it does everything in hw */
>  	if (scaled_width > scaled_height)
> @@ -243,7 +243,7 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
>  	else if (scaled_width < scaled_height)
>  		*pfit_control |= PFIT_ENABLE |
>  			PFIT_SCALING_LETTER;
> -	else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
> +	else if (adjusted_mode->crtc_hdisplay != pipe_config->pipe_src_w)
>  		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
>  }
>  
> @@ -252,10 +252,10 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  			      u32 *border)
>  {
>  	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> -	u32 scaled_width = adjusted_mode->hdisplay *
> +	u32 scaled_width = adjusted_mode->crtc_hdisplay *
>  		pipe_config->pipe_src_h;
>  	u32 scaled_height = pipe_config->pipe_src_w *
> -		adjusted_mode->vdisplay;
> +		adjusted_mode->crtc_vdisplay;
>  	u32 bits;
>  
>  	/*
> @@ -269,9 +269,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  				    pipe_config->pipe_src_h);
>  
>  		*border = LVDS_BORDER_ENABLE;
> -		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
> +		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay) {
>  			bits = panel_fitter_scaling(pipe_config->pipe_src_h,
> -						    adjusted_mode->vdisplay);
> +						    adjusted_mode->crtc_vdisplay);
>  
>  			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
>  					     bits << PFIT_VERT_SCALE_SHIFT);
> @@ -285,9 +285,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  				  pipe_config->pipe_src_w);
>  
>  		*border = LVDS_BORDER_ENABLE;
> -		if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> +		if (pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
>  			bits = panel_fitter_scaling(pipe_config->pipe_src_w,
> -						    adjusted_mode->hdisplay);
> +						    adjusted_mode->crtc_hdisplay);
>  
>  			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
>  					     bits << PFIT_VERT_SCALE_SHIFT);
> @@ -315,8 +315,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
>  	adjusted_mode = &pipe_config->base.adjusted_mode;
>  
>  	/* Native modes don't need fitting */
> -	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
> -	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
> +	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> +	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
>  		goto out;
>  
>  	switch (fitting_mode) {
> @@ -342,8 +342,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
>  		 * Full scaling, even if it changes the aspect ratio.
>  		 * Fortunately this is all done for us in hw.
>  		 */
> -		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay ||
> -		    pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> +		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay ||
> +		    pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
>  			pfit_control |= PFIT_ENABLE;
>  			if (INTEL_INFO(dev)->gen >= 4)
>  				pfit_control |= PFIT_SCALING_AUTO;
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 81e9325..810e0bb 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -605,9 +605,9 @@ log_fail:
>  
>  static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
>  {
> -	if (adjusted_mode->clock >= 100000)
> +	if (adjusted_mode->crtc_clock >= 100000)
>  		return 1;
> -	else if (adjusted_mode->clock >= 50000)
> +	else if (adjusted_mode->crtc_clock >= 50000)
>  		return 2;
>  	else
>  		return 4;


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 6/7] drm/i915: Constify adjusted_mode
  2015-09-08 10:40 ` [PATCH 6/7] drm/i915: Constify adjusted_mode ville.syrjala
@ 2015-09-24  8:10   ` Mika Kahola
  0 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-24  8:10 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Tue, 2015-09-08 at 13:40 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Make adjusted_mode const whereever we don't have to modify it. This only
> covers cases when we have a local adjusted_mode variable, and doesn't
> make any difference for cases where we just dereference
> pipe_config->adjusted_mode.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/dvo.h           |  4 ++--
>  drivers/gpu/drm/i915/dvo_ch7017.c    |  4 ++--
>  drivers/gpu/drm/i915/dvo_ch7xxx.c    |  4 ++--
>  drivers/gpu/drm/i915/dvo_ivch.c      |  4 ++--
>  drivers/gpu/drm/i915/dvo_ns2501.c    |  4 ++--
>  drivers/gpu/drm/i915/dvo_sil164.c    |  4 ++--
>  drivers/gpu/drm/i915/dvo_tfp410.c    |  4 ++--
>  drivers/gpu/drm/i915/intel_audio.c   |  2 +-
>  drivers/gpu/drm/i915/intel_crt.c     |  2 +-
>  drivers/gpu/drm/i915/intel_display.c |  8 ++++----
>  drivers/gpu/drm/i915/intel_dp.c      |  2 +-
>  drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
>  drivers/gpu/drm/i915/intel_drv.h     |  2 +-
>  drivers/gpu/drm/i915/intel_dsi.c     |  2 +-
>  drivers/gpu/drm/i915/intel_dvo.c     |  2 +-
>  drivers/gpu/drm/i915/intel_hdmi.c    | 22 +++++++++++-----------
>  drivers/gpu/drm/i915/intel_panel.c   | 14 ++++----------
>  drivers/gpu/drm/i915/intel_pm.c      |  9 +++------
>  drivers/gpu/drm/i915/intel_sdvo.c    |  2 +-
>  19 files changed, 44 insertions(+), 53 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/dvo.h b/drivers/gpu/drm/i915/dvo.h
> index 3121633..0e2c1b9 100644
> --- a/drivers/gpu/drm/i915/dvo.h
> +++ b/drivers/gpu/drm/i915/dvo.h
> @@ -94,8 +94,8 @@ struct intel_dvo_dev_ops {
>  	 * after this function is called.
>  	 */
>  	void (*mode_set)(struct intel_dvo_device *dvo,
> -			 struct drm_display_mode *mode,
> -			 struct drm_display_mode *adjusted_mode);
> +			 const struct drm_display_mode *mode,
> +			 const struct drm_display_mode *adjusted_mode);
>  
>  	/*
>  	 * Probe for a connected output, and return detect_status.
> diff --git a/drivers/gpu/drm/i915/dvo_ch7017.c b/drivers/gpu/drm/i915/dvo_ch7017.c
> index 86b27d1..cbb2202 100644
> --- a/drivers/gpu/drm/i915/dvo_ch7017.c
> +++ b/drivers/gpu/drm/i915/dvo_ch7017.c
> @@ -255,8 +255,8 @@ static enum drm_mode_status ch7017_mode_valid(struct intel_dvo_device *dvo,
>  }
>  
>  static void ch7017_mode_set(struct intel_dvo_device *dvo,
> -			    struct drm_display_mode *mode,
> -			    struct drm_display_mode *adjusted_mode)
> +			    const struct drm_display_mode *mode,
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	uint8_t lvds_pll_feedback_div, lvds_pll_vco_control;
>  	uint8_t outputs_enable, lvds_control_2, lvds_power_down;
> diff --git a/drivers/gpu/drm/i915/dvo_ch7xxx.c b/drivers/gpu/drm/i915/dvo_ch7xxx.c
> index 80449f4..4b4acc1 100644
> --- a/drivers/gpu/drm/i915/dvo_ch7xxx.c
> +++ b/drivers/gpu/drm/i915/dvo_ch7xxx.c
> @@ -275,8 +275,8 @@ static enum drm_mode_status ch7xxx_mode_valid(struct intel_dvo_device *dvo,
>  }
>  
>  static void ch7xxx_mode_set(struct intel_dvo_device *dvo,
> -			    struct drm_display_mode *mode,
> -			    struct drm_display_mode *adjusted_mode)
> +			    const struct drm_display_mode *mode,
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	uint8_t tvco, tpcp, tpd, tlpf, idf;
>  
> diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
> index e082f75..ff9f1b0 100644
> --- a/drivers/gpu/drm/i915/dvo_ivch.c
> +++ b/drivers/gpu/drm/i915/dvo_ivch.c
> @@ -394,8 +394,8 @@ static bool ivch_get_hw_state(struct intel_dvo_device *dvo)
>  }
>  
>  static void ivch_mode_set(struct intel_dvo_device *dvo,
> -			  struct drm_display_mode *mode,
> -			  struct drm_display_mode *adjusted_mode)
> +			  const struct drm_display_mode *mode,
> +			  const struct drm_display_mode *adjusted_mode)
>  {
>  	struct ivch_priv *priv = dvo->dev_priv;
>  	uint16_t vr40 = 0;
> diff --git a/drivers/gpu/drm/i915/dvo_ns2501.c b/drivers/gpu/drm/i915/dvo_ns2501.c
> index 97ae8aa..063859f 100644
> --- a/drivers/gpu/drm/i915/dvo_ns2501.c
> +++ b/drivers/gpu/drm/i915/dvo_ns2501.c
> @@ -546,8 +546,8 @@ static enum drm_mode_status ns2501_mode_valid(struct intel_dvo_device *dvo,
>  }
>  
>  static void ns2501_mode_set(struct intel_dvo_device *dvo,
> -			    struct drm_display_mode *mode,
> -			    struct drm_display_mode *adjusted_mode)
> +			    const struct drm_display_mode *mode,
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	const struct ns2501_configuration *conf;
>  	struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv);
> diff --git a/drivers/gpu/drm/i915/dvo_sil164.c b/drivers/gpu/drm/i915/dvo_sil164.c
> index fa01149..26f13eb 100644
> --- a/drivers/gpu/drm/i915/dvo_sil164.c
> +++ b/drivers/gpu/drm/i915/dvo_sil164.c
> @@ -190,8 +190,8 @@ static enum drm_mode_status sil164_mode_valid(struct intel_dvo_device *dvo,
>  }
>  
>  static void sil164_mode_set(struct intel_dvo_device *dvo,
> -			    struct drm_display_mode *mode,
> -			    struct drm_display_mode *adjusted_mode)
> +			    const struct drm_display_mode *mode,
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	/* As long as the basics are set up, since we don't have clock
>  	 * dependencies in the mode setup, we can just leave the
> diff --git a/drivers/gpu/drm/i915/dvo_tfp410.c b/drivers/gpu/drm/i915/dvo_tfp410.c
> index 7853719..6f1a0a6 100644
> --- a/drivers/gpu/drm/i915/dvo_tfp410.c
> +++ b/drivers/gpu/drm/i915/dvo_tfp410.c
> @@ -222,8 +222,8 @@ static enum drm_mode_status tfp410_mode_valid(struct intel_dvo_device *dvo,
>  }
>  
>  static void tfp410_mode_set(struct intel_dvo_device *dvo,
> -			    struct drm_display_mode *mode,
> -			    struct drm_display_mode *adjusted_mode)
> +			    const struct drm_display_mode *mode,
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	/* As long as the basics are set up, since we don't have clock dependencies
>  	* in the mode setup, we can just leave the registers alone and everything
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 5848a50..1f6fbb4 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -397,7 +397,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  {
>  	struct drm_encoder *encoder = &intel_encoder->base;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_connector *connector;
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index af5e43b..601a805 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -158,7 +158,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crt *crt = intel_encoder_to_crt(encoder);
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	u32 adpa;
>  
>  	if (INTEL_INFO(dev)->gen >= 5)
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index f83e25d..761d75a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4348,7 +4348,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
>  int skl_update_scaler_crtc(struct intel_crtc_state *state)
>  {
>  	struct intel_crtc *intel_crtc = to_intel_crtc(state->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
>  
>  	DRM_DEBUG_KMS("Updating scaler for [CRTC:%i] scaler_user index %u.%u\n",
>  		      intel_crtc->base.base.id, intel_crtc->pipe, SKL_CRTC_INDEX);
> @@ -6427,7 +6427,7 @@ static int ironlake_fdi_compute_config(struct intel_crtc *intel_crtc,
>  				       struct intel_crtc_state *pipe_config)
>  {
>  	struct drm_device *dev = intel_crtc->base.dev;
> -	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  	int lane, link_bw, fdi_dotclock, ret;
>  	bool needs_recompute = false;
>  
> @@ -6506,7 +6506,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  {
>  	struct drm_device *dev = crtc->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> -	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  
>  	/* FIXME should check pixel clock limits on all platforms */
>  	if (INTEL_INFO(dev)->gen < 4) {
> @@ -7574,7 +7574,7 @@ static void intel_set_pipe_timings(struct intel_crtc *intel_crtc)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	enum pipe pipe = intel_crtc->pipe;
>  	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	uint32_t crtc_vtotal, crtc_vblank_end;
>  	int vsyncshift = 0;
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 45ab25e..9b04c29 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -1586,7 +1586,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
>  	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>  	enum port port = dp_to_dig_port(intel_dp)->port;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  
>  	intel_dp_set_link_params(intel_dp, crtc->config);
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
> index dc2f67e..8684d6c 100644
> --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> @@ -40,7 +40,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
>  	struct drm_atomic_state *state;
>  	int bpp, i;
>  	int lane_count, slots;
> -	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  	struct drm_connector *drm_connector;
>  	struct intel_connector *connector, *found = NULL;
>  	struct drm_connector_state *connector_state;
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 46484e4..5c80cf7 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -674,7 +674,7 @@ struct intel_hdmi {
>  				const void *frame, ssize_t len);
>  	void (*set_infoframes)(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode);
> +			       const struct drm_display_mode *adjusted_mode);
>  	bool (*infoframe_enabled)(struct drm_encoder *encoder);
>  };
>  
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 2d4ecfb..ba36010 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -759,7 +759,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
>  	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum port port;
>  	unsigned int bpp = intel_crtc->config->pipe_bpp;
>  	u32 val, tmp;
> diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> index 555afbc..8492053 100644
> --- a/drivers/gpu/drm/i915/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/intel_dvo.c
> @@ -251,7 +251,7 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
>  	struct drm_device *dev = encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct intel_dvo *intel_dvo = enc_to_dvo(encoder);
>  	int pipe = crtc->pipe;
>  	u32 dvo_val;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index e03dca0..adbbc7b 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -447,7 +447,7 @@ static void intel_write_infoframe(struct drm_encoder *encoder,
>  }
>  
>  static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
> -					 struct drm_display_mode *adjusted_mode)
> +					 const struct drm_display_mode *adjusted_mode)
>  {
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> @@ -491,7 +491,7 @@ static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder)
>  
>  static void
>  intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder,
> -			      struct drm_display_mode *adjusted_mode)
> +			      const struct drm_display_mode *adjusted_mode)
>  {
>  	union hdmi_infoframe frame;
>  	int ret;
> @@ -506,7 +506,7 @@ intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder,
>  
>  static void g4x_set_infoframes(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode)
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
>  	struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
> @@ -658,7 +658,7 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder)
>  
>  static void ibx_set_infoframes(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode)
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> @@ -710,7 +710,7 @@ static void ibx_set_infoframes(struct drm_encoder *encoder,
>  
>  static void cpt_set_infoframes(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode)
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> @@ -752,7 +752,7 @@ static void cpt_set_infoframes(struct drm_encoder *encoder,
>  
>  static void vlv_set_infoframes(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode)
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
>  	struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
> @@ -804,7 +804,7 @@ static void vlv_set_infoframes(struct drm_encoder *encoder,
>  
>  static void hsw_set_infoframes(struct drm_encoder *encoder,
>  			       bool enable,
> -			       struct drm_display_mode *adjusted_mode)
> +			       const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = encoder->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
> @@ -841,7 +841,7 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	u32 hdmi_val;
>  
>  	hdmi_val = SDVO_ENCODING_HDMI;
> @@ -1523,7 +1523,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
>  {
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  
>  	intel_hdmi_prepare(encoder);
>  
> @@ -1540,7 +1540,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel port = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	u32 val;
> @@ -1806,7 +1806,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel ch = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	int data, i, stagger;
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 83ec94a..eda9b8c 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -105,12 +105,8 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
>  			struct intel_crtc_state *pipe_config,
>  			int fitting_mode)
>  {
> -	struct drm_display_mode *adjusted_mode;
> -	int x, y, width, height;
> -
> -	adjusted_mode = &pipe_config->base.adjusted_mode;
> -
> -	x = y = width = height = 0;
> +	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	int x = 0, y = 0, width = 0, height = 0;
>  
>  	/* Native modes don't need fitting */
>  	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> @@ -230,7 +226,7 @@ static inline u32 panel_fitter_scaling(u32 source, u32 target)
>  static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
>  			      u32 *pfit_control)
>  {
> -	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  	u32 scaled_width = adjusted_mode->crtc_hdisplay *
>  		pipe_config->pipe_src_h;
>  	u32 scaled_height = pipe_config->pipe_src_w *
> @@ -310,9 +306,7 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
>  {
>  	struct drm_device *dev = intel_crtc->base.dev;
>  	u32 pfit_control = 0, pfit_pgm_ratios = 0, border = 0;
> -	struct drm_display_mode *adjusted_mode;
> -
> -	adjusted_mode = &pipe_config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
>  
>  	/* Native modes don't need fitting */
>  	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 7aa9a4e..797f157 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -697,12 +697,9 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc)
>  
>  	crtc = single_enabled_crtc(dev);
>  	if (crtc) {
> -		const struct drm_display_mode *adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
>  		int pixel_size = crtc->primary->state->fb->bits_per_pixel / 8;
> -		int clock;
> -
> -		adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
> -		clock = adjusted_mode->crtc_clock;
> +		int clock = adjusted_mode->crtc_clock;
>  
>  		/* Display SR */
>  		wm = intel_calculate_wm(clock, &pineview_display_wm,
> @@ -2084,7 +2081,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> -	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	u32 linetime, ips_linetime;
>  
>  	if (!intel_crtc->active)
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 810e0bb..b8ed706 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1189,7 +1189,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
>  	struct drm_device *dev = intel_encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_display_mode *mode = &crtc->config->base.mode;
>  	struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
>  	u32 sdvox;


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v2 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
  2015-09-23 11:12   ` Mika Kahola
  2015-09-24  8:06   ` Mika Kahola
@ 2015-09-25 13:37   ` ville.syrjala
  2015-09-28 12:15     ` Mika Kahola
  2 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-25 13:37 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Rename the function argument to 'adjusted_mode' whenever the function
only ever gets passed the adjusted_mode.

v2: Update due to intel_dsi.c changes

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h     |  2 +-
 drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
 drivers/gpu/drm/i915/intel_dsi.c    | 22 +++++++++++-----------
 drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
 drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
 drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
 6 files changed, 47 insertions(+), 44 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 2b5d587..d1e800a 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
 	void (*crtc_disable)(struct drm_crtc *crtc);
 	void (*audio_codec_enable)(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode);
+				   const struct drm_display_mode *adjusted_mode);
 	void (*audio_codec_disable)(struct intel_encoder *encoder);
 	void (*fdi_link_train)(struct drm_crtc *crtc);
 	void (*init_clock_gating)(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index d9876c5..779f90c 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -69,17 +69,18 @@ static const struct {
 };
 
 /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
-static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
+static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
 {
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
-		if (mode->clock == hdmi_audio_clock[i].clock)
+		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
 			break;
 	}
 
 	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
-		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
+		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
+			      adjusted_mode->clock);
 		i = 1;
 	}
 
@@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
 
 static void g4x_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	uint8_t *eld = connector->eld;
@@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
 
 static void hsw_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
@@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
 	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
 		tmp |= AUD_CONFIG_N_VALUE_INDEX;
 	else
-		tmp |= audio_config_hdmi_pixel_clock(mode);
+		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
 	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
 }
 
@@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
 
 static void ilk_audio_codec_enable(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
-				   struct drm_display_mode *mode)
+				   const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
@@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
 	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
 		tmp |= AUD_CONFIG_N_VALUE_INDEX;
 	else
-		tmp |= audio_config_hdmi_pixel_clock(mode);
+		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
 	I915_WRITE(aud_config, tmp);
 }
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 23b7fc5..b4d5213 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
 }
 
 static void set_dsi_timings(struct drm_encoder *encoder,
-			    const struct drm_display_mode *mode)
+			    const struct drm_display_mode *adjusted_mode)
 {
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 
 	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
 
-	hactive = mode->hdisplay;
-	hfp = mode->hsync_start - mode->hdisplay;
-	hsync = mode->hsync_end - mode->hsync_start;
-	hbp = mode->htotal - mode->hsync_end;
+	hactive = adjusted_mode->hdisplay;
+	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
+	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
+	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
 
 	if (intel_dsi->dual_link) {
 		hactive /= 2;
@@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 		hbp /= 2;
 	}
 
-	vfp = mode->vsync_start - mode->vdisplay;
-	vsync = mode->vsync_end - mode->vsync_start;
-	vbp = mode->vtotal - mode->vsync_end;
+	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
+	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
+	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
 
 	/* horizontal values are in terms of high speed byte clock */
 	hactive = txbyteclkhs(hactive, bpp, lane_count,
@@ -745,11 +745,11 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 			 * whereas these values should be based on resolution.
 			 */
 			I915_WRITE(BXT_MIPI_TRANS_HACTIVE(port),
-					mode->hdisplay);
+				   adjusted_mode->hdisplay);
 			I915_WRITE(BXT_MIPI_TRANS_VACTIVE(port),
-					mode->vdisplay);
+				   adjusted_mode->vdisplay);
 			I915_WRITE(BXT_MIPI_TRANS_VTOTAL(port),
-					mode->vtotal);
+				   adjusted_mode->vtotal);
 		}
 
 		I915_WRITE(MIPI_HACTIVE_AREA_COUNT(port), hactive);
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 2c11b4e..4294f605 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -172,46 +172,46 @@ done:
 }
 
 static void
-centre_horizontally(struct drm_display_mode *mode,
+centre_horizontally(struct drm_display_mode *adjusted_mode,
 		    int width)
 {
 	u32 border, sync_pos, blank_width, sync_width;
 
 	/* keep the hsync and hblank widths constant */
-	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
-	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
+	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
+	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (mode->hdisplay - width + 1) / 2;
+	border = (adjusted_mode->hdisplay - width + 1) / 2;
 	border += border & 1; /* make the border even */
 
-	mode->crtc_hdisplay = width;
-	mode->crtc_hblank_start = width + border;
-	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
+	adjusted_mode->crtc_hdisplay = width;
+	adjusted_mode->crtc_hblank_start = width + border;
+	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
 
-	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
-	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
+	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
+	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
 }
 
 static void
-centre_vertically(struct drm_display_mode *mode,
+centre_vertically(struct drm_display_mode *adjusted_mode,
 		  int height)
 {
 	u32 border, sync_pos, blank_width, sync_width;
 
 	/* keep the vsync and vblank widths constant */
-	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
-	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
+	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
+	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (mode->vdisplay - height + 1) / 2;
+	border = (adjusted_mode->vdisplay - height + 1) / 2;
 
-	mode->crtc_vdisplay = height;
-	mode->crtc_vblank_start = height + border;
-	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
+	adjusted_mode->crtc_vdisplay = height;
+	adjusted_mode->crtc_vblank_start = height + border;
+	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
 
-	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
-	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
+	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
+	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
 }
 
 static inline u32 panel_fitter_scaling(u32 source, u32 target)
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index b0b96fd..ab75b61 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -603,11 +603,11 @@ log_fail:
 	return false;
 }
 
-static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
+static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
 {
-	if (mode->clock >= 100000)
+	if (adjusted_mode->clock >= 100000)
 		return 1;
-	else if (mode->clock >= 50000)
+	else if (adjusted_mode->clock >= 50000)
 		return 2;
 	else
 		return 4;
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 8218040..b229c67 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
 	}
 }
 
-static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
+static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
+			      int usecs)
 {
 	/* paranoia */
-	if (!mode->crtc_htotal)
+	if (!adjusted_mode->crtc_htotal)
 		return 1;
 
-	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
+	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
+			    1000 * adjusted_mode->crtc_htotal);
 }
 
 /**
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode
  2015-09-08 10:40 ` [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode ville.syrjala
  2015-09-24  8:08   ` Mika Kahola
@ 2015-09-25 13:38   ` ville.syrjala
  2015-09-28 12:15     ` Mika Kahola
  1 sibling, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-25 13:38 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The adjustead_mode crtc_ timings are what we will program into the hardware,
so it's those timings we should be looking practically everywhere.

The normal and crtc_ timings should differ only when stere doubling is
used. In that case the normal timings are the orignal non-doubled
timigns, and crtc_ timings are the doubled timings used by the hardware.

The only case where we continue to look at the normal timings is when we
pass the adjusted_mode to drm_match_{cea,hdmi}_mode() to find the VIC.
drm_edid keeps the modes aronund in the non-double form only, so it
needs the non-double timings to match against.

Done with sed
's/adjusted_mode->\([vhVH]\)/adjusted_mode->crtc_\1/g'
's/adjusted_mode->clock/adjusted_mode->crtc_clock/g'
with a manual s/VDisplay/vdisplay/ within the comment in intel_dvo.c

v2: Update due to intel_dsi.c changes

Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/dvo_ivch.c      |  8 ++---
 drivers/gpu/drm/i915/intel_audio.c   |  4 +--
 drivers/gpu/drm/i915/intel_display.c |  4 +--
 drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
 drivers/gpu/drm/i915/intel_dsi.c     | 30 +++++++++----------
 drivers/gpu/drm/i915/intel_dvo.c     |  8 ++---
 drivers/gpu/drm/i915/intel_panel.c   | 58 ++++++++++++++++++------------------
 drivers/gpu/drm/i915/intel_sdvo.c    |  4 +--
 8 files changed, 59 insertions(+), 59 deletions(-)

diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
index 732ce87..e082f75 100644
--- a/drivers/gpu/drm/i915/dvo_ivch.c
+++ b/drivers/gpu/drm/i915/dvo_ivch.c
@@ -414,16 +414,16 @@ static void ivch_mode_set(struct intel_dvo_device *dvo,
 	vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE |
 		VR40_HORIZONTAL_INTERP_ENABLE);
 
-	if (mode->hdisplay != adjusted_mode->hdisplay ||
-	    mode->vdisplay != adjusted_mode->vdisplay) {
+	if (mode->hdisplay != adjusted_mode->crtc_hdisplay ||
+	    mode->vdisplay != adjusted_mode->crtc_vdisplay) {
 		uint16_t x_ratio, y_ratio;
 
 		vr01 |= VR01_PANEL_FIT_ENABLE;
 		vr40 |= VR40_CLOCK_GATING_ENABLE;
 		x_ratio = (((mode->hdisplay - 1) << 16) /
-			   (adjusted_mode->hdisplay - 1)) >> 2;
+			   (adjusted_mode->crtc_hdisplay - 1)) >> 2;
 		y_ratio = (((mode->vdisplay - 1) << 16) /
-			   (adjusted_mode->vdisplay - 1)) >> 2;
+			   (adjusted_mode->crtc_vdisplay - 1)) >> 2;
 		ivch_write(dvo, VR42, x_ratio);
 		ivch_write(dvo, VR41, y_ratio);
 	} else {
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 779f90c..e4c30e8 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -74,13 +74,13 @@ static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
-		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
+		if (adjusted_mode->crtc_clock == hdmi_audio_clock[i].clock)
 			break;
 	}
 
 	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
 		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
-			      adjusted_mode->clock);
+			      adjusted_mode->crtc_clock);
 		i = 1;
 	}
 
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f8605b9..91f88e9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4400,7 +4400,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *state)
 	return skl_update_scaler(state, !state->base.active, SKL_CRTC_INDEX,
 		&state->scaler_state.scaler_id, DRM_ROTATE_0,
 		state->pipe_src_w, state->pipe_src_h,
-		adjusted_mode->hdisplay, adjusted_mode->vdisplay);
+		adjusted_mode->crtc_hdisplay, adjusted_mode->crtc_vdisplay);
 }
 
 /**
@@ -6587,7 +6587,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
 	 * WaPruneModeWithIncorrectHsyncOffset:ctg,elk,ilk,snb,ivb,vlv,hsw.
 	 */
 	if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) &&
-		adjusted_mode->hsync_start == adjusted_mode->hdisplay)
+		adjusted_mode->crtc_hsync_start == adjusted_mode->crtc_hdisplay)
 		return -EINVAL;
 
 	if (HAS_IPS(dev))
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index ff8ba55..cccf014 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -78,7 +78,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
 		return false;
 	}
 
-	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->clock, bpp);
+	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
 
 	pipe_config->pbn = mst_pbn;
 	slots = drm_dp_find_vcpi_slots(&intel_dp->mst_mgr, mst_pbn);
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index b4d5213..4fb97c0 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 
 	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
 
-	hactive = adjusted_mode->hdisplay;
-	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
-	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
-	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
+	hactive = adjusted_mode->crtc_hdisplay;
+	hfp = adjusted_mode->crtc_hsync_start - adjusted_mode->crtc_hdisplay;
+	hsync = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
+	hbp = adjusted_mode->crtc_htotal - adjusted_mode->crtc_hsync_end;
 
 	if (intel_dsi->dual_link) {
 		hactive /= 2;
@@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 		hbp /= 2;
 	}
 
-	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
-	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
-	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
+	vfp = adjusted_mode->crtc_vsync_start - adjusted_mode->crtc_vdisplay;
+	vsync = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
+	vbp = adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vsync_end;
 
 	/* horizontal values are in terms of high speed byte clock */
 	hactive = txbyteclkhs(hactive, bpp, lane_count,
@@ -745,11 +745,11 @@ static void set_dsi_timings(struct drm_encoder *encoder,
 			 * whereas these values should be based on resolution.
 			 */
 			I915_WRITE(BXT_MIPI_TRANS_HACTIVE(port),
-				   adjusted_mode->hdisplay);
+				   adjusted_mode->crtc_hdisplay);
 			I915_WRITE(BXT_MIPI_TRANS_VACTIVE(port),
-				   adjusted_mode->vdisplay);
+				   adjusted_mode->crtc_vdisplay);
 			I915_WRITE(BXT_MIPI_TRANS_VTOTAL(port),
-				   adjusted_mode->vtotal);
+				   adjusted_mode->crtc_vtotal);
 		}
 
 		I915_WRITE(MIPI_HACTIVE_AREA_COUNT(port), hactive);
@@ -782,7 +782,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 
 	DRM_DEBUG_KMS("pipe %c\n", pipe_name(intel_crtc->pipe));
 
-	mode_hdisplay = adjusted_mode->hdisplay;
+	mode_hdisplay = adjusted_mode->crtc_hdisplay;
 
 	if (intel_dsi->dual_link) {
 		mode_hdisplay /= 2;
@@ -832,7 +832,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 		I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg);
 
 		I915_WRITE(MIPI_DPI_RESOLUTION(port),
-			adjusted_mode->vdisplay << VERTICAL_ADDRESS_SHIFT |
+			adjusted_mode->crtc_vdisplay << VERTICAL_ADDRESS_SHIFT |
 			mode_hdisplay << HORIZONTAL_ADDRESS_SHIFT);
 	}
 
@@ -878,13 +878,13 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
 		if (is_vid_mode(intel_dsi) &&
 			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
-				txbyteclkhs(adjusted_mode->htotal, bpp,
+				txbyteclkhs(adjusted_mode->crtc_htotal, bpp,
 					    intel_dsi->lane_count,
 					    intel_dsi->burst_mode_ratio) + 1);
 		} else {
 			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
-				txbyteclkhs(adjusted_mode->vtotal *
-					    adjusted_mode->htotal,
+				txbyteclkhs(adjusted_mode->crtc_vtotal *
+					    adjusted_mode->crtc_htotal,
 					    bpp, intel_dsi->lane_count,
 					    intel_dsi->burst_mode_ratio) + 1);
 		}
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 0bc8aa8..555afbc 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -285,11 +285,11 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
 		dvo_val |= DVO_VSYNC_ACTIVE_HIGH;
 
 	/*I915_WRITE(DVOB_SRCDIM,
-	  (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
-	  (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
+	  (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
+	  (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
 	I915_WRITE(dvo_srcdim_reg,
-		   (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
-		   (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
+		   (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
+		   (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
 	/*I915_WRITE(DVOB, dvo_val);*/
 	I915_WRITE(dvo_reg, dvo_val);
 }
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 4294f605..2806049 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -113,51 +113,51 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
 	x = y = width = height = 0;
 
 	/* Native modes don't need fitting */
-	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
-	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
+	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
+	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
 		goto done;
 
 	switch (fitting_mode) {
 	case DRM_MODE_SCALE_CENTER:
 		width = pipe_config->pipe_src_w;
 		height = pipe_config->pipe_src_h;
-		x = (adjusted_mode->hdisplay - width + 1)/2;
-		y = (adjusted_mode->vdisplay - height + 1)/2;
+		x = (adjusted_mode->crtc_hdisplay - width + 1)/2;
+		y = (adjusted_mode->crtc_vdisplay - height + 1)/2;
 		break;
 
 	case DRM_MODE_SCALE_ASPECT:
 		/* Scale but preserve the aspect ratio */
 		{
-			u32 scaled_width = adjusted_mode->hdisplay
+			u32 scaled_width = adjusted_mode->crtc_hdisplay
 				* pipe_config->pipe_src_h;
 			u32 scaled_height = pipe_config->pipe_src_w
-				* adjusted_mode->vdisplay;
+				* adjusted_mode->crtc_vdisplay;
 			if (scaled_width > scaled_height) { /* pillar */
 				width = scaled_height / pipe_config->pipe_src_h;
 				if (width & 1)
 					width++;
-				x = (adjusted_mode->hdisplay - width + 1) / 2;
+				x = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
 				y = 0;
-				height = adjusted_mode->vdisplay;
+				height = adjusted_mode->crtc_vdisplay;
 			} else if (scaled_width < scaled_height) { /* letter */
 				height = scaled_width / pipe_config->pipe_src_w;
 				if (height & 1)
 				    height++;
-				y = (adjusted_mode->vdisplay - height + 1) / 2;
+				y = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
 				x = 0;
-				width = adjusted_mode->hdisplay;
+				width = adjusted_mode->crtc_hdisplay;
 			} else {
 				x = y = 0;
-				width = adjusted_mode->hdisplay;
-				height = adjusted_mode->vdisplay;
+				width = adjusted_mode->crtc_hdisplay;
+				height = adjusted_mode->crtc_vdisplay;
 			}
 		}
 		break;
 
 	case DRM_MODE_SCALE_FULLSCREEN:
 		x = y = 0;
-		width = adjusted_mode->hdisplay;
-		height = adjusted_mode->vdisplay;
+		width = adjusted_mode->crtc_hdisplay;
+		height = adjusted_mode->crtc_vdisplay;
 		break;
 
 	default:
@@ -182,7 +182,7 @@ centre_horizontally(struct drm_display_mode *adjusted_mode,
 	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (adjusted_mode->hdisplay - width + 1) / 2;
+	border = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
 	border += border & 1; /* make the border even */
 
 	adjusted_mode->crtc_hdisplay = width;
@@ -204,7 +204,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
 	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
 	sync_pos = (blank_width - sync_width + 1) / 2;
 
-	border = (adjusted_mode->vdisplay - height + 1) / 2;
+	border = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
 
 	adjusted_mode->crtc_vdisplay = height;
 	adjusted_mode->crtc_vblank_start = height + border;
@@ -231,10 +231,10 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
 			      u32 *pfit_control)
 {
 	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
-	u32 scaled_width = adjusted_mode->hdisplay *
+	u32 scaled_width = adjusted_mode->crtc_hdisplay *
 		pipe_config->pipe_src_h;
 	u32 scaled_height = pipe_config->pipe_src_w *
-		adjusted_mode->vdisplay;
+		adjusted_mode->crtc_vdisplay;
 
 	/* 965+ is easy, it does everything in hw */
 	if (scaled_width > scaled_height)
@@ -243,7 +243,7 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
 	else if (scaled_width < scaled_height)
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_LETTER;
-	else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
+	else if (adjusted_mode->crtc_hdisplay != pipe_config->pipe_src_w)
 		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
 }
 
@@ -252,10 +252,10 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 			      u32 *border)
 {
 	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
-	u32 scaled_width = adjusted_mode->hdisplay *
+	u32 scaled_width = adjusted_mode->crtc_hdisplay *
 		pipe_config->pipe_src_h;
 	u32 scaled_height = pipe_config->pipe_src_w *
-		adjusted_mode->vdisplay;
+		adjusted_mode->crtc_vdisplay;
 	u32 bits;
 
 	/*
@@ -269,9 +269,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 				    pipe_config->pipe_src_h);
 
 		*border = LVDS_BORDER_ENABLE;
-		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
+		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay) {
 			bits = panel_fitter_scaling(pipe_config->pipe_src_h,
-						    adjusted_mode->vdisplay);
+						    adjusted_mode->crtc_vdisplay);
 
 			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
 					     bits << PFIT_VERT_SCALE_SHIFT);
@@ -285,9 +285,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
 				  pipe_config->pipe_src_w);
 
 		*border = LVDS_BORDER_ENABLE;
-		if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
+		if (pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
 			bits = panel_fitter_scaling(pipe_config->pipe_src_w,
-						    adjusted_mode->hdisplay);
+						    adjusted_mode->crtc_hdisplay);
 
 			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
 					     bits << PFIT_VERT_SCALE_SHIFT);
@@ -315,8 +315,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
 	adjusted_mode = &pipe_config->base.adjusted_mode;
 
 	/* Native modes don't need fitting */
-	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
-	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
+	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
+	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
 		goto out;
 
 	switch (fitting_mode) {
@@ -342,8 +342,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
 		 * Full scaling, even if it changes the aspect ratio.
 		 * Fortunately this is all done for us in hw.
 		 */
-		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay ||
-		    pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
+		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay ||
+		    pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
 			pfit_control |= PFIT_ENABLE;
 			if (INTEL_INFO(dev)->gen >= 4)
 				pfit_control |= PFIT_SCALING_AUTO;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index ab75b61..9df6bbd 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -605,9 +605,9 @@ log_fail:
 
 static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
 {
-	if (adjusted_mode->clock >= 100000)
+	if (adjusted_mode->crtc_clock >= 100000)
 		return 1;
-	else if (adjusted_mode->clock >= 50000)
+	else if (adjusted_mode->crtc_clock >= 50000)
 		return 2;
 	else
 		return 4;
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 7/7] drm/i915: Add HDMI aspect ratio property for SDVO
  2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ratio " ville.syrjala
@ 2015-09-25 13:39   ` ville.syrjala
  2015-09-28 12:18     ` Mika Kahola
  0 siblings, 1 reply; 26+ messages in thread
From: ville.syrjala @ 2015-09-25 13:39 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Handle the HDMI aspect ratio property the same way in the SDVO code
as we handle it in the HDMI code.

v2: Remove stray whitespace change

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h   |  1 +
 drivers/gpu/drm/i915/intel_hdmi.c  |  9 ---------
 drivers/gpu/drm/i915/intel_modes.c |  9 +++++++++
 drivers/gpu/drm/i915/intel_sdvo.c  | 28 ++++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index c98ed81..ed66a4f 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1300,6 +1300,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
 int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
 void intel_attach_force_audio_property(struct drm_connector *connector);
 void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
+void intel_attach_aspect_ratio_property(struct drm_connector *connector);
 
 
 /* intel_overlay.c */
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index af231ed..3c5f2c9 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -2004,15 +2004,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
 };
 
 static void
-intel_attach_aspect_ratio_property(struct drm_connector *connector)
-{
-	if (!drm_mode_create_aspect_ratio_property(connector->dev))
-		drm_object_attach_property(&connector->base,
-			connector->dev->mode_config.aspect_ratio_property,
-			DRM_MODE_PICTURE_ASPECT_NONE);
-}
-
-static void
 intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
 {
 	intel_attach_force_audio_property(connector);
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index 0e860f3..38a4c8c 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
 
 	drm_object_attach_property(&connector->base, prop, 0);
 }
+
+void
+intel_attach_aspect_ratio_property(struct drm_connector *connector)
+{
+	if (!drm_mode_create_aspect_ratio_property(connector->dev))
+		drm_object_attach_property(&connector->base,
+			connector->dev->mode_config.aspect_ratio_property,
+			DRM_MODE_PICTURE_ASPECT_NONE);
+}
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 857b1bd..c42b636 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -107,6 +107,11 @@ struct intel_sdvo {
 	bool color_range_auto;
 
 	/**
+	 * HDMI user specified aspect ratio
+	 */
+	enum hdmi_picture_aspect aspect_ratio;
+
+	/**
 	 * This is set if we're going to treat the device as TV-out.
 	 *
 	 * While we have these nice friendly flags for output types that ought
@@ -1181,6 +1186,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
 	if (intel_sdvo->is_tv)
 		i9xx_adjust_sdvo_tv_clock(pipe_config);
 
+	/* Set user selected PAR to incoming mode's member */
+	if (intel_sdvo->is_hdmi)
+		adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
+
 	return true;
 }
 
@@ -2043,6 +2052,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
 		goto done;
 	}
 
+	if (property == connector->dev->mode_config.aspect_ratio_property) {
+		switch (val) {
+		case DRM_MODE_PICTURE_ASPECT_NONE:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_4_3:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
+			break;
+		case DRM_MODE_PICTURE_ASPECT_16_9:
+			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
+			break;
+		default:
+			return -EINVAL;
+		}
+		goto done;
+	}
+
 #define CHECK_PROPERTY(name, NAME) \
 	if (intel_sdvo_connector->name == property) { \
 		if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
@@ -2382,6 +2408,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
 		intel_attach_broadcast_rgb_property(&connector->base.base);
 		intel_sdvo->color_range_auto = true;
 	}
+	intel_attach_aspect_ratio_property(&connector->base.base);
+	intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
 }
 
 static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
-- 
2.4.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode'
  2015-09-08 10:40 ` [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode' ville.syrjala
  2015-09-24  8:01   ` Mika Kahola
@ 2015-09-28  8:03   ` Daniel Vetter
  1 sibling, 0 replies; 26+ messages in thread
From: Daniel Vetter @ 2015-09-28  8:03 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

On Tue, Sep 08, 2015 at 01:40:45PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Always name any variable pointing at the adjusted mode as
> 'adjustead_mode'. This will make it much easier to identify
> when we should use the crtc_ timings and when we shoudln't.
> 
> Conversion was performed with coccinelle:
> @@
> expression E;
> identifier I;
> @@
> - struct drm_display_mode *I = &E.adjusted_mode;
> + struct drm_display_mode *adjusted_mode = &E.adjusted_mode;
> <...
> - I
> + adjusted_mode
> ...>
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_audio.c   |  7 ++++---
>  drivers/gpu/drm/i915/intel_display.c | 12 +++++-------
>  drivers/gpu/drm/i915/intel_dsi.c     | 13 ++++++-------
>  drivers/gpu/drm/i915/intel_hdmi.c    |  9 +++------
>  drivers/gpu/drm/i915/intel_lvds.c    |  3 +--
>  drivers/gpu/drm/i915/intel_pm.c      | 14 ++++++--------
>  drivers/gpu/drm/i915/intel_sdvo.c    |  3 +--
>  drivers/gpu/drm/i915/intel_sprite.c  |  8 ++++----
>  8 files changed, 30 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index f73de0b..cf4f5d1 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -396,7 +396,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  {
>  	struct drm_encoder *encoder = &intel_encoder->base;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
> -	struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_connector *connector;
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;

I have a drm_select_eld call here in between which also uses mode and it's
not new. I fixed it up, but why is this not showing up in the
cocci-generated patch? And why did it compile on your end?
-Daniel

> @@ -419,10 +419,11 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
>  	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		connector->eld[5] |= (1 << 2);
>  
> -	connector->eld[6] = drm_av_sync_delay(connector, mode) / 2;
> +	connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
>  
>  	if (dev_priv->display.audio_codec_enable)
> -		dev_priv->display.audio_codec_enable(connector, intel_encoder, mode);
> +		dev_priv->display.audio_codec_enable(connector, intel_encoder,
> +						     adjusted_mode);
>  
>  	if (acomp && acomp->audio_ops && acomp->audio_ops->pin_eld_notify)
>  		acomp->audio_ops->pin_eld_notify(acomp->audio_ops->audio_ptr, (int) port);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index e629a1b..b8b7540 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4348,8 +4348,7 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
>  int skl_update_scaler_crtc(struct intel_crtc_state *state)
>  {
>  	struct intel_crtc *intel_crtc = to_intel_crtc(state->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&state->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &state->base.adjusted_mode;
>  
>  	DRM_DEBUG_KMS("Updating scaler for [CRTC:%i] scaler_user index %u.%u\n",
>  		      intel_crtc->base.base.id, intel_crtc->pipe, SKL_CRTC_INDEX);
> @@ -7575,8 +7574,7 @@ static void intel_set_pipe_timings(struct intel_crtc *intel_crtc)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	enum pipe pipe = intel_crtc->pipe;
>  	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	uint32_t crtc_vtotal, crtc_vblank_end;
>  	int vsyncshift = 0;
>  
> @@ -12767,11 +12765,11 @@ static void update_scanline_offset(struct intel_crtc *crtc)
>  	 * one to the value.
>  	 */
>  	if (IS_GEN2(dev)) {
> -		const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  		int vtotal;
>  
> -		vtotal = mode->crtc_vtotal;
> -		if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		vtotal = adjusted_mode->crtc_vtotal;
> +		if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
>  			vtotal /= 2;
>  
>  		crtc->scanline_offset = vtotal - 1;
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 781c267..0c26ba5 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -759,8 +759,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
>  	struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum port port;
>  	unsigned int bpp = intel_crtc->config->pipe_bpp;
>  	u32 val, tmp;
> @@ -842,14 +841,14 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
>  				txbyteclkhs(adjusted_mode->htotal, bpp,
> -					intel_dsi->lane_count,
> -					intel_dsi->burst_mode_ratio) + 1);
> +					    intel_dsi->lane_count,
> +					    intel_dsi->burst_mode_ratio) + 1);
>  		} else {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
>  				txbyteclkhs(adjusted_mode->vtotal *
> -					adjusted_mode->htotal,
> -					bpp, intel_dsi->lane_count,
> -					intel_dsi->burst_mode_ratio) + 1);
> +					    adjusted_mode->htotal,
> +					    bpp, intel_dsi->lane_count,
> +					    intel_dsi->burst_mode_ratio) + 1);
>  		}
>  		I915_WRITE(MIPI_LP_RX_TIMEOUT(port), intel_dsi->lp_rx_timeout);
>  		I915_WRITE(MIPI_TURN_AROUND_TIMEOUT(port),
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index feb31d8..0b256c9 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1523,8 +1523,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
>  {
>  	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  
>  	intel_hdmi_prepare(encoder);
>  
> @@ -1541,8 +1540,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel port = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	u32 val;
> @@ -1808,8 +1806,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc =
>  		to_intel_crtc(encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	enum dpio_channel ch = vlv_dport_to_channel(dport);
>  	int pipe = intel_crtc->pipe;
>  	int data, i, stagger;
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index 2c2d1f0..5e70acf 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -139,8 +139,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
>  	struct drm_device *dev = encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> -	const struct drm_display_mode *adjusted_mode =
> -		&crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	int pipe = crtc->pipe;
>  	u32 temp;
>  
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 64bc77e..7aa9a4e 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -1500,8 +1500,7 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
>  	if (crtc) {
>  		/* self-refresh has much higher latency */
>  		static const int sr_latency_ns = 12000;
> -		const struct drm_display_mode *adjusted_mode =
> -			&to_intel_crtc(crtc)->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
>  		int clock = adjusted_mode->crtc_clock;
>  		int htotal = adjusted_mode->crtc_htotal;
>  		int hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
> @@ -1648,8 +1647,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
>  	if (HAS_FW_BLC(dev) && enabled) {
>  		/* self-refresh has much higher latency */
>  		static const int sr_latency_ns = 6000;
> -		const struct drm_display_mode *adjusted_mode =
> -			&to_intel_crtc(enabled)->config->base.adjusted_mode;
> +		const struct drm_display_mode *adjusted_mode = &to_intel_crtc(enabled)->config->base.adjusted_mode;
>  		int clock = adjusted_mode->crtc_clock;
>  		int htotal = adjusted_mode->crtc_htotal;
>  		int hdisplay = to_intel_crtc(enabled)->config->pipe_src_w;
> @@ -2086,7 +2084,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> -	struct drm_display_mode *mode = &intel_crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode;
>  	u32 linetime, ips_linetime;
>  
>  	if (!intel_crtc->active)
> @@ -2095,9 +2093,9 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
>  	/* The WM are computed with base on how long it takes to fill a single
>  	 * row at the given clock rate, multiplied by 8.
>  	 * */
> -	linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> -				     mode->crtc_clock);
> -	ips_linetime = DIV_ROUND_CLOSEST(mode->crtc_htotal * 1000 * 8,
> +	linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
> +				     adjusted_mode->crtc_clock);
> +	ips_linetime = DIV_ROUND_CLOSEST(adjusted_mode->crtc_htotal * 1000 * 8,
>  					 dev_priv->cdclk_freq);
>  
>  	return PIPE_WM_LINETIME_IPS_LINETIME(ips_linetime) |
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index ca3dd7c..3a70c2f 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1189,8 +1189,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
>  	struct drm_device *dev = intel_encoder->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
> -	struct drm_display_mode *adjusted_mode =
> -		&crtc->config->base.adjusted_mode;
> +	struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	struct drm_display_mode *mode = &crtc->config->base.mode;
>  	struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
>  	u32 sdvox;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index ca7e264..a5e599b 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -79,19 +79,19 @@ static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
>  void intel_pipe_update_start(struct intel_crtc *crtc)
>  {
>  	struct drm_device *dev = crtc->base.dev;
> -	const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
> +	const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
>  	enum pipe pipe = crtc->pipe;
>  	long timeout = msecs_to_jiffies_timeout(1);
>  	int scanline, min, max, vblank_start;
>  	wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
>  	DEFINE_WAIT(wait);
>  
> -	vblank_start = mode->crtc_vblank_start;
> -	if (mode->flags & DRM_MODE_FLAG_INTERLACE)
> +	vblank_start = adjusted_mode->crtc_vblank_start;
> +	if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
>  		vblank_start = DIV_ROUND_UP(vblank_start, 2);
>  
>  	/* FIXME needs to be calibrated sensibly */
> -	min = vblank_start - usecs_to_scanlines(mode, 100);
> +	min = vblank_start - usecs_to_scanlines(adjusted_mode, 100);
>  	max = vblank_start - 1;
>  
>  	local_irq_disable();
> -- 
> 2.4.6
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode
  2015-09-25 13:37   ` [PATCH v2 " ville.syrjala
@ 2015-09-28 12:15     ` Mika Kahola
  0 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-28 12:15 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Fri, 2015-09-25 at 16:37 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Rename the function argument to 'adjusted_mode' whenever the function
> only ever gets passed the adjusted_mode.
> 
> v2: Update due to intel_dsi.c changes
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h     |  2 +-
>  drivers/gpu/drm/i915/intel_audio.c  | 17 +++++++++--------
>  drivers/gpu/drm/i915/intel_dsi.c    | 22 +++++++++++-----------
>  drivers/gpu/drm/i915/intel_panel.c  | 36 ++++++++++++++++++------------------
>  drivers/gpu/drm/i915/intel_sdvo.c   |  6 +++---
>  drivers/gpu/drm/i915/intel_sprite.c |  8 +++++---
>  6 files changed, 47 insertions(+), 44 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 2b5d587..d1e800a 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -646,7 +646,7 @@ struct drm_i915_display_funcs {
>  	void (*crtc_disable)(struct drm_crtc *crtc);
>  	void (*audio_codec_enable)(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode);
> +				   const struct drm_display_mode *adjusted_mode);
>  	void (*audio_codec_disable)(struct intel_encoder *encoder);
>  	void (*fdi_link_train)(struct drm_crtc *crtc);
>  	void (*init_clock_gating)(struct drm_device *dev);
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index d9876c5..779f90c 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -69,17 +69,18 @@ static const struct {
>  };
>  
>  /* get AUD_CONFIG_PIXEL_CLOCK_HDMI_* value for mode */
> -static u32 audio_config_hdmi_pixel_clock(struct drm_display_mode *mode)
> +static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted_mode)
>  {
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> -		if (mode->clock == hdmi_audio_clock[i].clock)
> +		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
>  			break;
>  	}
>  
>  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
> -		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n", mode->clock);
> +		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> +			      adjusted_mode->clock);
>  		i = 1;
>  	}
>  
> @@ -138,7 +139,7 @@ static void g4x_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void g4x_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	uint8_t *eld = connector->eld;
> @@ -203,7 +204,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void hsw_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -251,7 +252,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(HSW_AUD_CFG(pipe), tmp);
>  }
>  
> @@ -304,7 +305,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
>  
>  static void ilk_audio_codec_enable(struct drm_connector *connector,
>  				   struct intel_encoder *encoder,
> -				   struct drm_display_mode *mode)
> +				   const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_i915_private *dev_priv = connector->dev->dev_private;
>  	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> @@ -381,7 +382,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
>  	if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT))
>  		tmp |= AUD_CONFIG_N_VALUE_INDEX;
>  	else
> -		tmp |= audio_config_hdmi_pixel_clock(mode);
> +		tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
>  	I915_WRITE(aud_config, tmp);
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 23b7fc5..b4d5213 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -698,7 +698,7 @@ static u16 txbyteclkhs(u16 pixels, int bpp, int lane_count,
>  }
>  
>  static void set_dsi_timings(struct drm_encoder *encoder,
> -			    const struct drm_display_mode *mode)
> +			    const struct drm_display_mode *adjusted_mode)
>  {
>  	struct drm_device *dev = encoder->dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
> @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  
>  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
>  
> -	hactive = mode->hdisplay;
> -	hfp = mode->hsync_start - mode->hdisplay;
> -	hsync = mode->hsync_end - mode->hsync_start;
> -	hbp = mode->htotal - mode->hsync_end;
> +	hactive = adjusted_mode->hdisplay;
> +	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> +	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> +	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
>  
>  	if (intel_dsi->dual_link) {
>  		hactive /= 2;
> @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  		hbp /= 2;
>  	}
>  
> -	vfp = mode->vsync_start - mode->vdisplay;
> -	vsync = mode->vsync_end - mode->vsync_start;
> -	vbp = mode->vtotal - mode->vsync_end;
> +	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> +	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> +	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
>  
>  	/* horizontal values are in terms of high speed byte clock */
>  	hactive = txbyteclkhs(hactive, bpp, lane_count,
> @@ -745,11 +745,11 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  			 * whereas these values should be based on resolution.
>  			 */
>  			I915_WRITE(BXT_MIPI_TRANS_HACTIVE(port),
> -					mode->hdisplay);
> +				   adjusted_mode->hdisplay);
>  			I915_WRITE(BXT_MIPI_TRANS_VACTIVE(port),
> -					mode->vdisplay);
> +				   adjusted_mode->vdisplay);
>  			I915_WRITE(BXT_MIPI_TRANS_VTOTAL(port),
> -					mode->vtotal);
> +				   adjusted_mode->vtotal);
>  		}
>  
>  		I915_WRITE(MIPI_HACTIVE_AREA_COUNT(port), hactive);
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 2c11b4e..4294f605 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -172,46 +172,46 @@ done:
>  }
>  
>  static void
> -centre_horizontally(struct drm_display_mode *mode,
> +centre_horizontally(struct drm_display_mode *adjusted_mode,
>  		    int width)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the hsync and hblank widths constant */
> -	sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start;
> -	blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start;
> +	sync_width = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> +	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->hdisplay - width + 1) / 2;
> +	border = (adjusted_mode->hdisplay - width + 1) / 2;
>  	border += border & 1; /* make the border even */
>  
> -	mode->crtc_hdisplay = width;
> -	mode->crtc_hblank_start = width + border;
> -	mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width;
> +	adjusted_mode->crtc_hdisplay = width;
> +	adjusted_mode->crtc_hblank_start = width + border;
> +	adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_hblank_start + blank_width;
>  
> -	mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos;
> -	mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width;
> +	adjusted_mode->crtc_hsync_start = adjusted_mode->crtc_hblank_start + sync_pos;
> +	adjusted_mode->crtc_hsync_end = adjusted_mode->crtc_hsync_start + sync_width;
>  }
>  
>  static void
> -centre_vertically(struct drm_display_mode *mode,
> +centre_vertically(struct drm_display_mode *adjusted_mode,
>  		  int height)
>  {
>  	u32 border, sync_pos, blank_width, sync_width;
>  
>  	/* keep the vsync and vblank widths constant */
> -	sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start;
> -	blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start;
> +	sync_width = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> +	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (mode->vdisplay - height + 1) / 2;
> +	border = (adjusted_mode->vdisplay - height + 1) / 2;
>  
> -	mode->crtc_vdisplay = height;
> -	mode->crtc_vblank_start = height + border;
> -	mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width;
> +	adjusted_mode->crtc_vdisplay = height;
> +	adjusted_mode->crtc_vblank_start = height + border;
> +	adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vblank_start + blank_width;
>  
> -	mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos;
> -	mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width;
> +	adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vblank_start + sync_pos;
> +	adjusted_mode->crtc_vsync_end = adjusted_mode->crtc_vsync_start + sync_width;
>  }
>  
>  static inline u32 panel_fitter_scaling(u32 source, u32 target)
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index b0b96fd..ab75b61 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -603,11 +603,11 @@ log_fail:
>  	return false;
>  }
>  
> -static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode)
> +static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
>  {
> -	if (mode->clock >= 100000)
> +	if (adjusted_mode->clock >= 100000)
>  		return 1;
> -	else if (mode->clock >= 50000)
> +	else if (adjusted_mode->clock >= 50000)
>  		return 2;
>  	else
>  		return 4;
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 8218040..b229c67 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -53,13 +53,15 @@ format_is_yuv(uint32_t format)
>  	}
>  }
>  
> -static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
> +static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
> +			      int usecs)
>  {
>  	/* paranoia */
> -	if (!mode->crtc_htotal)
> +	if (!adjusted_mode->crtc_htotal)
>  		return 1;
>  
> -	return DIV_ROUND_UP(usecs * mode->crtc_clock, 1000 * mode->crtc_htotal);
> +	return DIV_ROUND_UP(usecs * adjusted_mode->crtc_clock,
> +			    1000 * adjusted_mode->crtc_htotal);
>  }
>  
>  /**


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode
  2015-09-25 13:38   ` [PATCH v2 " ville.syrjala
@ 2015-09-28 12:15     ` Mika Kahola
  0 siblings, 0 replies; 26+ messages in thread
From: Mika Kahola @ 2015-09-28 12:15 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Fri, 2015-09-25 at 16:38 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> The adjustead_mode crtc_ timings are what we will program into the hardware,
> so it's those timings we should be looking practically everywhere.
> 
> The normal and crtc_ timings should differ only when stere doubling is
> used. In that case the normal timings are the orignal non-doubled
> timigns, and crtc_ timings are the doubled timings used by the hardware.
> 
> The only case where we continue to look at the normal timings is when we
> pass the adjusted_mode to drm_match_{cea,hdmi}_mode() to find the VIC.
> drm_edid keeps the modes aronund in the non-double form only, so it
> needs the non-double timings to match against.
> 
> Done with sed
> 's/adjusted_mode->\([vhVH]\)/adjusted_mode->crtc_\1/g'
> 's/adjusted_mode->clock/adjusted_mode->crtc_clock/g'
> with a manual s/VDisplay/vdisplay/ within the comment in intel_dvo.c
> 
> v2: Update due to intel_dsi.c changes
> 
> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/dvo_ivch.c      |  8 ++---
>  drivers/gpu/drm/i915/intel_audio.c   |  4 +--
>  drivers/gpu/drm/i915/intel_display.c |  4 +--
>  drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
>  drivers/gpu/drm/i915/intel_dsi.c     | 30 +++++++++----------
>  drivers/gpu/drm/i915/intel_dvo.c     |  8 ++---
>  drivers/gpu/drm/i915/intel_panel.c   | 58 ++++++++++++++++++------------------
>  drivers/gpu/drm/i915/intel_sdvo.c    |  4 +--
>  8 files changed, 59 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/dvo_ivch.c b/drivers/gpu/drm/i915/dvo_ivch.c
> index 732ce87..e082f75 100644
> --- a/drivers/gpu/drm/i915/dvo_ivch.c
> +++ b/drivers/gpu/drm/i915/dvo_ivch.c
> @@ -414,16 +414,16 @@ static void ivch_mode_set(struct intel_dvo_device *dvo,
>  	vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE |
>  		VR40_HORIZONTAL_INTERP_ENABLE);
>  
> -	if (mode->hdisplay != adjusted_mode->hdisplay ||
> -	    mode->vdisplay != adjusted_mode->vdisplay) {
> +	if (mode->hdisplay != adjusted_mode->crtc_hdisplay ||
> +	    mode->vdisplay != adjusted_mode->crtc_vdisplay) {
>  		uint16_t x_ratio, y_ratio;
>  
>  		vr01 |= VR01_PANEL_FIT_ENABLE;
>  		vr40 |= VR40_CLOCK_GATING_ENABLE;
>  		x_ratio = (((mode->hdisplay - 1) << 16) /
> -			   (adjusted_mode->hdisplay - 1)) >> 2;
> +			   (adjusted_mode->crtc_hdisplay - 1)) >> 2;
>  		y_ratio = (((mode->vdisplay - 1) << 16) /
> -			   (adjusted_mode->vdisplay - 1)) >> 2;
> +			   (adjusted_mode->crtc_vdisplay - 1)) >> 2;
>  		ivch_write(dvo, VR42, x_ratio);
>  		ivch_write(dvo, VR41, y_ratio);
>  	} else {
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 779f90c..e4c30e8 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -74,13 +74,13 @@ static u32 audio_config_hdmi_pixel_clock(const struct drm_display_mode *adjusted
>  	int i;
>  
>  	for (i = 0; i < ARRAY_SIZE(hdmi_audio_clock); i++) {
> -		if (adjusted_mode->clock == hdmi_audio_clock[i].clock)
> +		if (adjusted_mode->crtc_clock == hdmi_audio_clock[i].clock)
>  			break;
>  	}
>  
>  	if (i == ARRAY_SIZE(hdmi_audio_clock)) {
>  		DRM_DEBUG_KMS("HDMI audio pixel clock setting for %d not found, falling back to defaults\n",
> -			      adjusted_mode->clock);
> +			      adjusted_mode->crtc_clock);
>  		i = 1;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index f8605b9..91f88e9 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4400,7 +4400,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *state)
>  	return skl_update_scaler(state, !state->base.active, SKL_CRTC_INDEX,
>  		&state->scaler_state.scaler_id, DRM_ROTATE_0,
>  		state->pipe_src_w, state->pipe_src_h,
> -		adjusted_mode->hdisplay, adjusted_mode->vdisplay);
> +		adjusted_mode->crtc_hdisplay, adjusted_mode->crtc_vdisplay);
>  }
>  
>  /**
> @@ -6587,7 +6587,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  	 * WaPruneModeWithIncorrectHsyncOffset:ctg,elk,ilk,snb,ivb,vlv,hsw.
>  	 */
>  	if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) &&
> -		adjusted_mode->hsync_start == adjusted_mode->hdisplay)
> +		adjusted_mode->crtc_hsync_start == adjusted_mode->crtc_hdisplay)
>  		return -EINVAL;
>  
>  	if (HAS_IPS(dev))
> diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
> index ff8ba55..cccf014 100644
> --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> @@ -78,7 +78,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
>  		return false;
>  	}
>  
> -	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->clock, bpp);
> +	mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp);
>  
>  	pipe_config->pbn = mst_pbn;
>  	slots = drm_dp_find_vcpi_slots(&intel_dp->mst_mgr, mst_pbn);
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index b4d5213..4fb97c0 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -710,10 +710,10 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  
>  	u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
>  
> -	hactive = adjusted_mode->hdisplay;
> -	hfp = adjusted_mode->hsync_start - adjusted_mode->hdisplay;
> -	hsync = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> -	hbp = adjusted_mode->htotal - adjusted_mode->hsync_end;
> +	hactive = adjusted_mode->crtc_hdisplay;
> +	hfp = adjusted_mode->crtc_hsync_start - adjusted_mode->crtc_hdisplay;
> +	hsync = adjusted_mode->crtc_hsync_end - adjusted_mode->crtc_hsync_start;
> +	hbp = adjusted_mode->crtc_htotal - adjusted_mode->crtc_hsync_end;
>  
>  	if (intel_dsi->dual_link) {
>  		hactive /= 2;
> @@ -724,9 +724,9 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  		hbp /= 2;
>  	}
>  
> -	vfp = adjusted_mode->vsync_start - adjusted_mode->vdisplay;
> -	vsync = adjusted_mode->vsync_end - adjusted_mode->vsync_start;
> -	vbp = adjusted_mode->vtotal - adjusted_mode->vsync_end;
> +	vfp = adjusted_mode->crtc_vsync_start - adjusted_mode->crtc_vdisplay;
> +	vsync = adjusted_mode->crtc_vsync_end - adjusted_mode->crtc_vsync_start;
> +	vbp = adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vsync_end;
>  
>  	/* horizontal values are in terms of high speed byte clock */
>  	hactive = txbyteclkhs(hactive, bpp, lane_count,
> @@ -745,11 +745,11 @@ static void set_dsi_timings(struct drm_encoder *encoder,
>  			 * whereas these values should be based on resolution.
>  			 */
>  			I915_WRITE(BXT_MIPI_TRANS_HACTIVE(port),
> -				   adjusted_mode->hdisplay);
> +				   adjusted_mode->crtc_hdisplay);
>  			I915_WRITE(BXT_MIPI_TRANS_VACTIVE(port),
> -				   adjusted_mode->vdisplay);
> +				   adjusted_mode->crtc_vdisplay);
>  			I915_WRITE(BXT_MIPI_TRANS_VTOTAL(port),
> -				   adjusted_mode->vtotal);
> +				   adjusted_mode->crtc_vtotal);
>  		}
>  
>  		I915_WRITE(MIPI_HACTIVE_AREA_COUNT(port), hactive);
> @@ -782,7 +782,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  
>  	DRM_DEBUG_KMS("pipe %c\n", pipe_name(intel_crtc->pipe));
>  
> -	mode_hdisplay = adjusted_mode->hdisplay;
> +	mode_hdisplay = adjusted_mode->crtc_hdisplay;
>  
>  	if (intel_dsi->dual_link) {
>  		mode_hdisplay /= 2;
> @@ -832,7 +832,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  		I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg);
>  
>  		I915_WRITE(MIPI_DPI_RESOLUTION(port),
> -			adjusted_mode->vdisplay << VERTICAL_ADDRESS_SHIFT |
> +			adjusted_mode->crtc_vdisplay << VERTICAL_ADDRESS_SHIFT |
>  			mode_hdisplay << HORIZONTAL_ADDRESS_SHIFT);
>  	}
>  
> @@ -878,13 +878,13 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
>  		if (is_vid_mode(intel_dsi) &&
>  			intel_dsi->video_mode_format == VIDEO_MODE_BURST) {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
> -				txbyteclkhs(adjusted_mode->htotal, bpp,
> +				txbyteclkhs(adjusted_mode->crtc_htotal, bpp,
>  					    intel_dsi->lane_count,
>  					    intel_dsi->burst_mode_ratio) + 1);
>  		} else {
>  			I915_WRITE(MIPI_HS_TX_TIMEOUT(port),
> -				txbyteclkhs(adjusted_mode->vtotal *
> -					    adjusted_mode->htotal,
> +				txbyteclkhs(adjusted_mode->crtc_vtotal *
> +					    adjusted_mode->crtc_htotal,
>  					    bpp, intel_dsi->lane_count,
>  					    intel_dsi->burst_mode_ratio) + 1);
>  		}
> diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
> index 0bc8aa8..555afbc 100644
> --- a/drivers/gpu/drm/i915/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/intel_dvo.c
> @@ -285,11 +285,11 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
>  		dvo_val |= DVO_VSYNC_ACTIVE_HIGH;
>  
>  	/*I915_WRITE(DVOB_SRCDIM,
> -	  (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> -	  (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
> +	  (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> +	  (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/
>  	I915_WRITE(dvo_srcdim_reg,
> -		   (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> -		   (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
> +		   (adjusted_mode->crtc_hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) |
> +		   (adjusted_mode->crtc_vdisplay << DVO_SRCDIM_VERTICAL_SHIFT));
>  	/*I915_WRITE(DVOB, dvo_val);*/
>  	I915_WRITE(dvo_reg, dvo_val);
>  }
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 4294f605..2806049 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -113,51 +113,51 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
>  	x = y = width = height = 0;
>  
>  	/* Native modes don't need fitting */
> -	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
> -	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
> +	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> +	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
>  		goto done;
>  
>  	switch (fitting_mode) {
>  	case DRM_MODE_SCALE_CENTER:
>  		width = pipe_config->pipe_src_w;
>  		height = pipe_config->pipe_src_h;
> -		x = (adjusted_mode->hdisplay - width + 1)/2;
> -		y = (adjusted_mode->vdisplay - height + 1)/2;
> +		x = (adjusted_mode->crtc_hdisplay - width + 1)/2;
> +		y = (adjusted_mode->crtc_vdisplay - height + 1)/2;
>  		break;
>  
>  	case DRM_MODE_SCALE_ASPECT:
>  		/* Scale but preserve the aspect ratio */
>  		{
> -			u32 scaled_width = adjusted_mode->hdisplay
> +			u32 scaled_width = adjusted_mode->crtc_hdisplay
>  				* pipe_config->pipe_src_h;
>  			u32 scaled_height = pipe_config->pipe_src_w
> -				* adjusted_mode->vdisplay;
> +				* adjusted_mode->crtc_vdisplay;
>  			if (scaled_width > scaled_height) { /* pillar */
>  				width = scaled_height / pipe_config->pipe_src_h;
>  				if (width & 1)
>  					width++;
> -				x = (adjusted_mode->hdisplay - width + 1) / 2;
> +				x = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
>  				y = 0;
> -				height = adjusted_mode->vdisplay;
> +				height = adjusted_mode->crtc_vdisplay;
>  			} else if (scaled_width < scaled_height) { /* letter */
>  				height = scaled_width / pipe_config->pipe_src_w;
>  				if (height & 1)
>  				    height++;
> -				y = (adjusted_mode->vdisplay - height + 1) / 2;
> +				y = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
>  				x = 0;
> -				width = adjusted_mode->hdisplay;
> +				width = adjusted_mode->crtc_hdisplay;
>  			} else {
>  				x = y = 0;
> -				width = adjusted_mode->hdisplay;
> -				height = adjusted_mode->vdisplay;
> +				width = adjusted_mode->crtc_hdisplay;
> +				height = adjusted_mode->crtc_vdisplay;
>  			}
>  		}
>  		break;
>  
>  	case DRM_MODE_SCALE_FULLSCREEN:
>  		x = y = 0;
> -		width = adjusted_mode->hdisplay;
> -		height = adjusted_mode->vdisplay;
> +		width = adjusted_mode->crtc_hdisplay;
> +		height = adjusted_mode->crtc_vdisplay;
>  		break;
>  
>  	default:
> @@ -182,7 +182,7 @@ centre_horizontally(struct drm_display_mode *adjusted_mode,
>  	blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (adjusted_mode->hdisplay - width + 1) / 2;
> +	border = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
>  	border += border & 1; /* make the border even */
>  
>  	adjusted_mode->crtc_hdisplay = width;
> @@ -204,7 +204,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
>  	blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
>  	sync_pos = (blank_width - sync_width + 1) / 2;
>  
> -	border = (adjusted_mode->vdisplay - height + 1) / 2;
> +	border = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
>  
>  	adjusted_mode->crtc_vdisplay = height;
>  	adjusted_mode->crtc_vblank_start = height + border;
> @@ -231,10 +231,10 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
>  			      u32 *pfit_control)
>  {
>  	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> -	u32 scaled_width = adjusted_mode->hdisplay *
> +	u32 scaled_width = adjusted_mode->crtc_hdisplay *
>  		pipe_config->pipe_src_h;
>  	u32 scaled_height = pipe_config->pipe_src_w *
> -		adjusted_mode->vdisplay;
> +		adjusted_mode->crtc_vdisplay;
>  
>  	/* 965+ is easy, it does everything in hw */
>  	if (scaled_width > scaled_height)
> @@ -243,7 +243,7 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
>  	else if (scaled_width < scaled_height)
>  		*pfit_control |= PFIT_ENABLE |
>  			PFIT_SCALING_LETTER;
> -	else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
> +	else if (adjusted_mode->crtc_hdisplay != pipe_config->pipe_src_w)
>  		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
>  }
>  
> @@ -252,10 +252,10 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  			      u32 *border)
>  {
>  	struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> -	u32 scaled_width = adjusted_mode->hdisplay *
> +	u32 scaled_width = adjusted_mode->crtc_hdisplay *
>  		pipe_config->pipe_src_h;
>  	u32 scaled_height = pipe_config->pipe_src_w *
> -		adjusted_mode->vdisplay;
> +		adjusted_mode->crtc_vdisplay;
>  	u32 bits;
>  
>  	/*
> @@ -269,9 +269,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  				    pipe_config->pipe_src_h);
>  
>  		*border = LVDS_BORDER_ENABLE;
> -		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
> +		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay) {
>  			bits = panel_fitter_scaling(pipe_config->pipe_src_h,
> -						    adjusted_mode->vdisplay);
> +						    adjusted_mode->crtc_vdisplay);
>  
>  			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
>  					     bits << PFIT_VERT_SCALE_SHIFT);
> @@ -285,9 +285,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
>  				  pipe_config->pipe_src_w);
>  
>  		*border = LVDS_BORDER_ENABLE;
> -		if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> +		if (pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
>  			bits = panel_fitter_scaling(pipe_config->pipe_src_w,
> -						    adjusted_mode->hdisplay);
> +						    adjusted_mode->crtc_hdisplay);
>  
>  			*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
>  					     bits << PFIT_VERT_SCALE_SHIFT);
> @@ -315,8 +315,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
>  	adjusted_mode = &pipe_config->base.adjusted_mode;
>  
>  	/* Native modes don't need fitting */
> -	if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
> -	    adjusted_mode->vdisplay == pipe_config->pipe_src_h)
> +	if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
> +	    adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
>  		goto out;
>  
>  	switch (fitting_mode) {
> @@ -342,8 +342,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
>  		 * Full scaling, even if it changes the aspect ratio.
>  		 * Fortunately this is all done for us in hw.
>  		 */
> -		if (pipe_config->pipe_src_h != adjusted_mode->vdisplay ||
> -		    pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> +		if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay ||
> +		    pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
>  			pfit_control |= PFIT_ENABLE;
>  			if (INTEL_INFO(dev)->gen >= 4)
>  				pfit_control |= PFIT_SCALING_AUTO;
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index ab75b61..9df6bbd 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -605,9 +605,9 @@ log_fail:
>  
>  static int intel_sdvo_get_pixel_multiplier(const struct drm_display_mode *adjusted_mode)
>  {
> -	if (adjusted_mode->clock >= 100000)
> +	if (adjusted_mode->crtc_clock >= 100000)
>  		return 1;
> -	else if (adjusted_mode->clock >= 50000)
> +	else if (adjusted_mode->crtc_clock >= 50000)
>  		return 2;
>  	else
>  		return 4;


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 7/7] drm/i915: Add HDMI aspect ratio property for SDVO
  2015-09-25 13:39   ` [PATCH v2 " ville.syrjala
@ 2015-09-28 12:18     ` Mika Kahola
  2015-09-28 13:27       ` Daniel Vetter
  0 siblings, 1 reply; 26+ messages in thread
From: Mika Kahola @ 2015-09-28 12:18 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

On Fri, 2015-09-25 at 16:39 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Handle the HDMI aspect ratio property the same way in the SDVO code
> as we handle it in the HDMI code.
> 
> v2: Remove stray whitespace change
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_drv.h   |  1 +
>  drivers/gpu/drm/i915/intel_hdmi.c  |  9 ---------
>  drivers/gpu/drm/i915/intel_modes.c |  9 +++++++++
>  drivers/gpu/drm/i915/intel_sdvo.c  | 28 ++++++++++++++++++++++++++++
>  4 files changed, 38 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index c98ed81..ed66a4f 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1300,6 +1300,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
>  int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
>  void intel_attach_force_audio_property(struct drm_connector *connector);
>  void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
> +void intel_attach_aspect_ratio_property(struct drm_connector *connector);
>  
> 
>  /* intel_overlay.c */
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index af231ed..3c5f2c9 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -2004,15 +2004,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
>  };
>  
>  static void
> -intel_attach_aspect_ratio_property(struct drm_connector *connector)
> -{
> -	if (!drm_mode_create_aspect_ratio_property(connector->dev))
> -		drm_object_attach_property(&connector->base,
> -			connector->dev->mode_config.aspect_ratio_property,
> -			DRM_MODE_PICTURE_ASPECT_NONE);
> -}
> -
> -static void
>  intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
>  {
>  	intel_attach_force_audio_property(connector);
> diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
> index 0e860f3..38a4c8c 100644
> --- a/drivers/gpu/drm/i915/intel_modes.c
> +++ b/drivers/gpu/drm/i915/intel_modes.c
> @@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
>  
>  	drm_object_attach_property(&connector->base, prop, 0);
>  }
> +
> +void
> +intel_attach_aspect_ratio_property(struct drm_connector *connector)
> +{
> +	if (!drm_mode_create_aspect_ratio_property(connector->dev))
> +		drm_object_attach_property(&connector->base,
> +			connector->dev->mode_config.aspect_ratio_property,
> +			DRM_MODE_PICTURE_ASPECT_NONE);
> +}
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 857b1bd..c42b636 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -107,6 +107,11 @@ struct intel_sdvo {
>  	bool color_range_auto;
>  
>  	/**
> +	 * HDMI user specified aspect ratio
> +	 */
> +	enum hdmi_picture_aspect aspect_ratio;
> +
> +	/**
>  	 * This is set if we're going to treat the device as TV-out.
>  	 *
>  	 * While we have these nice friendly flags for output types that ought
> @@ -1181,6 +1186,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
>  	if (intel_sdvo->is_tv)
>  		i9xx_adjust_sdvo_tv_clock(pipe_config);
>  
> +	/* Set user selected PAR to incoming mode's member */
> +	if (intel_sdvo->is_hdmi)
> +		adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
> +
>  	return true;
>  }
>  
> @@ -2043,6 +2052,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
>  		goto done;
>  	}
>  
> +	if (property == connector->dev->mode_config.aspect_ratio_property) {
> +		switch (val) {
> +		case DRM_MODE_PICTURE_ASPECT_NONE:
> +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
> +			break;
> +		case DRM_MODE_PICTURE_ASPECT_4_3:
> +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
> +			break;
> +		case DRM_MODE_PICTURE_ASPECT_16_9:
> +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
> +			break;
> +		default:
> +			return -EINVAL;
> +		}
> +		goto done;
> +	}
> +
>  #define CHECK_PROPERTY(name, NAME) \
>  	if (intel_sdvo_connector->name == property) { \
>  		if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
> @@ -2382,6 +2408,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
>  		intel_attach_broadcast_rgb_property(&connector->base.base);
>  		intel_sdvo->color_range_auto = true;
>  	}
> +	intel_attach_aspect_ratio_property(&connector->base.base);
> +	intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
>  }
>  
>  static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 7/7] drm/i915: Add HDMI aspect ratio property for SDVO
  2015-09-28 12:18     ` Mika Kahola
@ 2015-09-28 13:27       ` Daniel Vetter
  0 siblings, 0 replies; 26+ messages in thread
From: Daniel Vetter @ 2015-09-28 13:27 UTC (permalink / raw)
  To: Mika Kahola; +Cc: intel-gfx

On Mon, Sep 28, 2015 at 03:18:10PM +0300, Mika Kahola wrote:
> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> 
> On Fri, 2015-09-25 at 16:39 +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > Handle the HDMI aspect ratio property the same way in the SDVO code
> > as we handle it in the HDMI code.
> > 
> > v2: Remove stray whitespace change
> > 
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Merged the remaining patches from this series, thanks.
-Daniel

> > ---
> >  drivers/gpu/drm/i915/intel_drv.h   |  1 +
> >  drivers/gpu/drm/i915/intel_hdmi.c  |  9 ---------
> >  drivers/gpu/drm/i915/intel_modes.c |  9 +++++++++
> >  drivers/gpu/drm/i915/intel_sdvo.c  | 28 ++++++++++++++++++++++++++++
> >  4 files changed, 38 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> > index c98ed81..ed66a4f 100644
> > --- a/drivers/gpu/drm/i915/intel_drv.h
> > +++ b/drivers/gpu/drm/i915/intel_drv.h
> > @@ -1300,6 +1300,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
> >  int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
> >  void intel_attach_force_audio_property(struct drm_connector *connector);
> >  void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
> > +void intel_attach_aspect_ratio_property(struct drm_connector *connector);
> >  
> > 
> >  /* intel_overlay.c */
> > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> > index af231ed..3c5f2c9 100644
> > --- a/drivers/gpu/drm/i915/intel_hdmi.c
> > +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> > @@ -2004,15 +2004,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
> >  };
> >  
> >  static void
> > -intel_attach_aspect_ratio_property(struct drm_connector *connector)
> > -{
> > -	if (!drm_mode_create_aspect_ratio_property(connector->dev))
> > -		drm_object_attach_property(&connector->base,
> > -			connector->dev->mode_config.aspect_ratio_property,
> > -			DRM_MODE_PICTURE_ASPECT_NONE);
> > -}
> > -
> > -static void
> >  intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
> >  {
> >  	intel_attach_force_audio_property(connector);
> > diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
> > index 0e860f3..38a4c8c 100644
> > --- a/drivers/gpu/drm/i915/intel_modes.c
> > +++ b/drivers/gpu/drm/i915/intel_modes.c
> > @@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
> >  
> >  	drm_object_attach_property(&connector->base, prop, 0);
> >  }
> > +
> > +void
> > +intel_attach_aspect_ratio_property(struct drm_connector *connector)
> > +{
> > +	if (!drm_mode_create_aspect_ratio_property(connector->dev))
> > +		drm_object_attach_property(&connector->base,
> > +			connector->dev->mode_config.aspect_ratio_property,
> > +			DRM_MODE_PICTURE_ASPECT_NONE);
> > +}
> > diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> > index 857b1bd..c42b636 100644
> > --- a/drivers/gpu/drm/i915/intel_sdvo.c
> > +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> > @@ -107,6 +107,11 @@ struct intel_sdvo {
> >  	bool color_range_auto;
> >  
> >  	/**
> > +	 * HDMI user specified aspect ratio
> > +	 */
> > +	enum hdmi_picture_aspect aspect_ratio;
> > +
> > +	/**
> >  	 * This is set if we're going to treat the device as TV-out.
> >  	 *
> >  	 * While we have these nice friendly flags for output types that ought
> > @@ -1181,6 +1186,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
> >  	if (intel_sdvo->is_tv)
> >  		i9xx_adjust_sdvo_tv_clock(pipe_config);
> >  
> > +	/* Set user selected PAR to incoming mode's member */
> > +	if (intel_sdvo->is_hdmi)
> > +		adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
> > +
> >  	return true;
> >  }
> >  
> > @@ -2043,6 +2052,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
> >  		goto done;
> >  	}
> >  
> > +	if (property == connector->dev->mode_config.aspect_ratio_property) {
> > +		switch (val) {
> > +		case DRM_MODE_PICTURE_ASPECT_NONE:
> > +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
> > +			break;
> > +		case DRM_MODE_PICTURE_ASPECT_4_3:
> > +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
> > +			break;
> > +		case DRM_MODE_PICTURE_ASPECT_16_9:
> > +			intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
> > +			break;
> > +		default:
> > +			return -EINVAL;
> > +		}
> > +		goto done;
> > +	}
> > +
> >  #define CHECK_PROPERTY(name, NAME) \
> >  	if (intel_sdvo_connector->name == property) { \
> >  		if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
> > @@ -2382,6 +2408,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
> >  		intel_attach_broadcast_rgb_property(&connector->base.base);
> >  		intel_sdvo->color_range_auto = true;
> >  	}
> > +	intel_attach_aspect_ratio_property(&connector->base.base);
> > +	intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
> >  }
> >  
> >  static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
> 
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2015-09-28 13:24 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-08 10:40 [PATCH 0/7] drm/i915: Always use crtc_ timings with adjusted_mode ville.syrjala
2015-09-08 10:40 ` [PATCH 1/7] drm/i915: Use intel_panel for DVO fixed mode handling ville.syrjala
2015-09-24  8:00   ` Mika Kahola
2015-09-08 10:40 ` [PATCH 2/7] drm/i915: Always call the adjusted mode 'adjusted_mode' ville.syrjala
2015-09-24  8:01   ` Mika Kahola
2015-09-28  8:03   ` Daniel Vetter
2015-09-08 10:40 ` [PATCH 3/7] drm/i915: s/mode/adjusted_mode/ in functions that really get passed the adjusted_mode ville.syrjala
2015-09-23 11:12   ` Mika Kahola
2015-09-23 12:30     ` Ville Syrjälä
2015-09-24  8:06   ` Mika Kahola
2015-09-25 13:37   ` [PATCH v2 " ville.syrjala
2015-09-28 12:15     ` Mika Kahola
2015-09-08 10:40 ` [PATCH 4/7] drm/i915: Always use crtc_ timings when dealing with adjustead_mode ville.syrjala
2015-09-24  8:08   ` Mika Kahola
2015-09-25 13:38   ` [PATCH v2 " ville.syrjala
2015-09-28 12:15     ` Mika Kahola
2015-09-08 10:40 ` [PATCH 5/7] drm/i915: Move HDMI aspect ratio setup to .compute_config() ville.syrjala
2015-09-24  8:08   ` Mika Kahola
2015-09-08 10:40 ` [PATCH 6/7] drm/i915: Constify adjusted_mode ville.syrjala
2015-09-24  8:10   ` Mika Kahola
2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ration property for SDVO ville.syrjala
2015-09-08 10:43   ` Ville Syrjälä
2015-09-08 10:40 ` [PATCH 7/7] drm/i915: Add HDMI aspect ratio " ville.syrjala
2015-09-25 13:39   ` [PATCH v2 " ville.syrjala
2015-09-28 12:18     ` Mika Kahola
2015-09-28 13:27       ` Daniel Vetter

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.