diff options
Diffstat (limited to 'utils/imxtools/scsitools/scsitool.c')
-rw-r--r-- | utils/imxtools/scsitools/scsitool.c | 71 |
1 files changed, 57 insertions, 14 deletions
diff --git a/utils/imxtools/scsitools/scsitool.c b/utils/imxtools/scsitools/scsitool.c index 8ef2774f32..8c124ee9f3 100644 --- a/utils/imxtools/scsitools/scsitool.c +++ b/utils/imxtools/scsitools/scsitool.c | |||
@@ -344,6 +344,46 @@ static int stmp_get_logical_drive_info(uint8_t drive, uint8_t info, void *data, | |||
344 | return do_sense_analysis(ret, sense, sense_size); | 344 | return do_sense_analysis(ret, sense, sense_size); |
345 | } | 345 | } |
346 | 346 | ||
347 | static const char *stmp_get_logical_media_type_string(uint32_t type) | ||
348 | { | ||
349 | switch(type) | ||
350 | { | ||
351 | case SCSI_STMP_MEDIA_TYPE_NAND: return "NAND"; | ||
352 | case SCSI_STMP_MEDIA_TYPE_SDMMC: return "SD/MMC"; | ||
353 | case SCSI_STMP_MEDIA_TYPE_HDD: return "HDD"; | ||
354 | case SCSI_STMP_MEDIA_TYPE_RAM: return "RAM"; | ||
355 | case SCSI_STMP_MEDIA_TYPE_iNAND: return "iNAND"; | ||
356 | default: return "?"; | ||
357 | } | ||
358 | } | ||
359 | |||
360 | static const char *stmp_get_logical_media_vendor_string(uint32_t type) | ||
361 | { | ||
362 | switch(type) | ||
363 | { | ||
364 | case SCSI_STMP_MEDIA_VENDOR_SAMSUNG: return "Samsung"; | ||
365 | case SCSI_STMP_MEDIA_VENDOR_STMICRO: return "ST Micro"; | ||
366 | case SCSI_STMP_MEDIA_VENDOR_HYNIX: return "Hynix"; | ||
367 | case SCSI_STMP_MEDIA_VENDOR_MICRON: return "Micron"; | ||
368 | case SCSI_STMP_MEDIA_VENDOR_TOSHIBA: return "Toshiba"; | ||
369 | case SCSI_STMP_MEDIA_VENDOR_RENESAS: return "Renesas"; | ||
370 | case SCSI_STMP_MEDIA_VENDOR_INTEL: return "Intel"; | ||
371 | case SCSI_STMP_MEDIA_VENDOR_SANDISK: return "Sandisk"; | ||
372 | default: return "?"; | ||
373 | } | ||
374 | } | ||
375 | |||
376 | static const char *stmp_get_logical_drive_type_string(uint32_t type) | ||
377 | { | ||
378 | switch(type) | ||
379 | { | ||
380 | case SCSI_STMP_DRIVE_TYPE_USER: return "User"; | ||
381 | case SCSI_STMP_DRIVE_TYPE_SYSTEM: return "System"; | ||
382 | case SCSI_STMP_DRIVE_TYPE_DRM: return "DRM"; | ||
383 | default: return "?"; | ||
384 | } | ||
385 | } | ||
386 | |||
347 | static int do_work(void) | 387 | static int do_work(void) |
348 | { | 388 | { |
349 | cprintf(BLUE, "Information\n"); | 389 | cprintf(BLUE, "Information\n"); |
@@ -389,11 +429,12 @@ static int do_work(void) | |||
389 | } | 429 | } |
390 | 430 | ||
391 | len = 4; | 431 | len = 4; |
392 | ret = stmp_get_logical_media_info(6, &u.u32, &len); | 432 | ret = stmp_get_logical_media_info(SCSI_STMP_MEDIA_INFO_TYPE, &u.u32, &len); |
393 | if(!ret && len == 4) | 433 | if(!ret && len == 4) |
394 | { | 434 | { |
395 | u.u32 = fix_endian32be(u.u32); | 435 | u.u32 = fix_endian32be(u.u32); |
396 | cprintf_field(" Logical Media Info (6): ", "%#x\n", u.u32); | 436 | cprintf_field(" Media Type: ", "%#x", u.u32); |
437 | cprintf(RED, " (%s)\n", stmp_get_logical_media_type_string(u.u32)); | ||
397 | } | 438 | } |
398 | 439 | ||
399 | len = 1; | 440 | len = 1; |
@@ -406,7 +447,7 @@ static int do_work(void) | |||
406 | if(!ret && len == 8) | 447 | if(!ret && len == 8) |
407 | { | 448 | { |
408 | u.u64 = fix_endian64be(u.u64); | 449 | u.u64 = fix_endian64be(u.u64); |
409 | cprintf_field(" Logical Media Info (1): ", "%#llx\n", u.u64); | 450 | cprintf_field(" Logical Media Info (1): ", "%#llx\n", (unsigned long long)u.u64); |
410 | } | 451 | } |
411 | 452 | ||
412 | len = 4; | 453 | len = 4; |
@@ -436,11 +477,12 @@ static int do_work(void) | |||
436 | cprintf_field(" Logical Media Info (9): ", "%#x\n", u.u8); | 477 | cprintf_field(" Logical Media Info (9): ", "%#x\n", u.u8); |
437 | 478 | ||
438 | len = 4; | 479 | len = 4; |
439 | ret = stmp_get_logical_media_info(12, &u.u32, &len); | 480 | ret = stmp_get_logical_media_info(SCSI_STMP_MEDIA_INFO_VENDOR, &u.u32, &len); |
440 | if(!ret && len == 4) | 481 | if(!ret && len == 4) |
441 | { | 482 | { |
442 | u.u32 = fix_endian32be(u.u32); | 483 | u.u32 = fix_endian32be(u.u32); |
443 | cprintf_field(" Logical Media Info (12): ", "%#x\n", u.u32); | 484 | cprintf_field(" Media Vendor: ", "%#x", u.u32); |
485 | cprintf(RED, " (%s)\n", stmp_get_logical_media_vendor_string(u.u32)); | ||
444 | } | 486 | } |
445 | 487 | ||
446 | len = 8; | 488 | len = 8; |
@@ -448,7 +490,7 @@ static int do_work(void) | |||
448 | if(!ret && len == 8) | 490 | if(!ret && len == 8) |
449 | { | 491 | { |
450 | u.u64 = fix_endian64be(u.u64); | 492 | u.u64 = fix_endian64be(u.u64); |
451 | cprintf_field(" Logical Media Info (13): ", "%#llx\n", u.u64); | 493 | cprintf_field(" Logical Media Info (13): ", "%#llx\n", (unsigned long long)u.u64); |
452 | } | 494 | } |
453 | 495 | ||
454 | len = 4; | 496 | len = 4; |
@@ -525,11 +567,11 @@ static int do_work(void) | |||
525 | cprintf_field(" Drive ", "%02x\n", drive); | 567 | cprintf_field(" Drive ", "%02x\n", drive); |
526 | 568 | ||
527 | int len = 4; | 569 | int len = 4; |
528 | ret = stmp_get_logical_drive_info(drive, 0, &u.u32, &len); | 570 | ret = stmp_get_logical_drive_info(drive, SCSI_STMP_DRIVE_INFO_SECTOR, &u.u32, &len); |
529 | if(!ret && len == 4) | 571 | if(!ret && len == 4) |
530 | { | 572 | { |
531 | u.u32 = fix_endian32be(u.u32); | 573 | u.u32 = fix_endian32be(u.u32); |
532 | cprintf_field(" Info 0: ", "%#x\n", u.u32); | 574 | cprintf_field(" Sector Size: ", "%#x\n", u.u32); |
533 | } | 575 | } |
534 | 576 | ||
535 | len = 4; | 577 | len = 4; |
@@ -541,11 +583,11 @@ static int do_work(void) | |||
541 | } | 583 | } |
542 | 584 | ||
543 | len = 8; | 585 | len = 8; |
544 | ret = stmp_get_logical_drive_info(drive, 2, &u.u64, &len); | 586 | ret = stmp_get_logical_drive_info(drive, SCSI_STMP_DRIVE_INFO_SIZE, &u.u64, &len); |
545 | if(!ret && len == 8) | 587 | if(!ret && len == 8) |
546 | { | 588 | { |
547 | u.u64 = fix_endian64be(u.u64); | 589 | u.u64 = fix_endian64be(u.u64); |
548 | cprintf_field(" Info 2: ", "%#llx\n", u.u64); | 590 | cprintf_field(" Total Size: ", "%#llx\n", (unsigned long long)u.u64); |
549 | } | 591 | } |
550 | 592 | ||
551 | len = 4; | 593 | len = 4; |
@@ -557,19 +599,20 @@ static int do_work(void) | |||
557 | } | 599 | } |
558 | 600 | ||
559 | len = 8; | 601 | len = 8; |
560 | ret = stmp_get_logical_drive_info(drive, 4, &u.u64, &len); | 602 | ret = stmp_get_logical_drive_info(drive, SCSI_STMP_DRIVE_INFO_COUNT, &u.u64, &len); |
561 | if(!ret && len == 8) | 603 | if(!ret && len == 8) |
562 | { | 604 | { |
563 | u.u64 = fix_endian64be(u.u64); | 605 | u.u64 = fix_endian64be(u.u64); |
564 | cprintf_field(" Info 4: ", "%#llx\n", u.u64); | 606 | cprintf_field(" Sector Count: ", "%#llx\n", (unsigned long long)u.u64); |
565 | } | 607 | } |
566 | 608 | ||
567 | len = 4; | 609 | len = 4; |
568 | ret = stmp_get_logical_drive_info(drive, 5, &u.u32, &len); | 610 | ret = stmp_get_logical_drive_info(drive,SCSI_STMP_DRIVE_INFO_TYPE, &u.u32, &len); |
569 | if(!ret && len == 4) | 611 | if(!ret && len == 4) |
570 | { | 612 | { |
571 | u.u32 = fix_endian32be(u.u32); | 613 | u.u32 = fix_endian32be(u.u32); |
572 | cprintf_field(" Info 5: ", "%#x\n", u.u32); | 614 | cprintf_field(" Type: ", "%#x", u.u32); |
615 | cprintf(RED, " (%s)\n", stmp_get_logical_drive_type_string(u.u32)); | ||
573 | } | 616 | } |
574 | 617 | ||
575 | len = 1; | 618 | len = 1; |