Am Freitag 17 August 2007 04:04 schrieb Oliver Endriss: > Same problem as before: Must not sleep within spinlock-ed code. > > > > If I disable nobusyloop the errors are gone. I will check if the > > > CI-module keeps working properly. > > > > If I disable nobusyloop the system becomes unresponsive after a while > > without CAM plugged. > > Does the machine freeze completely? No error messages on the console? It only gets very slow then. > Does it work with CAM plugged, or does it freeze, too? With CAM plugged it was fine, I think. > Please post the patch you are currently using. Attached is the patch I use, against Manus latest multiproto tree. Should apply with some offset to the official tree, too. Sorry for the delay, hadn't had much time last weeks. -Julian
diff -r 3b6dc79e3ac7 linux/drivers/media/dvb/ttpci/budget-av.c --- a/linux/drivers/media/dvb/ttpci/budget-av.c Sun Sep 23 04:39:17 2007 +0400 +++ b/linux/drivers/media/dvb/ttpci/budget-av.c Mon Sep 24 18:31:22 2007 +0200 @@ -142,7 +142,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"); @@ -161,7 +161,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"); @@ -180,7 +180,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"); @@ -200,7 +200,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"); @@ -299,7 +299,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