1cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik/**************************************************************** 2cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 3cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik Siano Mobile Silicon, Inc. 4cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik MDTV receiver kernel modules. 5cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik Copyright (C) 2006-2009, Uri Shkolnik 6cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 7cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik This program is free software: you can redistribute it and/or modify 8cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik it under the terms of the GNU General Public License as published by 9cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik the Free Software Foundation, either version 2 of the License, or 10cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik (at your option) any later version. 11cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 12cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik This program is distributed in the hope that it will be useful, 13cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik but WITHOUT ANY WARRANTY; without even the implied warranty of 14cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik GNU General Public License for more details. 16cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 17cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik You should have received a copy of the GNU General Public License 18cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik along with this program. If not, see <http://www.gnu.org/licenses/>. 19cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 20cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik ****************************************************************/ 21cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 2235a246363ec41e7b19f7887a97ef3d01ab41356aPaul Gortmaker#include <linux/export.h> 23cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#include <asm/byteorder.h> 24cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 25cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#include "smsendian.h" 26cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#include "smscoreapi.h" 27cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 28cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnikvoid smsendian_handle_tx_message(void *buffer) 29cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik{ 30cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#ifdef __BIG_ENDIAN 31cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik struct SmsMsgData_ST *msg = (struct SmsMsgData_ST *)buffer; 32cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik int i; 33cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik int msgWords; 34cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 35cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik switch (msg->xMsgHeader.msgType) { 36cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik case MSG_SMS_DATA_DOWNLOAD_REQ: 37cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik { 38cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik msg->msgData[0] = le32_to_cpu(msg->msgData[0]); 39cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik break; 40cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 41cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 42cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik default: 43cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik msgWords = (msg->xMsgHeader.msgLength - 44cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik sizeof(struct SmsMsgHdr_ST))/4; 45cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 46cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik for (i = 0; i < msgWords; i++) 47cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik msg->msgData[i] = le32_to_cpu(msg->msgData[i]); 48cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 49cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik break; 50cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 51cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#endif /* __BIG_ENDIAN */ 52cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik} 532c5582e58ce2982fd64da21907dfad4061fc1f71Mauro Carvalho ChehabEXPORT_SYMBOL_GPL(smsendian_handle_tx_message); 54cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 55cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnikvoid smsendian_handle_rx_message(void *buffer) 56cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik{ 57cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#ifdef __BIG_ENDIAN 58cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik struct SmsMsgData_ST *msg = (struct SmsMsgData_ST *)buffer; 59cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik int i; 60cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik int msgWords; 61cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 62cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik switch (msg->xMsgHeader.msgType) { 63cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik case MSG_SMS_GET_VERSION_EX_RES: 64cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik { 65cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik struct SmsVersionRes_ST *ver = 66cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik (struct SmsVersionRes_ST *) msg; 67cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik ver->ChipModel = le16_to_cpu(ver->ChipModel); 68cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik break; 69cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 70cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 71cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik case MSG_SMS_DVBT_BDA_DATA: 72cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik case MSG_SMS_DAB_CHANNEL: 73cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik case MSG_SMS_DATA_MSG: 74cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik { 75cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik break; 76cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 77cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 78cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik default: 79cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik { 80cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik msgWords = (msg->xMsgHeader.msgLength - 81cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik sizeof(struct SmsMsgHdr_ST))/4; 82cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 83cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik for (i = 0; i < msgWords; i++) 84cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik msg->msgData[i] = le32_to_cpu(msg->msgData[i]); 85cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 86cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik break; 87cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 88cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik } 89cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#endif /* __BIG_ENDIAN */ 90cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik} 912c5582e58ce2982fd64da21907dfad4061fc1f71Mauro Carvalho ChehabEXPORT_SYMBOL_GPL(smsendian_handle_rx_message); 92cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 93cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnikvoid smsendian_handle_message_header(void *msg) 94cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik{ 95cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#ifdef __BIG_ENDIAN 96cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik struct SmsMsgHdr_ST *phdr = (struct SmsMsgHdr_ST *)msg; 97cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik 98cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik phdr->msgType = le16_to_cpu(phdr->msgType); 99cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik phdr->msgLength = le16_to_cpu(phdr->msgLength); 100cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik phdr->msgFlags = le16_to_cpu(phdr->msgFlags); 101cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik#endif /* __BIG_ENDIAN */ 102cb17f9047d2c6f248f2f87f4783ca90db7b3f445Uri Shkolnik} 1032c5582e58ce2982fd64da21907dfad4061fc1f71Mauro Carvalho ChehabEXPORT_SYMBOL_GPL(smsendian_handle_message_header); 104