ALSA: control: add support for ENUMERATED user space controls

Handling of user control elements was implemented for all types except
ENUMERATED.  This type will be needed for the device-specific mixers of
upcoming FireWire drivers.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
ALSA: control: remove compilation warning on 32-bit

This was introduced by 'ALSA: control: add support for ENUMERATED user
space controls' which adds a u64 variable that gets cast to a pointer:

sound/core/control.c: In function 'snd_ctl_elem_init_enum_names':
sound/core/control.c:1089: warning: cast to pointer from integer of different size

Cast to uintptr_t before casting to pointer to avoid the warning.

Signed-off-by: Olof Johansson <olof@lixom.net>
[cl: replace long with uintptr_t]
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
ALSA: hwdep: silence integer overflow warning

Smatch complains that if device is INT_MAX then device + 1 can
overflow.  It just means we would have an annoying loop while we
check all the devices from -2147483648 to SNDRV_MINOR_HWDEPS.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
ALSA: oss-mixer - use strlcpy() instead strcpy()

This is mostly a static checker fix more than anything else.  We're
copying from a 64 char buffer into a 44 char buffer.

The 64 character buffer is str[] in snd_mixer_oss_build_test_all().
The call tree is:
	snd_mixer_oss_build_test_all()
	-> snd_mixer_oss_build_test()
	   -> snd_mixer_oss_build_test().

We never actually do fill str[] buffer all the way to 64 characters.
The longest string is:
	sprintf(str, "%s Playback Switch", ptr->name);
ptr->name is a 32 character buffer so 32 plus 16 characters for
" Playback Switch" still puts us over the 44 limit from "id.name".

Most likely ptr->name never gets filled to the limit, but we can't
really change the size of that buffer so lets just use strlcpy() here
and be safe.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
ALSA: pcm: add snd_pcm_hw_rule_noresample()

Add a helper function to allow drivers to disable hardware resampling
when the application has specified the SNDRV_PCM_HW_PARAMS_NORESAMPLE
flag.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
ASoc: msm: Modify debug messages with correct levels

Modify some of the debug messages in codec driver and
afe driver to debug from error to prevent excessive
logging

Change-Id: Ib0ccf0708cfd7965b52a5f672e7e681ff182b3d6
CRs-fixed: 355418
Signed-off-by: Swaminathan Sathappan <Swami@codeaurora.org>

Conflicts:
	drivers/mfd/wcd9xxx-slimslave.c
ALSA: pcm - Avoid GFP_ATOMIC in snd_pcm_link()

GFP_ATOMIC is used in snd_pcm_link() just because the kmalloc is
called inside a lock.  Since this function isn't too critical for
speed and is rarely called in practice, better to allocate the chunk
at first before spinlock and free it in error paths, so that
GFP_KERNEL can be used.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

Conflicts:
	sound/core/pcm_native.c

Change-Id: I93676349c5a04e1b31c22761a1f9a729d6af1d1d
ALSA: pcm - Export snd_pcm_lib_default_mmap() helper

Export the default mmap function, snd_pcm_lib_default_mmap().
The upcoming non-snooping support in HD-audio driver will use this
to override the mmap method.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
ALSA: rawmidi - Use workq for event handling

Kill tasklet usage in rawmidi core code.  Use workq for the event callback
instead of tasklet (which is used only in core/seq/seq_midi.c).

Signed-off-by: Takashi Iwai <tiwai@suse.de>
audio: remove handset pop-noise

When receiver opens immediately after it is  closed, the pop-noise occurs.

Change-Id: I8e5374edea9f8710963b7669e64b109db2354650
ASoC: msm: qdsp6: check for invalid port index

Function which converts port ID to port index can return
error value if port ID is invalid. Caller should not
blindly use return value without checking

Change-Id: I02b8112b6714e3364758907e7078bcbb88d45b6b
Signed-off-by: Patrick Lai <plai@codeaurora.org>
Asoc: msm: Set the right topology during in call voice recording

Obsereved silence in incall voice recording with dual mic, when fluence is
enabled.Fluence topology is applied even on audio recording path.Default topology
is set for incall voice recording.

CRs-Fixed: 454359
Change-Id: I9d34f00e424355fdc183ce1a5769c4083b6ae6a7
Signed-off-by: Sidipotu Ashok <sashok@codeaurora.org>
Asoc: msm: Configure sampling rate to 48KHz for quad-mic topology

Quad-mic calibration data is based on 48KHz instead of 16KHz, so
making change to use the default ADM COPP rate which is 48KHz.

Change-Id: I61fc28ec40c73a9c194521aea6eceeea3db811e9
CRs-Fixed: 344905
Signed-off-by: Jay Wang <jaywang@codeaurora.org>
Asoc: msm: Configure sampling rate to 48KHz for quad-mic topology

Quad-mic calibration data is based on 48KHz instead of 16KHz, so
making change to use the default ADM COPP rate which is 48KHz when
multi-channel ADM open function is called

Change-Id: I0d9a9b6f1197e4c034920f534f9e7db7d8aac41f
Signed-off-by: Jay Wang <jaywang@codeaurora.org>
ASoC: msm: qdsp6: add check for maximum COPPs allowed

There is maximum number of COPPs ASM session can be routed
to even though there are far more number of AFE ports.
Add the check to make sure caller is not routing to more
than ADM can actually support.

Change-Id: Iee97dd7e5d21820c87244a422fa252c2228185f9
Signed-off-by: Patrick Lai <plai@codeaurora.org>

Conflicts:
	sound/soc/msm/qdsp6/q6adm.c
ASoC: msm: qdsp6: Check copp_id's array index

Validate the AFE port index before using it as copp_id's
array index.

Change-Id: I16112d03779980ce787ea78b589b34b5fd59ab36
Signed-off-by: Jay Wang <jaywang@codeaurora.org>
ASoC: msm: Fix delay in switching from WFD session

- When a running WFD session is paused/disconnected, there is
  a delay of about 10-15 seconds in switching audio from WFD
  sink to target.
- pcm_write is blocked because pausing/disconnecting the WFD
  session closes the backend DAI before a new link is established.
- Avoid closing afe if front end PCM session is still active.

CRs-Fixed: 444163
CRs-Fixed: 425512
Change-Id: I1ad6de1e201aa6130c397007219c0d370c7be2a1
Signed-off-by: Satya Krishna Pindiproli <satyak@codeaurora.org>
ASoC: msm: Fix for proxy port open failure in WFD session

When playback is paused and proxy device disabled, afe is
not closed. This results in failure of proxy port open in the second
iteration. Fix the same by closing and opening the proxy.

Change-Id: Idfa94e5756d87e59dc0101fd688d6accfe6287e7
CRs-Fixed: 447001
CRs-Fixed: 446504
Signed-off-by: Satya Krishna Pindiproli <satyak@codeaurora.org>