}
 
        rx_macro_mclk_enable(rx, true);
-       regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_RX_SWR_RESET_MASK,
-                          CDC_RX_SWR_RESET);
 
        regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
                           CDC_RX_SWR_CLK_EN_MASK, 1);
 
-       regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_RX_SWR_RESET_MASK, 0);
-
        return 0;
 }
 
        if (ret)
                goto err_fsgen;
 
+       /* reset swr block  */
+       regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_RX_SWR_RESET_MASK,
+                          CDC_RX_SWR_RESET);
+
+       regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_RX_SWR_CLK_EN_MASK, 1);
+
+       regmap_update_bits(rx->regmap, CDC_RX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_RX_SWR_RESET_MASK, 0);
+
        ret = devm_snd_soc_register_component(dev, &rx_macro_component_drv,
                                              rx_macro_dai,
                                              ARRAY_SIZE(rx_macro_dai));
 
        }
 
        tx_macro_mclk_enable(tx, true);
-       regmap_update_bits(regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_TX_SWR_RESET_MASK, CDC_TX_SWR_RESET_ENABLE);
 
        regmap_update_bits(regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
                           CDC_TX_SWR_CLK_EN_MASK,
                           CDC_TX_SWR_CLK_ENABLE);
-       regmap_update_bits(regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_TX_SWR_RESET_MASK, 0x0);
-
        return 0;
 }
 
        if (ret)
                goto err_fsgen;
 
+       /* reset soundwire block */
+       regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_TX_SWR_RESET_MASK, CDC_TX_SWR_RESET_ENABLE);
+
+       regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_TX_SWR_CLK_EN_MASK,
+                          CDC_TX_SWR_CLK_ENABLE);
+       regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_TX_SWR_RESET_MASK, 0x0);
+
        ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv,
                                              tx_macro_dai,
                                              ARRAY_SIZE(tx_macro_dai));
 
        int ret;
 
        ret = va_macro_mclk_enable(va, true);
-       if (!va->has_swr_master)
-               return ret;
-
-       regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_VA_SWR_RESET_MASK,  CDC_VA_SWR_RESET_ENABLE);
-
-       regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_VA_SWR_CLK_EN_MASK,
-                          CDC_VA_SWR_CLK_ENABLE);
-       regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
-                          CDC_VA_SWR_RESET_MASK, 0x0);
+       if (va->has_swr_master)
+               regmap_update_bits(regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
+                                  CDC_VA_SWR_CLK_EN_MASK, CDC_VA_SWR_CLK_ENABLE);
 
        return ret;
 }
 
        }
 
+       if (va->has_swr_master) {
+               regmap_update_bits(va->regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
+                                  CDC_VA_SWR_RESET_MASK,  CDC_VA_SWR_RESET_ENABLE);
+               regmap_update_bits(va->regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
+                                  CDC_VA_SWR_CLK_EN_MASK, CDC_VA_SWR_CLK_ENABLE);
+               regmap_update_bits(va->regmap, CDC_VA_CLK_RST_CTRL_SWR_CONTROL,
+                                  CDC_VA_SWR_RESET_MASK, 0x0);
+       }
+
        ret = devm_snd_soc_register_component(dev, &va_macro_component_drv,
                                              va_macro_dais,
                                              ARRAY_SIZE(va_macro_dais));
 
                }
                wsa_macro_mclk_enable(wsa, true);
 
-               /* reset swr ip */
-               regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
-                                  CDC_WSA_SWR_RST_EN_MASK, CDC_WSA_SWR_RST_ENABLE);
-
                regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
                                   CDC_WSA_SWR_CLK_EN_MASK,
                                   CDC_WSA_SWR_CLK_ENABLE);
 
-               /* Bring out of reset */
-               regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
-                                  CDC_WSA_SWR_RST_EN_MASK, CDC_WSA_SWR_RST_DISABLE);
        } else {
                regmap_update_bits(regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
                                   CDC_WSA_SWR_CLK_EN_MASK, 0);
        if (ret)
                goto err_fsgen;
 
+       /* reset swr ip */
+       regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_WSA_SWR_RST_EN_MASK, CDC_WSA_SWR_RST_ENABLE);
+
+       regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_WSA_SWR_CLK_EN_MASK, CDC_WSA_SWR_CLK_ENABLE);
+
+       /* Bring out of reset */
+       regmap_update_bits(wsa->regmap, CDC_WSA_CLK_RST_CTRL_SWR_CONTROL,
+                          CDC_WSA_SWR_RST_EN_MASK, CDC_WSA_SWR_RST_DISABLE);
+
        ret = devm_snd_soc_register_component(dev, &wsa_macro_component_drv,
                                              wsa_macro_dai,
                                              ARRAY_SIZE(wsa_macro_dai));