diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-27 10:03:01 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-28 02:31:49 -0500 |
commit | 84fcb46977e57bafba40bde32067bacc1e510f9c (patch) | |
tree | a2c9ad3e3a1fe26b1eefc5839cb62704b44fc37a /drivers/gpu/drm/i915/intel_sdvo.c | |
parent | 5bc0e85cc6207650535e579b0995aa9574a8ecba (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.c | 55 |
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 { | |||
413 | static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, | 413 | static 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 | ||
435 | static const char *cmd_status_names[] = { | 446 | static 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 | ||
573 | log_fail: | 592 | log_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 | ||