OSDN Git Service

ASoC: msm_sdw: Fix random mute on speaker when device switch
authorLaxminath Kasam <lkasam@codeaurora.org>
Sat, 18 Mar 2017 07:07:30 +0000 (12:37 +0530)
committerGerrit - the friendly Code Review server <code-review@localhost>
Wed, 22 Mar 2017 07:37:24 +0000 (00:37 -0700)
Observe random mute on speaker during device switch on
secondary images. Avoid reading previous register
read when SWR slave read and overwrite of previous register
when SWR slave write, by adjusting delays in respective APIs.

Change-Id: I302968ad8e774598c8414e05ba669f90bf39b82c
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
sound/soc/codecs/msm_sdw/msm_sdw_cdc.c

index 1d1dd0f..0a2fd3d 100644 (file)
@@ -1044,7 +1044,7 @@ static int msm_sdw_swrm_read(void *handle, int reg)
         * Add sleep as SWR slave access read takes time.
         * Allow for RD_DONE to complete for previous register if any.
         */
-       usleep_range(50, 55);
+       usleep_range(100, 105);
 
        /* read_lock */
        mutex_lock(&msm_sdw->sdw_read_lock);
@@ -1079,6 +1079,11 @@ static int msm_sdw_bulk_write(struct msm_sdw_priv *msm_sdw,
        sdw_wr_addr_base = MSM_SDW_AHB_BRIDGE_WR_ADDR_0;
        sdw_wr_data_base = MSM_SDW_AHB_BRIDGE_WR_DATA_0;
 
+       /*
+        * Add sleep as SWR slave write takes time.
+        * Allow for any previous pending write to complete.
+        */
+       usleep_range(50, 55);
        for (i = 0; i < len; i += 2) {
                /* First Write the Data to register */
                ret = regmap_bulk_write(msm_sdw->regmap,