struct snd_sof_mod_hdr *module)
 {
        struct snd_sof_blk_hdr *block;
-       int count;
+       int count, bar;
        u32 offset;
        size_t remaining;
 
                case SOF_FW_BLK_TYPE_IRAM:
                case SOF_FW_BLK_TYPE_DRAM:
                        offset = block->offset;
+                       bar = snd_sof_dsp_get_bar_index(sdev, block->type);
+                       if (bar < 0) {
+                               dev_err(sdev->dev,
+                                       "error: no BAR mapping for block type 0x%x\n",
+                                       block->type);
+                               return bar;
+                       }
                        break;
                default:
                        dev_err(sdev->dev, "error: bad type 0x%x for block 0x%x\n",
                                block->size);
                        return -EINVAL;
                }
-               snd_sof_dsp_block_write(sdev, sdev->mmio_bar, offset,
+               snd_sof_dsp_block_write(sdev, bar, offset,
                                        block + 1, block->size);
 
                if (remaining < block->size) {