summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <devnull@localhost>2005-06-17 19:41:34 +0000
committerNickolay V. Shmyrev <devnull@localhost>2005-06-17 19:41:34 +0000
commit2c1d1e28157672b8828bbd7a18feb8e728c30bdd (patch)
treeeec59a21078aab72773e7b51c19d347b5ce07f3c
parentb98cb49b5f870489e202fa1ec72a97f6b9fa0f46 (diff)
downloadmediapointer-dvb-s2-2c1d1e28157672b8828bbd7a18feb8e728c30bdd.tar.gz
mediapointer-dvb-s2-2c1d1e28157672b8828bbd7a18feb8e728c30bdd.tar.bz2
Fix nicam detection on saa7134 cards
-rw-r--r--linux/drivers/media/video/saa7134/saa7134-tvaudio.c38
-rw-r--r--v4l/ChangeLog5
2 files changed, 27 insertions, 16 deletions
diff --git a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
index 1d6fb02d7..88a132edd 100644
--- a/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
+++ b/linux/drivers/media/video/saa7134/saa7134-tvaudio.c
@@ -1,5 +1,5 @@
/*
- * $Id: saa7134-tvaudio.c,v 1.27 2005/06/14 19:13:21 hhackmann Exp $
+ * $Id: saa7134-tvaudio.c,v 1.28 2005/06/17 19:41:34 nsh Exp $
*
* device driver for philips saa7134 based TV cards
* tv audio decoder (fm stereo, nicam, ...)
@@ -420,7 +420,7 @@ static void sifdebug_dump_regs(struct saa7134_dev *dev)
static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *audio)
{
- __u32 idp,nicam;
+ __u32 idp, nicam, nicam_status;
int retval = -1;
switch (audio->mode) {
@@ -442,18 +442,24 @@ static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
break;
case TVAUDIO_NICAM_FM:
case TVAUDIO_NICAM_AM:
- nicam = saa_readb(SAA7134_NICAM_STATUS);
+ nicam = saa_readb(SAA7134_AUDIO_STATUS);
dprintk("getstereo: nicam=0x%x\n",nicam);
- switch (nicam & 0x0b) {
- case 0x08:
- retval = V4L2_TUNER_SUB_MONO;
- break;
- case 0x09:
- retval = V4L2_TUNER_SUB_LANG1 | V4L2_TUNER_SUB_LANG2;
- break;
- case 0x0a:
- retval = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO;
- break;
+ if (nicam & 0x1) {
+ nicam_status = saa_readb(SAA7134_NICAM_STATUS);
+ dprintk("getstereo: nicam_status=0x%x\n", nicam_status);
+
+ switch (nicam_status & 0x03) {
+ case 0x01:
+ retval = V4L2_TUNER_SUB_LANG1 | V4L2_TUNER_SUB_LANG2;
+ break;
+ case 0x02:
+ retval = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO;
+ break;
+ default:
+ retval = V4L2_TUNER_SUB_MONO;
+ }
+ } else {
+ /* No nicam detected */
}
break;
}
@@ -489,15 +495,15 @@ static int tvaudio_setstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
break;
case TVAUDIO_FM_K_STEREO:
case TVAUDIO_FM_BG_STEREO:
+ case TVAUDIO_NICAM_AM:
+ case TVAUDIO_NICAM_FM:
dprintk("setstereo [fm] => %s\n",
name[ mode % ARRAY_SIZE(name) ]);
reg = fm[ mode % ARRAY_SIZE(fm) ];
saa_writeb(SAA7134_FM_DEMATRIX, reg);
break;
case TVAUDIO_FM_SAT_STEREO:
- case TVAUDIO_NICAM_AM:
- case TVAUDIO_NICAM_FM:
- /* FIXME */
+ /* Not implemented */
break;
}
return 0;
diff --git a/v4l/ChangeLog b/v4l/ChangeLog
index 3d0352b84..fa3a18f7b 100644
--- a/v4l/ChangeLog
+++ b/v4l/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-17 23:40 nshmyrev
+ * saa7134-video.c:
+
+ - Fix nicam detection on saa7134 cards.
+
2005-06-17 14:44 mkrufky
* Makefile, cx88-cards.c, cx88-dvb.c, cx88-i2c.c, cx88-mpeg.c, dvb-pll.c, dvb-pll.h, lgdt3302.c, lgdt3302.h, lgdt3302_priv.h