audio:Changes to enable LPA/Tunnel

Changes to enable LPA/Tunnel mode

Change-Id: Ic7381c4c45b67ae0cfdcc4a01fc85014ca95dec2
Signed-off-by: Alvin Francis <nivlafx@gmail.com>

Conflicts:
	include/hardware_legacy/AudioHardwareInterface.h
audio: Add ifdefs for LPA/Tunnel

* Require QCOM_DIRECTTRACK to enable this feature.

Change-Id: I8d698b7fef6da09378a965be1f500de2eacce7c9
Signed-off-by: Alvin Francis <nivlafx@gmail.com>

Conflicts:
	include/hardware_legacy/AudioHardwareInterface.h
libhardware_legacy: Add MSM specific flags, devices and channels.

- Add support for MSM flags, devices and channels

Change-Id: I6cb5f34b49e24e6d6f97821189bdb6e96ce283a8
audio: Add ifdefs for MSM specific flags

* Require QCOM_HARDWARE to enable these flags.

Change-Id: Ia20602ac31d7e192c71b48ad21d4112d5af273c6
uevent: Allow multiple uevent listeners from the same process

The netlink socket created by uevent_init sets the nl_pid to the
current PID. nl_pid must be unique per-process, however it does not
have to do with the PID. From the documentation:

"
For a user-space process, nl_pid
is usually the PID of the process owning the destination socket.
However, nl_pid identifies a netlink socket, not a process.  If a
process owns several netlink sockets, then nl_pid can be equal to the
process ID only for at most one socket.
"

In use cases where a single process calls uevent_init more than one
time, the second one will always fail. This patch sets the nl_pid
to 0, which lets the kernel pick its own unique identifier as per the
documentation:

"
If the application sets it to 0, the kernel takes
care of assigning it.  The kernel assigns the process ID to the first
netlink socket the process opens and assigns a unique nl_pid to every
netlink socket that the process subsequently creates.
"

The behavior stays the same for the first socket but will also succeed
in subsequent calls.

Change-Id: I6fa74adc9d5835ff39b86187799998111fc12001
(cherry picked from commit 6dcd02055aaa2ce1e7132d5886557a7a5be6571f)