brintos

brintos / linux-shallow public Read only

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