Re: [PATCH 12/18] ASoC: codecs: mt6357: add MT6357 codec

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 15/03/2024 16:15, Mark Brown wrote:
On Fri, Mar 15, 2024 at 04:05:21PM +0100, Alexandre Mergnat wrote:
On 15/03/2024 15:30, Mark Brown wrote:

Let me know, when you change de gain to do a ramp down (start from user gain
to gain=-40db), next time for the ramp up, how/where do you find the user
gain ?

In the register.  You only need to reset the gain to -40dB at the start
of the ramp.

Sorry but I don't understand your logic, I'm not able to implement it...
If I'm at -10dB and doing a ramp to reach -40dB, next time I will read the
register the value will be -40dB.

After we've done the ramp and turned the amplifier off we can just
restore the desired value?  The hardware is not going to care what the
volume is while it's not enabled.

If you do that, HP will be enabled at the saved gain, and after that you will do the ramp. To avoid pop, the driver should be rewrite to:

  Read gain in the reg and save it locally
  Set -40dB in the reg
  Enable HP
  Do ramp

And for the shutdown:

  Read gain in the reg and save it locally
  Do ramp
  Disable HP
  Set saved gain in the reg


To resume, that add 4 more steps to save 2 integers into the driver structure.

IMHO, I don't think it make the code more readable or optimized, but I don't have a strong opinion about that, so if you think it's better, I will change it.



This implementation is also done in other MTK audio codec drivers.

Perhaps they should be updated too?

When microphone isn't capturing, the gain read back from the register is
0dB. I've put some logs in my code and do capture to show how it works:

Is this a property of the hardware or a property of your driver?

At the end of the capture, the gain is set to 0dB by the driver.
At the start of the capture, the gain is set to the setup gain.

So that's a property of the driver then?

Yes


AFAII from the comment in the code, it's done to avoid the "pop noises".

Yes, that's the usual reason to ramp gains.  Though if you've just
copied the code without checking that it's needed it's possible that
this is something that's been fixed in current hardware.

I did the test at 24dB with and without the "pop filter". Isn't big but I ear the pop at the start of the record without the "pop filter".

To be clear, the algo/behavior of this code is an implementation based on the 6k+ lines downstream code for this specific audio codec. But the shape/style is based on upstreamed drivers like mt6358.c.

--
Regards,
Alexandre




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux