diff options
-rw-r--r-- | drivers/media/dvb/ttpci/av7110_v4l.c | 5 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv-driver.c | 3 | ||||
-rw-r--r-- | drivers/media/video/cx25840/cx25840-core.c | 5 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-tvaudio.c | 3 | ||||
-rw-r--r-- | drivers/media/video/msp3400-kthreads.c | 8 | ||||
-rw-r--r-- | drivers/media/video/mxb.c | 6 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-tvaudio.c | 2 | ||||
-rw-r--r-- | drivers/media/video/tvaudio.c | 1 | ||||
-rw-r--r-- | include/linux/videodev2.h | 1 |
9 files changed, 29 insertions, 5 deletions
diff --git a/drivers/media/dvb/ttpci/av7110_v4l.c b/drivers/media/dvb/ttpci/av7110_v4l.c index 2f23ceab8d44..603a22e4bfe2 100644 --- a/drivers/media/dvb/ttpci/av7110_v4l.c +++ b/drivers/media/dvb/ttpci/av7110_v4l.c | |||
@@ -369,6 +369,11 @@ static int av7110_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
369 | fm_matrix = 0x3001; // stereo | 369 | fm_matrix = 0x3001; // stereo |
370 | src = 0x0020; | 370 | src = 0x0020; |
371 | break; | 371 | break; |
372 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
373 | dprintk(2, "VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1_LANG2\n"); | ||
374 | fm_matrix = 0x3000; // bilingual | ||
375 | src = 0x0020; | ||
376 | break; | ||
372 | case V4L2_TUNER_MODE_LANG1: | 377 | case V4L2_TUNER_MODE_LANG1: |
373 | dprintk(2, "VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1\n"); | 378 | dprintk(2, "VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1\n"); |
374 | fm_matrix = 0x3000; // mono | 379 | fm_matrix = 0x3000; // mono |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index 80e4a7406ac2..74def9c23952 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -1878,7 +1878,8 @@ static int bttv_common_ioctls(struct bttv *btv, unsigned int cmd, void *arg) | |||
1878 | bttv_call_i2c_clients(btv, VIDIOCGAUDIO, &va); | 1878 | bttv_call_i2c_clients(btv, VIDIOCGAUDIO, &va); |
1879 | if (t->audmode == V4L2_TUNER_MODE_MONO) | 1879 | if (t->audmode == V4L2_TUNER_MODE_MONO) |
1880 | va.mode = VIDEO_SOUND_MONO; | 1880 | va.mode = VIDEO_SOUND_MONO; |
1881 | else if (t->audmode == V4L2_TUNER_MODE_STEREO) | 1881 | else if (t->audmode == V4L2_TUNER_MODE_STEREO || |
1882 | t->audmode == V4L2_TUNER_MODE_LANG1_LANG2) | ||
1882 | va.mode = VIDEO_SOUND_STEREO; | 1883 | va.mode = VIDEO_SOUND_STEREO; |
1883 | else if (t->audmode == V4L2_TUNER_MODE_LANG1) | 1884 | else if (t->audmode == V4L2_TUNER_MODE_LANG1) |
1884 | va.mode = VIDEO_SOUND_LANG1; | 1885 | va.mode = VIDEO_SOUND_LANG1; |
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c index 7aee37645d63..a65b3cc4bf03 100644 --- a/drivers/media/video/cx25840/cx25840-core.c +++ b/drivers/media/video/cx25840/cx25840-core.c | |||
@@ -810,13 +810,14 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd, | |||
810 | bilingual -> lang1 */ | 810 | bilingual -> lang1 */ |
811 | cx25840_and_or(client, 0x809, ~0xf, 0x00); | 811 | cx25840_and_or(client, 0x809, ~0xf, 0x00); |
812 | break; | 812 | break; |
813 | case V4L2_TUNER_MODE_STEREO: | ||
813 | case V4L2_TUNER_MODE_LANG1: | 814 | case V4L2_TUNER_MODE_LANG1: |
814 | /* mono -> mono | 815 | /* mono -> mono |
815 | stereo -> stereo | 816 | stereo -> stereo |
816 | bilingual -> lang1 */ | 817 | bilingual -> lang1 */ |
817 | cx25840_and_or(client, 0x809, ~0xf, 0x04); | 818 | cx25840_and_or(client, 0x809, ~0xf, 0x04); |
818 | break; | 819 | break; |
819 | case V4L2_TUNER_MODE_STEREO: | 820 | case V4L2_TUNER_MODE_LANG1_LANG2: |
820 | /* mono -> mono | 821 | /* mono -> mono |
821 | stereo -> stereo | 822 | stereo -> stereo |
822 | bilingual -> lang1/lang2 */ | 823 | bilingual -> lang1/lang2 */ |
@@ -824,7 +825,7 @@ static int cx25840_command(struct i2c_client *client, unsigned int cmd, | |||
824 | break; | 825 | break; |
825 | case V4L2_TUNER_MODE_LANG2: | 826 | case V4L2_TUNER_MODE_LANG2: |
826 | /* mono -> mono | 827 | /* mono -> mono |
827 | stereo ->stereo | 828 | stereo -> stereo |
828 | bilingual -> lang2 */ | 829 | bilingual -> lang2 */ |
829 | cx25840_and_or(client, 0x809, ~0xf, 0x01); | 830 | cx25840_and_or(client, 0x809, ~0xf, 0x01); |
830 | break; | 831 | break; |
diff --git a/drivers/media/video/cx88/cx88-tvaudio.c b/drivers/media/video/cx88/cx88-tvaudio.c index da8d97ce0c4b..641a0c5a6490 100644 --- a/drivers/media/video/cx88/cx88-tvaudio.c +++ b/drivers/media/video/cx88/cx88-tvaudio.c | |||
@@ -885,6 +885,7 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual) | |||
885 | set_audio_standard_BTSC(core, 1, EN_BTSC_FORCE_SAP); | 885 | set_audio_standard_BTSC(core, 1, EN_BTSC_FORCE_SAP); |
886 | break; | 886 | break; |
887 | case V4L2_TUNER_MODE_STEREO: | 887 | case V4L2_TUNER_MODE_STEREO: |
888 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
888 | set_audio_standard_BTSC(core, 0, EN_BTSC_FORCE_STEREO); | 889 | set_audio_standard_BTSC(core, 0, EN_BTSC_FORCE_STEREO); |
889 | break; | 890 | break; |
890 | } | 891 | } |
@@ -905,6 +906,7 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual) | |||
905 | EN_NICAM_FORCE_MONO2); | 906 | EN_NICAM_FORCE_MONO2); |
906 | break; | 907 | break; |
907 | case V4L2_TUNER_MODE_STEREO: | 908 | case V4L2_TUNER_MODE_STEREO: |
909 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
908 | set_audio_standard_NICAM(core, | 910 | set_audio_standard_NICAM(core, |
909 | EN_NICAM_FORCE_STEREO); | 911 | EN_NICAM_FORCE_STEREO); |
910 | break; | 912 | break; |
@@ -926,6 +928,7 @@ void cx88_set_stereo(struct cx88_core *core, u32 mode, int manual) | |||
926 | EN_A2_FORCE_MONO2); | 928 | EN_A2_FORCE_MONO2); |
927 | break; | 929 | break; |
928 | case V4L2_TUNER_MODE_STEREO: | 930 | case V4L2_TUNER_MODE_STEREO: |
931 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
929 | set_audio_standard_A2(core, | 932 | set_audio_standard_A2(core, |
930 | EN_A2_FORCE_STEREO); | 933 | EN_A2_FORCE_STEREO); |
931 | break; | 934 | break; |
diff --git a/drivers/media/video/msp3400-kthreads.c b/drivers/media/video/msp3400-kthreads.c index 1c794c3b9f21..c3984ea9ca07 100644 --- a/drivers/media/video/msp3400-kthreads.c +++ b/drivers/media/video/msp3400-kthreads.c | |||
@@ -223,9 +223,9 @@ void msp3400c_set_mode(struct i2c_client *client, int mode) | |||
223 | nor do they support stereo BTSC. */ | 223 | nor do they support stereo BTSC. */ |
224 | static void msp3400c_set_audmode(struct i2c_client *client) | 224 | static void msp3400c_set_audmode(struct i2c_client *client) |
225 | { | 225 | { |
226 | static char *strmode[] = { "mono", "stereo", "lang2", "lang1" }; | 226 | static char *strmode[] = { "mono", "stereo", "lang2", "lang1", "lang1+lang2" }; |
227 | struct msp_state *state = i2c_get_clientdata(client); | 227 | struct msp_state *state = i2c_get_clientdata(client); |
228 | char *modestr = (state->audmode >= 0 && state->audmode < 4) ? | 228 | char *modestr = (state->audmode >= 0 && state->audmode < 5) ? |
229 | strmode[state->audmode] : "unknown"; | 229 | strmode[state->audmode] : "unknown"; |
230 | int src = 0; /* channel source: FM/AM, nicam or SCART */ | 230 | int src = 0; /* channel source: FM/AM, nicam or SCART */ |
231 | 231 | ||
@@ -250,6 +250,7 @@ static void msp3400c_set_audmode(struct i2c_client *client) | |||
250 | case V4L2_TUNER_MODE_MONO: | 250 | case V4L2_TUNER_MODE_MONO: |
251 | case V4L2_TUNER_MODE_LANG1: | 251 | case V4L2_TUNER_MODE_LANG1: |
252 | case V4L2_TUNER_MODE_LANG2: | 252 | case V4L2_TUNER_MODE_LANG2: |
253 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
253 | msp_write_dsp(client, 0x000e, 0x3000); | 254 | msp_write_dsp(client, 0x000e, 0x3000); |
254 | break; | 255 | break; |
255 | } | 256 | } |
@@ -261,6 +262,7 @@ static void msp3400c_set_audmode(struct i2c_client *client) | |||
261 | msp3400c_set_carrier(client, MSP_CARRIER(6.5), MSP_CARRIER(6.5)); | 262 | msp3400c_set_carrier(client, MSP_CARRIER(6.5), MSP_CARRIER(6.5)); |
262 | break; | 263 | break; |
263 | case V4L2_TUNER_MODE_STEREO: | 264 | case V4L2_TUNER_MODE_STEREO: |
265 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
264 | msp3400c_set_carrier(client, MSP_CARRIER(7.2), MSP_CARRIER(7.02)); | 266 | msp3400c_set_carrier(client, MSP_CARRIER(7.2), MSP_CARRIER(7.02)); |
265 | break; | 267 | break; |
266 | case V4L2_TUNER_MODE_LANG1: | 268 | case V4L2_TUNER_MODE_LANG1: |
@@ -296,6 +298,7 @@ static void msp3400c_set_audmode(struct i2c_client *client) | |||
296 | /* switch audio */ | 298 | /* switch audio */ |
297 | switch (state->audmode) { | 299 | switch (state->audmode) { |
298 | case V4L2_TUNER_MODE_STEREO: | 300 | case V4L2_TUNER_MODE_STEREO: |
301 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
299 | src |= 0x0020; | 302 | src |= 0x0020; |
300 | break; | 303 | break; |
301 | case V4L2_TUNER_MODE_MONO: | 304 | case V4L2_TUNER_MODE_MONO: |
@@ -835,6 +838,7 @@ static void msp34xxg_set_source(struct i2c_client *client, u16 reg, int in) | |||
835 | matrix = 0x10; | 838 | matrix = 0x10; |
836 | break; | 839 | break; |
837 | case V4L2_TUNER_MODE_STEREO: | 840 | case V4L2_TUNER_MODE_STEREO: |
841 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
838 | default: | 842 | default: |
839 | source = 1; /* stereo or A|B */ | 843 | source = 1; /* stereo or A|B */ |
840 | matrix = 0x20; | 844 | matrix = 0x20; |
diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c index 14ca251787d5..b0aea4002d11 100644 --- a/drivers/media/video/mxb.c +++ b/drivers/media/video/mxb.c | |||
@@ -790,6 +790,12 @@ static int mxb_ioctl(struct saa7146_fh *fh, unsigned int cmd, void *arg) | |||
790 | DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_STEREO\n")); | 790 | DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_STEREO\n")); |
791 | break; | 791 | break; |
792 | } | 792 | } |
793 | case V4L2_TUNER_MODE_LANG1_LANG2: { | ||
794 | mxb->cur_mode = V4L2_TUNER_MODE_LANG1_LANG2; | ||
795 | byte = TDA9840_SET_BOTH; | ||
796 | DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1_LANG2\n")); | ||
797 | break; | ||
798 | } | ||
793 | case V4L2_TUNER_MODE_LANG1: { | 799 | case V4L2_TUNER_MODE_LANG1: { |
794 | mxb->cur_mode = V4L2_TUNER_MODE_LANG1; | 800 | mxb->cur_mode = V4L2_TUNER_MODE_LANG1; |
795 | byte = TDA9840_SET_LANG1; | 801 | byte = TDA9840_SET_LANG1; |
diff --git a/drivers/media/video/saa7134/saa7134-tvaudio.c b/drivers/media/video/saa7134/saa7134-tvaudio.c index 3043233a8b6e..0db53d192b2a 100644 --- a/drivers/media/video/saa7134/saa7134-tvaudio.c +++ b/drivers/media/video/saa7134/saa7134-tvaudio.c | |||
@@ -482,12 +482,14 @@ static int tvaudio_setstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au | |||
482 | [ V4L2_TUNER_MODE_STEREO ] = "stereo", | 482 | [ V4L2_TUNER_MODE_STEREO ] = "stereo", |
483 | [ V4L2_TUNER_MODE_LANG1 ] = "lang1", | 483 | [ V4L2_TUNER_MODE_LANG1 ] = "lang1", |
484 | [ V4L2_TUNER_MODE_LANG2 ] = "lang2", | 484 | [ V4L2_TUNER_MODE_LANG2 ] = "lang2", |
485 | [ V4L2_TUNER_MODE_LANG1_LANG2 ] = "lang1+lang2", | ||
485 | }; | 486 | }; |
486 | static u32 fm[] = { | 487 | static u32 fm[] = { |
487 | [ V4L2_TUNER_MODE_MONO ] = 0x00, /* ch1 */ | 488 | [ V4L2_TUNER_MODE_MONO ] = 0x00, /* ch1 */ |
488 | [ V4L2_TUNER_MODE_STEREO ] = 0x80, /* auto */ | 489 | [ V4L2_TUNER_MODE_STEREO ] = 0x80, /* auto */ |
489 | [ V4L2_TUNER_MODE_LANG1 ] = 0x00, /* ch1 */ | 490 | [ V4L2_TUNER_MODE_LANG1 ] = 0x00, /* ch1 */ |
490 | [ V4L2_TUNER_MODE_LANG2 ] = 0x01, /* ch2 */ | 491 | [ V4L2_TUNER_MODE_LANG2 ] = 0x01, /* ch2 */ |
492 | [ V4L2_TUNER_MODE_LANG1_LANG2 ] = 0x80, /* auto */ | ||
491 | }; | 493 | }; |
492 | u32 reg; | 494 | u32 reg; |
493 | 495 | ||
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c index 4e6d030d83c0..356bff455ad1 100644 --- a/drivers/media/video/tvaudio.c +++ b/drivers/media/video/tvaudio.c | |||
@@ -1733,6 +1733,7 @@ static int chip_command(struct i2c_client *client, | |||
1733 | mode = VIDEO_SOUND_MONO; | 1733 | mode = VIDEO_SOUND_MONO; |
1734 | break; | 1734 | break; |
1735 | case V4L2_TUNER_MODE_STEREO: | 1735 | case V4L2_TUNER_MODE_STEREO: |
1736 | case V4L2_TUNER_MODE_LANG1_LANG2: | ||
1736 | mode = VIDEO_SOUND_STEREO; | 1737 | mode = VIDEO_SOUND_STEREO; |
1737 | break; | 1738 | break; |
1738 | case V4L2_TUNER_MODE_LANG1: | 1739 | case V4L2_TUNER_MODE_LANG1: |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 724cfbf54b8a..2275bfec5b68 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -883,6 +883,7 @@ struct v4l2_modulator | |||
883 | #define V4L2_TUNER_MODE_LANG2 0x0002 | 883 | #define V4L2_TUNER_MODE_LANG2 0x0002 |
884 | #define V4L2_TUNER_MODE_SAP 0x0002 | 884 | #define V4L2_TUNER_MODE_SAP 0x0002 |
885 | #define V4L2_TUNER_MODE_LANG1 0x0003 | 885 | #define V4L2_TUNER_MODE_LANG1 0x0003 |
886 | #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 | ||
886 | 887 | ||
887 | struct v4l2_frequency | 888 | struct v4l2_frequency |
888 | { | 889 | { |