forked from len0rd/rockbox
rbcodec/dsp: restore configure loop in dsp_init() (FS#13386)
It seems removing this causes a crash on the Clip+ when playing any file. Appears to be a timing-related issue as replacing the loop with an mdelay() also fixes it. Needs further investigation to identify the real cause of the problem, see FS#13386. Change-Id: Ia93a2887a79b376de50563d6bb3bbc79cee11a1c
This commit is contained in:
parent
746fd7f2db
commit
541960a110
2 changed files with 11 additions and 0 deletions
|
@ -535,6 +535,16 @@ void dsp_init(void)
|
||||||
for (unsigned int j = 0; j < ARRAYLEN(dsp_init_fn); ++j)
|
for (unsigned int j = 0; j < ARRAYLEN(dsp_init_fn); ++j)
|
||||||
dsp_init_fn[j](dsp, i);
|
dsp_init_fn[j](dsp, i);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: This is a no-op and should not be needed, but it
|
||||||
|
* appears there is a race condition here that causes
|
||||||
|
* prefetch abort panics on the Clip+. See FS#13386.
|
||||||
|
* Replacing the loop with mdelay(1) also suppresses
|
||||||
|
* the crash.
|
||||||
|
*/
|
||||||
|
for (unsigned int j = 0; j < DSP_NUM_PROC_STAGES; j++)
|
||||||
|
dsp_proc_database[j]->configure(NULL, dsp, DSP_INIT, i);
|
||||||
|
|
||||||
dsp_configure(dsp, DSP_RESET, 0);
|
dsp_configure(dsp, DSP_RESET, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ enum dsp_ids
|
||||||
|
|
||||||
enum dsp_settings
|
enum dsp_settings
|
||||||
{
|
{
|
||||||
|
DSP_INIT,
|
||||||
DSP_RESET,
|
DSP_RESET,
|
||||||
DSP_SET_FREQUENCY,
|
DSP_SET_FREQUENCY,
|
||||||
DSP_SET_SAMPLE_DEPTH,
|
DSP_SET_SAMPLE_DEPTH,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue