diff options
-rw-r--r-- | drivers/media/dvb/ttpci/av7110.c | 9 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/av7110_av.c | 10 |
2 files changed, 15 insertions, 4 deletions
diff --git a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c index 240451dcd8b8..8fa487fb507b 100644 --- a/drivers/media/dvb/ttpci/av7110.c +++ b/drivers/media/dvb/ttpci/av7110.c | |||
@@ -720,6 +720,8 @@ static struct dvb_device dvbdev_osd = { | |||
720 | static inline int SetPIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, | 720 | static inline int SetPIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, |
721 | u16 subpid, u16 pcrpid) | 721 | u16 subpid, u16 pcrpid) |
722 | { | 722 | { |
723 | u16 aflags = 0; | ||
724 | |||
723 | dprintk(4, "%p\n", av7110); | 725 | dprintk(4, "%p\n", av7110); |
724 | 726 | ||
725 | if (vpid == 0x1fff || apid == 0x1fff || | 727 | if (vpid == 0x1fff || apid == 0x1fff || |
@@ -731,8 +733,11 @@ static inline int SetPIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, | |||
731 | av7110->pids[DMX_PES_PCR] = 0; | 733 | av7110->pids[DMX_PES_PCR] = 0; |
732 | } | 734 | } |
733 | 735 | ||
734 | return av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, MultiPID, 5, | 736 | if (av7110->audiostate.bypass_mode) |
735 | pcrpid, vpid, apid, ttpid, subpid); | 737 | aflags |= 0x8000; |
738 | |||
739 | return av7110_fw_cmd(av7110, COMTYPE_PIDFILTER, MultiPID, 6, | ||
740 | pcrpid, vpid, apid, ttpid, subpid, aflags); | ||
736 | } | 741 | } |
737 | 742 | ||
738 | int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, | 743 | int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, |
diff --git a/drivers/media/dvb/ttpci/av7110_av.c b/drivers/media/dvb/ttpci/av7110_av.c index 2d26ff316fe6..400facec7407 100644 --- a/drivers/media/dvb/ttpci/av7110_av.c +++ b/drivers/media/dvb/ttpci/av7110_av.c | |||
@@ -1256,7 +1256,9 @@ static int dvb_audio_ioctl(struct inode *inode, struct file *file, | |||
1256 | break; | 1256 | break; |
1257 | 1257 | ||
1258 | case AUDIO_SET_BYPASS_MODE: | 1258 | case AUDIO_SET_BYPASS_MODE: |
1259 | ret = -EINVAL; | 1259 | if (FW_VERSION(av7110->arm_app) < 0x2621) |
1260 | ret = -EINVAL; | ||
1261 | av7110->audiostate.bypass_mode = (int)arg; | ||
1260 | break; | 1262 | break; |
1261 | 1263 | ||
1262 | case AUDIO_CHANNEL_SELECT: | 1264 | case AUDIO_CHANNEL_SELECT: |
@@ -1295,7 +1297,11 @@ static int dvb_audio_ioctl(struct inode *inode, struct file *file, | |||
1295 | break; | 1297 | break; |
1296 | 1298 | ||
1297 | case AUDIO_GET_CAPABILITIES: | 1299 | case AUDIO_GET_CAPABILITIES: |
1298 | *(int *)parg = AUDIO_CAP_LPCM | AUDIO_CAP_MP1 | AUDIO_CAP_MP2; | 1300 | if (FW_VERSION(av7110->arm_app) < 0x2621) |
1301 | *(unsigned int *)parg = AUDIO_CAP_LPCM | AUDIO_CAP_MP1 | AUDIO_CAP_MP2; | ||
1302 | else | ||
1303 | *(unsigned int *)parg = AUDIO_CAP_LPCM | AUDIO_CAP_DTS | AUDIO_CAP_AC3 | | ||
1304 | AUDIO_CAP_MP1 | AUDIO_CAP_MP2; | ||
1299 | break; | 1305 | break; |
1300 | 1306 | ||
1301 | case AUDIO_CLEAR_BUFFER: | 1307 | case AUDIO_CLEAR_BUFFER: |