aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb/ttpci/av7110.c9
-rw-r--r--drivers/media/dvb/ttpci/av7110_av.c10
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 = {
720static inline int SetPIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, 720static 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
738int ChangePIDs(struct av7110 *av7110, u16 vpid, u16 apid, u16 ttpid, 743int 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: