aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/bt8xx/dst_ca.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/bt8xx/dst_ca.c')
-rw-r--r--drivers/media/dvb/bt8xx/dst_ca.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/media/dvb/bt8xx/dst_ca.c b/drivers/media/dvb/bt8xx/dst_ca.c
index 206aee3336bc..9160bdf479a2 100644
--- a/drivers/media/dvb/bt8xx/dst_ca.c
+++ b/drivers/media/dvb/bt8xx/dst_ca.c
@@ -40,23 +40,16 @@ static unsigned int debug = 1;
40module_param(debug, int, 0644); 40module_param(debug, int, 0644);
41MODULE_PARM_DESC(dst_ca_debug, "debug messages, default is 0 (yes)"); 41MODULE_PARM_DESC(dst_ca_debug, "debug messages, default is 0 (yes)");
42 42
43static unsigned int session;
44module_param(session, int, 0644);
45MODULE_PARM_DESC(session, "Support for hardware that has multiple sessions, default 0");
46
47static unsigned int new_ca;
48module_param(new_ca, int, 0644);
49MODULE_PARM_DESC(new_ca, "Support for the new CA interface firmware, default 0");
50
51#define dprintk if (debug) printk 43#define dprintk if (debug) printk
52 44
53 45/* Need some more work */
54static int ca_set_slot_descr(void) 46static int ca_set_slot_descr(void)
55{ 47{
56 /* We could make this more graceful ? */ 48 /* We could make this more graceful ? */
57 return -EOPNOTSUPP; 49 return -EOPNOTSUPP;
58} 50}
59 51
52/* Need some more work */
60static int ca_set_pid(void) 53static int ca_set_pid(void)
61{ 54{
62 /* We could make this more graceful ? */ 55 /* We could make this more graceful ? */
@@ -213,7 +206,7 @@ static int ca_get_slot_caps(struct dst_state *state, struct ca_caps *p_ca_caps,
213 return 0; 206 return 0;
214} 207}
215 208
216 209/* Need some more work */
217static int ca_get_slot_descr(struct dst_state *state, struct ca_msg *p_ca_message, void *arg) 210static int ca_get_slot_descr(struct dst_state *state, struct ca_msg *p_ca_message, void *arg)
218{ 211{
219 return -EOPNOTSUPP; 212 return -EOPNOTSUPP;
@@ -302,9 +295,9 @@ static int ca_get_message(struct dst_state *state, struct ca_msg *p_ca_message,
302 return 0; 295 return 0;
303} 296}
304 297
305static int handle_en50221_tag(struct ca_msg *p_ca_message, struct ca_msg *hw_buffer) 298static int handle_en50221_tag(struct dst_state *state, struct ca_msg *p_ca_message, struct ca_msg *hw_buffer)
306{ 299{
307 if (session) { 300 if (state->dst_hw_cap & DST_TYPE_HAS_SESSION) {
308 hw_buffer->msg[2] = p_ca_message->msg[1]; /* MSB */ 301 hw_buffer->msg[2] = p_ca_message->msg[1]; /* MSB */
309 hw_buffer->msg[3] = p_ca_message->msg[2]; /* LSB */ 302 hw_buffer->msg[3] = p_ca_message->msg[2]; /* LSB */
310 } 303 }
@@ -351,7 +344,7 @@ static int ca_set_pmt(struct dst_state *state, struct ca_msg *p_ca_message, stru
351 if (verbose > 3) 344 if (verbose > 3)
352 dprintk("%s, p_ca_message length %d (0x%x)\n", __FUNCTION__,p_ca_message->length,p_ca_message->length ); 345 dprintk("%s, p_ca_message length %d (0x%x)\n", __FUNCTION__,p_ca_message->length,p_ca_message->length );
353 346
354 handle_en50221_tag(p_ca_message, hw_buffer); /* EN50221 tag */ 347 handle_en50221_tag(state, p_ca_message, hw_buffer); /* EN50221 tag */
355 348
356 /* Handle the length field (variable) */ 349 /* Handle the length field (variable) */
357 if (!(p_ca_message->msg[3] & 0x80)) { /* Length = 1 */ 350 if (!(p_ca_message->msg[3] & 0x80)) { /* Length = 1 */