From d8b31814c710324b554d445b610ea26cd5d12fa4 Mon Sep 17 00:00:00 2001 From: Jörg Hohensohn Date: Wed, 29 Oct 2003 22:10:13 +0000 Subject: HW info: removed the V2 boot ROM crap, now gives boot ROM CRC or says no boot ROM in case of flash mirror git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3995 a1c6a512-1295-4272-9138-f99709370657 --- apps/debug_menu.c | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) (limited to 'apps/debug_menu.c') diff --git a/apps/debug_menu.c b/apps/debug_menu.c index a2cda985d4..c56d4cc2c0 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -274,7 +274,8 @@ bool dbg_hw_info(void) int rom_version = *(unsigned short*)0x20000fe; unsigned manu, id; /* flash IDs */ bool got_id; /* flag if we managed to get the flash IDs */ - unsigned rom_crc; /* CRC16 of the boot ROM */ + unsigned rom_crc = 0xFFFF; /* CRC16 of the boot ROM */ + bool has_bootrom; /* flag for boot ROM present */ if(PADR & 0x400) usb_polarity = 0; /* Negative */ @@ -291,8 +292,13 @@ bool dbg_hw_info(void) if (!got_id) got_id = dbg_flash_id(&manu, &id, 0x555, 0x2AA); /* try AMD, Macronix */ - /* calculate CRC16 checksum of boot ROM */ - rom_crc = crc_16((unsigned char*)0x0000, 64*1024); + /* check if the boot ROM area is a flash mirror */ + has_bootrom = (memcmp((char*)0, (char*)0x02000000, 64*1024) != 0); + if (has_bootrom) /* if ROM and Flash different */ + { + /* calculate CRC16 checksum of boot ROM */ + rom_crc = crc_16((unsigned char*)0x0000, 64*1024); + } lcd_setmargins(0, 0); lcd_setfont(FONT_SYSFIXED); @@ -322,11 +328,16 @@ bool dbg_hw_info(void) snprintf(buf, 32, "Flash: M=?? D=??"); /* unknown, sorry */ lcd_puts(0, 6, buf); - snprintf(buf, 32-3, "ROM CRC: 0x%04x", rom_crc); - if (rom_crc == 0x222F) /* Version 1 */ - strcat(buf, " V1"); - else if (rom_crc == 0x8C1E) /* Version 2 */ - strcat(buf, " V2"); + if (has_bootrom) + { + snprintf(buf, 32-3, "ROM CRC: 0x%04x", rom_crc); + if (rom_crc == 0x222F) /* known Version 1 */ + strcat(buf, " V1"); + } + else + { + snprintf(buf, 32, "Boot ROM: none"); + } lcd_puts(0, 7, buf); lcd_update(); @@ -351,7 +362,8 @@ bool dbg_hw_info(void) int rom_version = *(unsigned short*)0x20000fe; unsigned manu, id; /* flash IDs */ bool got_id; /* flag if we managed to get the flash IDs */ - unsigned rom_crc; /* CRC16 of the boot ROM */ + unsigned rom_crc = 0xFFFF; /* CRC16 of the boot ROM */ + bool has_bootrom; /* flag for boot ROM present */ if(PADR & 0x400) usb_polarity = 0; /* Negative */ @@ -363,8 +375,13 @@ bool dbg_hw_info(void) if (!got_id) got_id = dbg_flash_id(&manu, &id, 0x555, 0x2AA); /* try AMD, Macronix */ - /* calculate CRC16 checksum of boot ROM */ - rom_crc = crc_16((unsigned char*)0x0000, 64*1024); + /* check if the boot ROM area is a flash mirror */ + has_bootrom = (memcmp((char*)0, (char*)0x02000000, 64*1024) != 0); + if (has_bootrom) /* if ROM and Flash different */ + { + /* calculate CRC16 checksum of boot ROM */ + rom_crc = crc_16((unsigned char*)0x0000, 64*1024); + } lcd_clear_display(); @@ -395,7 +412,10 @@ bool dbg_hw_info(void) snprintf(buf, 32, "Flash:??,??"); /* unknown, sorry */ break; case 5: - snprintf(buf, 32, "ROM CRC:%04x", rom_crc); + if (has_bootrom) + snprintf(buf, 32, "RomCRC:%04x", rom_crc); + else + snprintf(buf, 32, "BootROM: no"); } lcd_puts(0, 1, buf); -- cgit v1.2.3