> > dvb_ca_en50221_link_init > > dvb_ca_en50221_wait_if_status > > STATUS: 43 > > Er, weird! That status is printed just after the comms interface is reset. > And its showing both a READ and a WRITE transfer error.... no data has been > transferred at that point... > > > dvb_ca_en50221_wait_if_status succeeded timeout:0 > > dvb_ca_en50221_wait_if_status > > STATUS: 43 > > dvb_ca_en50221_wait_if_status failed timeout:101 > > dvb_ca_en50221_read_data > > dvb_ca: DVB CAM link initialisation failed :( > > > > I'm willing to continue testing as long as you're willing to send > > patches. :-) I know C but I have no experience with this low level stuff > > so I'm not sure how much I can help. > > Thanks, I'll try and think of something else to test...
Hmm, it isn't looking particularly hopeful unfortunately :( But... maybe its just not waiting long enough after the reset... the attached patch adds a huge delay just in case.
Index: linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c =================================================================== RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_ca_en50221.c,v retrieving revision 1.2 diff -r1.2 dvb_ca_en50221.c 275a276 > printk("STATUS: %x\n", res); 281a283 > printk("STATUS: %x\n", res); 319a322,323 > dvb_delay(100); > 326c330,331 < if ((ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_DA, HZ/10)) != 0) return ret; --- > // if ((ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_DA, HZ/10)) != 0) return ret; > dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_DA, HZ/10); 331a337 > printk("CAM SENT BUF SIZE: %i\n", buf_size) 340c346,347 < if ((ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_FR, HZ/10)) != 0) return ret; --- > // if ((ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_FR, HZ/10)) != 0) return ret; > dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_FR, HZ/10); 587c594 < goto exit; --- > // goto exit; 1039a1047 > dvb_delay(1000);