Skip to content

Commit fba2747

Browse files
tatokistiwai
authored andcommitted
ALSA: usb-audio: Modularize realtek_add_jack in mixer_quirks
Modify the realtek_add_jack function used for the jack detection quirk to allow passing the mixer unit id and an snd_kcontrol_new. This allows adding additional devices that require the same quirk, but implement jack detection with different commands. Signed-off-by: Tasos Sahanidis <tasos@tasossah.com> Link: https://patch.msgid.link/20251126003805.2705503-2-tasos@tasossah.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 500372a commit fba2747

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

sound/usb/mixer_quirks.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2277,22 +2277,22 @@ static int realtek_resume_jack(struct usb_mixer_elem_list *list)
22772277
}
22782278

22792279
static int realtek_add_jack(struct usb_mixer_interface *mixer,
2280-
char *name, u32 val)
2280+
char *name, u32 val, int unitid,
2281+
const struct snd_kcontrol_new *kctl_new)
22812282
{
22822283
struct usb_mixer_elem_info *cval;
22832284
struct snd_kcontrol *kctl;
22842285

22852286
cval = kzalloc(sizeof(*cval), GFP_KERNEL);
22862287
if (!cval)
22872288
return -ENOMEM;
2288-
snd_usb_mixer_elem_init_std(&cval->head, mixer,
2289-
REALTEK_JACK_INTERRUPT_NODE);
2289+
snd_usb_mixer_elem_init_std(&cval->head, mixer, unitid);
22902290
cval->head.resume = realtek_resume_jack;
22912291
cval->val_type = USB_MIXER_BOOLEAN;
22922292
cval->channels = 1;
22932293
cval->min = 0;
22942294
cval->max = 1;
2295-
kctl = snd_ctl_new1(&realtek_connector_ctl_ro, cval);
2295+
kctl = snd_ctl_new1(kctl_new, cval);
22962296
if (!kctl) {
22972297
kfree(cval);
22982298
return -ENOMEM;
@@ -2322,14 +2322,20 @@ static int dell_dock_mixer_create(struct usb_mixer_interface *mixer)
23222322
USB_RECIP_DEVICE | USB_TYPE_VENDOR | USB_DIR_OUT,
23232323
0, 0, NULL, 0);
23242324

2325-
err = realtek_add_jack(mixer, "Line Out Jack", REALTEK_LINE1);
2325+
err = realtek_add_jack(mixer, "Line Out Jack", REALTEK_LINE1,
2326+
REALTEK_JACK_INTERRUPT_NODE,
2327+
&realtek_connector_ctl_ro);
23262328
if (err < 0)
23272329
return err;
2328-
err = realtek_add_jack(mixer, "Headphone Jack", REALTEK_HP_OUT);
2330+
err = realtek_add_jack(mixer, "Headphone Jack", REALTEK_HP_OUT,
2331+
REALTEK_JACK_INTERRUPT_NODE,
2332+
&realtek_connector_ctl_ro);
23292333
if (err < 0)
23302334
return err;
23312335
err = realtek_add_jack(mixer, "Headset Mic Jack",
2332-
REALTEK_HP_OUT | REALTEK_MIC_FLAG);
2336+
REALTEK_HP_OUT | REALTEK_MIC_FLAG,
2337+
REALTEK_JACK_INTERRUPT_NODE,
2338+
&realtek_connector_ctl_ro);
23332339
if (err < 0)
23342340
return err;
23352341
return 0;

0 commit comments

Comments
 (0)