summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb/bt8xx/dst.c14
-rw-r--r--drivers/media/dvb/bt8xx/dst_ca.c19
-rw-r--r--drivers/media/dvb/bt8xx/dst_common.h8
3 files changed, 16 insertions, 25 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index fc74f409785..d047e349d70 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -44,13 +44,7 @@ MODULE_PARM_DESC(debug, "debug messages, default is 0 (yes)");
static unsigned int dst_addons;
module_param(dst_addons, int, 0644);
-MODULE_PARM_DESC(dst_addons, "CA daughterboard, default is 0 (no)");
-
-static unsigned int new_fw;
-module_param(new_fw, int, 0644);
-MODULE_PARM_DESC(new_fw, "Support for the new interface firmware, default 0");
-
-
+MODULE_PARM_DESC(dst_addons, "CA daughterboard, default is 0 (No addons)");
#define dprintk if (debug) printk
@@ -787,7 +781,11 @@ static int dst_probe(struct dst_state *state)
dprintk("%s: RDC 8820 RESET Failed.\n", __FUNCTION__);
return -1;
}
- msleep(4000);
+ if (dst_addons & DST_TYPE_HAS_CA)
+ msleep(4000);
+ else
+ msleep(100);
+
if ((dst_comm_init(state)) < 0) {
dprintk("%s: DST Initialization Failed.\n", __FUNCTION__);
return -1;
diff --git a/drivers/media/dvb/bt8xx/dst_ca.c b/drivers/media/dvb/bt8xx/dst_ca.c
index 206aee3336b..9160bdf479a 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;
module_param(debug, int, 0644);
MODULE_PARM_DESC(dst_ca_debug, "debug messages, default is 0 (yes)");
-static unsigned int session;
-module_param(session, int, 0644);
-MODULE_PARM_DESC(session, "Support for hardware that has multiple sessions, default 0");
-
-static unsigned int new_ca;
-module_param(new_ca, int, 0644);
-MODULE_PARM_DESC(new_ca, "Support for the new CA interface firmware, default 0");
-
#define dprintk if (debug) printk
-
+/* Need some more work */
static int ca_set_slot_descr(void)
{
/* We could make this more graceful ? */
return -EOPNOTSUPP;
}
+/* Need some more work */
static int ca_set_pid(void)
{
/* 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,
return 0;
}
-
+/* Need some more work */
static int ca_get_slot_descr(struct dst_state *state, struct ca_msg *p_ca_message, void *arg)
{
return -EOPNOTSUPP;
@@ -302,9 +295,9 @@ static int ca_get_message(struct dst_state *state, struct ca_msg *p_ca_message,
return 0;
}
-static int handle_en50221_tag(struct ca_msg *p_ca_message, struct ca_msg *hw_buffer)
+static int handle_en50221_tag(struct dst_state *state, struct ca_msg *p_ca_message, struct ca_msg *hw_buffer)
{
- if (session) {
+ if (state->dst_hw_cap & DST_TYPE_HAS_SESSION) {
hw_buffer->msg[2] = p_ca_message->msg[1]; /* MSB */
hw_buffer->msg[3] = p_ca_message->msg[2]; /* LSB */
}
@@ -351,7 +344,7 @@ static int ca_set_pmt(struct dst_state *state, struct ca_msg *p_ca_message, stru
if (verbose > 3)
dprintk("%s, p_ca_message length %d (0x%x)\n", __FUNCTION__,p_ca_message->length,p_ca_message->length );
- handle_en50221_tag(p_ca_message, hw_buffer); /* EN50221 tag */
+ handle_en50221_tag(state, p_ca_message, hw_buffer); /* EN50221 tag */
/* Handle the length field (variable) */
if (!(p_ca_message->msg[3] & 0x80)) { /* Length = 1 */
diff --git a/drivers/media/dvb/bt8xx/dst_common.h b/drivers/media/dvb/bt8xx/dst_common.h
index e3b59f16c7a..0b3da29245f 100644
--- a/drivers/media/dvb/bt8xx/dst_common.h
+++ b/drivers/media/dvb/bt8xx/dst_common.h
@@ -48,7 +48,6 @@
#define DST_TYPE_HAS_FW_3 32
#define DST_TYPE_HAS_FW_BUILD 64
-
/* Card capability list */
#define DST_TYPE_HAS_MAC 1
@@ -58,6 +57,7 @@
#define DST_TYPE_HAS_MOTO 16
#define DST_TYPE_HAS_CA 32
#define DST_TYPE_HAS_ANALOG 64 /* Analog inputs */
+#define DST_TYPE_HAS_SESSION 128
#define RDC_8820_PIO_0_DISABLE 0
@@ -107,7 +107,7 @@ struct dst_state {
unsigned long cur_jiff;
u8 k22;
fe_bandwidth_t bandwidth;
- u8 dst_hw_cap;
+ u32 dst_hw_cap;
u8 dst_fw_version;
fe_sec_mini_cmd_t minicmd;
u8 messages[256];
@@ -117,8 +117,8 @@ struct dst_types {
char *device_id;
int offset;
u8 dst_type;
- u64 type_flags;
- u64 dst_feature;
+ u32 type_flags;
+ u32 dst_feature;
};