From: ppisa Date: Mon, 14 Feb 2005 12:46:43 +0000 (+0000) Subject: Updated to use readw and writew X-Git-Tag: CLT_COMM_CAN-lincan-0_3_1~21 X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/commitdiff_plain/45776fbe66c5e705130cfc0f3cfaa730e1aa5f59 Updated to use readw and writew --- diff --git a/lincan/src/unican_cl2.c b/lincan/src/unican_cl2.c index e0d30e1..b576c5e 100644 --- a/lincan/src/unican_cl2.c +++ b/lincan/src/unican_cl2.c @@ -32,6 +32,7 @@ UCEL A FUNKCE: /* includes */ #include "../include/canmsg.h" +#include "../include/can_sysdep.h" #include "../include/unican_types.h" #include "../include/unican_cl2.h" #include "linux/delay.h" @@ -104,7 +105,7 @@ eCL2_RESULT cl2_test_card for ( i = 0; i < 10000; i++ ) { if ( isAA && is55 ) return CL2_OK; - tmpWord = *((volatile U16*)(card->baseAddressPtr)); + tmpWord = unican_readw(card->baseAddressPtr); /*printk("cl2_test_card: %08lx %04x\n", (long)card->baseAddressPtr, tmpWord);*/ udelay(100); if ( (tmpWord & 0x00FF) == 0x00AA ) isAA = TRUE; @@ -132,7 +133,7 @@ eCL2_RESULT cl2_reset_card sCAN_CARD *card /* Pointer to card structure */ ) { - *((U16*)(card->baseAddressPtr + CL2_RESET_REGISTER)) = 0x0000; + unican_writew(0x0000, card->baseAddressPtr + CL2_RESET_REGISTER); return CL2_OK; } /* cl2_reset_card */ @@ -153,7 +154,7 @@ eCL2_RESULT cl2_get_version U16 *version /* returns card version */ ) { - *version = *((U16*)(card->baseAddressPtr + CL2_VERSION_REGISTER)); + *version = unican_readw(card->baseAddressPtr + CL2_VERSION_REGISTER); return CL2_OK; } /* cl2_get_version */ @@ -175,7 +176,7 @@ eCL2_RESULT cl2_gen_interrupt sCAN_CARD *card /* Pointer to card structure */ ) { - *((U16*)(card->baseAddressPtr + CL2_GEN_INT_REGISTER)) = 0x0000; + unican_writew(0x0000, card->baseAddressPtr + CL2_GEN_INT_REGISTER); return CL2_OK; } /* cl2_gen_interrupt */ @@ -197,7 +198,7 @@ eCL2_RESULT cl2_start_it sCAN_CARD *card /* Pointer to card structure */ ) { - *((U16*)(card->baseAddressPtr + CL2_START_IT_REGISTER)) = 0x0000; + unican_writew(0x0000, card->baseAddressPtr + CL2_START_IT_REGISTER); return CL2_OK; } /* cl2_start_it */ @@ -217,7 +218,7 @@ eCL2_RESULT cl2_clear_interrupt sCAN_CARD *card /* Pointer to card structure */ ) { - *((U16*)(card->baseAddressPtr + CL2_CLEAR_INT_REGISTER)) = 0x0000; + unican_writew(0x0000, card->baseAddressPtr + CL2_CLEAR_INT_REGISTER); return CL2_OK; } /* cl2_clear_interrupt */ @@ -242,10 +243,10 @@ eCL2_RESULT cl2_int_mode ) { if ( mode > INT_MODE_ALL ) return CL2_BAD_PARAM; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = mode; - *((U16*)card->commandRegister) = ((U16)cmCL2_INT_MODE + CL2_COMMAND_VALID); + unican_writew(mode, card->dataPtr); + unican_writew(((U16)cmCL2_INT_MODE + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_int_mode */ @@ -267,10 +268,10 @@ eCL2_RESULT cl2_iit_mode BOOLEAN1 onoff /* IIT mode - TRUE=on, FALSE=off */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) return + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)onoff; - *((U16*)card->commandRegister) = ((U16)cmCL2_IIT_MODE + CL2_COMMAND_VALID); + unican_writew((U16)onoff, card->dataPtr); + unican_writew(((U16)cmCL2_IIT_MODE + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_iit_mode */ @@ -292,10 +293,10 @@ eCL2_RESULT cl2_sync_mode BOOLEAN1 onoff /* Sync mode - TRUE=on, FALSE=off */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)onoff; - *((U16*)card->commandRegister) = ((U16)cmCL2_SYNC_MODE + CL2_COMMAND_VALID); + unican_writew((U16)onoff, card->dataPtr); + unican_writew(((U16)cmCL2_SYNC_MODE + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_sync_mode */ @@ -317,10 +318,10 @@ eCL2_RESULT cl2_rtr_mode BOOLEAN1 onoff /* RTR mode - TRUE=on, FALSE=off */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)onoff; - *((U16*)card->commandRegister) = ((U16)cmCL2_RTR_MODE + CL2_COMMAND_VALID); + unican_writew((U16)onoff, card->dataPtr); + unican_writew(((U16)cmCL2_RTR_MODE + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_rtr_mode */ @@ -350,10 +351,10 @@ eCL2_RESULT cl2_buf_size ) { if ( bufSize > 64 ) return CL2_BAD_PARAM; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = bufSize; - *((U16*)card->commandRegister) = ((U16)cmCL2_BUF_SIZE + CL2_COMMAND_VALID); + unican_writew(bufSize, card->dataPtr); + unican_writew(((U16)cmCL2_BUF_SIZE + CL2_COMMAND_VALID), card->commandRegister); card->syncTxBufSize = bufSize; card->asyncTxBufSize = 64 - bufSize; card->syncTxBufPtr = card->syncTxBufBase; @@ -382,10 +383,10 @@ eCL2_RESULT cl2_set_iit U16 iit /* time period in x100 us */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = iit; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_IIT + CL2_COMMAND_VALID); + unican_writew(iit, card->dataPtr); + unican_writew(((U16)cmCL2_SET_IIT + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_set_iit */ @@ -406,10 +407,9 @@ eCL2_RESULT cl2_start_firmware sCAN_CARD *card /* Pointer to card structure */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->commandRegister) = ((U16)cmCL2_START_FIRMWARE + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_START_FIRMWARE + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_start_firmware */ @@ -434,11 +434,10 @@ eCL2_RESULT cl2_set_rec_mode BOOLEAN1 mode /* Mode - TRUE=ext, FALSE=std */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)mode; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_REC_MODE + - CL2_COMMAND_VALID); + unican_writew((U16)mode, card->dataPtr); + unican_writew((U16)cmCL2_SET_REC_MODE + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_rec_mode */ @@ -460,11 +459,10 @@ eCL2_RESULT cl2_clr_rx_buffer sCAN_CARD *card /* Pointer to card structure */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; card->rxBufPtr = card->rxBufBase; - *((U16*)card->commandRegister) = ((U16)cmCL2_CLR_RX_BUFFER + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_CLR_RX_BUFFER + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_clr_rx_buffer */ @@ -486,11 +484,10 @@ eCL2_RESULT cl2_clr_sync_buffer sCAN_CARD *card /* Pointer to card structure */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; card->syncTxBufPtr = card->syncTxBufBase; - *((U16*)card->commandRegister) = ((U16)cmCL2_CLR_SYNC_BUFFER + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_CLR_SYNC_BUFFER + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_clr_sync_buffer */ @@ -512,11 +509,10 @@ eCL2_RESULT cl2_clr_async_buffer sCAN_CARD *card /* Pointer to card structure */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; card->asyncTxBufPtr = card->syncTxBufBase + card->syncTxBufSize*16; - *((U16*)card->commandRegister) = ((U16)cmCL2_CLR_ASYNC_BUFFER + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_CLR_ASYNC_BUFFER + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_clr_async_buffer */ @@ -540,10 +536,9 @@ eCL2_RESULT cl2_send_time_sync sCAN_CARD *card /* Pointer to card structure */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) return - CL2_COMMAND_BUSY; - *((U16*)card->commandRegister) = ((U16)cmCL2_SEND_TIME_SYNC + - CL2_COMMAND_VALID); + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) + return CL2_COMMAND_BUSY; + unican_writew((U16)cmCL2_SEND_TIME_SYNC + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_send_time_sync */ @@ -570,7 +565,7 @@ eCL2_RESULT cl2_set_time_cobid U16 cobidL, cobidH; U16 *ptr = (U16 *)card->dataPtr; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; if ( COBID & CL2_TMP_EXHIGH ) /* standard or extended format? */ @@ -594,8 +589,7 @@ eCL2_RESULT cl2_set_time_cobid *ptr = 0; } - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_TIME_COBID + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_SET_TIME_COBID + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_time_cobid */ @@ -622,11 +616,10 @@ eCL2_RESULT cl2_set_receive_limit ) { if ( limit > 127 ) return CL2_BAD_PARAM; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = limit; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_RECEIVE_LIMIT + - CL2_COMMAND_VALID); + unican_writew(limit, card->dataPtr); + unican_writew((U16)cmCL2_SET_RECEIVE_LIMIT + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_receive_limit */ @@ -658,7 +651,7 @@ eCL2_RESULT cl2_download_rtr_list U32 COBID; U16 cobidH, cobidL, i; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) return + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; if ( rtrList->nb > 64 ) return CL2_BAD_PARAM; @@ -694,8 +687,7 @@ eCL2_RESULT cl2_download_rtr_list ptrRTR++; } - *((U16*)card->commandRegister) = ((U16)cmCL2_DOWNLOAD_RTR_LIST + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_DOWNLOAD_RTR_LIST + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_download_rtrlist */ @@ -725,7 +717,7 @@ eCL2_RESULT cl2_subscribe_rtr U32 COBID; U16 cobidH, cobidL; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; if ( RTRnumber > 9 ) return CL2_BAD_PARAM; @@ -755,8 +747,7 @@ eCL2_RESULT cl2_subscribe_rtr *ptrU16 = 0; } - *((U16*)card->commandRegister) = ((U16)cmCL2_SUBSCRIBE_RTR + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_SUBSCRIBE_RTR + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_subscribe_rtr */ @@ -782,7 +773,7 @@ eCL2_RESULT cl2_desubscribe_rtr { U16 i; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; for ( i = 0; i < 10; i++ ) @@ -796,9 +787,8 @@ eCL2_RESULT cl2_desubscribe_rtr if ( i >= 10 ) return CL2_BAD_PARAM; - *((U16*)card->dataPtr) = i; - *((U16*)card->commandRegister) = ((U16)cmCL2_DESUBSCRIBE_RTR + - CL2_COMMAND_VALID); + unican_writew(i, card->dataPtr); + unican_writew((U16)cmCL2_DESUBSCRIBE_RTR + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_desubscribe_rtr */ @@ -826,7 +816,7 @@ eCL2_RESULT cl2_set_sync_cobid U16 cobidL, cobidH; U16 *ptr = (U16 *)card->dataPtr; - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; if ( COBID & CL2_TMP_EXHIGH ) /* standard or extended format? */ @@ -850,7 +840,7 @@ eCL2_RESULT cl2_set_sync_cobid *ptr = 0; } - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_COBID + CL2_COMMAND_VALID); + unican_writew(((U16)cmCL2_SET_COBID + CL2_COMMAND_VALID), card->commandRegister); return CL2_OK; } /* cl2_set_sync_cobid */ @@ -874,11 +864,10 @@ eCL2_RESULT cl2_set_sync_period U16 period /* period in x100 us */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)period; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_SYNC_PERIOD + - CL2_COMMAND_VALID); + unican_writew((U16)period, card->dataPtr); + unican_writew((U16)cmCL2_SET_SYNC_PERIOD + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_sync_period */ @@ -902,11 +891,10 @@ eCL2_RESULT cl2_set_sync_window U16 window /* period in x100 us */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = (U16)window; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_SYNC_WINDOW + - CL2_COMMAND_VALID); + unican_writew((U16)window, card->dataPtr); + unican_writew((U16)cmCL2_SET_SYNC_WINDOW + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_sync_window */ @@ -929,11 +917,10 @@ eCL2_RESULT cl2_set_bitrate U16 bitrate /* CAN bitrate */ ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->dataPtr) = bitrate; - *((U16*)card->commandRegister) = ((U16)cmCL2_SET_BITRATE + - CL2_COMMAND_VALID); + unican_writew(bitrate, card->dataPtr); + unican_writew((U16)cmCL2_SET_BITRATE + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_set_bitrate */ @@ -954,10 +941,9 @@ eCL2_RESULT cl2_bus_reset sCAN_CARD *card ) { - if ( *(U16*)card->commandRegister & CL2_COMMAND_VALID ) + if ( unican_readw(card->commandRegister) & CL2_COMMAND_VALID ) return CL2_COMMAND_BUSY; - *((U16*)card->commandRegister) = ((U16)cmCL2_BUS_RESET + - CL2_COMMAND_VALID); + unican_writew((U16)cmCL2_BUS_RESET + CL2_COMMAND_VALID, card->commandRegister); return CL2_OK; } /* cl2_bus_reset */ @@ -1042,7 +1028,7 @@ eCL2_RESULT cl2_send_sync } tmpU16 = (((U16)cobidH) & 0xFF00) | CL2_MESSAGE_VALID; - *(U16*)card->syncTxBufPtr = tmpU16; + unican_writew(tmpU16, card->syncTxBufPtr); if ( (card->syncTxBufBase + card->syncTxBufSize*16) <= (card->syncTxBufPtr += 16) ) @@ -1133,7 +1119,7 @@ eCL2_RESULT cl2_send_async } tmpU16 = (((U16)cobidH) & 0xFF00) | CL2_MESSAGE_VALID; - *(U16*)card->asyncTxBufPtr = tmpU16; + unican_writew(tmpU16, card->asyncTxBufPtr); if ( (card->asyncTxBufBase + card->asyncTxBufSize*16) <= (card->asyncTxBufPtr += 16) ) @@ -1261,7 +1247,7 @@ eCL2_RESULT cl2_receive_data { canMessage->timeStamp = *ptrU16 << 8 | *ptrU16 >> 8; } - *(U16*)card->rxBufPtr = 0x0000; + unican_writew(0x0000, card->rxBufPtr); /* increment rx-buffer pointer */ if ( (card->rxBufBase + card->rxBufSize*16 ) <= (card->rxBufPtr += 16) )