Re: [Intel-gfx] [PATCH 01/13] drm/i915: introduce struct intel_crtc_config

2013-03-27 Thread Jesse Barnes
On Wed, 27 Mar 2013 00:44:50 +0100
Daniel Vetter daniel.vet...@ffwll.ch wrote:

 Currently only containing the requested and the adjusted mode. And
 only crtc callbacks are converted somewhat to it, encoders will be
 done on a as-needed basis (simply too much churn in one patch
 otherwise).
 
 Future patches will add tons more useful stuff to this struct,
 starting with the very simple.
 
 v2: Store the pipe_config in the intel_crtc, so that the -mode-set,
 -enable and also -disable have easy access to it.
 
 v3: Store the pipe config in the right crtc ...
 
 v4: Rebased.
 
 v5: Fixup an OOPS when trying to kfree an ERR_PTR.
 
 v6: Used drm_moode_copy and some other small cleanups as suggested
 by Ville Syrjälä.
 
 v7: drm_mode_copy preserves the mode id of the destination, so no need
 to clear it again (Ville).
 
 v8: Break a long line spotted by Paulo.
 
 Reviewed-by: Ville Syrjälä ville.syrj...@linux.intel.com
 Reviewed-by: Paulo Zanoni paulo.r.zan...@intel.com
 Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch
 ---

Yeah looks like this could be applied immediately.

Reviewed-by: Jesse Barnes jbar...@virtuousgeek.org

-- 
Jesse Barnes, Intel Open Source Technology Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 01/13] drm/i915: introduce struct intel_crtc_config

2013-03-26 Thread Daniel Vetter
Currently only containing the requested and the adjusted mode. And
only crtc callbacks are converted somewhat to it, encoders will be
done on a as-needed basis (simply too much churn in one patch
otherwise).

Future patches will add tons more useful stuff to this struct,
starting with the very simple.

v2: Store the pipe_config in the intel_crtc, so that the -mode-set,
-enable and also -disable have easy access to it.

v3: Store the pipe config in the right crtc ...

v4: Rebased.

v5: Fixup an OOPS when trying to kfree an ERR_PTR.

v6: Used drm_moode_copy and some other small cleanups as suggested
by Ville Syrjälä.

v7: drm_mode_copy preserves the mode id of the destination, so no need
to clear it again (Ville).

v8: Break a long line spotted by Paulo.

Reviewed-by: Ville Syrjälä ville.syrj...@linux.intel.com
Reviewed-by: Paulo Zanoni paulo.r.zan...@intel.com
Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch
---
 drivers/gpu/drm/i915/i915_drv.h  |  4 +-
 drivers/gpu/drm/i915/intel_display.c | 82 +---
 drivers/gpu/drm/i915/intel_drv.h |  7 +++
 3 files changed, 57 insertions(+), 36 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e637d32..d3b4657 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -284,6 +284,8 @@ struct drm_i915_error_state {
struct intel_display_error_state *display;
 };
 
+struct intel_crtc_config;
+
 struct drm_i915_display_funcs {
bool (*fbc_enabled)(struct drm_device *dev);
void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval);
@@ -297,8 +299,6 @@ struct drm_i915_display_funcs {
 struct drm_display_mode *mode);
void (*modeset_global_resources)(struct drm_device *dev);
int (*crtc_mode_set)(struct drm_crtc *crtc,
-struct drm_display_mode *mode,
-struct drm_display_mode *adjusted_mode,
 int x, int y,
 struct drm_framebuffer *old_fb);
void (*crtc_enable)(struct drm_crtc *crtc);
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 0b17a19..34986fe 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3954,15 +3954,16 @@ bool intel_connector_get_hw_state(struct 
intel_connector *connector)
return encoder-get_hw_state(encoder, pipe);
 }
 
-static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
- const struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode)
+static bool intel_crtc_compute_config(struct drm_crtc *crtc,
+ struct intel_crtc_config *pipe_config)
 {
struct drm_device *dev = crtc-dev;
+   struct drm_display_mode *adjusted_mode = pipe_config-adjusted_mode;
 
if (HAS_PCH_SPLIT(dev)) {
/* FDI link clock is fixed at 2.7G */
-   if (mode-clock * 3  IRONLAKE_FDI_FREQ * 4)
+   if (pipe_config-requested_mode.clock * 3
+IRONLAKE_FDI_FREQ * 4)
return false;
}
 
@@ -4648,14 +4649,15 @@ static void intel_set_pipe_timings(struct intel_crtc 
*intel_crtc,
 }
 
 static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
- struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode,
  int x, int y,
  struct drm_framebuffer *fb)
 {
struct drm_device *dev = crtc-dev;
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.adjusted_mode;
+   struct drm_display_mode *mode = intel_crtc-config.requested_mode;
int pipe = intel_crtc-pipe;
int plane = intel_crtc-plane;
int refclk, num_connectors = 0;
@@ -5620,14 +5622,15 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc 
*intel_crtc,
 }
 
 static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
- struct drm_display_mode *mode,
- struct drm_display_mode *adjusted_mode,
  int x, int y,
  struct drm_framebuffer *fb)
 {
struct drm_device *dev = crtc-dev;
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.adjusted_mode;
+   struct drm_display_mode *mode = intel_crtc-config.requested_mode;
int pipe = intel_crtc-pipe;
int plane = intel_crtc-plane;
int num_connectors = 0;
@@ -5786,14 +5789,15 @@ static