budget-av/CI-interface with SMP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Attached is a patch which fixes an issue which I see with budget-av based 
cards using libdvben50221 based programs.
After some time (sometimes just a few minutes, sometimes hours) the stack 
breaks with error -2 or -3 and won't recover until the modules are reloaded.
This does not happen anymore with this patch, but if no CI-interface is 
connected this patch floads the syslog with weird error-messages of which I 
have no idea why they are shown.
Maybe one of you has an idea what's the problem to make the problem ready for 
head?

-Julian
diff -r c45e373bbca3 linux/drivers/media/dvb/ttpci/budget-av.c
--- a/linux/drivers/media/dvb/ttpci/budget-av.c	Sat Jul 28 00:06:44 2007 -0300
+++ b/linux/drivers/media/dvb/ttpci/budget-av.c	Thu Aug 24 02:08:26 2006 +0200
@@ -139,7 +139,7 @@ static int ciintf_read_attribute_mem(str
 	saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTHI);
 	udelay(1);
 
-	result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 0xfff, 1, 0, 1);
+	result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 0xfff, 1, 1, 1);
 	if (result == -ETIMEDOUT) {
 		ciintf_slot_shutdown(ca, slot);
 		printk(KERN_INFO "budget-av: cam ejected 1\n");
@@ -158,7 +158,7 @@ static int ciintf_write_attribute_mem(st
 	saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTHI);
 	udelay(1);
 
-	result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 0xfff, 1, value, 0, 1);
+	result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 0xfff, 1, value, 1, 1);
 	if (result == -ETIMEDOUT) {
 		ciintf_slot_shutdown(ca, slot);
 		printk(KERN_INFO "budget-av: cam ejected 2\n");
@@ -177,7 +177,7 @@ static int ciintf_read_cam_control(struc
 	saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
 	udelay(1);
 
-	result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 3, 1, 0, 0);
+	result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, address & 3, 1, 1, 0);
 	if ((result == -ETIMEDOUT) || ((result == 0xff) && ((address & 3) < 2))) {
 		ciintf_slot_shutdown(ca, slot);
 		printk(KERN_INFO "budget-av: cam ejected 3\n");
@@ -197,7 +197,7 @@ static int ciintf_write_cam_control(stru
 	saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
 	udelay(1);
 
-	result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 3, 1, value, 0, 0);
+	result = ttpci_budget_debiwrite(&budget_av->budget, DEBICICAM, address & 3, 1, value, 1, 0);
 	if (result == -ETIMEDOUT) {
 		ciintf_slot_shutdown(ca, slot);
 		printk(KERN_INFO "budget-av: cam ejected 5\n");
@@ -296,7 +296,7 @@ static int ciintf_poll_slot_status(struc
 	 * don't care if the cam has problems - we'll be resetting it on open() anyway */
 	if ((budget_av->slot_status == SLOTSTATUS_NONE) || (!open)) {
 		saa7146_setgpio(budget_av->budget.dev, 1, SAA7146_GPIO_OUTLO);
-		result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, 0, 1, 0, 1);
+		result = ttpci_budget_debiread(&budget_av->budget, DEBICICAM, 0, 1, 1, 1);
 		if ((result >= 0) && (budget_av->slot_status == SLOTSTATUS_NONE)) {
 			budget_av->slot_status = SLOTSTATUS_PRESENT;
 			printk(KERN_INFO "budget-av: cam inserted B\n");
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux