Re: budget-av/CI-interface with SMP

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

 



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

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

  Powered by Linux