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:
Aidan MacDonald 2023-01-09 21:15:23 +00:00
parent 746fd7f2db
commit 541960a110
2 changed files with 11 additions and 0 deletions

View file

@ -535,6 +535,16 @@ void dsp_init(void)
for (unsigned int j = 0; j < ARRAYLEN(dsp_init_fn); ++j)
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);
}
}

View file

@ -32,6 +32,7 @@ enum dsp_ids
enum dsp_settings
{
DSP_INIT,
DSP_RESET,
DSP_SET_FREQUENCY,
DSP_SET_SAMPLE_DEPTH,