diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/arm/gp32/smc/smc.c | 78 |
1 files changed, 39 insertions, 39 deletions
diff --git a/c/src/lib/libbsp/arm/gp32/smc/smc.c b/c/src/lib/libbsp/arm/gp32/smc/smc.c index f204f7456c..118eaffc43 100644 --- a/c/src/lib/libbsp/arm/gp32/smc/smc.c +++ b/c/src/lib/libbsp/arm/gp32/smc/smc.c @@ -1,7 +1,7 @@ /* smc.c -- s3c2400 smc disk block device implementation - Squidge's SMC Low-level access routines. - Inspired and derived from routines provided by Samsung Electronics M/M R&D Center & FireFly. + Squidge's SMC Low-level access routines. + Inspired and derived from routines provided by Samsung Electronics M/M R&D Center & FireFly. */ @@ -96,7 +96,7 @@ static void sm_write( uint8_t data) static uint8_t sm_read(void) { uint8_t data; - + rPDDAT &= (~0x100); data = rPBDAT & 0xFF; rPDDAT |= 0x100; @@ -135,7 +135,7 @@ static uint8_t sm_status() void smc_read_id( uint8_t* buf, uint32_t length) { - + uint32_t i; sm_chip_en(); @@ -163,8 +163,8 @@ void smc_read_id( uint8_t* buf, uint32_t length) uint8_t smc_read_page (uint32_t lpage, uint8_t* buf) { uint32_t block, page, i; - - /* convert logical block to physical block + + /* convert logical block to physical block and then convert into page suitable for read1 command... */ block = lpage >> 5; @@ -174,9 +174,9 @@ uint8_t smc_read_page (uint32_t lpage, uint8_t* buf) } else return 0; - + sm_chip_en(); - + sm_cle_en(); sm_write_en(); sm_write(READ1_CMD); @@ -191,20 +191,20 @@ uint8_t smc_read_page (uint32_t lpage, uint8_t* buf) if (smc_info.mb >= 64) sm_write( (uint8_t)(page >> 16)); sm_write_dis(); sm_ale_dis(); - + sm_busy(); - + sm_read_en(); for (i = 0; i < 512; i++) - { + { *buf = sm_read(); buf++; } sm_read_dis(); sm_chip_dis(); - + sm_busy(); - return 1; + return 1; } void smc_read_spare( uint32_t page, uint8_t* buf, uint8_t length) @@ -257,7 +257,7 @@ void smc_make_l2p(void) { /* read physical block - first page */ smc_read_spare( pblock*smc_info.pages_per_block, (uint8_t*)&data, 16); - + zone = pblock >> 10; /* divide by 1024 to get zone */ if ((data[5] == 0xFF) && ((data[6]&0xF8) == 0x10)) { @@ -282,7 +282,7 @@ void smc_make_l2p(void) { smc_p2l[pblock] = BLOCK_RESERVED; cnt3++; - } + } } } } @@ -327,7 +327,7 @@ void smc_init( void) { unsigned char buf[32]; int i; - + /* reset smc */ sm_chip_en(); sm_cle_en(); @@ -335,16 +335,16 @@ void smc_init( void) sm_write(0xFF); sm_write_dis(); sm_cle_dis(); - for(i=0;i<10;i++); + for(i=0;i<10;i++); sm_busy(); sm_chip_dis(); - + smc_read_id (buf, 4); smc_detect (buf[0], buf[1], buf[2]); printk ("SMC: [%02X-%02X-%02X-%02X]\n", buf[0], buf[1], buf[2], buf[3]); printk ("SMC size: %dMB detected\n",smc_info.mb); smc_make_l2p(); -} +} /********** * Function: sm_ECCEncode (completely ripped, unaltered, from the samsung routines) @@ -352,7 +352,7 @@ void smc_init( void) * - adopted from "ECC Algorithm for SmartMedia V3.0" * by Memory Product & Technology, Samsung Electronics Co. (ecc30.pdf) **********/ -int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) +int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) { uint32_t i, j; uint8_t paritr[256], tmp = 0, tmp2 = 0; @@ -368,13 +368,13 @@ int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) uint8_t* paritr_ptr; paritr_ptr = paritr; - for (i = 0; i < 256; ++i, ++paritr_ptr, ++p_buf) + for (i = 0; i < 256; ++i, ++paritr_ptr, ++p_buf) { paritc ^= *p_buf; tmp = (*p_buf & 0xf0) >> 4; tmp2 = *p_buf & 0x0f; - switch (tmp) + switch (tmp) { case 0: case 3: @@ -416,79 +416,79 @@ int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) parit4_1 = parit7c ^ parit6c ^ parit5c ^ parit4c; paritr_ptr = paritr; - for (i = 0; i < 256; ++i, ++paritr_ptr) + for (i = 0; i < 256; ++i, ++paritr_ptr) { sum ^= *paritr_ptr; } paritr_ptr = paritr; - for (i = 0; i < 256; i += 2, paritr_ptr += 2) + for (i = 0; i < 256; i += 2, paritr_ptr += 2) { parit8_2 ^= *paritr_ptr; } paritr_ptr = paritr; - for (i = 0; i < 256; i += 4, paritr_ptr += 4) + for (i = 0; i < 256; i += 4, paritr_ptr += 4) { parit16_2 ^= *paritr_ptr; parit16_2 ^= *(paritr_ptr + 1); } paritr_ptr = paritr; - for (i = 0; i < 256; i += 8, paritr_ptr += 8) + for (i = 0; i < 256; i += 8, paritr_ptr += 8) { - for (j = 0; j <= 3; ++j) + for (j = 0; j <= 3; ++j) { parit32_2 ^= *(paritr_ptr + j); } } paritr_ptr = paritr; - for (i = 0; i < 256; i += 16, paritr_ptr += 16) + for (i = 0; i < 256; i += 16, paritr_ptr += 16) { - for (j = 0; j <= 7; ++j) + for (j = 0; j <= 7; ++j) { parit64_2 ^= *(paritr_ptr + j); } } paritr_ptr = paritr; - for (i = 0; i < 256; i += 32, paritr_ptr += 32) + for (i = 0; i < 256; i += 32, paritr_ptr += 32) { - for (j = 0; j <= 15; ++j) + for (j = 0; j <= 15; ++j) { parit128_2 ^= *(paritr_ptr + j); } } paritr_ptr = paritr; - for (i = 0; i < 256; i += 64, paritr_ptr += 64) + for (i = 0; i < 256; i += 64, paritr_ptr += 64) { - for (j = 0; j <= 31; ++j) + for (j = 0; j <= 31; ++j) { parit256_2 ^= *(paritr_ptr + j); } } paritr_ptr = paritr; - for (i = 0; i < 256; i += 128, paritr_ptr += 128) + for (i = 0; i < 256; i += 128, paritr_ptr += 128) { - for (j = 0; j <= 63; ++j) + for (j = 0; j <= 63; ++j) { parit512_2 ^= *(paritr_ptr + j); } } paritr_ptr = paritr; - for (i = 0; i < 256; i += 256, paritr_ptr += 256) + for (i = 0; i < 256; i += 256, paritr_ptr += 256) { - for (j = 0; j <= 127; ++j) + for (j = 0; j <= 127; ++j) { parit1024_2 ^= *(paritr_ptr + j); } } - if (sum==0) + if (sum==0) { parit1024_1 = parit1024_2; parit512_1 = parit512_2; @@ -499,7 +499,7 @@ int sm_ECCEncode(const uint8_t * p_buf, uint8_t * p_ecc) parit16_1 = parit16_2; parit8_1 = parit8_2; } - else + else { parit1024_1 = parit1024_2 ? 0 : 1; parit512_1 = parit512_2 ? 0 : 1; |