cold-flash: Show OMAP chip revision
This commit is contained in:
1 parent
9ea8f2bb38
commit
0650cdf51f
1 file changed
+11
-7
+11
-7
@@ -323,6 +323,7 @@ int init_cold_flash(struct usb_device_info * dev) {
|
|||||||
uint8_t asic_buffer[127];
|
uint8_t asic_buffer[127];
|
||||||
int asic_size = 69;
|
int asic_size = 69;
|
||||||
const char * chip = NULL;
|
const char * chip = NULL;
|
||||||
|
int revision;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ( dev->flash_device->protocol != FLASH_COLD )
|
if ( dev->flash_device->protocol != FLASH_COLD )
|
||||||
@@ -346,11 +347,11 @@ int init_cold_flash(struct usb_device_info * dev) {
|
|||||||
if ( asic_buffer[0] != 0x05 )
|
if ( asic_buffer[0] != 0x05 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* ID Subblock - header */
|
/* 1. ID Subblock - header */
|
||||||
if ( memcmp(asic_buffer+1, "\x01\x05\x01", 3) != 0 )
|
if ( memcmp(asic_buffer+1, "\x01\x05\x01", 3) != 0 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* ID Subblock - OMAP chip version (check for OMAP3430 or 3630) */
|
/* 1. ID Subblock - OMAP chip version (check for OMAP3430 or 3630) */
|
||||||
if ( memcmp(asic_buffer+4, "\x34\x30\x07", 3) == 0 )
|
if ( memcmp(asic_buffer+4, "\x34\x30\x07", 3) == 0 )
|
||||||
chip = "OMAP3430";
|
chip = "OMAP3430";
|
||||||
else if ( memcmp(asic_buffer+4, "\x36\x30\x07", 3) == 0 )
|
else if ( memcmp(asic_buffer+4, "\x36\x30\x07", 3) == 0 )
|
||||||
@@ -358,23 +359,26 @@ int init_cold_flash(struct usb_device_info * dev) {
|
|||||||
else
|
else
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* Reserved1 - header */
|
/* 1. ID Subblock - OMAP chip revision */
|
||||||
|
revision = asic_buffer[7];
|
||||||
|
|
||||||
|
/* 2. Secure Mode Subblock - header */
|
||||||
if ( memcmp(asic_buffer+8, "\x13\x02\x01", 3) != 0 )
|
if ( memcmp(asic_buffer+8, "\x13\x02\x01", 3) != 0 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* 2nd ID Subblock - header */
|
/* 3. 2nd ID Subblock - header */
|
||||||
if ( memcmp(asic_buffer+12, "\x12\x15\x01", 3) != 0 )
|
if ( memcmp(asic_buffer+12, "\x12\x15\x01", 3) != 0 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* Reserved2 - header */
|
/* 4. Root Key Hash Subblock - header */
|
||||||
if ( memcmp(asic_buffer+35, "\x14\x15\x01", 3) != 0 )
|
if ( memcmp(asic_buffer+35, "\x14\x15\x01", 3) != 0 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
/* Checksum subblock - header */
|
/* 5. Checksum subblock - header */
|
||||||
if ( memcmp(asic_buffer+58, "\x15\x09\x01", 3) != 0 )
|
if ( memcmp(asic_buffer+58, "\x15\x09\x01", 3) != 0 )
|
||||||
ERROR_RETURN("Invalid ASIC ID", -1);
|
ERROR_RETURN("Invalid ASIC ID", -1);
|
||||||
|
|
||||||
printf("Detected %s chip\n", chip);
|
printf("Detected %s chip (revision %d)\n", chip, revision);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user