So, the data transfer here is just like the normal PCM streaming? For example, if you have an op like
int (*load_dsp)(struct hda_bus *bus, void *buffer, int size);
and calling this for each segment would work? (In addition, we'd need to give some way to determine the stop condition in the codec side.)
Hi,
Yes - this approach would work. We would also need to set the data format, and control the stop condition.
For example, by adding the following ops to handle the dsp download process:
/* format is 16-bit Stream Format Structure as defined in HDA spec. pcm_prepare() callback in the codec will be called so that codec driver can obtain the stream tag and format to set up the codec. */ int (*load_dsp_prepare) \ (struct hda_bus *bus, unsigned short format, void *buffer, int size);
/* start the transfer. */ int (*load_dsp_start)(struct hda_bus *bus);
/* stop the transfer and flush the FIFO. */ int (*load_dsp_stop)(struct hda_bus *bus);
Thanks, Ian