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
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb