Commit 49ce7d35 authored by Tetsuo Yamabe's avatar Tetsuo Yamabe Committed by Juha Yrjola

ARM: OMAP: DSP: Fix shared memory synchronization

This fix assures DMA domain is kept awake till ARM completes
its access to DSP internal memories.
Signed-off-by: default avatarTetsuo Yamabe <tetsuo.yamabe@nokia.com>
Signed-off-by: default avatarJuha Yrjola <juha.yrjola@solidboot.com>
parent 9ba03e67
......@@ -170,7 +170,7 @@ extern void dsp_dbg_stop(void);
extern int ipbuf_is_held(unsigned char tid, unsigned short bid);
extern void dsp_mem_sync_inc(void);
extern int dsp_mem_sync_inc(void);
extern int dsp_mem_sync_config(struct mem_sync_struct *sync);
extern enum dsp_mem_type_e dsp_mem_type(void *vadr, size_t len);
extern int dsp_address_validate(void *p, size_t len, char *fmt, ...);
......
......@@ -155,17 +155,18 @@ static __inline__ unsigned long lineup_offset(unsigned long adr,
return newadr;
}
void dsp_mem_sync_inc(void)
int dsp_mem_sync_inc(void)
{
/*
* FIXME: dsp_mem_enable()!!!
*/
if (dsp_mem_enable((void *)dspmem_base) < 0)
return -1;
if (mem_sync.DARAM)
mem_sync.DARAM->ad_arm++;
if (mem_sync.SARAM)
mem_sync.SARAM->ad_arm++;
if (mem_sync.SDRAM)
mem_sync.SDRAM->ad_arm++;
dsp_mem_disable((void *)dspmem_base);
return 0;
}
/*
......
......@@ -1914,7 +1914,11 @@ int dsp_tadd(unsigned char minor, unsigned long adr)
arg.argc = 2;
arg.argv = argv;
dsp_mem_sync_inc();
if (dsp_mem_sync_inc() < 0) {
printk(KERN_ERR "omapdsp: memory sync failed!\n");
ret = -EBUSY;
goto fail_out;
}
dsp_mbcmd_send_and_wait_exarg(&mb, &arg, &cfg_wait_q);
tid = cfg_tid;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment