]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
V4L/DVB (11781): Siano: smsdvb - add big endian support
authorUri Shkolnik <uris@siano-ms.com>
Tue, 12 May 2009 14:37:09 +0000 (11:37 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 22:14:28 +0000 (19:14 -0300)
Add support for Siano protocol messages
with big endian systems.

Signed-off-by: Uri Shkolnik <uris@siano-ms.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/siano/smsdvb.c

index 9d6aab59a05e3272f666885102897b8bfb69f769..8fb283b85b6b8d493631c7e443551db6be688f32 100644 (file)
@@ -23,6 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <linux/init.h>
 
 #include "smscoreapi.h"
+#include "smsendian.h"
 #include "sms-cards.h"
 
 DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
@@ -60,6 +61,8 @@ static int smsdvb_onresponse(void *context, struct smscore_buffer_t *cb)
        struct SmsMsgHdr_ST *phdr =
                (struct SmsMsgHdr_ST *)(((u8 *) cb->p) + cb->offset);
 
+       smsendian_handle_rx_message((struct SmsMsgData_ST *) phdr);
+
        switch (phdr->msgType) {
        case MSG_SMS_DVBT_BDA_DATA:
                dvb_dmx_swfilter(&client->demux, (u8 *)(phdr + 1),
@@ -149,6 +152,7 @@ static int smsdvb_start_feed(struct dvb_demux_feed *feed)
        PidMsg.xMsgHeader.msgLength = sizeof(PidMsg);
        PidMsg.msgData[0] = feed->pid;
 
+       smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&PidMsg);
        return smsclient_sendrequest(client->smsclient,
                                     &PidMsg, sizeof(PidMsg));
 }
@@ -169,6 +173,7 @@ static int smsdvb_stop_feed(struct dvb_demux_feed *feed)
        PidMsg.xMsgHeader.msgLength = sizeof(PidMsg);
        PidMsg.msgData[0] = feed->pid;
 
+       smsendian_handle_tx_message((struct SmsMsgHdr_ST *)&PidMsg);
        return smsclient_sendrequest(client->smsclient,
                                     &PidMsg, sizeof(PidMsg));
 }
@@ -177,7 +182,10 @@ static int smsdvb_sendrequest_and_wait(struct smsdvb_client_t *client,
                                        void *buffer, size_t size,
                                        struct completion *completion)
 {
-       int rc = smsclient_sendrequest(client->smsclient, buffer, size);
+       int rc;
+
+       smsendian_handle_tx_message((struct SmsMsgHdr_ST *)buffer);
+       rc = smsclient_sendrequest(client->smsclient, buffer, size);
        if (rc < 0)
                return rc;