diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2015-03-12 11:10:39 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-03-20 06:48:10 -0400 |
commit | 0336400ebeeabb7c7187f1ed1bca04ff2191adf8 (patch) | |
tree | fdeefecaaaa398827c7de0f67d77736ac7f38abd | |
parent | fe51bfb95c996733150c44d21e1c9f4b6322a326 (diff) |
drm/i915: Include the sink/source/supported rates in debug output
TODO: Is there an actually nice way to print an array of ints?
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index ce0bdec4b6f9..e2c54912cf11 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1239,6 +1239,46 @@ static int intel_supported_rates(struct intel_dp *intel_dp, | |||
1239 | supported_rates); | 1239 | supported_rates); |
1240 | } | 1240 | } |
1241 | 1241 | ||
1242 | static void snprintf_int_array(char *str, size_t len, | ||
1243 | const int *array, int nelem) | ||
1244 | { | ||
1245 | int i; | ||
1246 | |||
1247 | str[0] = '\0'; | ||
1248 | |||
1249 | for (i = 0; i < nelem; i++) { | ||
1250 | int r = snprintf(str, len, "%d,", array[i]); | ||
1251 | if (r >= len) | ||
1252 | return; | ||
1253 | str += r; | ||
1254 | len -= r; | ||
1255 | } | ||
1256 | } | ||
1257 | |||
1258 | static void intel_dp_print_rates(struct intel_dp *intel_dp) | ||
1259 | { | ||
1260 | struct drm_device *dev = intel_dp_to_dev(intel_dp); | ||
1261 | const int *source_rates, *sink_rates; | ||
1262 | int source_len, sink_len, supported_len; | ||
1263 | int supported_rates[DP_MAX_SUPPORTED_RATES]; | ||
1264 | char str[128]; /* FIXME: too big for stack? */ | ||
1265 | |||
1266 | if ((drm_debug & DRM_UT_KMS) == 0) | ||
1267 | return; | ||
1268 | |||
1269 | source_len = intel_dp_source_rates(dev, &source_rates); | ||
1270 | snprintf_int_array(str, sizeof(str), source_rates, source_len); | ||
1271 | DRM_DEBUG_KMS("source rates: %s\n", str); | ||
1272 | |||
1273 | sink_len = intel_dp_sink_rates(intel_dp, &sink_rates); | ||
1274 | snprintf_int_array(str, sizeof(str), sink_rates, sink_len); | ||
1275 | DRM_DEBUG_KMS("sink rates: %s\n", str); | ||
1276 | |||
1277 | supported_len = intel_supported_rates(intel_dp, supported_rates); | ||
1278 | snprintf_int_array(str, sizeof(str), supported_rates, supported_len); | ||
1279 | DRM_DEBUG_KMS("supported rates: %s\n", str); | ||
1280 | } | ||
1281 | |||
1242 | static int rate_to_index(int find, const int *rates) | 1282 | static int rate_to_index(int find, const int *rates) |
1243 | { | 1283 | { |
1244 | int i = 0; | 1284 | int i = 0; |
@@ -3775,6 +3815,9 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) | |||
3775 | } | 3815 | } |
3776 | intel_dp->num_supported_rates = i; | 3816 | intel_dp->num_supported_rates = i; |
3777 | } | 3817 | } |
3818 | |||
3819 | intel_dp_print_rates(intel_dp); | ||
3820 | |||
3778 | if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & | 3821 | if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & |
3779 | DP_DWN_STRM_PORT_PRESENT)) | 3822 | DP_DWN_STRM_PORT_PRESENT)) |
3780 | return true; /* native DP sink */ | 3823 | return true; /* native DP sink */ |