aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-16 16:55:58 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-21 12:33:42 -0400
commit3d099a05b121727bfa797391ea1da15eb33eac16 (patch)
tree25e7e4a8cc84c51da29c6513805d3417a6dd0a5d
parentb073aeaa28b43b00b5c90096c76e872dca4d4ee4 (diff)
drm/i915: Add new CRC sources
On pre-gen5 and vlv we can't use the pipe source when TV-out or a DP port is connected to the pipe. Hence we need to expose new CRC sources. Also simplify the existing pipe source platform code a bit by rejecting all unhandled sources by default. Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c16
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h5
2 files changed, 15 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 061182a0ce1b..d7ee350fc6a3 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1915,6 +1915,10 @@ static const char * const pipe_crc_sources[] = {
1915 "plane2", 1915 "plane2",
1916 "pf", 1916 "pf",
1917 "pipe", 1917 "pipe",
1918 "TV",
1919 "DP-B",
1920 "DP-C",
1921 "DP-D",
1918}; 1922};
1919 1923
1920static const char *pipe_crc_source_name(enum intel_pipe_crc_source source) 1924static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
@@ -1953,14 +1957,14 @@ static int ilk_pipe_crc_ctl_reg(enum intel_pipe_crc_source source,
1953 case INTEL_PIPE_CRC_SOURCE_PLANE2: 1957 case INTEL_PIPE_CRC_SOURCE_PLANE2:
1954 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_SPRITE_ILK; 1958 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_SPRITE_ILK;
1955 break; 1959 break;
1956 case INTEL_PIPE_CRC_SOURCE_PF:
1957 return -EINVAL;
1958 case INTEL_PIPE_CRC_SOURCE_PIPE: 1960 case INTEL_PIPE_CRC_SOURCE_PIPE:
1959 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PIPE_ILK; 1961 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PIPE_ILK;
1960 break; 1962 break;
1961 default: 1963 case INTEL_PIPE_CRC_SOURCE_NONE:
1962 *val = 0; 1964 *val = 0;
1963 break; 1965 break;
1966 default:
1967 return -EINVAL;
1964 } 1968 }
1965 1969
1966 return 0; 1970 return 0;
@@ -1979,11 +1983,11 @@ static int ivb_pipe_crc_ctl_reg(enum intel_pipe_crc_source source,
1979 case INTEL_PIPE_CRC_SOURCE_PF: 1983 case INTEL_PIPE_CRC_SOURCE_PF:
1980 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PF_IVB; 1984 *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PF_IVB;
1981 break; 1985 break;
1982 case INTEL_PIPE_CRC_SOURCE_PIPE: 1986 case INTEL_PIPE_CRC_SOURCE_NONE:
1983 return -EINVAL;
1984 default:
1985 *val = 0; 1987 *val = 0;
1986 break; 1988 break;
1989 default:
1990 return -EINVAL;
1987 } 1991 }
1988 1992
1989 return 0; 1993 return 0;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index dee03325d596..07e4949c5f3c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1224,6 +1224,11 @@ enum intel_pipe_crc_source {
1224 INTEL_PIPE_CRC_SOURCE_PLANE2, 1224 INTEL_PIPE_CRC_SOURCE_PLANE2,
1225 INTEL_PIPE_CRC_SOURCE_PF, 1225 INTEL_PIPE_CRC_SOURCE_PF,
1226 INTEL_PIPE_CRC_SOURCE_PIPE, 1226 INTEL_PIPE_CRC_SOURCE_PIPE,
1227 /* TV/DP on pre-gen5/vlv can't use the pipe source. */
1228 INTEL_PIPE_CRC_SOURCE_TV,
1229 INTEL_PIPE_CRC_SOURCE_DP_B,
1230 INTEL_PIPE_CRC_SOURCE_DP_C,
1231 INTEL_PIPE_CRC_SOURCE_DP_D,
1227 INTEL_PIPE_CRC_SOURCE_MAX, 1232 INTEL_PIPE_CRC_SOURCE_MAX,
1228}; 1233};
1229 1234