At Wed, 29 Oct 2014 15:56:01 -0500, Chris J Arges wrote:
Add structure to hold enumeration control information and in addition add it to the usb_mixer_elem_info structure. This allows this structure to be more easily reused.
Since this information is specific to Scarlett, we don't have to put in the common place. Instead, define this locally in mixer_scarlett.c, redefine the mixer info struct like
struct scarlett_mixer_elem_info { struct usb_mixer_elem_info head; const struct scarlett_enum_info *opt; };
and allocate this struct, and cast between usb_mixer_elem_info and scarlett_mixer_elem_info.
Another way would be to add a pointer to usb_mixer_elem_info, but just an opaque void pointer instead of a specific type.
struct usb_mixer_elem_info { .... void *private_data; };
I don't mind either way.
Takashi
Signed-off-by: Chris J Arges chris.j.arges@canonical.com
sound/usb/mixer.h | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/sound/usb/mixer.h b/sound/usb/mixer.h index 73b1f64..cf3967a4 100644 --- a/sound/usb/mixer.h +++ b/sound/usb/mixer.h @@ -36,10 +36,17 @@ enum { USB_MIXER_U16, };
+struct usb_mixer_elem_enum_info {
- int start;
- int len;
- const char * const *names;
+};
struct usb_mixer_elem_info { struct usb_mixer_interface *mixer; struct usb_mixer_elem_info *next_id_elem; /* list of controls with same id */ struct snd_ctl_elem_id *elem_id;
- const struct usb_mixer_elem_enum_info *opt; /* enum control info */ unsigned int id; unsigned int control; /* CS or ICN (high byte) */ unsigned int cmask; /* channel mask bitmap: 0 = master */
-- 2.1.0