forked from len0rd/rockbox
We don't need 2 different CRC functions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9886 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
61b8604a9c
commit
106f7738a0
1 changed files with 18 additions and 43 deletions
|
@ -52,6 +52,7 @@
|
||||||
#include "dircache.h"
|
#include "dircache.h"
|
||||||
#include "tagcache.h"
|
#include "tagcache.h"
|
||||||
#include "lcd-remote.h"
|
#include "lcd-remote.h"
|
||||||
|
#include "crc32.h"
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
#include "widgets.h"
|
#include "widgets.h"
|
||||||
|
@ -301,41 +302,6 @@ bool dbg_audio_thread(void)
|
||||||
#endif /* CONFIG_CODEC */
|
#endif /* CONFIG_CODEC */
|
||||||
#endif /* HAVE_LCD_BITMAP */
|
#endif /* HAVE_LCD_BITMAP */
|
||||||
|
|
||||||
/* Tool function to calculate a CRC16 across some buffer */
|
|
||||||
unsigned short crc_16(const unsigned char* buf, unsigned len)
|
|
||||||
{
|
|
||||||
/* CCITT standard polynomial 0x1021 */
|
|
||||||
static const unsigned short crc16_lookup[16] =
|
|
||||||
{ /* lookup table for 4 bits at a time is affordable */
|
|
||||||
0x0000, 0x1021, 0x2042, 0x3063,
|
|
||||||
0x4084, 0x50A5, 0x60C6, 0x70E7,
|
|
||||||
0x8108, 0x9129, 0xA14A, 0xB16B,
|
|
||||||
0xC18C, 0xD1AD, 0xE1CE, 0xF1EF
|
|
||||||
};
|
|
||||||
unsigned short crc16 = 0xFFFF; /* initialise to 0xFFFF (CCITT specification) */
|
|
||||||
unsigned t;
|
|
||||||
unsigned char byte;
|
|
||||||
|
|
||||||
while (len--)
|
|
||||||
{
|
|
||||||
byte = *buf++; /* get one byte of data */
|
|
||||||
|
|
||||||
/* upper nibble of our data */
|
|
||||||
t = crc16 >> 12; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte >> 4; /* XOR in 4 bits of the data into the extracted bits */
|
|
||||||
crc16 <<= 4; /* shift the CRC Register left 4 bits */
|
|
||||||
crc16 ^= crc16_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
|
|
||||||
/* lower nibble of our data */
|
|
||||||
t = crc16 >> 12; /* extract the 4 most significant bits */
|
|
||||||
t ^= byte & 0x0F; /* XOR in 4 bits of the data into the extracted bits */
|
|
||||||
crc16 <<= 4; /* shift the CRC Register left 4 bits */
|
|
||||||
crc16 ^= crc16_lookup[t]; /* do the table lookup and XOR the result */
|
|
||||||
}
|
|
||||||
|
|
||||||
return crc16;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if CONFIG_CPU == TCC730
|
#if CONFIG_CPU == TCC730
|
||||||
static unsigned flash_word_temp __attribute__ ((section (".idata")));
|
static unsigned flash_word_temp __attribute__ ((section (".idata")));
|
||||||
|
@ -444,7 +410,7 @@ bool dbg_hw_info(void)
|
||||||
int rom_version = *(unsigned short*)0x20000fe;
|
int rom_version = *(unsigned short*)0x20000fe;
|
||||||
unsigned manu, id; /* flash IDs */
|
unsigned manu, id; /* flash IDs */
|
||||||
bool got_id; /* flag if we managed to get the flash IDs */
|
bool got_id; /* flag if we managed to get the flash IDs */
|
||||||
unsigned rom_crc = 0xFFFF; /* CRC16 of the boot ROM */
|
unsigned rom_crc = 0xffffffff; /* CRC32 of the boot ROM */
|
||||||
bool has_bootrom; /* flag for boot ROM present */
|
bool has_bootrom; /* flag for boot ROM present */
|
||||||
int oldmode; /* saved memory guard mode */
|
int oldmode; /* saved memory guard mode */
|
||||||
|
|
||||||
|
@ -474,7 +440,7 @@ bool dbg_hw_info(void)
|
||||||
if (has_bootrom) /* if ROM and Flash different */
|
if (has_bootrom) /* if ROM and Flash different */
|
||||||
{
|
{
|
||||||
/* calculate CRC16 checksum of boot ROM */
|
/* calculate CRC16 checksum of boot ROM */
|
||||||
rom_crc = crc_16((unsigned char*)0x0000, 64*1024);
|
rom_crc = crc_32((unsigned char*)0x0000, 64*1024, 0xffffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
system_memory_guard(oldmode); /* re-enable memory guard */
|
system_memory_guard(oldmode); /* re-enable memory guard */
|
||||||
|
@ -505,9 +471,10 @@ bool dbg_hw_info(void)
|
||||||
|
|
||||||
if (has_bootrom)
|
if (has_bootrom)
|
||||||
{
|
{
|
||||||
snprintf(buf, 32-3, "ROM CRC: 0x%04x", rom_crc);
|
if (rom_crc == 0x56DBA4EE) /* known Version 1 */
|
||||||
if (rom_crc == 0x222F) /* known Version 1 */
|
snprintf(buf, 32, "Boot ROM: V1");
|
||||||
strcat(buf, " V1");
|
else
|
||||||
|
snprintf(buf, 32, "ROMcrc: 0x%08x", rom_crc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -578,7 +545,7 @@ bool dbg_hw_info(void)
|
||||||
int rom_version = *(unsigned short*)0x20000fe;
|
int rom_version = *(unsigned short*)0x20000fe;
|
||||||
unsigned manu, id; /* flash IDs */
|
unsigned manu, id; /* flash IDs */
|
||||||
bool got_id; /* flag if we managed to get the flash IDs */
|
bool got_id; /* flag if we managed to get the flash IDs */
|
||||||
unsigned rom_crc = 0xFFFF; /* CRC16 of the boot ROM */
|
unsigned rom_crc = 0xffffffff; /* CRC32 of the boot ROM */
|
||||||
bool has_bootrom; /* flag for boot ROM present */
|
bool has_bootrom; /* flag for boot ROM present */
|
||||||
int oldmode; /* saved memory guard mode */
|
int oldmode; /* saved memory guard mode */
|
||||||
|
|
||||||
|
@ -599,7 +566,7 @@ bool dbg_hw_info(void)
|
||||||
if (has_bootrom) /* if ROM and Flash different */
|
if (has_bootrom) /* if ROM and Flash different */
|
||||||
{
|
{
|
||||||
/* calculate CRC16 checksum of boot ROM */
|
/* calculate CRC16 checksum of boot ROM */
|
||||||
rom_crc = crc_16((unsigned char*)0x0000, 64*1024);
|
rom_crc = crc_32((unsigned char*)0x0000, 64*1024, 0xffffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
system_memory_guard(oldmode); /* re-enable memory guard */
|
system_memory_guard(oldmode); /* re-enable memory guard */
|
||||||
|
@ -634,7 +601,15 @@ bool dbg_hw_info(void)
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (has_bootrom)
|
if (has_bootrom)
|
||||||
snprintf(buf, 32, "RomCRC:%04x", rom_crc);
|
{
|
||||||
|
if (rom_crc == 0x56DBA4EE) /* known Version 1 */
|
||||||
|
snprintf(buf, 32, "BootROM: V1");
|
||||||
|
else if (rom_crc == 0x358099E8)
|
||||||
|
snprintf(buf, 32, "BootROM: V2");
|
||||||
|
/* alternative boot ROM found in one single player so far */
|
||||||
|
else
|
||||||
|
snprintf(buf, 32, "R: %08x", rom_crc);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
snprintf(buf, 32, "BootROM: no");
|
snprintf(buf, 32, "BootROM: no");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue