#define ACP_SCRATCH_REG_0                      0x10000
 #define ACP6X_DSP_FUSION_RUNSTALL              0x0644
+
+/* Cache window registers */
+#define ACP_DSP0_CACHE_OFFSET0                 0x0420
+#define ACP_DSP0_CACHE_SIZE0                   0x0424
 #endif
 
 int acp_dsp_pre_fw_run(struct snd_sof_dev *sdev)
 {
        struct pci_dev *pci = to_pci_dev(sdev->dev);
+       const struct sof_amd_acp_desc *desc = get_chip_info(sdev->pdata);
        struct acp_dev_data *adata;
        unsigned int src_addr, size_fw;
        u32 page_count, dma_size;
        if (ret < 0)
                dev_err(sdev->dev, "acp dma transfer status: %d\n", ret);
 
+       if (desc->rev > 3) {
+               /* Cache Window enable */
+               snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DSP0_CACHE_OFFSET0, desc->sram_pte_offset);
+               snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DSP0_CACHE_SIZE0, SRAM1_SIZE | BIT(31));
+       }
+
        /* Free memory once DMA is complete */
        dma_size =  (PAGE_ALIGN(sdev->basefw.fw->size) >> PAGE_SHIFT) * ACP_PAGE_SIZE;
        dma_free_coherent(&pci->dev, dma_size, adata->bin_buf, adata->sha_dma_addr);