aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2015-03-12 11:10:39 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-03-20 06:48:10 -0400
commit0336400ebeeabb7c7187f1ed1bca04ff2191adf8 (patch)
treefdeefecaaaa398827c7de0f67d77736ac7f38abd
parentfe51bfb95c996733150c44d21e1c9f4b6322a326 (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.c43
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
1242static 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
1258static 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
1242static int rate_to_index(int find, const int *rates) 1282static 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 */