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: |
