aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_sdvo.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-11-27 10:03:01 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-11-28 02:31:49 -0500
commit84fcb46977e57bafba40bde32067bacc1e510f9c (patch)
treea2c9ad3e3a1fe26b1eefc5839cb62704b44fc37a /drivers/gpu/drm/i915/intel_sdvo.c
parent5bc0e85cc6207650535e579b0995aa9574a8ecba (diff)
drm/i915/sdvo: Fix up debug output to not split lines
It leads to a big mess when stuff interleaves. Especially with the new patch I've submitted for the drm core to no longer artificially split up debug messages. v2: The size parameter to snprintf includes the terminating 0, but the return value does not. Adjust the logic accordingly. Spotted by Mika. Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sdvo.c')
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c55
1 files changed, 37 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index a583e8f718a7..e4f9918ab859 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -413,23 +413,34 @@ static const struct _sdvo_cmd_name {
413static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, 413static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd,
414 const void *args, int args_len) 414 const void *args, int args_len)
415{ 415{
416 int i; 416 int i, pos = 0;
417#define BUF_LEN 256
418 char buffer[BUF_LEN];
419
420#define BUF_PRINT(args...) \
421 pos += snprintf(buffer + pos, max_t(int, BUF_LEN - pos, 0), args)
422
417 423
418 DRM_DEBUG_KMS("%s: W: %02X ", 424 for (i = 0; i < args_len; i++) {
419 SDVO_NAME(intel_sdvo), cmd); 425 BUF_PRINT("%02X ", ((u8 *)args)[i]);
420 for (i = 0; i < args_len; i++) 426 }
421 DRM_LOG_KMS("%02X ", ((u8 *)args)[i]); 427 for (; i < 8; i++) {
422 for (; i < 8; i++) 428 BUF_PRINT(" ");
423 DRM_LOG_KMS(" "); 429 }
424 for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) { 430 for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) {
425 if (cmd == sdvo_cmd_names[i].cmd) { 431 if (cmd == sdvo_cmd_names[i].cmd) {
426 DRM_LOG_KMS("(%s)", sdvo_cmd_names[i].name); 432 BUF_PRINT("(%s)", sdvo_cmd_names[i].name);
427 break; 433 break;
428 } 434 }
429 } 435 }
430 if (i == ARRAY_SIZE(sdvo_cmd_names)) 436 if (i == ARRAY_SIZE(sdvo_cmd_names)) {
431 DRM_LOG_KMS("(%02X)", cmd); 437 BUF_PRINT("(%02X)", cmd);
432 DRM_LOG_KMS("\n"); 438 }
439 BUG_ON(pos >= BUF_LEN - 1);
440#undef BUF_PRINT
441#undef BUF_LEN
442
443 DRM_DEBUG_KMS("%s: W: %02X %s\n", SDVO_NAME(intel_sdvo), cmd, buffer);
433} 444}
434 445
435static const char *cmd_status_names[] = { 446static const char *cmd_status_names[] = {
@@ -512,9 +523,10 @@ static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
512{ 523{
513 u8 retry = 15; /* 5 quick checks, followed by 10 long checks */ 524 u8 retry = 15; /* 5 quick checks, followed by 10 long checks */
514 u8 status; 525 u8 status;
515 int i; 526 int i, pos = 0;
527#define BUF_LEN 256
528 char buffer[BUF_LEN];
516 529
517 DRM_DEBUG_KMS("%s: R: ", SDVO_NAME(intel_sdvo));
518 530
519 /* 531 /*
520 * The documentation states that all commands will be 532 * The documentation states that all commands will be
@@ -551,10 +563,13 @@ static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
551 goto log_fail; 563 goto log_fail;
552 } 564 }
553 565
566#define BUF_PRINT(args...) \
567 pos += snprintf(buffer + pos, max_t(int, BUF_LEN - pos, 0), args)
568
554 if (status <= SDVO_CMD_STATUS_SCALING_NOT_SUPP) 569 if (status <= SDVO_CMD_STATUS_SCALING_NOT_SUPP)
555 DRM_LOG_KMS("(%s)", cmd_status_names[status]); 570 BUF_PRINT("(%s)", cmd_status_names[status]);
556 else 571 else
557 DRM_LOG_KMS("(??? %d)", status); 572 BUF_PRINT("(??? %d)", status);
558 573
559 if (status != SDVO_CMD_STATUS_SUCCESS) 574 if (status != SDVO_CMD_STATUS_SUCCESS)
560 goto log_fail; 575 goto log_fail;
@@ -565,13 +580,17 @@ static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo,
565 SDVO_I2C_RETURN_0 + i, 580 SDVO_I2C_RETURN_0 + i,
566 &((u8 *)response)[i])) 581 &((u8 *)response)[i]))
567 goto log_fail; 582 goto log_fail;
568 DRM_LOG_KMS(" %02X", ((u8 *)response)[i]); 583 BUF_PRINT(" %02X", ((u8 *)response)[i]);
569 } 584 }
570 DRM_LOG_KMS("\n"); 585 BUG_ON(pos >= BUF_LEN - 1);
586#undef BUF_PRINT
587#undef BUF_LEN
588
589 DRM_DEBUG_KMS("%s: R: %s\n", SDVO_NAME(intel_sdvo), buffer);
571 return true; 590 return true;
572 591
573log_fail: 592log_fail:
574 DRM_LOG_KMS("... failed\n"); 593 DRM_DEBUG_KMS("%s: R: ... failed\n", SDVO_NAME(intel_sdvo));
575 return false; 594 return false;
576} 595}
577 596