diff options
author | Steven Toth <stoth@hauppauge.com> | 2008-06-27 23:58:35 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-26 11:54:24 -0400 |
commit | 52ce27bfc4d302a3e28267a5820a8b031ceccee9 (patch) | |
tree | 3e7daed95a69a20f66c36856a694d2de062a1d11 | |
parent | ecda5966c90746a044ff68e78b1062adcddd9664 (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>
-rw-r--r-- | drivers/media/video/cx23885/cx23885-core.c | 18 |
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 | ||