At Fri, 3 Jul 2009 12:36:15 +0530, Vinod Koul wrote:
This adds support for Moorestown ALSA Sound card driver. This is an ALSA driver for supporting PCM playback/capture in traditional ALSA way. Anyone who chooses not to use DSP for decoding/encoding can use ALSA path to play/capture (in non low power mode). This driver registers the control interface and PCM interface with the LPE driver which finally sends it to the hardware. This driver allows any subsystem in OS which wants to use the audio-subsystems to be routed through the ALSA
Signed-off-by: Vinod Koul vinod.koul@intel.com Signed-off-by: Harsha Priya priya.harsha@intel.com
new file: sound/pci/sst/intelmid.c
sound/pci/sst/intelmid.c | 1761 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1761 insertions(+), 0 deletions(-) create mode 100644 sound/pci/sst/intelmid.c
diff --git a/sound/pci/sst/intelmid.c b/sound/pci/sst/intelmid.c new file mode 100644 index 0000000..28a6dcc --- /dev/null +++ b/sound/pci/sst/intelmid.c @@ -0,0 +1,1761 @@ +#include <sound/core.h> +#include <sound/control.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> +#include <sound/info.h> +#include <sound/initval.h> +#include <sound/pcm-indirect.h> +#include <sound/intel_sst.h> +#include <sound/intel_sst_ioctl.h>
Include <linux/*> (and <net/*>) before <sound/*.h> files.
+#include "intelmid_snd_control.h" +#include "intelmid.h" +#include "intelmid_pvt.h" +#include <linux/spi/spi.h> +#include <linux/io.h> +#include <linux/delay.h> +#include <linux/interrupt.h> +#include <linux/init.h> +#include <linux/slab.h> +#include <linux/moduleparam.h> +#include <linux/sched.h> +#include <linux/gpe.h> +#include <net/netlink.h> +#include <net/genetlink.h>
+MODULE_AUTHOR("Harsha Priya priya.harsha@intel.com"); +MODULE_AUTHOR("Vinod Koul vinod.koul@intel.com"); +MODULE_DESCRIPTION("Intel MAD Sound card driver"); +MODULE_LICENSE("GPL v2"); +MODULE_SUPPORTED_DEVICE("{Intel,Intel_MAD}");
+static int card_index = SNDRV_DEFAULT_IDX1;/* Index 0-MAX */ +static char *card_id = SNDRV_DEFAULT_STR1; /* ID for this card */
These should be index and id, and declared as module parameters. Otherwise you have no way to change them.
+/*structure of all the controls of the sound card that is exposed*/ +static struct snd_kcontrol_new snd_intelmad_controls[] __devinitdata = { +#ifdef FULL_CTRL +{
- .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
- .name = "Line Volume",
Usually you need to specify the direction, either "Playback" or "Capture", before "Volume" or "Switch" suffix. In this case, "Line Playback Volume" or so.
- .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
- .info = snd_intelmad_line_volume_info,
- .get = snd_intelmad_volume_get,
- .put = snd_intelmad_volume_set,
Can it have the dB information via TLV?
- .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
- .name = "DMIC Volume",
Ditto.
- .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
- .name = "Master Mute Switch",
No "Mute" switch please. Instead use "Master Playback Switch". (mute is a reverse direction thus confusing.)
Takashi