2009-04-20 20:00:52 +04:00
/****************************************************************
Siano Mobile Silicon , Inc .
MDTV receiver kernel modules .
Copyright ( C ) 2006 - 2009 , Uri Shkolnik
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation , either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2011-08-01 23:26:38 +04:00
# include <linux/export.h>
2009-04-20 20:00:52 +04:00
# include <asm/byteorder.h>
# include "smsendian.h"
# include "smscoreapi.h"
void smsendian_handle_tx_message ( void * buffer )
{
# ifdef __BIG_ENDIAN
struct SmsMsgData_ST * msg = ( struct SmsMsgData_ST * ) buffer ;
int i ;
int msgWords ;
switch ( msg - > xMsgHeader . msgType ) {
case MSG_SMS_DATA_DOWNLOAD_REQ :
{
msg - > msgData [ 0 ] = le32_to_cpu ( msg - > msgData [ 0 ] ) ;
break ;
}
default :
msgWords = ( msg - > xMsgHeader . msgLength -
sizeof ( struct SmsMsgHdr_ST ) ) / 4 ;
for ( i = 0 ; i < msgWords ; i + + )
msg - > msgData [ i ] = le32_to_cpu ( msg - > msgData [ i ] ) ;
break ;
}
# endif /* __BIG_ENDIAN */
}
2009-05-14 16:35:26 +04:00
EXPORT_SYMBOL_GPL ( smsendian_handle_tx_message ) ;
2009-04-20 20:00:52 +04:00
void smsendian_handle_rx_message ( void * buffer )
{
# ifdef __BIG_ENDIAN
struct SmsMsgData_ST * msg = ( struct SmsMsgData_ST * ) buffer ;
int i ;
int msgWords ;
switch ( msg - > xMsgHeader . msgType ) {
case MSG_SMS_GET_VERSION_EX_RES :
{
struct SmsVersionRes_ST * ver =
( struct SmsVersionRes_ST * ) msg ;
ver - > ChipModel = le16_to_cpu ( ver - > ChipModel ) ;
break ;
}
case MSG_SMS_DVBT_BDA_DATA :
case MSG_SMS_DAB_CHANNEL :
case MSG_SMS_DATA_MSG :
{
break ;
}
default :
{
msgWords = ( msg - > xMsgHeader . msgLength -
sizeof ( struct SmsMsgHdr_ST ) ) / 4 ;
for ( i = 0 ; i < msgWords ; i + + )
msg - > msgData [ i ] = le32_to_cpu ( msg - > msgData [ i ] ) ;
break ;
}
}
# endif /* __BIG_ENDIAN */
}
2009-05-14 16:35:26 +04:00
EXPORT_SYMBOL_GPL ( smsendian_handle_rx_message ) ;
2009-04-20 20:00:52 +04:00
void smsendian_handle_message_header ( void * msg )
{
# ifdef __BIG_ENDIAN
struct SmsMsgHdr_ST * phdr = ( struct SmsMsgHdr_ST * ) msg ;
phdr - > msgType = le16_to_cpu ( phdr - > msgType ) ;
phdr - > msgLength = le16_to_cpu ( phdr - > msgLength ) ;
phdr - > msgFlags = le16_to_cpu ( phdr - > msgFlags ) ;
# endif /* __BIG_ENDIAN */
}
2009-05-14 16:35:26 +04:00
EXPORT_SYMBOL_GPL ( smsendian_handle_message_header ) ;