hal: Extend MULTIPLE_OFFLOAD_ENABLED ifdef

* Fixes compilation for non-MSM8974 devices without
  MULTIPLE_OFFLOAD_ENABLED

Change-Id: I8a83d10e68618e141a128af5198ebf1bfb731a6a
hal: PCM offload shouldn't enable all types of offloading

 * Some older versions of the DSP cannot offload audio streams
   for A/V content. Remove the extra check so each feature must
   be explicitly enabled on the device.

Change-Id: I23aac6be5bd160b61e54eab8761e97bbbd5ae045
hal: Fix the samplerate/bitwidth comparison

Change-Id: If507ee28d4b3333dd91af286f2653554590fd7c4
hal: Avoid unnecessary rerouting for sample rate changes

 * The backend codec supports just a few sample rates directly,
   so make sure that we base our decision to reroute on this
   value instead of the actual sample rate of the stream.

Change-Id: I2ed82354563f60d04febb0e200252d0f45644a5e
Limit codec offload to devices with QCOM_AV_ENHANCEMENTS enabled

Don't even try to build this, nothing will invoke it and it may require
non-existing definitions for compression on the device

Change-Id: I1bf8055259e1dc937048269132a7e717d5fc6a01
hal: Limit MP2 and WMA offload to 8226/8974 devies only

* 8960 devices are not capable of these features.

Change-Id: I37ee867c4e8377d70344abec5d72a5de86c45ca5
hal: Add support for VoWLAN feature

Add VoWLAN pcm id, usecase to enable voice
over WLAN feature.

Change-Id: I2d10ff06342bfcbef15a4769ba90deaeb4218107
hal: Add support for VoWLAN on MSM8974

Update the VoWLAN pcm id for MSM8974

CRs-fixed: 662362
Change-Id: Ia0894fa1347f05e55993af91da91272af3161f83
hal: Update EC support for HPF usecase

- Ensure reference device is set if audio is routed
to speaker/headset during HFP usecase.

Change-Id: Ia404aaa8ec8b80e9f4be14840dfef3bf9afef435
CRs-Fixed: 641513
hal: Permit device switch for primary output in a voip call

The device switch from speaker to earpiece or vice versa fails
during a QQ voip call. Currently, we use the same devices for
all usecases as that of voice/voip call and avoid switching the
same for other usecases when a voip/voice call is active. At
times, voip call has primary output which uses deep buffer path.
With current design in place, we do not permit device switch on
deep buffer path since voip call is active despite the rx on
primary output.
Do not select voip usecase devices if the output stream uses
primary output or in effect permit switching.

Change-Id: Ie61a7d7d8f27d55a393d173a724697045f66e1d6
CRs-Fixed: 685222
post_proc: Fix improper datatype of EQ preset band level value

unsigned int causes negative band level turn out to be extreme large
value, which results in EQ works abnormally due to unexpected parameter
sent.

Change-Id: I81120c604f4e9f23b25d5a45a7b0294fea63d207
CRs-Fixed: 696825
hal: Add/remove speaker protection usecase to/from global list

Audio hal maintains link list that contains all active audio/voice
usecases. When usecase is being started it shoule be be added to
list and removed when usecase is disabled.
Speaker protection usecases were not being added to the list which was
causing the speaker calibration pre-emption to fail. Change updates the
usecase list and ensures that device lock is not acquired when
calibration is being pre-empted

CRs-fixed: 688972
Change-Id: I377346243ceaaebfcf80673f367dbd8bb83d5381
hal: Speaker protection pre-emption fixes

Speaker protection module should acquire the device lock for all global
operations. This change will ensure that the pre-conditions required for
calibration will be met and if any audio/voice usecase is started when
speaker calibration is being done,speaker protection thread should
cancel the calibration.

Change-Id: I0d5fa23657161ec971e851944a0045a01d8248ea
CRs-fixed: 688972
hal: add the stream to uc_info for speaker protection enablement

Stream was null causing data abort when speaker
protection is enabled. Set it to primary_output in case
of playback and set device in case of recording.

Change-Id: I4b532ad7d76adab75e1ef0719eaba197eb3d9379
hal: allow msm8610 to use same functions as msm8226/msm8974

Change-Id: I0e161e28fe798884ed42bb13e23100ab0b66a062
hal: speaker protection is msm8974 only

Change-Id: If07c3b1ad902de283707da673c5c305451e4ee10
post_proc: Fix bassboost/virtualizer not disabled on speaker

When output is unintended device, there's no need to query enable_flag
before setting effect to disabled state. There's possiblity that
enable_flag is 0 as initialized value, which hinder effects from being
disabled.

Change-Id: Ib90c0ad0982dc8274129bb1bed7861e11670fbdb
hal: miscellaneous fixes

Fixes for the following issues reported by KW

21725, 21726, 21727, 21737, 21738, 21739, 21740, 21750,
21751, 21752, 25317, 30602, 32620, 36778, 41817, 41819,
50942, 54468, 54470, 54479, 55569, 54481, 55570, 55571,
58485, 85112, 85122, 85123

Change-Id: I9abef07db7ccdc19789a201eb268a97e1b360cad
hal: Fix no Tx issue during multi party HFP calls

- When an incoming MT HFP call is accepted during an ongoing
  MO HFP call, the MO call goes to held state. Later, if this held
  call is rejected, Tx is not heard at the far end of the incoming
  call from that moment.
- When the held call is rejected, the input device gets disabled due
  to which Tx samples are not captured.
- Fix the issue by ensuring that the input device is not set to none when
  HFP is active.

CRs-Fixed: 656928
Change-Id: Ie3f0886c0412bfdb3e450c54e9f4b651e992f84e
hal: Fix arguments passed to set_echo_reference

* set_echo_reference function takes (struct audio_device *, bool) but is
  being passed (struct mixer *, int) instead.

Change-Id: I3b4fab2b2d266eebac0d5bab80f7a377d442d8fa