[Eee Pad Transformer Android Development] timduru:
See with Supercurio as to why google play would find your TF101 incompatible, most likely a filter on the buildid that is in your rom or something.

Interfacing with the voodoo module manually:

You can do easily what the app does by hand.

Basically the app sets the analog volume low and waits for the digital volume (the regular android volume slider) to be at maximum, then it increases the analog volume by setting the values into the WM8903 registers.

What the kernel module does is exposing the out1_amplifier register (the headphones) so that we can change its value live.

So you should already have that part.

What you are only missing is something to set the analog volume for you.

This can be done manually by typing that in a terminal:

echo XX > /sys/devices/virtual/misc/voodoo_sound/headphone_amplifier_level

XX being the analog volume level from 0-63

So for example start with a value of 20, put the android volume to maximum

then increase the values by running more echo xx > to up you want.

(carefull as 63 is quite loud and might introduce clipping as it's boosting +6db ;) )

If you prefer to not use the voodoo module you can do that more easily by setting the Headphone analog level from any alsa mixer app from google play.

No need for kernel code or module:

Because yeah , Ironically, since I've ported the "voodoo module", I've looked more into the regular code that we have in recent kernels for the wm8903 codec and soc.

The interesting news is that, well we don't even need a voodoo module on our TF101 to access the WM8903 headphone volume register.

Not even that, but the default implementation of the wm8903 is exposing all its 80 or so registers through the alsa controller already.

So it can be controlled directly by interfacing to that and without any other additionnal kernel module ;)

I've been testing a few things that way and we can benefit the same "voodoo" sound method for the speakers.

Now don't expect too much, but by default the analog level is at 57 and it can still be increased to 63 max.

If your digital media level is already quite high , pushing higher than 57 will generate clipping usually,

But it can still come in handy for low level medias if you're already maxed out android's digitial volume slider.

In that case we can still boost it +6db with the analog volume.

I've tested it with a few files and if it's not a file that is too loud, +3db is reasonable and gives the speakers quite a bit of boost for louder listening if you're not next to the transformer for example.

The WM8903 also has a digital amplifier that will in most case generate saturation, but same than the +6db extra in the analog space, it can still help for low level digital medias, and it's handled by the chip that way.

Most of the other registers seems quite optimal by default, but there might still be a few other to play with ;)

Soooo, I might not have much time in the next couple of weeks, but when I have a bit of time I might have a look at making an application that will interface directly with the wm8903 alsa codec, that way:

- we don't need any new kernel code or "voodoo module"

- we get speaker "voodoo sound" support and allow to increase slightly the analog amp

- add access to the digital booster in cascade with the analog level (which would be in cascade with the digital android level like in voodoo sound)

- more registers tweaks.

For those who want, you can already play with all that through any alsamixer for android !

Have fun ;)