ALSA: hda - Update CA0132 codec to load DSP firmware binary
authorIan Minett <ian_minett@creativelabs.com>
Fri, 21 Sep 2012 03:29:16 +0000 (20:29 -0700)
committerTakashi Iwai <tiwai@suse.de>
Wed, 28 Nov 2012 07:47:12 +0000 (08:47 +0100)
commit01ef7dbffb411d9d78d1150b268d9c757f9f2f93
tree0a0b57118163032d38775e6d3418c35fee22f32a
parent4aa3bb0c52ac1d973eeced63b40ce22130e2eae4
ALSA: hda - Update CA0132 codec to load DSP firmware binary

This patch adds the code needed to fetch the DSP binary image from the local
firmware install location and transfer it over to the chip using the new DSP
loader bus ops.
Actual DSP effect controls, parameters and mixers are to be included later.

- Add calls to new DSP loader system to transfer firmware to the hardware.
- Add chip read/write routines, DSP I/O, SCP packet format helper functions and
  transfer DMA management.
- Add guard around DSP download to ensure loader config switch is enabled.

The general scheme for downloading the DSP is as follows:
1) If DSP firmware loader is enabled, ca0132_download_dsp() is called
to start the process.
2) Driver requests DSP image using request_firmware().
3) Driver sets up the streaming DMA for DSP image download
with dspload_image() and dspxfr_image(), which in turn calls the DSP loader
op snd_hda_codec_load_dsp_prepare() to ready the system.
4) DSP image will consist of 1 or more segments, each transferred in sequence
by a call to dspxfr_one_seg() and snd_hda_codec_load_dsp_trigger().
5) Once complete, the loader state is cleaned up with
snd_hda_codec_load_dsp_cleanup().

Signed-off-by: Ian Minett <ian_minett@creativelabs.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_ca0132.c