aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2008-06-27 23:58:35 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-07-26 11:54:24 -0400
commit52ce27bfc4d302a3e28267a5820a8b031ceccee9 (patch)
tree3e7daed95a69a20f66c36856a694d2de062a1d11 /drivers/media
parentecda5966c90746a044ff68e78b1062adcddd9664 (diff)
V4L/DVB (8466): cx23885: Bugfix - DVB Transport cards using DVB port VIDB/TS1 did not stream.
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: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/cx23885/cx23885-core.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index f5afc8d7cb12..b96016d1d0fe 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -1084,7 +1084,21 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
1084 cx_write(port->reg_gpcnt_ctl, 3); 1084 cx_write(port->reg_gpcnt_ctl, 3);
1085 q->count = 1; 1085 q->count = 1;
1086 1086
1087 if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) { 1087 /* Set VIDB pins to input */
1088 if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) {
1089 reg = cx_read(PAD_CTRL);
1090 reg &= ~0x3; /* Clear TS1_OE & TS1_SOP_OE */
1091 cx_write(PAD_CTRL, reg);
1092 }
1093
1094 /* Set VIDC pins to input */
1095 if (cx23885_boards[dev->board].portc == CX23885_MPEG_DVB) {
1096 reg = cx_read(PAD_CTRL);
1097 reg &= ~0x4; /* Clear TS2_SOP_OE */
1098 cx_write(PAD_CTRL, reg);
1099 }
1100
1101 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
1088 1102
1089 reg = cx_read(PAD_CTRL); 1103 reg = cx_read(PAD_CTRL);
1090 reg = reg & ~0x1; /* Clear TS1_OE */ 1104 reg = reg & ~0x1; /* Clear TS1_OE */
@@ -1134,7 +1148,7 @@ static int cx23885_stop_dma(struct cx23885_tsport *port)
1134 cx_clear(port->reg_ts_int_msk, port->ts_int_msk_val); 1148 cx_clear(port->reg_ts_int_msk, port->ts_int_msk_val);
1135 cx_clear(port->reg_dma_ctl, port->dma_ctl_val); 1149 cx_clear(port->reg_dma_ctl, port->dma_ctl_val);
1136 1150
1137 if (cx23885_boards[dev->board].portb & CX23885_MPEG_ENCODER) { 1151 if (cx23885_boards[dev->board].portb == CX23885_MPEG_ENCODER) {
1138 1152
1139 reg = cx_read(PAD_CTRL); 1153 reg = cx_read(PAD_CTRL);
1140 1154