summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c b/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
index 68e6e0b09..e38e87c17 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
@@ -982,6 +982,12 @@ static int dvb_ca_en50221_thread(void* data)
break;
case DVB_CA_SLOTSTATE_VALIDATE:
+ if (ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, CMDREG_RS) != 0) {
+ printk("dvb_ca: Unable to reset CAM IF\n");
+ ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_INVALID;
+ dvb_ca_en50221_thread_update_delay(ca);
+ break;
+ }
if (dvb_ca_en50221_parse_attributes(ca, slot) != 0) {
printk("dvb_ca: Invalid PC card inserted :(\n");
ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_INVALID;
@@ -994,7 +1000,6 @@ static int dvb_ca_en50221_thread(void* data)
dvb_ca_en50221_thread_update_delay(ca);
break;
}
-
dprintk("DVB CAM validated successfully\n");
ca->slot_info[slot].timeout = jiffies + (INIT_TIMEOUT_SECS * HZ);