Mercurial > flash_v2
comparison packages/devs/eth/cl/cs8900a/current/src/if_cs8900a.c @ 1397:9c818dd5d9fa
Updates for EC555 targets - from Bob Koninckx
| author | gthomas |
|---|---|
| date | Mon, 24 Nov 2003 14:28:13 +0000 |
| parents | 01d8c3c977d9 |
| children | bf994e1a516c |
comparison
equal
deleted
inserted
replaced
| 1396:72d234fe1607 | 1397:9c818dd5d9fa |
|---|---|
| 470 len = sg_list[i].len; | 470 len = sg_list[i].len; |
| 471 | 471 |
| 472 if (len > 0) { | 472 if (len > 0) { |
| 473 /* Finish the last word. */ | 473 /* Finish the last word. */ |
| 474 if (odd_byte) { | 474 if (odd_byte) { |
| 475 #if(CYG_BYTEORDER == CYG_LSBFIRST) | |
| 475 // Add data to the most significant byte | 476 // Add data to the most significant byte |
| 476 #if(CYG_BYTEORDER == CYG_LSBFIRST) | |
| 477 saved_data |= ((cyg_uint16)*data++) << 8; | 477 saved_data |= ((cyg_uint16)*data++) << 8; |
| 478 #elif(CYG_BYTEORDER == CYG_MSBFIRST) | 478 #elif(CYG_BYTEORDER == CYG_MSBFIRST) |
| 479 saved_data = ((cyg_uint16)*data++) | (saved_data << 8); | 479 // Add data to the least significant byte |
| 480 saved_data |= *data++; | |
| 480 #endif | 481 #endif |
| 481 HAL_WRITE_UINT16(cpd->base+CS8900A_RTDATA, saved_data); | 482 HAL_WRITE_UINT16(cpd->base+CS8900A_RTDATA, saved_data); |
| 482 len--; | 483 len--; |
| 483 odd_byte = false; | 484 odd_byte = false; |
| 484 } | 485 } |
| 485 if ((CYG_ADDRESS)data & 0x1 == 0) { | 486 if (((CYG_ADDRESS)data & 0x1) == 0) { |
| 486 /* Aligned on 16-bit boundary, so output contiguous words. */ | 487 /* Aligned on 16-bit boundary, so output contiguous words. */ |
| 487 sdata = (cyg_uint16 *)data; | 488 sdata = (cyg_uint16 *)data; |
| 488 while (len > 1) { | 489 while (len > 1) { |
| 489 HAL_WRITE_UINT16(cpd->base+CS8900A_RTDATA, *sdata++); | 490 HAL_WRITE_UINT16(cpd->base+CS8900A_RTDATA, *sdata++); |
| 490 len -= sizeof(cyg_uint16); | 491 len -= sizeof(cyg_uint16); |
| 504 } | 505 } |
| 505 } | 506 } |
| 506 /* Save last byte, if necessary. */ | 507 /* Save last byte, if necessary. */ |
| 507 if (len == 1) { | 508 if (len == 1) { |
| 508 saved_data = (cyg_uint16)*data; | 509 saved_data = (cyg_uint16)*data; |
| 510 #if CYG_BYTEORDER == CYG_MSBFIRST | |
| 511 saved_data = (saved_data << 8); | |
| 512 #endif | |
| 509 odd_byte = true; | 513 odd_byte = true; |
| 510 } | 514 } |
| 511 } | 515 } |
| 512 } | 516 } |
| 513 if (odd_byte) { | 517 if (odd_byte) { |
