firedtv: fix returned struct for ca_info
authorHenrik Kurelid <henrik@kurelid.se>
Thu, 4 Dec 2008 21:40:52 +0000 (22:40 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 24 Feb 2009 13:51:28 +0000 (14:51 +0100)
The SystemId of the ca_info message was filled with garbage.
It now returns what the card returns.

Signed-off-by: Henrik Kurelid <henrik@kurelid.se>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/media/dvb/firesat/avc_api.c

index 56911f3..3a4da73 100644 (file)
@@ -763,7 +763,7 @@ int avc_ca_info(struct firesat *firesat, char *app_info, unsigned int *len)
 {
        AVCCmdFrm CmdFrm;
        AVCRspFrm RspFrm;
-       /* int pos;  FIXME: unused */
+       int pos;
 
        memset(&CmdFrm, 0, sizeof(AVCCmdFrm));
        CmdFrm.cts = AVC;
@@ -783,13 +783,13 @@ int avc_ca_info(struct firesat *firesat, char *app_info, unsigned int *len)
        if (avc_write(firesat, &CmdFrm, &RspFrm) < 0)
                return -EIO;
 
-       /* pos = get_ca_object_pos(&RspFrm);  FIXME: unused */
+       pos = get_ca_object_pos(&RspFrm);
        app_info[0] = (TAG_CA_INFO >> 16) & 0xFF;
        app_info[1] = (TAG_CA_INFO >> 8) & 0xFF;
        app_info[2] = (TAG_CA_INFO >> 0) & 0xFF;
        app_info[3] = 2;
-       app_info[4] = app_info[5];
-       app_info[5] = app_info[6];
+       app_info[4] = RspFrm.operand[pos + 0];
+       app_info[5] = RspFrm.operand[pos + 1];
        *len = app_info[3] + 4;
 
        return 0;