@@ -111,6 +111,14 @@ static int platform_parse_resource(struct platform_device *pdev, void *data)
111111
112112 dev_dbg (dev , "DMA %pR\n" , & res );
113113
114+ adsp -> pa_shared_dram = (phys_addr_t )res .start ;
115+ adsp -> shared_size = resource_size (& res );
116+ if (adsp -> pa_shared_dram & DRAM_REMAP_MASK ) {
117+ dev_err (dev , "adsp shared dma memory(%#x) is not 4K-aligned\n" ,
118+ (u32 )adsp -> pa_shared_dram );
119+ return - EINVAL ;
120+ }
121+
114122 ret = of_reserved_mem_device_init (dev );
115123 if (ret ) {
116124 dev_err (dev , "of_reserved_mem_device_init failed\n" );
@@ -244,23 +252,18 @@ static int adsp_shared_base_ioremap(struct platform_device *pdev, void *data)
244252{
245253 struct device * dev = & pdev -> dev ;
246254 struct mtk_adsp_chip_info * adsp = data ;
247- u32 shared_size ;
248255
249256 /* remap shared-dram base to be non-cachable */
250- shared_size = TOTAL_SIZE_SHARED_DRAM_FROM_TAIL ;
251- adsp -> pa_shared_dram = adsp -> pa_dram + adsp -> dramsize - shared_size ;
252- if (adsp -> va_dram ) {
253- adsp -> shared_dram = adsp -> va_dram + DSP_DRAM_SIZE - shared_size ;
254- } else {
255- adsp -> shared_dram = devm_ioremap (dev , adsp -> pa_shared_dram ,
256- shared_size );
257- if (!adsp -> shared_dram ) {
258- dev_err (dev , "ioremap failed for shared DRAM\n" );
259- return - ENOMEM ;
260- }
257+ adsp -> shared_dram = devm_ioremap (dev , adsp -> pa_shared_dram ,
258+ adsp -> shared_size );
259+ if (!adsp -> shared_dram ) {
260+ dev_err (dev , "failed to ioremap base %pa size %#x\n" ,
261+ adsp -> shared_dram , adsp -> shared_size );
262+ return - ENOMEM ;
261263 }
262- dev_dbg (dev , "shared-dram vbase=%p, phy addr :%pa, size=%#x\n" ,
263- adsp -> shared_dram , & adsp -> pa_shared_dram , shared_size );
264+
265+ dev_dbg (dev , "shared-dram vbase=%p, phy addr :%pa, size=%#x\n" ,
266+ adsp -> shared_dram , & adsp -> pa_shared_dram , adsp -> shared_size );
264267
265268 return 0 ;
266269}
@@ -307,9 +310,12 @@ static int mt8186_dsp_probe(struct snd_sof_dev *sdev)
307310 return - ENOMEM ;
308311 }
309312
310- sdev -> bar [SOF_FW_BLK_TYPE_SRAM ] = devm_ioremap_wc (sdev -> dev ,
311- priv -> adsp -> pa_dram ,
312- priv -> adsp -> dramsize );
313+ priv -> adsp -> va_sram = sdev -> bar [SOF_FW_BLK_TYPE_IRAM ];
314+
315+ sdev -> bar [SOF_FW_BLK_TYPE_SRAM ] = devm_ioremap (sdev -> dev ,
316+ priv -> adsp -> pa_dram ,
317+ priv -> adsp -> dramsize );
318+
313319 if (!sdev -> bar [SOF_FW_BLK_TYPE_SRAM ]) {
314320 dev_err (sdev -> dev , "failed to ioremap base %pa size %#x\n" ,
315321 & priv -> adsp -> pa_dram , priv -> adsp -> dramsize );
0 commit comments