Sound Control: fix register issue when fighting with HTC AudioHAL (rev 2)

HTC's Closed Sourced AudioHAL was doing something funky to their own shadow
registers which caused 1 of amps to be turned off when enabling another one.

Fixed a critical memory corruption derp on my part :( and added mutex
protections to prevent race conditions (making the updates atomic)

The original simplistic hacking force wasn't strong enough against the darkside
that is the HTC AudioHAL :p  Deep magic was needed to fully penetrate and
achieve its intended goal ;)

Bump to version 2.1 to indicate this update

Signed-off-by: faux123 <reioux@gmail.com>
kernel:sched: LOAD_FREQ (4*HZ+61) avoids loadavg Moire

LOAD_FREQ is (5*HZ+1) to avoid high load average when idle:
http://kerneltrap.org/mailarchive/linux-kernel/2007/10/3/328568

I suggest (4*HZ+61) for a better distribution.

With some seconds based load (like SSL heartbeats)
and LOAD_FREQ at (5*HZ+1) I see Moire patterns like inverse sawtooth,
since 2 or 3 probes hit the jobs (load increases quickly),
followed by several probes missing it.

A 4.61 sec interval gives optimal distribution over when within a
second a probe is taken, as .61 is close to golden ratio phi 1.618...
(test in http://ripke.com/goldenratio.c).

12*4.61 = 55.32 secs is still close to a minute,
and 13*4.61=59.93 is even closer than the current 12*5.01=60.12
(with exponents EXP_x adjusted to a ratio of 13 instead of 12).
Linux 3.0.71