audio: Add control to set USB AFE port service level
Add control to set USB AFE port service level.
Values supported are low latency and default
CRs-Fixed: 2211416
Change-Id: Ib3e77b928d257a9c8760ae8d7ffa26a126ddaf5f
Signed-off-by: Haynes Mathew George <hgeorge@codeaurora.org>
diff --git a/dsp/q6afe.c b/dsp/q6afe.c
index a401d60..98f4bd6 100644
--- a/dsp/q6afe.c
+++ b/dsp/q6afe.c
@@ -131,6 +131,7 @@
#define TIMEOUT_MS 1000
#define Q6AFE_MAX_VOLUME 0x3FFF
+#define HS_USB_INTERVAL_US 125
static int pcm_afe_instance[2];
static int proxy_afe_instance[2];
@@ -2971,6 +2972,25 @@
goto exit;
}
+ config.pdata.param_id = AFE_PARAM_ID_PORT_LATENCY_MODE_CONFIG;
+ config.pdata.param_size = sizeof(config.latency_config);
+ config.latency_config.minor_version =
+ AFE_API_MINOR_VERSION_USB_AUDIO_LATENCY_MODE;
+ if (afe_config->usb_audio.service_interval > 0 &&
+ afe_config->usb_audio.service_interval <= HS_USB_INTERVAL_US)
+ config.latency_config.mode = AFE_PORT_LOW_LATENCY_MODE;
+ else
+ config.latency_config.mode = AFE_PORT_DEFAULT_LATENCY_MODE;
+
+ ret = afe_apr_send_pkt(&config, &this_afe.wait[index]);
+ if (ret) {
+ pr_debug("%s: AFE device param cmd latency mode failed %d\n",
+ __func__, ret);
+ /* latency mode is an optimization, not a requirement */
+ ret = 0;
+ goto exit;
+ }
+
exit:
return ret;
}