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