ASoC: msm: Support setting channel map Multi channel PCM playback

In the usecase of multi channel PCM playback from the formats of
Wave, AAC and AC3, the output is reordered to wave format channel
order. Default the channel map to Wave format and add support to
configure desired channel map from userspace if reordering is not
performed

CRs-Fixed: 395165

Change-Id: I0b3fc94328ec35d41cd789e020fca6bead24bcd8
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
(cherry picked from commit c4f0c16dc6064d00ed2de850b134e1f508ba3190)
Signed-off-by: Hieu Phan <aznrice2k4@gmail.com>

Conflicts:
	sound/soc/msm/msm-pcm-q6.h
	sound/soc/msm/msm-pcm-routing.c
	sound/soc/msm/qdsp6/q6asm.c

Conflicts:
	sound/soc/msm/msm-pcm-q6.h
	sound/soc/msm/msm-pcm-routing.c
ALSA: PCM: volume API implementation

Introduced a new helper function snd_pcm_add_volume_ctls() to
create control elements representing the volume for each PCM
(sub)stream.

Change-Id: Id483257c4fe84a909e7a4af3a5aa3e4f0d5d9ea5
Signed-off-by: Damir Didjusto <damird@codeaurora.org>
ALSA: PCM: channel mapping API implementation

This patch implements the basic data types for the standard channel
mapping API handling.

- The definitions of the channel positions and the new TLV types are
added in sound/asound.h and sound/tlv.h, so that they can be
referred from user-space.

- Introduced a new helper function snd_pcm_add_chmap_ctls() to create
control elements representing the channel maps for each PCM
(sub)stream.

- Some standard pre-defined channel maps are provided for
convenience.

Change-Id: If1685763b7010f36db3b9eb11eba363e84161593
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
(cherry picked from commit ff1e6259367b671a50524bf2dc4260c83c71c7e0)
Signed-off-by: Hieu Phan <aznrice2k4@gmail.com>

Conflicts:
	include/sound/pcm.h
	sound/core/pcm.c
	sound/core/pcm_lib.c
ALSA: Remove VOLATILE flag from chmap ctls

The VOLATILE flag was added to control elements by
snd_pcm_add_chmap_ctls() just because I didn't want to have a
side-effect of "alsactl restore".  But now the set operation doesn't
allow to change the value unless the PCM stream is in PREAPRED state,
there is no reason to keep this flag.  Let's rip it off.

Change-Id: If39dc081b61859b6f1d819c5dfe902f22181a8ab
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Subhash Chandra Bose Naripeddy <snariped@codeaurora.org>
(cherry picked from commit cb7302ba761695c78e874cc61e3e1fb354cdd5bc)
Signed-off-by: Hieu Phan <aznrice2k4@gmail.com>