1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-or-later 2*4882a593Smuzhiyun /**************************************************************** 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun Siano Mobile Silicon, Inc. 5*4882a593Smuzhiyun MDTV receiver kernel modules. 6*4882a593Smuzhiyun Copyright (C) 2006-2009, Uri Shkolnik 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun ****************************************************************/ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/export.h> 12*4882a593Smuzhiyun #include <asm/byteorder.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include "smsendian.h" 15*4882a593Smuzhiyun #include "smscoreapi.h" 16*4882a593Smuzhiyun smsendian_handle_tx_message(void * buffer)17*4882a593Smuzhiyunvoid smsendian_handle_tx_message(void *buffer) 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun #ifdef __BIG_ENDIAN 20*4882a593Smuzhiyun struct sms_msg_data *msg = (struct sms_msg_data *)buffer; 21*4882a593Smuzhiyun int i; 22*4882a593Smuzhiyun int msg_words; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun switch (msg->x_msg_header.msg_type) { 25*4882a593Smuzhiyun case MSG_SMS_DATA_DOWNLOAD_REQ: 26*4882a593Smuzhiyun { 27*4882a593Smuzhiyun msg->msg_data[0] = le32_to_cpu((__force __le32)(msg->msg_data[0])); 28*4882a593Smuzhiyun break; 29*4882a593Smuzhiyun } 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun default: 32*4882a593Smuzhiyun msg_words = (msg->x_msg_header.msg_length - 33*4882a593Smuzhiyun sizeof(struct sms_msg_hdr))/4; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun for (i = 0; i < msg_words; i++) 36*4882a593Smuzhiyun msg->msg_data[i] = le32_to_cpu((__force __le32)msg->msg_data[i]); 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun break; 39*4882a593Smuzhiyun } 40*4882a593Smuzhiyun #endif /* __BIG_ENDIAN */ 41*4882a593Smuzhiyun } 42*4882a593Smuzhiyun EXPORT_SYMBOL_GPL(smsendian_handle_tx_message); 43*4882a593Smuzhiyun smsendian_handle_rx_message(void * buffer)44*4882a593Smuzhiyunvoid smsendian_handle_rx_message(void *buffer) 45*4882a593Smuzhiyun { 46*4882a593Smuzhiyun #ifdef __BIG_ENDIAN 47*4882a593Smuzhiyun struct sms_msg_data *msg = (struct sms_msg_data *)buffer; 48*4882a593Smuzhiyun int i; 49*4882a593Smuzhiyun int msg_words; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun switch (msg->x_msg_header.msg_type) { 52*4882a593Smuzhiyun case MSG_SMS_GET_VERSION_EX_RES: 53*4882a593Smuzhiyun { 54*4882a593Smuzhiyun struct sms_version_res *ver = 55*4882a593Smuzhiyun (struct sms_version_res *) msg; 56*4882a593Smuzhiyun ver->chip_model = le16_to_cpu((__force __le16)ver->chip_model); 57*4882a593Smuzhiyun break; 58*4882a593Smuzhiyun } 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun case MSG_SMS_DVBT_BDA_DATA: 61*4882a593Smuzhiyun case MSG_SMS_DAB_CHANNEL: 62*4882a593Smuzhiyun case MSG_SMS_DATA_MSG: 63*4882a593Smuzhiyun { 64*4882a593Smuzhiyun break; 65*4882a593Smuzhiyun } 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun default: 68*4882a593Smuzhiyun { 69*4882a593Smuzhiyun msg_words = (msg->x_msg_header.msg_length - 70*4882a593Smuzhiyun sizeof(struct sms_msg_hdr))/4; 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun for (i = 0; i < msg_words; i++) 73*4882a593Smuzhiyun msg->msg_data[i] = le32_to_cpu((__force __le32)msg->msg_data[i]); 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun break; 76*4882a593Smuzhiyun } 77*4882a593Smuzhiyun } 78*4882a593Smuzhiyun #endif /* __BIG_ENDIAN */ 79*4882a593Smuzhiyun } 80*4882a593Smuzhiyun EXPORT_SYMBOL_GPL(smsendian_handle_rx_message); 81*4882a593Smuzhiyun smsendian_handle_message_header(void * msg)82*4882a593Smuzhiyunvoid smsendian_handle_message_header(void *msg) 83*4882a593Smuzhiyun { 84*4882a593Smuzhiyun #ifdef __BIG_ENDIAN 85*4882a593Smuzhiyun struct sms_msg_hdr *phdr = (struct sms_msg_hdr *)msg; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun phdr->msg_type = le16_to_cpu((__force __le16)phdr->msg_type); 88*4882a593Smuzhiyun phdr->msg_length = le16_to_cpu((__force __le16)phdr->msg_length); 89*4882a593Smuzhiyun phdr->msg_flags = le16_to_cpu((__force __le16)phdr->msg_flags); 90*4882a593Smuzhiyun #endif /* __BIG_ENDIAN */ 91*4882a593Smuzhiyun } 92*4882a593Smuzhiyun EXPORT_SYMBOL_GPL(smsendian_handle_message_header); 93