]> Git Repo - J-linux.git/blob - drivers/media/common/siano/smsendian.c
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / media / common / siano / smsendian.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /****************************************************************
3
4  Siano Mobile Silicon, Inc.
5  MDTV receiver kernel modules.
6  Copyright (C) 2006-2009, Uri Shkolnik
7
8
9  ****************************************************************/
10
11 #include <linux/export.h>
12 #include <asm/byteorder.h>
13
14 #include "smsendian.h"
15 #include "smscoreapi.h"
16
17 void smsendian_handle_tx_message(void *buffer)
18 {
19 #ifdef __BIG_ENDIAN
20         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 }
43 EXPORT_SYMBOL_GPL(smsendian_handle_tx_message);
44
45 void smsendian_handle_rx_message(void *buffer)
46 {
47 #ifdef __BIG_ENDIAN
48         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 }
82 EXPORT_SYMBOL_GPL(smsendian_handle_rx_message);
83
84 void smsendian_handle_message_header(void *msg)
85 {
86 #ifdef __BIG_ENDIAN
87         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 }
94 EXPORT_SYMBOL_GPL(smsendian_handle_message_header);
This page took 0.031529 seconds and 4 git commands to generate.