RSND_GEN_M_REG(SSI_CTRL,        0x10,   0x80),
                RSND_GEN_M_REG(SSI_INT_ENABLE,  0x18,   0x80),
        };
+
        const static struct rsnd_regmap_field_conf conf_scu[] = {
-               RSND_GEN_M_REG(SRC_BUSIF_MODE,  0x0,    0x20),
+               RSND_GEN_M_REG(SRC_I_BUSIF_MODE,0x0,    0x20),
+               RSND_GEN_M_REG(SRC_O_BUSIF_MODE,0x4,    0x20),
                RSND_GEN_M_REG(SRC_BUSIF_DALIGN,0x8,    0x20),
                RSND_GEN_M_REG(SRC_ROUTE_MODE0, 0xc,    0x20),
                RSND_GEN_M_REG(SRC_CTRL,        0x10,   0x20),
 
        RSND_REG_SSI_BUSIF_ADINR,       /* Gen2 only */
        RSND_REG_SSI_BUSIF_DALIGN,      /* Gen2 only */
        RSND_REG_SSI_INT_ENABLE,        /* Gen2 only */
-       RSND_REG_SRC_BUSIF_MODE,
+       RSND_REG_SRC_I_BUSIF_MODE,
+       RSND_REG_SRC_O_BUSIF_MODE,
        RSND_REG_SRC_ROUTE_MODE0,
        RSND_REG_SRC_SWRSR,
        RSND_REG_SRC_SRCIR,
 
        rsnd_mod_write(mod, SRC_SRCIR, 0);      /* cancel initialize */
 
        rsnd_mod_write(mod, SRC_ROUTE_MODE0, route);
-       rsnd_mod_write(mod, SRC_BUSIF_MODE, 1);
+       rsnd_mod_write(mod, SRC_I_BUSIF_MODE, 1);
+       rsnd_mod_write(mod, SRC_O_BUSIF_MODE, 1);
        rsnd_mod_write(mod, SRC_BUSIF_DALIGN, rsnd_get_dalign(mod, io));
 
        if (convert_rate)