#define BRCM_MIXER_CTRL(xname, xindex, private_val) \ { \ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \ .name = xname, \ .index = xindex, \ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE,\ .private_value = private_val, \ .info = GetCtrlInfo, \ .get = GetControlItem, \ .put = SetControlItem, \ } //Define all the control items static struct snd_kcontrol_new gpSndCtrls[] __devinitdata = { BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Speaker_Playback_Volume], 0, BRCM_CTL_Speaker_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Speaker_Playback_Mute], 0, BRCM_CTL_Speaker_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Mic_Capture_Volume], 0, BRCM_CTL_Mic_Capture_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Mic_Capture_Mute], 0, BRCM_CTL_Mic_Capture_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_EAR_Playback_Volume], 0, BRCM_CTL_EAR_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_EAR_Playback_Mute], 0, BRCM_CTL_EAR_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_HEADSET_Playback_Volume], 0, BRCM_CTL_HEADSET_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_HEADSET_Playback_Mute], 0, BRCM_CTL_HEADSET_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_BTHeadset_Volume], 0, BRCM_CTL_BTHeadset_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_BTHeadset_Mute], 0, BRCM_CTL_BTHeadset_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_ROUTE], 0, BRCM_CTL_ROUTE)
#define BRCM_MIXER_CTRL(xname, xindex, private_val) \ { \ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \ .name = xname, \ .index = xindex, \ .access= SNDRV_CTL_ELEM_ACCESS_READWRITE,\ .private_value = private_val, \ .info = GetCtrlInfo, \ .get = GetControlItem, \ .put = SetControlItem, \ } //Define all the control items static struct snd_kcontrol_new gpSndCtrls[] __devinitdata = { BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Speaker_Playback_Volume], 0, BRCM_CTL_Speaker_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Speaker_Playback_Mute], 0, BRCM_CTL_Speaker_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Mic_Capture_Volume], 0, BRCM_CTL_Mic_Capture_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Mic_Capture_Mute], 0, BRCM_CTL_Mic_Capture_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Ringtone_SPK_Playback_Volume], 0, BRCM_CTL_Ringtone_SPK_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Ringtone_SPK_Playback_Mute], 0, BRCM_CTL_Ringtone_SPK_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Incall_SPK_Playback_Volume], 0, BRCM_CTL_Incall_SPK_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Incall_SPK_Playback_Mute], 0, BRCM_CTL_Incall_SPK_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_EAR_Playback_Volume], 0, BRCM_CTL_EAR_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_EAR_Playback_Mute], 0, BRCM_CTL_EAR_Playback_Mute), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Ringtone_EAR_Playback_Volume], 0, BRCM_CTL_Ringtone_EAR_Playback_Volume), BRCM_MIXER_CTRL(gpstrCtrlName[BRCM_CTL_Ringtone_EAR_Playback_Mute], 0, BRCM_CTL_Ringtone_EAR_Playback_Mute),