aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2013-03-09 09:34:56 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-03-21 06:46:18 -0400
commit80ccb51a0f970ab0935a8be70b677ecbcdf74e3e (patch)
treecd3edecad8522016a7de2545d34468c09dc511ab /drivers/media
parentfe802fd92d6abd1fce2ae8d03a073807d25e9453 (diff)
[media] siano: simplify message endianness logic
Currently, every time a message is sent or received, the endiannes need to be fixed on big endian machines. This is currently done on every call to the send API, and on every msg reception logic. Instead of doing that, move it to the send/receive functions. That simplifies the logic and avoids the risk of forgetting to fix it somewhere. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/common/siano/smscoreapi.c14
-rw-r--r--drivers/media/common/siano/smsdvb.c8
-rw-r--r--drivers/media/mmc/siano/smssdio.c3
-rw-r--r--drivers/media/usb/siano/smsusb.c9
4 files changed, 9 insertions, 25 deletions
diff --git a/drivers/media/common/siano/smscoreapi.c b/drivers/media/common/siano/smscoreapi.c
index 9379ea7f8152..8c576a6e3829 100644
--- a/drivers/media/common/siano/smscoreapi.c
+++ b/drivers/media/common/siano/smscoreapi.c
@@ -37,7 +37,6 @@
37#include "smscoreapi.h" 37#include "smscoreapi.h"
38#include "sms-cards.h" 38#include "sms-cards.h"
39#include "smsir.h" 39#include "smsir.h"
40#include "smsendian.h"
41 40
42static int sms_dbg; 41static int sms_dbg;
43module_param_named(debug, sms_dbg, int, 0644); 42module_param_named(debug, sms_dbg, int, 0644);
@@ -807,8 +806,6 @@ static int smscore_init_ir(struct smscore_device_t *coredev)
807 msg->msgData[0] = coredev->ir.controller; 806 msg->msgData[0] = coredev->ir.controller;
808 msg->msgData[1] = coredev->ir.timeout; 807 msg->msgData[1] = coredev->ir.timeout;
809 808
810 smsendian_handle_tx_message(
811 (struct SmsMsgHdr_ST2 *)msg);
812 rc = smscore_sendrequest_and_wait(coredev, msg, 809 rc = smscore_sendrequest_and_wait(coredev, msg,
813 msg->xMsgHeader. msgLength, 810 msg->xMsgHeader. msgLength,
814 &coredev->ir_init_done); 811 &coredev->ir_init_done);
@@ -853,7 +850,6 @@ int smscore_configure_board(struct smscore_device_t *coredev)
853 MtuMsg.xMsgHeader.msgLength = sizeof(MtuMsg); 850 MtuMsg.xMsgHeader.msgLength = sizeof(MtuMsg);
854 MtuMsg.msgData[0] = board->mtu; 851 MtuMsg.msgData[0] = board->mtu;
855 852
856 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&MtuMsg);
857 coredev->sendrequest_handler(coredev->context, &MtuMsg, 853 coredev->sendrequest_handler(coredev->context, &MtuMsg,
858 sizeof(MtuMsg)); 854 sizeof(MtuMsg));
859 } 855 }
@@ -867,7 +863,6 @@ int smscore_configure_board(struct smscore_device_t *coredev)
867 sizeof(CrysMsg)); 863 sizeof(CrysMsg));
868 CrysMsg.msgData[0] = board->crystal; 864 CrysMsg.msgData[0] = board->crystal;
869 865
870 smsendian_handle_tx_message((struct SmsMsgHdr_S *)&CrysMsg);
871 coredev->sendrequest_handler(coredev->context, &CrysMsg, 866 coredev->sendrequest_handler(coredev->context, &CrysMsg,
872 sizeof(CrysMsg)); 867 sizeof(CrysMsg));
873 } 868 }
@@ -989,7 +984,6 @@ static int smscore_load_firmware_family2(struct smscore_device_t *coredev,
989 /* Entry point */ 984 /* Entry point */
990 msg->msgData[1] = firmware->Length; 985 msg->msgData[1] = firmware->Length;
991 msg->msgData[2] = 0; /* Regular checksum*/ 986 msg->msgData[2] = 0; /* Regular checksum*/
992 smsendian_handle_tx_message(msg);
993 rc = smscore_sendrequest_and_wait(coredev, msg, 987 rc = smscore_sendrequest_and_wait(coredev, msg,
994 msg->xMsgHeader.msgLength, 988 msg->xMsgHeader.msgLength,
995 &coredev->data_validity_done); 989 &coredev->data_validity_done);
@@ -1013,14 +1007,12 @@ static int smscore_load_firmware_family2(struct smscore_device_t *coredev,
1013 TriggerMsg->msgData[3] = 0; /* Parameter */ 1007 TriggerMsg->msgData[3] = 0; /* Parameter */
1014 TriggerMsg->msgData[4] = 4; /* Task ID */ 1008 TriggerMsg->msgData[4] = 4; /* Task ID */
1015 1009
1016 smsendian_handle_tx_message((struct SmsMsgHdr_S *)msg);
1017 rc = smscore_sendrequest_and_wait(coredev, TriggerMsg, 1010 rc = smscore_sendrequest_and_wait(coredev, TriggerMsg,
1018 TriggerMsg->xMsgHeader.msgLength, 1011 TriggerMsg->xMsgHeader.msgLength,
1019 &coredev->trigger_done); 1012 &coredev->trigger_done);
1020 } else { 1013 } else {
1021 SMS_INIT_MSG(&msg->xMsgHeader, MSG_SW_RELOAD_EXEC_REQ, 1014 SMS_INIT_MSG(&msg->xMsgHeader, MSG_SW_RELOAD_EXEC_REQ,
1022 sizeof(struct SmsMsgHdr_ST)); 1015 sizeof(struct SmsMsgHdr_ST));
1023 smsendian_handle_tx_message((struct SmsMsgHdr_S *)msg);
1024 rc = coredev->sendrequest_handler(coredev->context, msg, 1016 rc = coredev->sendrequest_handler(coredev->context, msg,
1025 msg->xMsgHeader.msgLength); 1017 msg->xMsgHeader.msgLength);
1026 } 1018 }
@@ -1305,7 +1297,6 @@ int smscore_init_device(struct smscore_device_t *coredev, int mode)
1305 sizeof(struct SmsMsgData_ST)); 1297 sizeof(struct SmsMsgData_ST));
1306 msg->msgData[0] = mode; 1298 msg->msgData[0] = mode;
1307 1299
1308 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)msg);
1309 rc = smscore_sendrequest_and_wait(coredev, msg, 1300 rc = smscore_sendrequest_and_wait(coredev, msg,
1310 msg->xMsgHeader. msgLength, 1301 msg->xMsgHeader. msgLength,
1311 &coredev->init_device_done); 1302 &coredev->init_device_done);
@@ -1526,8 +1517,6 @@ void smscore_onresponse(struct smscore_device_t *coredev,
1526 rc = client->onresponse_handler(client->context, cb); 1517 rc = client->onresponse_handler(client->context, cb);
1527 1518
1528 if (rc < 0) { 1519 if (rc < 0) {
1529 smsendian_handle_rx_message((struct SmsMsgData_ST *)phdr);
1530
1531 switch (phdr->msgType) { 1520 switch (phdr->msgType) {
1532 case MSG_SMS_ISDBT_TUNE_RES: 1521 case MSG_SMS_ISDBT_TUNE_RES:
1533 break; 1522 break;
@@ -2008,7 +1997,6 @@ int smscore_gpio_configure(struct smscore_device_t *coredev, u8 PinNum,
2008 pMsg->msgData[5] = 0; 1997 pMsg->msgData[5] = 0;
2009 } 1998 }
2010 1999
2011 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)pMsg);
2012 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen, 2000 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen,
2013 &coredev->gpio_configuration_done); 2001 &coredev->gpio_configuration_done);
2014 2002
@@ -2058,7 +2046,6 @@ int smscore_gpio_set_level(struct smscore_device_t *coredev, u8 PinNum,
2058 pMsg->msgData[1] = NewLevel; 2046 pMsg->msgData[1] = NewLevel;
2059 2047
2060 /* Send message to SMS */ 2048 /* Send message to SMS */
2061 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)pMsg);
2062 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen, 2049 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen,
2063 &coredev->gpio_set_level_done); 2050 &coredev->gpio_set_level_done);
2064 2051
@@ -2107,7 +2094,6 @@ int smscore_gpio_get_level(struct smscore_device_t *coredev, u8 PinNum,
2107 pMsg->msgData[1] = 0; 2094 pMsg->msgData[1] = 0;
2108 2095
2109 /* Send message to SMS */ 2096 /* Send message to SMS */
2110 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)pMsg);
2111 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen, 2097 rc = smscore_sendrequest_and_wait(coredev, pMsg, totalLen,
2112 &coredev->gpio_get_level_done); 2098 &coredev->gpio_get_level_done);
2113 2099
diff --git a/drivers/media/common/siano/smsdvb.c b/drivers/media/common/siano/smsdvb.c
index dbb807e3a212..6335574e9342 100644
--- a/drivers/media/common/siano/smsdvb.c
+++ b/drivers/media/common/siano/smsdvb.c
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
29#include "dvb_frontend.h" 29#include "dvb_frontend.h"
30 30
31#include "smscoreapi.h" 31#include "smscoreapi.h"
32#include "smsendian.h"
33#include "sms-cards.h" 32#include "sms-cards.h"
34 33
35DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); 34DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
@@ -324,8 +323,6 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb)
324 /*u32 MsgDataLen = phdr->msgLength - sizeof(struct SmsMsgHdr_ST);*/ 323 /*u32 MsgDataLen = phdr->msgLength - sizeof(struct SmsMsgHdr_ST);*/
325 bool is_status_update = false; 324 bool is_status_update = false;
326 325
327 smsendian_handle_rx_message((struct SmsMsgData_ST *) phdr);
328
329 switch (phdr->msgType) { 326 switch (phdr->msgType) {
330 case MSG_SMS_DVBT_BDA_DATA: 327 case MSG_SMS_DVBT_BDA_DATA:
331 dvb_dmx_swfilter(&client->demux, (u8 *)(phdr + 1), 328 dvb_dmx_swfilter(&client->demux, (u8 *)(phdr + 1),
@@ -545,7 +542,6 @@ static int smsdvb_start_feed(struct dvb_demux_feed *feed)
545 PidMsg.xMsgHeader.msgLength = sizeof(PidMsg); 542 PidMsg.xMsgHeader.msgLength = sizeof(PidMsg);
546 PidMsg.msgData[0] = feed->pid; 543 PidMsg.msgData[0] = feed->pid;
547 544
548 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&PidMsg);
549 return smsclient_sendrequest(client->smsclient, 545 return smsclient_sendrequest(client->smsclient,
550 &PidMsg, sizeof(PidMsg)); 546 &PidMsg, sizeof(PidMsg));
551} 547}
@@ -566,7 +562,6 @@ static int smsdvb_stop_feed(struct dvb_demux_feed *feed)
566 PidMsg.xMsgHeader.msgLength = sizeof(PidMsg); 562 PidMsg.xMsgHeader.msgLength = sizeof(PidMsg);
567 PidMsg.msgData[0] = feed->pid; 563 PidMsg.msgData[0] = feed->pid;
568 564
569 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&PidMsg);
570 return smsclient_sendrequest(client->smsclient, 565 return smsclient_sendrequest(client->smsclient,
571 &PidMsg, sizeof(PidMsg)); 566 &PidMsg, sizeof(PidMsg));
572} 567}
@@ -577,7 +572,6 @@ static int smsdvb_sendrequest_and_wait(struct smsdvb_client_t *client,
577{ 572{
578 int rc; 573 int rc;
579 574
580 smsendian_handle_tx_message((struct SmsMsgHdr_ST *)buffer);
581 rc = smsclient_sendrequest(client->smsclient, buffer, size); 575 rc = smsclient_sendrequest(client->smsclient, buffer, size);
582 if (rc < 0) 576 if (rc < 0)
583 return rc; 577 return rc;
@@ -606,8 +600,6 @@ static int smsdvb_send_statistics_request(struct smsdvb_client_t *client)
606 else 600 else
607 Msg.msgType = MSG_SMS_GET_STATISTICS_REQ; 601 Msg.msgType = MSG_SMS_GET_STATISTICS_REQ;
608 602
609 smsendian_handle_tx_message((struct SmsMsgHdr_S *)&Msg);
610
611 rc = smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg), 603 rc = smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
612 &client->stats_done); 604 &client->stats_done);
613 605
diff --git a/drivers/media/mmc/siano/smssdio.c b/drivers/media/mmc/siano/smssdio.c
index c96da47bece5..8834c435acae 100644
--- a/drivers/media/mmc/siano/smssdio.c
+++ b/drivers/media/mmc/siano/smssdio.c
@@ -43,6 +43,7 @@
43 43
44#include "smscoreapi.h" 44#include "smscoreapi.h"
45#include "sms-cards.h" 45#include "sms-cards.h"
46#include "smsendian.h"
46 47
47/* Registers */ 48/* Registers */
48 49
@@ -97,6 +98,7 @@ static int smssdio_sendrequest(void *context, void *buffer, size_t size)
97 98
98 sdio_claim_host(smsdev->func); 99 sdio_claim_host(smsdev->func);
99 100
101 smsendian_handle_tx_message((struct SmsMsgData_ST *) buffer);
100 while (size >= smsdev->func->cur_blksize) { 102 while (size >= smsdev->func->cur_blksize) {
101 ret = sdio_memcpy_toio(smsdev->func, SMSSDIO_DATA, 103 ret = sdio_memcpy_toio(smsdev->func, SMSSDIO_DATA,
102 buffer, smsdev->func->cur_blksize); 104 buffer, smsdev->func->cur_blksize);
@@ -231,6 +233,7 @@ static void smssdio_interrupt(struct sdio_func *func)
231 cb->size = hdr->msgLength; 233 cb->size = hdr->msgLength;
232 cb->offset = 0; 234 cb->offset = 0;
233 235
236 smsendian_handle_rx_message((struct SmsMsgData_ST *) cb->p);
234 smscore_onresponse(smsdev->coredev, cb); 237 smscore_onresponse(smsdev->coredev, cb);
235} 238}
236 239
diff --git a/drivers/media/usb/siano/smsusb.c b/drivers/media/usb/siano/smsusb.c
index 751c0d6d98b8..acd3d1e82e03 100644
--- a/drivers/media/usb/siano/smsusb.c
+++ b/drivers/media/usb/siano/smsusb.c
@@ -129,6 +129,8 @@ static void smsusb_onresponse(struct urb *urb)
129 smscore_translate_msg(phdr->msgType), 129 smscore_translate_msg(phdr->msgType),
130 phdr->msgType, phdr->msgLength); 130 phdr->msgType, phdr->msgLength);
131 131
132 smsendian_handle_rx_message((struct SmsMsgData_ST *) phdr);
133
132 smscore_onresponse(dev->coredev, surb->cb); 134 smscore_onresponse(dev->coredev, surb->cb);
133 surb->cb = NULL; 135 surb->cb = NULL;
134 } else { 136 } else {
@@ -207,13 +209,14 @@ static int smsusb_sendrequest(void *context, void *buffer, size_t size)
207 struct SmsMsgHdr_ST *phdr = (struct SmsMsgHdr_ST *) buffer; 209 struct SmsMsgHdr_ST *phdr = (struct SmsMsgHdr_ST *) buffer;
208 int dummy; 210 int dummy;
209 211
212 if (dev->state != SMSUSB_ACTIVE)
213 return -ENOENT;
214
210 sms_debug("sending %s(%d) size: %d", 215 sms_debug("sending %s(%d) size: %d",
211 smscore_translate_msg(phdr->msgType), phdr->msgType, 216 smscore_translate_msg(phdr->msgType), phdr->msgType,
212 phdr->msgLength); 217 phdr->msgLength);
213 218
214 if (dev->state != SMSUSB_ACTIVE) 219 smsendian_handle_tx_message((struct SmsMsgData_ST *) phdr);
215 return -ENOENT;
216
217 smsendian_handle_message_header((struct SmsMsgHdr_ST *)buffer); 220 smsendian_handle_message_header((struct SmsMsgHdr_ST *)buffer);
218 return usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2), 221 return usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, 2),
219 buffer, size, &dummy, 1000); 222 buffer, size, &dummy, 1000);