| From 1502d4c0ce6baa9003fa855f3bdec24591d4b919 Mon Sep 17 00:00:00 2001 |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Fri, 3 May 2013 12:15:37 -0300 |
| Subject: drm/i915: add power well and cpu transcoder info to the error state |
| |
| We need to dump these registers if we want to properly interpret the |
| others. |
| |
| Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit ff57f1b095e7c3ad0720193cd341d8ac1c781156) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 13 +++++++++++++ |
| 1 file changed, 13 insertions(+) |
| |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -9816,6 +9816,9 @@ int intel_modeset_vga_set_state(struct d |
| #include <linux/seq_file.h> |
| |
| struct intel_display_error_state { |
| + |
| + u32 power_well_driver; |
| + |
| struct intel_cursor_error_state { |
| u32 control; |
| u32 position; |
| @@ -9824,6 +9827,7 @@ struct intel_display_error_state { |
| } cursor[I915_MAX_PIPES]; |
| |
| struct intel_pipe_error_state { |
| + enum transcoder cpu_transcoder; |
| u32 conf; |
| u32 source; |
| |
| @@ -9858,8 +9862,12 @@ intel_display_capture_error_state(struct |
| if (error == NULL) |
| return NULL; |
| |
| + if (HAS_POWER_WELL(dev)) |
| + error->power_well_driver = I915_READ(HSW_PWR_WELL_DRIVER); |
| + |
| for_each_pipe(i) { |
| cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, i); |
| + error->pipe[i].cpu_transcoder = cpu_transcoder; |
| |
| if (INTEL_INFO(dev)->gen <= 6 || IS_VALLEYVIEW(dev)) { |
| error->cursor[i].control = I915_READ(CURCNTR(i)); |
| @@ -9905,8 +9913,13 @@ intel_display_print_error_state(struct s |
| int i; |
| |
| seq_printf(m, "Num Pipes: %d\n", INTEL_INFO(dev)->num_pipes); |
| + if (HAS_POWER_WELL(dev)) |
| + seq_printf(m, "PWR_WELL_CTL2: %08x\n", |
| + error->power_well_driver); |
| for_each_pipe(i) { |
| seq_printf(m, "Pipe [%d]:\n", i); |
| + seq_printf(m, " CPU transcoder: %c\n", |
| + transcoder_name(error->pipe[i].cpu_transcoder)); |
| seq_printf(m, " CONF: %08x\n", error->pipe[i].conf); |
| seq_printf(m, " SRC: %08x\n", error->pipe[i].source); |
| seq_printf(m, " HTOTAL: %08x\n", error->pipe[i].htotal); |