diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-07-31 23:44:05 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-07-31 23:44:04 -0700 |
| commit | c1b3ec77abceccd41c527c4ddf662fc5cc1c7ede (patch) | |
| tree | 16fd84eb7ce42094f7cfd4eadc0c709b5f8eb6f0 | |
| parent | d977773d9ab20e02c8ac117906b437edd00a123a (diff) | |
| parent | aa5d0fc24044bec2dadd0007fd881fd4a09f7f6a (diff) | |
Merge "ASoC: msm: qdsp6v2: Open unique COPP port for concurrent ULL streams"
| -rw-r--r-- | sound/soc/msm/qdsp6v2/q6adm.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/sound/soc/msm/qdsp6v2/q6adm.c b/sound/soc/msm/qdsp6v2/q6adm.c index e1bfc950d0e3..018681309f2e 100644 --- a/sound/soc/msm/qdsp6v2/q6adm.c +++ b/sound/soc/msm/qdsp6v2/q6adm.c @@ -2364,7 +2364,8 @@ int adm_open(int port_id, int path, int rate, int channel_mode, int topology, struct adm_cmd_device_open_v5 open; struct adm_cmd_device_open_v6 open_v6; int ret = 0; - int port_idx, copp_idx, flags; + int port_idx, flags; + int copp_idx = -1; int tmp_port = q6audio_get_port_id(port_id); pr_debug("%s:port %#x path:%d rate:%d mode:%d perf_mode:%d,topo_id %d\n", @@ -2418,8 +2419,17 @@ int adm_open(int port_id, int path, int rate, int channel_mode, int topology, (topology == VPM_TX_DM_RFECNS_COPP_TOPOLOGY)) rate = 16000; - copp_idx = adm_get_idx_if_copp_exists(port_idx, topology, perf_mode, - rate, bit_width, app_type); + /* + * Routing driver reuses the same adm for streams with the same + * app_type, sample_rate etc. + * This isn't allowed for ULL streams as per the DSP interface + */ + if (perf_mode != ULTRA_LOW_LATENCY_PCM_MODE) + copp_idx = adm_get_idx_if_copp_exists(port_idx, topology, + perf_mode, + rate, bit_width, + app_type); + if (copp_idx < 0) { copp_idx = adm_get_next_available_copp(port_idx); if (copp_idx >= MAX_COPPS_PER_PORT) { |
