All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Jarkko Nikula <jarkko.nikula@bitmer.com>, Pavel Machek <pavel@ucw.cz>
Cc: pali.rohar@gmail.com, sre@debian.org, sre@ring0.de,
	kernel list <linux-kernel@vger.kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	linux-omap@vger.kernel.org, tony@atomide.com, khilman@kernel.org,
	aaro.koskinen@iki.fi, ivo.g.dimitrov.75@gmail.com
Subject: Re: 3.19 on Nokia n900: audio quality awful
Date: Thu, 29 Jan 2015 13:19:27 +0200	[thread overview]
Message-ID: <54CA173F.1070301@ti.com> (raw)
In-Reply-To: <20150129073529.GA19122@bitmer.com>

On 01/29/2015 09:35 AM, Jarkko Nikula wrote:
> On Wed, Jan 28, 2015 at 11:41:44PM +0100, Pavel Machek wrote:
>> On Wed 2015-01-28 20:15:46, Jarkko Nikula wrote:
>>> On 01/26/2015 03:20 PM, Peter Ujfalusi wrote:
>>>> On 01/18/2015 02:01 PM, Pavel Machek wrote:
>>> No need to go that far. N900 has been supported in mainline since 2.6.39
>>> or so. Part A of AIC34 (which is basically dual AIC33 in a same package)
>>> drives 2 V for the digital microphone bias and part B 2.5 V for the headset.
>>
>> Let me try... Umm, no change here :-(
>>
>> root@n900:/tmp# arecord delme
>> Recording WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> ^CAborted by signal Interrupt...
>> root@n900:/tmp# hexdump delme
>> 0000000 4952 4646 987c 0000 4157 4556 6d66 2074
>> 0000010 0010 0000 0001 0001 1f40 0000 1f40 0000
>> 0000020 0001 0008 6164 6174 9858 0000 8080 8080
>> 0000030 8080 8080 8080 8080 8080 8080 8080 8080
>> *
>> 0009880
>> root@n900:/tmp# aplay delme
>> Playing WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> root@n900:/tmp#
>>
>> I did this:
>>
>> I'm not sure which one is "main" microphone and which is headset, but
>> I guess 2V should be "close enough" to 2.5V to produce something
>> different from zeros..?
>>
> Main or integrated is digital microphone which does AD conversion itself
> and headset is analogue. If DMIC is without bias codec will sample plain
> zeros from DMIC input but analogue input should always produce some random
> LSB bits from codec's AD converter.
> 
> If codec produces zeros also from analogue input then I suppose codec
> ADC is not powered up or similar. One way to hunt regression if
> bisecting is not possible due reason or another is to dump and diff codec
> registers from /sys/kernel/debug/regmap/ using both working commit and head.
> 
>> diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
>> index 48b0987..f18a5b0 100644
>> --- a/arch/arm/boot/dts/omap3-n900.dts
>> +++ b/arch/arm/boot/dts/omap3-n900.dts
>> @@ -491,6 +491,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> Looks ok for digital mic.
> 
>>  
>>  	tlv320aic3x_aux: tlv320aic3x@19 {
>> @@ -502,6 +504,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> This should be 2, i.e. 2.5 V according to
> Documentation/devicetree/bindings/sound/tlv320aic3x.txt. I think 2 V is
> too low for some headset mics and that was the reason for 2.5 V.

Can you also try this patch to correct the DAPM route for the rx51:

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 04896d6252a2..7f299357c2d2 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -250,14 +250,14 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"FM Transmitter", NULL, "LLOUT"},
 	{"FM Transmitter", NULL, "RLOUT"},

-	{"DMic Rate 64", NULL, "Mic Bias"},
-	{"Mic Bias", NULL, "DMic"},
+	{"DMic Rate 64", NULL, "DMic"},
+	{"DMic", NULL, "Mic Bias"},

 	{"b LINE2R", NULL, "MONO_LOUT"},
 	{"Earphone", NULL, "b HPLOUT"},

-	{"LINE1L", NULL, "b Mic Bias"},
-	{"b Mic Bias", NULL, "HS Mic"}
+	{"LINE1L", NULL, "HS Mic"},
+	{"HS Mic", NULL, "b Mic Bias"},
 };

 static const char * const spk_function[] = {"Off", "On"};

-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: peter.ujfalusi@ti.com (Peter Ujfalusi)
To: linux-arm-kernel@lists.infradead.org
Subject: 3.19 on Nokia n900: audio quality awful
Date: Thu, 29 Jan 2015 13:19:27 +0200	[thread overview]
Message-ID: <54CA173F.1070301@ti.com> (raw)
In-Reply-To: <20150129073529.GA19122@bitmer.com>

On 01/29/2015 09:35 AM, Jarkko Nikula wrote:
> On Wed, Jan 28, 2015 at 11:41:44PM +0100, Pavel Machek wrote:
>> On Wed 2015-01-28 20:15:46, Jarkko Nikula wrote:
>>> On 01/26/2015 03:20 PM, Peter Ujfalusi wrote:
>>>> On 01/18/2015 02:01 PM, Pavel Machek wrote:
>>> No need to go that far. N900 has been supported in mainline since 2.6.39
>>> or so. Part A of AIC34 (which is basically dual AIC33 in a same package)
>>> drives 2 V for the digital microphone bias and part B 2.5 V for the headset.
>>
>> Let me try... Umm, no change here :-(
>>
>> root at n900:/tmp# arecord delme
>> Recording WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> ^CAborted by signal Interrupt...
>> root at n900:/tmp# hexdump delme
>> 0000000 4952 4646 987c 0000 4157 4556 6d66 2074
>> 0000010 0010 0000 0001 0001 1f40 0000 1f40 0000
>> 0000020 0001 0008 6164 6174 9858 0000 8080 8080
>> 0000030 8080 8080 8080 8080 8080 8080 8080 8080
>> *
>> 0009880
>> root at n900:/tmp# aplay delme
>> Playing WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> root at n900:/tmp#
>>
>> I did this:
>>
>> I'm not sure which one is "main" microphone and which is headset, but
>> I guess 2V should be "close enough" to 2.5V to produce something
>> different from zeros..?
>>
> Main or integrated is digital microphone which does AD conversion itself
> and headset is analogue. If DMIC is without bias codec will sample plain
> zeros from DMIC input but analogue input should always produce some random
> LSB bits from codec's AD converter.
> 
> If codec produces zeros also from analogue input then I suppose codec
> ADC is not powered up or similar. One way to hunt regression if
> bisecting is not possible due reason or another is to dump and diff codec
> registers from /sys/kernel/debug/regmap/ using both working commit and head.
> 
>> diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
>> index 48b0987..f18a5b0 100644
>> --- a/arch/arm/boot/dts/omap3-n900.dts
>> +++ b/arch/arm/boot/dts/omap3-n900.dts
>> @@ -491,6 +491,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> Looks ok for digital mic.
> 
>>  
>>  	tlv320aic3x_aux: tlv320aic3x at 19 {
>> @@ -502,6 +504,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> This should be 2, i.e. 2.5 V according to
> Documentation/devicetree/bindings/sound/tlv320aic3x.txt. I think 2 V is
> too low for some headset mics and that was the reason for 2.5 V.

Can you also try this patch to correct the DAPM route for the rx51:

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 04896d6252a2..7f299357c2d2 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -250,14 +250,14 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"FM Transmitter", NULL, "LLOUT"},
 	{"FM Transmitter", NULL, "RLOUT"},

-	{"DMic Rate 64", NULL, "Mic Bias"},
-	{"Mic Bias", NULL, "DMic"},
+	{"DMic Rate 64", NULL, "DMic"},
+	{"DMic", NULL, "Mic Bias"},

 	{"b LINE2R", NULL, "MONO_LOUT"},
 	{"Earphone", NULL, "b HPLOUT"},

-	{"LINE1L", NULL, "b Mic Bias"},
-	{"b Mic Bias", NULL, "HS Mic"}
+	{"LINE1L", NULL, "HS Mic"},
+	{"HS Mic", NULL, "b Mic Bias"},
 };

 static const char * const spk_function[] = {"Off", "On"};

-- 
P?ter

WARNING: multiple messages have this Message-ID (diff)
From: Peter Ujfalusi <peter.ujfalusi@ti.com>
To: Jarkko Nikula <jarkko.nikula@bitmer.com>, Pavel Machek <pavel@ucw.cz>
Cc: <pali.rohar@gmail.com>, <sre@debian.org>, <sre@ring0.de>,
	kernel list <linux-kernel@vger.kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	<linux-omap@vger.kernel.org>, <tony@atomide.com>,
	<khilman@kernel.org>, <aaro.koskinen@iki.fi>,
	<ivo.g.dimitrov.75@gmail.com>
Subject: Re: 3.19 on Nokia n900: audio quality awful
Date: Thu, 29 Jan 2015 13:19:27 +0200	[thread overview]
Message-ID: <54CA173F.1070301@ti.com> (raw)
In-Reply-To: <20150129073529.GA19122@bitmer.com>

On 01/29/2015 09:35 AM, Jarkko Nikula wrote:
> On Wed, Jan 28, 2015 at 11:41:44PM +0100, Pavel Machek wrote:
>> On Wed 2015-01-28 20:15:46, Jarkko Nikula wrote:
>>> On 01/26/2015 03:20 PM, Peter Ujfalusi wrote:
>>>> On 01/18/2015 02:01 PM, Pavel Machek wrote:
>>> No need to go that far. N900 has been supported in mainline since 2.6.39
>>> or so. Part A of AIC34 (which is basically dual AIC33 in a same package)
>>> drives 2 V for the digital microphone bias and part B 2.5 V for the headset.
>>
>> Let me try... Umm, no change here :-(
>>
>> root@n900:/tmp# arecord delme
>> Recording WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> ^CAborted by signal Interrupt...
>> root@n900:/tmp# hexdump delme
>> 0000000 4952 4646 987c 0000 4157 4556 6d66 2074
>> 0000010 0010 0000 0001 0001 1f40 0000 1f40 0000
>> 0000020 0001 0008 6164 6174 9858 0000 8080 8080
>> 0000030 8080 8080 8080 8080 8080 8080 8080 8080
>> *
>> 0009880
>> root@n900:/tmp# aplay delme
>> Playing WAVE 'delme' : Unsigned 8 bit, Rate 8000 Hz, Mono
>> root@n900:/tmp#
>>
>> I did this:
>>
>> I'm not sure which one is "main" microphone and which is headset, but
>> I guess 2V should be "close enough" to 2.5V to produce something
>> different from zeros..?
>>
> Main or integrated is digital microphone which does AD conversion itself
> and headset is analogue. If DMIC is without bias codec will sample plain
> zeros from DMIC input but analogue input should always produce some random
> LSB bits from codec's AD converter.
> 
> If codec produces zeros also from analogue input then I suppose codec
> ADC is not powered up or similar. One way to hunt regression if
> bisecting is not possible due reason or another is to dump and diff codec
> registers from /sys/kernel/debug/regmap/ using both working commit and head.
> 
>> diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
>> index 48b0987..f18a5b0 100644
>> --- a/arch/arm/boot/dts/omap3-n900.dts
>> +++ b/arch/arm/boot/dts/omap3-n900.dts
>> @@ -491,6 +491,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> Looks ok for digital mic.
> 
>>  
>>  	tlv320aic3x_aux: tlv320aic3x@19 {
>> @@ -502,6 +504,8 @@
>>  		DRVDD-supply = <&vmmc2>;
>>  		IOVDD-supply = <&vio>;
>>  		DVDD-supply = <&vio>;
>> +
>> +		ai3x-micbias-vg = <1>;
>>  	};
> This should be 2, i.e. 2.5 V according to
> Documentation/devicetree/bindings/sound/tlv320aic3x.txt. I think 2 V is
> too low for some headset mics and that was the reason for 2.5 V.

Can you also try this patch to correct the DAPM route for the rx51:

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 04896d6252a2..7f299357c2d2 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -250,14 +250,14 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"FM Transmitter", NULL, "LLOUT"},
 	{"FM Transmitter", NULL, "RLOUT"},

-	{"DMic Rate 64", NULL, "Mic Bias"},
-	{"Mic Bias", NULL, "DMic"},
+	{"DMic Rate 64", NULL, "DMic"},
+	{"DMic", NULL, "Mic Bias"},

 	{"b LINE2R", NULL, "MONO_LOUT"},
 	{"Earphone", NULL, "b HPLOUT"},

-	{"LINE1L", NULL, "b Mic Bias"},
-	{"b Mic Bias", NULL, "HS Mic"}
+	{"LINE1L", NULL, "HS Mic"},
+	{"HS Mic", NULL, "b Mic Bias"},
 };

 static const char * const spk_function[] = {"Off", "On"};

-- 
Péter

  reply	other threads:[~2015-01-29 11:20 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-06 17:04 3.19 on Nokia n900: audio quality awful Pavel Machek
2015-01-06 17:04 ` Pavel Machek
2015-01-06 17:25 ` Felipe Balbi
2015-01-06 17:25   ` Felipe Balbi
2015-01-06 17:25   ` Felipe Balbi
2015-01-06 17:51   ` Pavel Machek
2015-01-06 17:51     ` Pavel Machek
2015-01-06 20:28     ` Felipe Balbi
2015-01-06 20:28       ` Felipe Balbi
2015-01-06 20:28       ` Felipe Balbi
2015-01-06 20:50       ` Pavel Machek
2015-01-06 20:50         ` Pavel Machek
2015-01-06 20:54         ` Felipe Balbi
2015-01-06 20:54           ` Felipe Balbi
2015-01-06 20:54           ` Felipe Balbi
2015-01-06 21:57           ` Pavel Machek
2015-01-06 21:57             ` Pavel Machek
2015-01-06 22:02             ` Felipe Balbi
2015-01-06 22:02               ` Felipe Balbi
2015-01-06 22:02               ` Felipe Balbi
2015-01-06 20:57         ` Aaro Koskinen
2015-01-06 20:57           ` Aaro Koskinen
2015-01-06 22:08           ` Pavel Machek
2015-01-06 22:08             ` Pavel Machek
2015-01-06 22:27             ` Aaro Koskinen
2015-01-06 22:27               ` Aaro Koskinen
2015-01-06 22:46               ` Felipe Balbi
2015-01-06 22:46                 ` Felipe Balbi
2015-01-06 22:46                 ` Felipe Balbi
2015-01-06 22:52                 ` Tony Lindgren
2015-01-06 22:52                   ` Tony Lindgren
2015-01-06 22:56                 ` Pavel Machek
2015-01-06 22:56                   ` Pavel Machek
2015-01-06 23:04                   ` Felipe Balbi
2015-01-06 23:04                     ` Felipe Balbi
2015-01-06 23:04                     ` Felipe Balbi
2015-01-06 23:13                     ` Pavel Machek
2015-01-06 23:13                       ` Pavel Machek
2015-01-06 23:29                       ` Felipe Balbi
2015-01-06 23:29                         ` Felipe Balbi
2015-01-06 23:29                         ` Felipe Balbi
2015-01-06 22:58               ` Pavel Machek
2015-01-06 22:58                 ` Pavel Machek
2015-01-07 19:43                 ` Aaro Koskinen
2015-01-07 19:43                   ` Aaro Koskinen
2015-01-06 20:39     ` Aaro Koskinen
2015-01-06 20:39       ` Aaro Koskinen
2015-01-18 12:01 ` Pavel Machek
2015-01-18 12:01   ` Pavel Machek
2015-01-26 13:20   ` Peter Ujfalusi
2015-01-26 13:20     ` Peter Ujfalusi
2015-01-26 13:20     ` Peter Ujfalusi
2015-01-28 18:15     ` Jarkko Nikula
2015-01-28 18:15       ` Jarkko Nikula
2015-01-28 22:41       ` Pavel Machek
2015-01-28 22:41         ` Pavel Machek
2015-01-28 22:41         ` Pavel Machek
2015-01-29  7:35         ` Jarkko Nikula
2015-01-29  7:35           ` Jarkko Nikula
2015-01-29 11:19           ` Peter Ujfalusi [this message]
2015-01-29 11:19             ` Peter Ujfalusi
2015-01-29 11:19             ` Peter Ujfalusi
2015-01-29 20:42             ` Pavel Machek
2015-01-29 20:42               ` Pavel Machek
2015-01-30  8:16               ` Pali Rohár
2015-01-30  8:16                 ` Pali Rohár
2015-01-30  8:52                 ` Pavel Machek
2015-01-30  8:52                   ` Pavel Machek
2015-01-30 10:26             ` Pavel Machek
2015-01-30 10:26               ` Pavel Machek
2015-01-30 10:37               ` Pavel Machek
2015-01-30 10:37                 ` Pavel Machek
2015-01-30 12:40                 ` Peter Ujfalusi
2015-01-30 12:40                   ` Peter Ujfalusi
2015-01-30 12:40                   ` Peter Ujfalusi
2015-01-30 12:43                   ` Peter Ujfalusi
2015-01-30 12:43                     ` Peter Ujfalusi
2015-01-30 12:43                     ` Peter Ujfalusi
2015-01-28 22:02     ` Pavel Machek
2015-01-28 22:02       ` Pavel Machek
2015-01-28 22:02       ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54CA173F.1070301@ti.com \
    --to=peter.ujfalusi@ti.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=ivo.g.dimitrov.75@gmail.com \
    --cc=jarkko.nikula@bitmer.com \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=pali.rohar@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=sre@debian.org \
    --cc=sre@ring0.de \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.