summaryrefslogtreecommitdiff
path: root/linux/drivers
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-06-27 23:58:35 -0400
committerSteven Toth <stoth@hauppauge.com>2008-06-27 23:58:35 -0400
commit53eff196a31c492f2635343c8d0389145125fc67 (patch)
treefdebca089d54eb4bd3fec9dfca6242bbea7fac68 /linux/drivers
parentde1a48f03fb92ffdc82696c4c733ab095f2cda00 (diff)
downloadmediapointer-dvb-s2-53eff196a31c492f2635343c8d0389145125fc67.tar.gz
mediapointer-dvb-s2-53eff196a31c492f2635343c8d0389145125fc67.tar.bz2
cx23885: Bugfix - DVB Transport cards using DVB port VIDB/TS1 did not stream.
From: Steven Toth <stoth@hauppauge.com> Certain DVB cards that have demodulators on TS1/VIDB were not streaming packets. This ensure the pin directions on PAD_CTRL are set correctly, solving the issue. Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: <>
Diffstat (limited to 'linux/drivers')
-rw-r--r--linux/drivers/media/video/cx23885/cx23885-core.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/linux/drivers/media/video/cx23885/cx23885-core.c b/linux/drivers/media/video/cx23885/cx23885-core.c
index 3f5571ee6..41e927ff9 100644
--- a/linux/drivers/media/video/cx23885/cx23885-core.c
+++ b/linux/drivers/media/video/cx23885/cx23885-core.c
@@ -1085,7 +1085,21 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
cx_write(port->reg_gpcnt_ctl, 3);
q->count = 1;
- if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) {
+ /* Set VIDB pins to input */
+ if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) {
+ reg = cx_read(PAD_CTRL);
+ reg &= ~0x3; /* Clear TS1_OE & TS1_SOP_OE */
+ cx_write(PAD_CTRL, reg);
+ }
+
+ /* Set VIDC pins to input */
+ if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) {
+ reg = cx_read(PAD_CTRL);
+ reg &= ~0x4; /* Clear TS2_SOP_OE */
+ cx_write(PAD_CTRL, reg);
+ }
+
+ if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
reg = cx_read(PAD_CTRL);
reg = reg & ~0x1; /* Clear TS1_OE */
@@ -1135,7 +1149,7 @@ static int cx23885_stop_dma(struct cx23885_tsport *port)
cx_clear(port->reg_ts_int_msk, port->ts_int_msk_val);
cx_clear(port->reg_dma_ctl, port->dma_ctl_val);
- if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) {
+ if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
reg = cx_read(PAD_CTRL);