{
        struct hdac_ext2_link *h2link;
        u16 __iomem *pcmsycm;
+       int hchan;
+       int lchan;
        u16 val;
 
        h2link = find_ext2_link(bus, true, AZX_REG_ML_LEPTR_ID_SDW);
                h2link->instance_offset * sublink +
                AZX_REG_SDW_SHIM_PCMSyCM(y);
 
+       if (channel_mask) {
+               hchan = __fls(channel_mask);
+               lchan = __ffs(channel_mask);
+       } else {
+               hchan = 0;
+               lchan = 0;
+       }
+
        mutex_lock(&h2link->eml_lock);
 
-       hdaml_shim_map_stream_ch(pcmsycm, 0, hweight32(channel_mask),
+       hdaml_shim_map_stream_ch(pcmsycm, lchan, hchan,
                                 stream_id, dir);
 
        mutex_unlock(&h2link->eml_lock);