[Letux-kernel] AESS / Audio Driver for Pyra

H. Nikolaus Schaller hns at goldelico.com
Mon Oct 29 15:42:49 CET 2018


Hi all,

> Am 29.10.2018 um 13:50 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> 
>> Am 29.10.2018 um 12:44 schrieb Michael Mrozek <EvilDragon at openpandora.org>:
>> 
>> Hi,
>> 
>> AESS / Audio is one of the biggest remaining issues we have on the Pyra.
>> Everything else seems to work good enough for a start now, but missing audio on
>> a gaming handheld is a bit annoying :)
>> 
>> With some kernel version, speaker output stopped completely, but Nikolaus is
>> currently looking into what changed with each kernel version and when exactly it
>> stopped working to get this to work again, at least.
> 
> Ok, here is the result:
> 
> letux-4.16-rc3	is the last version where audio works fine
> letux-4.16-rc4	makes the play command stop after some random time (ca. 1 .. 8 seconds)
> 		and audio sounds fluttering like a damaged capstan
> 
> In letux-4.17 and later there is no sound from the handsfree speakers any more,
> but headsets work. At least sometimes.

I have tried to find diffs for twl6040 or generally sound/ or mcpdm driver or
device tree changes. But there aren't any.

What I did ffind is a diff in the letux_defconfig:

> -# CONFIG_CPU_IDLE is not set
> +CONFIG_CPU_IDLE=y
> +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
> +# CONFIG_CPU_IDLE_GOV_LADDER is not set
> +CONFIG_CPU_IDLE_GOV_MENU=y
> +CONFIG_DT_IDLE_STATES=y
> +
> +#
> +# ARM CPU Idle Drivers
> +#
> +CONFIG_ARM_CPUIDLE=y
> 
> +CONFIG_VIDEOBUF2_V4L2=m

Could CPU_IDLE break the twl6040 audio subsystem? No idea. Therefore, I tried to remove it from 4.19.

And ... it makes audio work!

So we have a simple fix for 4.19. Although no explanation. And no idea how to make it work with CONFIG_CPU_IDLE=y.

If I now look at the commit message where it was introduced into letux-4.16-rc4:

	http://git.goldelico.com/?p=letux-kernel.git;a=commit;h=77a30a6c6d8d100022dbbcf5ed777ad581d7892a

it says:

	CPU idle support was not enabled, so lets enable it.
	That reduces the idle current seen by around 10mA.

(where the 10mA refers to the GTA04 board.)

BTW: omap2plus_defconfig also sets this config (but because the omap5evm has no handsfree speakers
I assume nobody can notice such audio problems).

So we face this situation:
* CONFIG_CPU_IDLE=y reduces idle current of OMAP3 by 10mA (important ower saving!)
* CONFIG_CPU_IDLE=y breaks audio on OMAP5 + twl6040 (but not on OMAP4 + twl6040)

Which config can we use that works for both, GTA04 and Pyra?

BR,
Nikolaus



More information about the Letux-kernel mailing list