Matthias Dahl wrote:
> Like always, if you need anything, please let me know.
Hi,
it seems that newer windows drivers for the KNC ONE/Satelco EasyWatch/Terratec
Cinergy do not longer use the VPE
interrupt to transfer data. They use the the PORT A/B interrupt. Can you please
try the attached patch (with and without
the CI/CAM)? The patch uses also the PORT A/B interrupt. I've tested it with my
Cinergy 1200C (without a CI).
- Hartmut
diff -r 015313b16eab linux/drivers/media/dvb/ttpci/budget-av.c
--- a/linux/drivers/media/dvb/ttpci/budget-av.c Tue May 22 10:30:04 2007 -0300
+++ b/linux/drivers/media/dvb/ttpci/budget-av.c Tue May 22 23:59:46 2007 +0200
@@ -1058,7 +1058,8 @@ static void budget_av_irq(struct saa7146
dprintk(8, "dev: %p, budget_av: %p\n", dev, budget_av);
- if (*isr & MASK_10)
+// if (*isr & MASK_10)
+ if (*isr & (MASK_07|MASK_08))
ttpci_budget_irq10_handler(dev, isr);
}
@@ -1300,7 +1301,8 @@ static struct saa7146_extension budget_e
.attach = budget_av_attach,
.detach = budget_av_detach,
- .irq_mask = MASK_10,
+// .irq_mask = MASK_10,
+ .irq_mask = MASK_07|MASK_08,
.irq_func = budget_av_irq,
};
diff -r 015313b16eab linux/drivers/media/dvb/ttpci/budget-core.c
--- a/linux/drivers/media/dvb/ttpci/budget-core.c Tue May 22 10:30:04 2007 -0300
+++ b/linux/drivers/media/dvb/ttpci/budget-core.c Wed May 23 00:03:44 2007 +0200
@@ -52,7 +52,8 @@
#define BUFFER_WARNING_WAIT (30*HZ)
int budget_debug;
-static int dma_buffer_size = TS_MIN_BUFSIZE_K;
+//static int dma_buffer_size = TS_MIN_BUFSIZE_K;
+static int dma_buffer_size = TS_MAX_BUFSIZE_K_DVBC;
module_param_named(debug, budget_debug, int, 0644);
module_param_named(bufsize, dma_buffer_size, int, 0444);
MODULE_PARM_DESC(debug, "Turn on/off budget debugging (default:off).");
@@ -67,7 +68,9 @@ static int stop_ts_capture(struct budget
dprintk(2, "budget: %p\n", budget);
saa7146_write(budget->dev, MC1, MASK_20); // DMA3 off
- SAA7146_IER_DISABLE(budget->dev, MASK_10);
+// SAA7146_IER_DISABLE(budget->dev, MASK_10);
+ SAA7146_IER_DISABLE(budget->dev, MASK_07); // PORT B interrupt
+ SAA7146_IER_DISABLE(budget->dev, MASK_08); // PORT A interrupt
return 0;
}
@@ -113,22 +116,26 @@ static int start_ts_capture(struct budge
case BUDGET_KNC1C_MK3:
case BUDGET_KNC1CP_MK3:
if (budget->video_port == BUDGET_VIDEO_PORTA) {
- saa7146_write(dev, DD1_INIT, 0x06000200);
+// saa7146_write(dev, DD1_INIT, 0x06000200);
+ saa7146_write(dev, DD1_INIT, 0x06C00200);
saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
saa7146_write(dev, BRS_CTRL, 0x00000000);
} else {
- saa7146_write(dev, DD1_INIT, 0x00000600);
+// saa7146_write(dev, DD1_INIT, 0x00000600);
+ saa7146_write(dev, DD1_INIT, 0x000006C0);
saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
saa7146_write(dev, BRS_CTRL, 0x60000000);
}
break;
default:
if (budget->video_port == BUDGET_VIDEO_PORTA) {
- saa7146_write(dev, DD1_INIT, 0x06000200);
+// saa7146_write(dev, DD1_INIT, 0x06000200);
+ saa7146_write(dev, DD1_INIT, 0x06C00200);
saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
saa7146_write(dev, BRS_CTRL, 0x00000000);
} else {
- saa7146_write(dev, DD1_INIT, 0x02000600);
+// saa7146_write(dev, DD1_INIT, 0x02000600);
+ saa7146_write(dev, DD1_INIT, 0x020006C0);
saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
saa7146_write(dev, BRS_CTRL, 0x60000000);
}
@@ -154,8 +161,15 @@ static int start_ts_capture(struct budge
saa7146_write(dev, MC2, (MASK_04 | MASK_20));
- SAA7146_ISR_CLEAR(budget->dev, MASK_10); /* VPE */
- SAA7146_IER_ENABLE(budget->dev, MASK_10); /* VPE */
+// SAA7146_ISR_CLEAR(budget->dev, MASK_10); /* VPE */
+// SAA7146_IER_ENABLE(budget->dev, MASK_10); /* VPE */
+ if (budget->video_port == BUDGET_VIDEO_PORTA) {
+ SAA7146_ISR_CLEAR(budget->dev, MASK_08); /* PORT A interrupt */
+ SAA7146_IER_ENABLE(budget->dev, MASK_08); /* PORT A interrupt */
+ } else {
+ SAA7146_ISR_CLEAR(budget->dev, MASK_07); /* PORT B interrupt */
+ SAA7146_IER_ENABLE(budget->dev, MASK_07); /* PORT B interrupt */
+ }
saa7146_write(dev, MC1, (MASK_04 | MASK_20)); /* DMA3 on */
return 0;
@@ -577,7 +591,8 @@ void ttpci_budget_irq10_handler(struct s
dprintk(8, "dev: %p, budget: %p\n", dev, budget);
- if (*isr & MASK_10)
+// if (*isr & MASK_10)
+ if (*isr & (MASK_07|MASK_08))
tasklet_schedule(&budget->vpe_tasklet);
}
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb