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