* [PATCH] Fix tm6010 audio [not found] ` <4E9C65CD.2070409@arcor.de> @ 2011-11-08 0:45 ` Dmitri Belimov 2011-11-08 9:12 ` Mauro Carvalho Chehab 2011-11-24 16:20 ` Mauro Carvalho Chehab 0 siblings, 2 replies; 4+ messages in thread From: Dmitri Belimov @ 2011-11-08 0:45 UTC (permalink / raw) To: Stefan Ringel; +Cc: mchehab, linux-media [-- Attachment #1: Type: text/plain, Size: 4708 bytes --] Hi I found why audio dosn't work for me and fix it. 2Stefan: The V4L2_STD_DK has V4L2_STD_SECAM_DK but not equal switch-case statement not worked you can use if (dev->norm & V4L2_STD_DK) { } This patch fix this problem. Other, please don't remove any workarounds without important reason. For your chip revision it can be work but for other audio will be bad. I can watch TV but radio not work. After start Gnomeradio I see VIDIOCGAUDIO incorrect VIDIOCSAUDIO incorrect VIDIOCSFREQ incorrect Try found what happens with radio. diff -r -U 3 tm6000.old/tm6000-core.c tm6000/tm6000-core.c --- tm6000.old/tm6000-core.c 2011-08-29 14:16:01.000000000 +1000 +++ tm6000/tm6000-core.c 2011-11-08 02:31:48.000000000 +1000 @@ -640,11 +640,13 @@ if (dev->dev_type == TM6010) { /* Audio crossbar setting, default SIF1 */ u8 areg_f0; + u8 areg_07 = 0x10; switch (dev->rinput.amux) { case TM6000_AMUX_SIF1: case TM6000_AMUX_SIF2: areg_f0 = 0x03; + areg_07 = 0x30; break; case TM6000_AMUX_ADC1: areg_f0 = 0x00; @@ -664,6 +666,9 @@ /* Set audio input crossbar */ tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, areg_f0, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + areg_07, 0xf0); } else { u8 areg_eb; /* Audio setting, default LINE1 */ diff -r -U 3 tm6000.old/tm6000-stds.c tm6000/tm6000-stds.c --- tm6000.old/tm6000-stds.c 2011-08-29 14:16:01.000000000 +1000 +++ tm6000/tm6000-stds.c 2011-11-08 03:04:37.000000000 +1000 @@ -394,7 +394,14 @@ case V4L2_STD_SECAM_L: areg_05 |= 0x00; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 |= 0x10; break; } @@ -402,11 +409,23 @@ /* A2 */ case 1: switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: + case V4L2_STD_PAL_B: + case V4L2_STD_PAL_B1: + case V4L2_STD_SECAM_B: + case V4L2_STD_PAL_G: + case V4L2_STD_PAL_H: + case V4L2_STD_SECAM_G: + case V4L2_STD_SECAM_H: areg_05 = 0x05; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x09; break; } @@ -414,11 +433,23 @@ /* NICAM */ case 2: switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: + case V4L2_STD_PAL_B: + case V4L2_STD_PAL_B1: + case V4L2_STD_SECAM_B: + case V4L2_STD_PAL_G: + case V4L2_STD_PAL_H: + case V4L2_STD_SECAM_G: + case V4L2_STD_SECAM_H: areg_05 = 0x07; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x06; break; case V4L2_STD_PAL_I: @@ -435,7 +466,14 @@ case 3: switch (dev->norm) { /* DK3_A2 */ - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x0b; break; /* Korea */ @@ -571,10 +609,16 @@ case TM6000_AMUX_ADC1: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x00, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_ADC2: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x08, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_SIF1: reg_08_e2 |= 0x02; @@ -584,6 +628,9 @@ tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; case TM6000_AMUX_SIF2: reg_08_e2 |= 0x02; @@ -593,6 +640,9 @@ tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf7); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; default: break; Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> With my best regards, Dmitry. [-- Attachment #2: tm6010_audio_fix.patch --] [-- Type: text/x-patch, Size: 4137 bytes --] diff -r -U 3 tm6000.old/tm6000-core.c tm6000/tm6000-core.c --- tm6000.old/tm6000-core.c 2011-08-29 14:16:01.000000000 +1000 +++ tm6000/tm6000-core.c 2011-11-08 02:31:48.000000000 +1000 @@ -640,11 +640,13 @@ if (dev->dev_type == TM6010) { /* Audio crossbar setting, default SIF1 */ u8 areg_f0; + u8 areg_07 = 0x10; switch (dev->rinput.amux) { case TM6000_AMUX_SIF1: case TM6000_AMUX_SIF2: areg_f0 = 0x03; + areg_07 = 0x30; break; case TM6000_AMUX_ADC1: areg_f0 = 0x00; @@ -664,6 +666,9 @@ /* Set audio input crossbar */ tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, areg_f0, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + areg_07, 0xf0); } else { u8 areg_eb; /* Audio setting, default LINE1 */ diff -r -U 3 tm6000.old/tm6000-stds.c tm6000/tm6000-stds.c --- tm6000.old/tm6000-stds.c 2011-08-29 14:16:01.000000000 +1000 +++ tm6000/tm6000-stds.c 2011-11-08 03:04:37.000000000 +1000 @@ -394,7 +394,14 @@ case V4L2_STD_SECAM_L: areg_05 |= 0x00; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 |= 0x10; break; } @@ -402,11 +409,23 @@ /* A2 */ case 1: switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: + case V4L2_STD_PAL_B: + case V4L2_STD_PAL_B1: + case V4L2_STD_SECAM_B: + case V4L2_STD_PAL_G: + case V4L2_STD_PAL_H: + case V4L2_STD_SECAM_G: + case V4L2_STD_SECAM_H: areg_05 = 0x05; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x09; break; } @@ -414,11 +433,23 @@ /* NICAM */ case 2: switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: + case V4L2_STD_PAL_B: + case V4L2_STD_PAL_B1: + case V4L2_STD_SECAM_B: + case V4L2_STD_PAL_G: + case V4L2_STD_PAL_H: + case V4L2_STD_SECAM_G: + case V4L2_STD_SECAM_H: areg_05 = 0x07; break; - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x06; break; case V4L2_STD_PAL_I: @@ -435,7 +466,14 @@ case 3: switch (dev->norm) { /* DK3_A2 */ - case V4L2_STD_DK: + case V4L2_STD_SECAM_D: + case V4L2_STD_SECAM_K: + case V4L2_STD_SECAM_K1: + case V4L2_STD_SECAM_DK: + case V4L2_STD_PAL_D: + case V4L2_STD_PAL_D1: + case V4L2_STD_PAL_K: + case V4L2_STD_PAL_DK: areg_05 = 0x0b; break; /* Korea */ @@ -571,10 +609,16 @@ case TM6000_AMUX_ADC1: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x00, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_ADC2: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x08, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_SIF1: reg_08_e2 |= 0x02; @@ -584,6 +628,9 @@ tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; case TM6000_AMUX_SIF2: reg_08_e2 |= 0x02; @@ -593,6 +640,9 @@ tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf7); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; default: break; Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Fix tm6010 audio 2011-11-08 0:45 ` [PATCH] Fix tm6010 audio Dmitri Belimov @ 2011-11-08 9:12 ` Mauro Carvalho Chehab 2011-11-24 16:20 ` Mauro Carvalho Chehab 1 sibling, 0 replies; 4+ messages in thread From: Mauro Carvalho Chehab @ 2011-11-08 9:12 UTC (permalink / raw) To: Dmitri Belimov; +Cc: Stefan Ringel, linux-media Em 07-11-2011 22:45, Dmitri Belimov escreveu: > Hi > ... > > I can watch TV but radio not work. After start Gnomeradio I see > VIDIOCGAUDIO incorrect > VIDIOCSAUDIO incorrect > VIDIOCSFREQ incorrect > > Try found what happens with radio. Those ioctl's are gone since kernel 2.6.39, as they are part of the V4L1 API. You need to update your radio applications to the ones that implement V4L2 calls. The xawtv's radio application works with V4L2 API. AFAIKT, there are also some versions of gnomeradio implementing V4L2. Regards, Mauro ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Fix tm6010 audio 2011-11-08 0:45 ` [PATCH] Fix tm6010 audio Dmitri Belimov 2011-11-08 9:12 ` Mauro Carvalho Chehab @ 2011-11-24 16:20 ` Mauro Carvalho Chehab 2011-11-25 0:13 ` Dmitri Belimov 1 sibling, 1 reply; 4+ messages in thread From: Mauro Carvalho Chehab @ 2011-11-24 16:20 UTC (permalink / raw) To: Dmitri Belimov; +Cc: Stefan Ringel, linux-media, fabbione Em 07-11-2011 22:45, Dmitri Belimov escreveu: > Hi > > I found why audio dosn't work for me and fix it. > > 2Stefan: > The V4L2_STD_DK has V4L2_STD_SECAM_DK but not equal > switch-case statement not worked > > you can use > if (dev->norm & V4L2_STD_DK) { > } > > This patch fix this problem. > > Other, please don't remove any workarounds without important reason. > For your chip revision it can be work but for other audio will be bad. > > I can watch TV but radio not work. After start Gnomeradio I see > VIDIOCGAUDIO incorrect > VIDIOCSAUDIO incorrect > VIDIOCSFREQ incorrect > > Try found what happens with radio. This patch has several issues. The usage of switch for video doesn't work well. A better approach follows. Not tested yet. PS.: I couldn't test it: not sure why, but the audio source is not working for me: arecord is not able to read from the device input. - [media] tm6000: Fix tm6010 audio standard selection A V4L2 standards mask may contain several standards. A more restricted mask with just one standard is used when user needs to bind to an specific standard that can't be auto-detect among a more generic mask. So, Improve the autodetection logic to detect the correct audio standard most of the time. Based on a patch made by Dmitri Belimov <d.belimov@gmail.com>. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> diff --git a/drivers/media/video/tm6000/tm6000-core.c b/drivers/media/video/tm6000/tm6000-core.c index 9783616..55d097e 100644 --- a/drivers/media/video/tm6000/tm6000-core.c +++ b/drivers/media/video/tm6000/tm6000-core.c @@ -696,11 +696,13 @@ int tm6000_set_audio_rinput(struct tm6000_core *dev) if (dev->dev_type == TM6010) { /* Audio crossbar setting, default SIF1 */ u8 areg_f0; + u8 areg_07 = 0x10; switch (dev->rinput.amux) { case TM6000_AMUX_SIF1: case TM6000_AMUX_SIF2: areg_f0 = 0x03; + areg_07 = 0x30; break; case TM6000_AMUX_ADC1: areg_f0 = 0x00; @@ -720,6 +722,9 @@ int tm6000_set_audio_rinput(struct tm6000_core *dev) /* Set audio input crossbar */ tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, areg_f0, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + areg_07, 0xf0); } else { u8 areg_eb; /* Audio setting, default LINE1 */ diff --git a/drivers/media/video/tm6000/tm6000-stds.c b/drivers/media/video/tm6000/tm6000-stds.c index 9a4145d..9dc0831 100644 --- a/drivers/media/video/tm6000/tm6000-stds.c +++ b/drivers/media/video/tm6000/tm6000-stds.c @@ -361,82 +361,51 @@ static int tm6000_set_audio_std(struct tm6000_core *dev) return 0; } - switch (tm6010_a_mode) { + /* + * STD/MN shouldn't be affected by tm6010_a_mode, as there's just one + * audio standard for each V4L2_STD type. + */ + if ((dev->norm & V4L2_STD_NTSC) == V4L2_STD_NTSC_M_KR) { + areg_05 |= 0x04; + } else if ((dev->norm & V4L2_STD_NTSC) == V4L2_STD_NTSC_M_JP) { + areg_05 |= 0x43; + } else if (dev->norm & V4L2_STD_MN) { + areg_05 |= 0x22; + } else switch (tm6010_a_mode) { /* auto */ case 0: - switch (dev->norm) { - case V4L2_STD_NTSC_M_KR: + if ((dev->norm & V4L2_STD_SECAM) == V4L2_STD_SECAM_L) areg_05 |= 0x00; - break; - case V4L2_STD_NTSC_M_JP: - areg_05 |= 0x40; - break; - case V4L2_STD_NTSC_M: - case V4L2_STD_PAL_M: - case V4L2_STD_PAL_N: - areg_05 |= 0x20; - break; - case V4L2_STD_PAL_Nc: - areg_05 |= 0x60; - break; - case V4L2_STD_SECAM_L: - areg_05 |= 0x00; - break; - case V4L2_STD_DK: + else /* Other PAL/SECAM standards */ areg_05 |= 0x10; - break; - } break; /* A2 */ case 1: - switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: - areg_05 = 0x05; - break; - case V4L2_STD_DK: + if (dev->norm & V4L2_STD_DK) areg_05 = 0x09; - break; - } + else + areg_05 = 0x05; break; /* NICAM */ case 2: - switch (dev->norm) { - case V4L2_STD_B: - case V4L2_STD_GH: - areg_05 = 0x07; - break; - case V4L2_STD_DK: + if (dev->norm & V4L2_STD_DK) { areg_05 = 0x06; - break; - case V4L2_STD_PAL_I: + } else if (dev->norm & V4L2_STD_PAL_I) { areg_05 = 0x08; - break; - case V4L2_STD_SECAM_L: + } else if (dev->norm & V4L2_STD_SECAM_L) { areg_05 = 0x0a; areg_02 = 0x02; - break; + } else { + areg_05 = 0x07; } nicam_flag = 1; break; /* other */ case 3: - switch (dev->norm) { - /* DK3_A2 */ - case V4L2_STD_DK: + if (dev->norm & V4L2_STD_DK) { areg_05 = 0x0b; - break; - /* Korea */ - case V4L2_STD_NTSC_M_KR: - areg_05 = 0x04; - break; - /* EIAJ */ - case V4L2_STD_NTSC_M_JP: - areg_05 = 0x03; - break; - default: + } else { areg_05 = 0x02; - break; } break; } @@ -557,10 +526,16 @@ int tm6000_set_standard(struct tm6000_core *dev) case TM6000_AMUX_ADC1: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x00, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_ADC2: tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x08, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x10, 0xf0); break; case TM6000_AMUX_SIF1: reg_08_e2 |= 0x02; @@ -570,6 +545,9 @@ int tm6000_set_standard(struct tm6000_core *dev) tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf3); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; case TM6000_AMUX_SIF2: reg_08_e2 |= 0x02; @@ -579,6 +557,9 @@ int tm6000_set_standard(struct tm6000_core *dev) tm6000_set_reg(dev, TM6010_REQ08_RE4_ADC_IN2_SEL, 0xf7); tm6000_set_reg_mask(dev, TM6010_REQ08_RF0_DAUDIO_INPUT_CONFIG, 0x02, 0x0f); + /* Mux overflow workaround */ + tm6000_set_reg_mask(dev, TM6010_REQ07_R07_OUTPUT_CONTROL, + 0x30, 0xf0); break; default: break; ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Fix tm6010 audio 2011-11-24 16:20 ` Mauro Carvalho Chehab @ 2011-11-25 0:13 ` Dmitri Belimov 0 siblings, 0 replies; 4+ messages in thread From: Dmitri Belimov @ 2011-11-25 0:13 UTC (permalink / raw) To: Mauro Carvalho Chehab; +Cc: Stefan Ringel, linux-media, fabbione Hi > Em 07-11-2011 22:45, Dmitri Belimov escreveu: > > Hi > > > > I found why audio dosn't work for me and fix it. > > > > 2Stefan: > > The V4L2_STD_DK has V4L2_STD_SECAM_DK but not equal > > switch-case statement not worked > > > > you can use > > if (dev->norm & V4L2_STD_DK) { > > } > > > > This patch fix this problem. > > > > Other, please don't remove any workarounds without important reason. > > For your chip revision it can be work but for other audio will be > > bad. > > > > I can watch TV but radio not work. After start Gnomeradio I see > > VIDIOCGAUDIO incorrect > > VIDIOCSAUDIO incorrect > > VIDIOCSFREQ incorrect > > > > Try found what happens with radio. > > This patch has several issues. The usage of switch for video doesn't > work well. A better approach follows. Not tested yet. > > PS.: I couldn't test it: not sure why, but the audio source is not > working for me: arecord is not able to read from the device input. URB_MSG_AUDIO is zero size no data for fill to audio buffer. for watch TV I used this command mplayer -v tv:// -tv driver=v4l2:fps=25:outfmt=i420:width=720:height=576:alsa:adevice=hw.1,0:amode=1:audiorate=48000:forceaudio:immediatemode=0:freq=77.25:normid=15 -aspect 4:3 -vo xv AFTER this command radio can works URB_MSG_AUDIO is not zero and audio buffer filled. I think incorrect init a register. When I start mplayer a register set correct mode and audio via arecord and sox can work. I try found it. With my best regards, Dmitry. > - > [media] tm6000: Fix tm6010 audio standard selection > > A V4L2 standards mask may contain several standards. A more restricted > mask with just one standard is used when user needs to bind to an > specific standard that can't be auto-detect among a more generic mask. > > So, Improve the autodetection logic to detect the correct audio > standard most of the time. > > Based on a patch made by Dmitri Belimov <d.belimov@gmail.com>. > > Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> > > > diff --git a/drivers/media/video/tm6000/tm6000-core.c > b/drivers/media/video/tm6000/tm6000-core.c index 9783616..55d097e > 100644 --- a/drivers/media/video/tm6000/tm6000-core.c > +++ b/drivers/media/video/tm6000/tm6000-core.c > @@ -696,11 +696,13 @@ int tm6000_set_audio_rinput(struct tm6000_core > *dev) if (dev->dev_type == TM6010) { > /* Audio crossbar setting, default SIF1 */ > u8 areg_f0; <snip> > + 0x30, 0xf0); > break; > default: > break; ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-11-25 0:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <4E8C5675.8070604@arcor.de>
[not found] ` <20111017155537.6c55aec8@glory.local>
[not found] ` <4E9C65CD.2070409@arcor.de>
2011-11-08 0:45 ` [PATCH] Fix tm6010 audio Dmitri Belimov
2011-11-08 9:12 ` Mauro Carvalho Chehab
2011-11-24 16:20 ` Mauro Carvalho Chehab
2011-11-25 0:13 ` Dmitri Belimov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox