* [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.