From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B21601F37D4; Mon, 26 May 2025 14:07:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268482; cv=none; b=EBNEXyf6OoDUZL42vHg1ALgNYO0BYBGkKoOtbbkjTfWxuXhNz1ay8017S/HwVEplFShL18sOoYITyuYu+xEwrBzhrF8hLbYG4NMnDpnRquV+ReBB997lzKow65BBxbaf6d17KTwG498SIvqSiQaTJHyxDV6I0NEMz6ycap6G43Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268482; c=relaxed/simple; bh=e6CAsnHxGfyf4rYYbXm/P4OF1AgovZir6hR6tVgJcbk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fGfMkILZLMWQ0pLnqZ6gMpABOxeBLIxVi7uQ93kHcUEc/uqwxZRirWt/bdH/L8LTxuzn0Ri1nqMiKYagvqxtld+FtZa9ln7s+kiUQre0vBrL12qjS0aONefhwfxXojKEa8zWnxLXFEOaq7Dyzlx6GoTQiDOuaFMKXQT+VHMO6XU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=ilULiNmH; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="ilULiNmH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268477; bh=e6CAsnHxGfyf4rYYbXm/P4OF1AgovZir6hR6tVgJcbk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ilULiNmHpJPeBp//Kb9KpmCTG9f/6NTD3FcQRdXuzFwiW2lm4i12hBmVGuiJyyE9P txm7p/g3hocsOTOba9PsSQVkZyoNrU5X6UDWBy+OUhCWUIOArXohKXT4p1tHIrY/3O bRtPMEBEq1iAxLcxP7yyLaPZyjObb+FM7qpatqYH5zt8Ay4eNDpedvastuMFioHWsJ VVHUPWKwyPtWuY82HzrMuwX8qjyq/vx/MnU+a4lwmtotCqiLZYauEZwGDRcDzE0Dpx 3KTQpQgPApEA1lSyj20IMr6XE/q/NmHudOCcs/gnOP5T6/Whr6/E6ahsGpe+BY48LE 5HRv3/+SpMvMg== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 97D2E17E1560; Mon, 26 May 2025 16:07:57 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:40 +0300 Subject: [PATCH 1/9] ALSA: usb-audio: Fix code alignment in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-1-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Format code to fix all alignment issues reported by checkpatch.pl: CHECK: Alignment should match open parenthesis Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 250 ++++++++++++++++++++++++-------------------= ---- 1 file changed, 127 insertions(+), 123 deletions(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index aad205df93b263894e7e6a1159aca3b3462a3e80..c05861450465a653b982df2f13f= b1ca0a4d73bf1 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -55,13 +55,13 @@ struct std_mono_table { * version, we keep it mono for simplicity. */ static int snd_create_std_mono_ctl_offset(struct usb_mixer_interface *mixe= r, - unsigned int unitid, - unsigned int control, - unsigned int cmask, - int val_type, - unsigned int idx_off, - const char *name, - snd_kcontrol_tlv_rw_t *tlv_callback) + unsigned int unitid, + unsigned int control, + unsigned int cmask, + int val_type, + unsigned int idx_off, + const char *name, + snd_kcontrol_tlv_rw_t *tlv_callback) { struct usb_mixer_elem_info *cval; struct snd_kcontrol *kctl; @@ -108,15 +108,16 @@ static int snd_create_std_mono_ctl_offset(struct usb_= mixer_interface *mixer, } =20 static int snd_create_std_mono_ctl(struct usb_mixer_interface *mixer, - unsigned int unitid, - unsigned int control, - unsigned int cmask, - int val_type, - const char *name, - snd_kcontrol_tlv_rw_t *tlv_callback) + unsigned int unitid, + unsigned int control, + unsigned int cmask, + int val_type, + const char *name, + snd_kcontrol_tlv_rw_t *tlv_callback) { return snd_create_std_mono_ctl_offset(mixer, unitid, control, cmask, - val_type, 0 /* Offset */, name, tlv_callback); + val_type, 0 /* Offset */, + name, tlv_callback); } =20 /* @@ -129,7 +130,8 @@ static int snd_create_std_mono_table(struct usb_mixer_i= nterface *mixer, =20 while (t->name !=3D NULL) { err =3D snd_create_std_mono_ctl(mixer, t->unitid, t->control, - t->cmask, t->val_type, t->name, t->tlv_callback); + t->cmask, t->val_type, t->name, + t->tlv_callback); if (err < 0) return err; t++; @@ -214,7 +216,7 @@ static void snd_usb_soundblaster_remote_complete(struct= urb *urb) } =20 static long snd_usb_sbrc_hwdep_read(struct snd_hwdep *hw, char __user *buf, - long count, loff_t *offset) + long count, loff_t *offset) { struct usb_mixer_interface *mixer =3D hw->private_data; int err; @@ -234,7 +236,7 @@ static long snd_usb_sbrc_hwdep_read(struct snd_hwdep *h= w, char __user *buf, } =20 static __poll_t snd_usb_sbrc_hwdep_poll(struct snd_hwdep *hw, struct file = *file, - poll_table *wait) + poll_table *wait) { struct usb_mixer_interface *mixer =3D hw->private_data; =20 @@ -310,20 +312,20 @@ static int snd_audigy2nx_led_update(struct usb_mixer_= interface *mixer, =20 if (chip->usb_id =3D=3D USB_ID(0x041e, 0x3042)) err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), 0x24, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - !value, 0, NULL, 0); + usb_sndctrlpipe(chip->dev, 0), 0x24, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + !value, 0, NULL, 0); /* USB X-Fi S51 Pro */ if (chip->usb_id =3D=3D USB_ID(0x041e, 0x30df)) err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), 0x24, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - !value, 0, NULL, 0); + usb_sndctrlpipe(chip->dev, 0), 0x24, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + !value, 0, NULL, 0); else err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), 0x24, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - value, index + 2, NULL, 0); + usb_sndctrlpipe(chip->dev, 0), 0x24, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + value, index + 2, NULL, 0); snd_usb_unlock_shutdown(chip); return err; } @@ -481,9 +483,9 @@ static int snd_emu0204_ch_switch_update(struct usb_mixe= r_interface *mixer, buf[0] =3D 0x01; buf[1] =3D value ? 0x02 : 0x01; err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), UAC_SET_CUR, - USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, - 0x0400, 0x0e00, buf, 2); + usb_sndctrlpipe(chip->dev, 0), UAC_SET_CUR, + USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, + 0x0400, 0x0e00, buf, 2); snd_usb_unlock_shutdown(chip); return err; } @@ -1021,7 +1023,7 @@ static int snd_nativeinstruments_create_mixer(struct = usb_mixer_interface *mixer, /* M-Audio FastTrack Ultra quirks */ /* FTU Effect switch (also used by C400/C600) */ static int snd_ftu_eff_switch_info(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info *uinfo) + struct snd_ctl_elem_info *uinfo) { static const char *const texts[8] =3D { "Room 1", "Room 2", "Room 3", "Hall 1", @@ -1055,7 +1057,7 @@ static int snd_ftu_eff_switch_init(struct usb_mixer_i= nterface *mixer, } =20 static int snd_ftu_eff_switch_get(struct snd_kcontrol *kctl, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.enumerated.item[0] =3D kctl->private_value >> 24; return 0; @@ -1086,7 +1088,7 @@ static int snd_ftu_eff_switch_update(struct usb_mixer= _elem_list *list) } =20 static int snd_ftu_eff_switch_put(struct snd_kcontrol *kctl, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct usb_mixer_elem_list *list =3D snd_kcontrol_chip(kctl); unsigned int pval =3D list->kctl->private_value; @@ -1104,7 +1106,7 @@ static int snd_ftu_eff_switch_put(struct snd_kcontrol= *kctl, } =20 static int snd_ftu_create_effect_switch(struct usb_mixer_interface *mixer, - int validx, int bUnitID) + int validx, int bUnitID) { static struct snd_kcontrol_new template =3D { .iface =3D SNDRV_CTL_ELEM_IFACE_MIXER, @@ -1143,22 +1145,22 @@ static int snd_ftu_create_volume_ctls(struct usb_mi= xer_interface *mixer) for (in =3D 0; in < 8; in++) { cmask =3D BIT(in); snprintf(name, sizeof(name), - "AIn%d - Out%d Capture Volume", - in + 1, out + 1); + "AIn%d - Out%d Capture Volume", + in + 1, out + 1); err =3D snd_create_std_mono_ctl(mixer, id, control, - cmask, val_type, name, - &snd_usb_mixer_vol_tlv); + cmask, val_type, name, + &snd_usb_mixer_vol_tlv); if (err < 0) return err; } for (in =3D 8; in < 16; in++) { cmask =3D BIT(in); snprintf(name, sizeof(name), - "DIn%d - Out%d Playback Volume", - in - 7, out + 1); + "DIn%d - Out%d Playback Volume", + in - 7, out + 1); err =3D snd_create_std_mono_ctl(mixer, id, control, - cmask, val_type, name, - &snd_usb_mixer_vol_tlv); + cmask, val_type, name, + &snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1219,10 +1221,10 @@ static int snd_ftu_create_effect_return_ctls(struct= usb_mixer_interface *mixer) for (ch =3D 0; ch < 4; ++ch) { cmask =3D BIT(ch); snprintf(name, sizeof(name), - "Effect Return %d Volume", ch + 1); + "Effect Return %d Volume", ch + 1); err =3D snd_create_std_mono_ctl(mixer, id, control, - cmask, val_type, name, - snd_usb_mixer_vol_tlv); + cmask, val_type, name, + snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1243,20 +1245,20 @@ static int snd_ftu_create_effect_send_ctls(struct u= sb_mixer_interface *mixer) for (ch =3D 0; ch < 8; ++ch) { cmask =3D BIT(ch); snprintf(name, sizeof(name), - "Effect Send AIn%d Volume", ch + 1); + "Effect Send AIn%d Volume", ch + 1); err =3D snd_create_std_mono_ctl(mixer, id, control, cmask, - val_type, name, - snd_usb_mixer_vol_tlv); + val_type, name, + snd_usb_mixer_vol_tlv); if (err < 0) return err; } for (ch =3D 8; ch < 16; ++ch) { cmask =3D BIT(ch); snprintf(name, sizeof(name), - "Effect Send DIn%d Volume", ch - 7); + "Effect Send DIn%d Volume", ch - 7); err =3D snd_create_std_mono_ctl(mixer, id, control, cmask, - val_type, name, - snd_usb_mixer_vol_tlv); + val_type, name, + snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1346,19 +1348,19 @@ static int snd_c400_create_vol_ctls(struct usb_mixe= r_interface *mixer) for (out =3D 0; out < num_outs; out++) { if (chan < num_outs) { snprintf(name, sizeof(name), - "PCM%d-Out%d Playback Volume", - chan + 1, out + 1); + "PCM%d-Out%d Playback Volume", + chan + 1, out + 1); } else { snprintf(name, sizeof(name), - "In%d-Out%d Playback Volume", - chan - num_outs + 1, out + 1); + "In%d-Out%d Playback Volume", + chan - num_outs + 1, out + 1); } =20 cmask =3D (out =3D=3D 0) ? 0 : BIT(out - 1); offset =3D chan * num_outs; err =3D snd_create_std_mono_ctl_offset(mixer, id, control, - cmask, val_type, offset, name, - &snd_usb_mixer_vol_tlv); + cmask, val_type, offset, name, + &snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1377,7 +1379,7 @@ static int snd_c400_create_effect_volume_ctl(struct u= sb_mixer_interface *mixer) const unsigned int cmask =3D 0; =20 return snd_create_std_mono_ctl(mixer, id, control, cmask, val_type, - name, snd_usb_mixer_vol_tlv); + name, snd_usb_mixer_vol_tlv); } =20 /* This control needs a volume quirk, see mixer.c */ @@ -1390,7 +1392,7 @@ static int snd_c400_create_effect_duration_ctl(struct= usb_mixer_interface *mixer const unsigned int cmask =3D 0; =20 return snd_create_std_mono_ctl(mixer, id, control, cmask, val_type, - name, snd_usb_mixer_vol_tlv); + name, snd_usb_mixer_vol_tlv); } =20 /* This control needs a volume quirk, see mixer.c */ @@ -1403,7 +1405,7 @@ static int snd_c400_create_effect_feedback_ctl(struct= usb_mixer_interface *mixer const unsigned int cmask =3D 0; =20 return snd_create_std_mono_ctl(mixer, id, control, cmask, val_type, - name, NULL); + name, NULL); } =20 static int snd_c400_create_effect_vol_ctls(struct usb_mixer_interface *mix= er) @@ -1432,18 +1434,18 @@ static int snd_c400_create_effect_vol_ctls(struct u= sb_mixer_interface *mixer) for (chan =3D 0; chan < num_outs + num_ins; chan++) { if (chan < num_outs) { snprintf(name, sizeof(name), - "Effect Send DOut%d", - chan + 1); + "Effect Send DOut%d", + chan + 1); } else { snprintf(name, sizeof(name), - "Effect Send AIn%d", - chan - num_outs + 1); + "Effect Send AIn%d", + chan - num_outs + 1); } =20 cmask =3D (chan =3D=3D 0) ? 0 : BIT(chan - 1); err =3D snd_create_std_mono_ctl(mixer, id, control, - cmask, val_type, name, - &snd_usb_mixer_vol_tlv); + cmask, val_type, name, + &snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1478,14 +1480,14 @@ static int snd_c400_create_effect_ret_vol_ctls(stru= ct usb_mixer_interface *mixer =20 for (chan =3D 0; chan < num_outs; chan++) { snprintf(name, sizeof(name), - "Effect Return %d", - chan + 1); + "Effect Return %d", + chan + 1); =20 cmask =3D (chan =3D=3D 0) ? 0 : BIT(chan + (chan % 2) * num_outs - 1); err =3D snd_create_std_mono_ctl_offset(mixer, id, control, - cmask, val_type, offset, name, - &snd_usb_mixer_vol_tlv); + cmask, val_type, offset, name, + &snd_usb_mixer_vol_tlv); if (err < 0) return err; } @@ -1626,7 +1628,7 @@ static const struct std_mono_table ebox44_table[] =3D= { * */ static int snd_microii_spdif_info(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_info *uinfo) + struct snd_ctl_elem_info *uinfo) { uinfo->type =3D SNDRV_CTL_ELEM_TYPE_IEC958; uinfo->count =3D 1; @@ -1634,7 +1636,7 @@ static int snd_microii_spdif_info(struct snd_kcontrol= *kcontrol, } =20 static int snd_microii_spdif_default_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct usb_mixer_elem_list *list =3D snd_kcontrol_chip(kcontrol); struct snd_usb_audio *chip =3D list->mixer->chip; @@ -1667,13 +1669,13 @@ static int snd_microii_spdif_default_get(struct snd= _kcontrol *kcontrol, ep =3D get_endpoint(alts, 0)->bEndpointAddress; =20 err =3D snd_usb_ctl_msg(chip->dev, - usb_rcvctrlpipe(chip->dev, 0), - UAC_GET_CUR, - USB_TYPE_CLASS | USB_RECIP_ENDPOINT | USB_DIR_IN, - UAC_EP_CS_ATTR_SAMPLE_RATE << 8, - ep, - data, - sizeof(data)); + usb_rcvctrlpipe(chip->dev, 0), + UAC_GET_CUR, + USB_TYPE_CLASS | USB_RECIP_ENDPOINT | USB_DIR_IN, + UAC_EP_CS_ATTR_SAMPLE_RATE << 8, + ep, + data, + sizeof(data)); if (err < 0) goto end; =20 @@ -1700,26 +1702,26 @@ static int snd_microii_spdif_default_update(struct = usb_mixer_elem_list *list) =20 reg =3D ((pval >> 4) & 0xf0) | (pval & 0x0f); err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), - UAC_SET_CUR, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - reg, - 2, - NULL, - 0); + usb_sndctrlpipe(chip->dev, 0), + UAC_SET_CUR, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + reg, + 2, + NULL, + 0); if (err < 0) goto end; =20 reg =3D (pval & IEC958_AES0_NONAUDIO) ? 0xa0 : 0x20; reg |=3D (pval >> 12) & 0x0f; err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), - UAC_SET_CUR, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - reg, - 3, - NULL, - 0); + usb_sndctrlpipe(chip->dev, 0), + UAC_SET_CUR, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + reg, + 3, + NULL, + 0); if (err < 0) goto end; =20 @@ -1729,7 +1731,7 @@ static int snd_microii_spdif_default_update(struct us= b_mixer_elem_list *list) } =20 static int snd_microii_spdif_default_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct usb_mixer_elem_list *list =3D snd_kcontrol_chip(kcontrol); unsigned int pval, pval_old; @@ -1756,7 +1758,7 @@ static int snd_microii_spdif_default_put(struct snd_k= control *kcontrol, } =20 static int snd_microii_spdif_mask_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.iec958.status[0] =3D 0x0f; ucontrol->value.iec958.status[1] =3D 0xff; @@ -1767,7 +1769,7 @@ static int snd_microii_spdif_mask_get(struct snd_kcon= trol *kcontrol, } =20 static int snd_microii_spdif_switch_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] =3D !(kcontrol->private_value & 0x02); =20 @@ -1785,20 +1787,20 @@ static int snd_microii_spdif_switch_update(struct u= sb_mixer_elem_list *list) return err; =20 err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), - UAC_SET_CUR, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, - reg, - 9, - NULL, - 0); + usb_sndctrlpipe(chip->dev, 0), + UAC_SET_CUR, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + reg, + 9, + NULL, + 0); =20 snd_usb_unlock_shutdown(chip); return err; } =20 static int snd_microii_spdif_switch_put(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct usb_mixer_elem_list *list =3D snd_kcontrol_chip(kcontrol); u8 reg; @@ -1883,9 +1885,9 @@ static int snd_soundblaster_e1_switch_update(struct u= sb_mixer_interface *mixer, if (err < 0) return err; err =3D snd_usb_ctl_msg(chip->dev, - usb_sndctrlpipe(chip->dev, 0), HID_REQ_SET_REPORT, - USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_OUT, - 0x0202, 3, buff, 2); + usb_sndctrlpipe(chip->dev, 0), HID_REQ_SET_REPORT, + USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_OUT, + 0x0202, 3, buff, 2); snd_usb_unlock_shutdown(chip); return err; } @@ -3235,7 +3237,7 @@ static int snd_rme_digiface_enum_put(struct snd_kcont= rol *kcontrol, } =20 static int snd_rme_digiface_current_sync_get(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { int ret =3D snd_rme_digiface_enum_get(kcontrol, ucontrol); =20 @@ -3918,7 +3920,7 @@ static const struct snd_djm_device snd_djm_devices[] = =3D { =20 =20 static int snd_djm_controls_info(struct snd_kcontrol *kctl, - struct snd_ctl_elem_info *info) + struct snd_ctl_elem_info *info) { unsigned long private_value =3D kctl->private_value; u8 device_idx =3D (private_value & SND_DJM_DEVICE_MASK) >> SND_DJM_DEVICE= _SHIFT; @@ -3937,8 +3939,8 @@ static int snd_djm_controls_info(struct snd_kcontrol = *kctl, info->value.enumerated.item =3D noptions - 1; =20 name =3D snd_djm_get_label(device_idx, - ctl->options[info->value.enumerated.item], - ctl->wIndex); + ctl->options[info->value.enumerated.item], + ctl->wIndex); if (!name) return -EINVAL; =20 @@ -3950,7 +3952,7 @@ static int snd_djm_controls_info(struct snd_kcontrol = *kctl, } =20 static int snd_djm_controls_update(struct usb_mixer_interface *mixer, - u8 device_idx, u8 group, u16 value) + u8 device_idx, u8 group, u16 value) { int err; const struct snd_djm_device *device =3D &snd_djm_devices[device_idx]; @@ -3962,13 +3964,13 @@ static int snd_djm_controls_update(struct usb_mixer= _interface *mixer, if (err) return err; =20 - err =3D snd_usb_ctl_msg( - mixer->chip->dev, usb_sndctrlpipe(mixer->chip->dev, 0), - USB_REQ_SET_FEATURE, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - device->controls[group].options[value], - device->controls[group].wIndex, - NULL, 0); + err =3D snd_usb_ctl_msg(mixer->chip->dev, + usb_sndctrlpipe(mixer->chip->dev, 0), + USB_REQ_SET_FEATURE, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, + device->controls[group].options[value], + device->controls[group].wIndex, + NULL, 0); =20 snd_usb_unlock_shutdown(mixer->chip); return err; @@ -4009,7 +4011,7 @@ static int snd_djm_controls_resume(struct usb_mixer_e= lem_list *list) } =20 static int snd_djm_controls_create(struct usb_mixer_interface *mixer, - const u8 device_idx) + const u8 device_idx) { int err, i; u16 value; @@ -4028,10 +4030,10 @@ static int snd_djm_controls_create(struct usb_mixer= _interface *mixer, for (i =3D 0; i < device->ncontrols; i++) { value =3D device->controls[i].default_value; knew.name =3D device->controls[i].name; - knew.private_value =3D ( + knew.private_value =3D ((unsigned long)device_idx << SND_DJM_DEVICE_SHIFT) | (i << SND_DJM_GROUP_SHIFT) | - value); + value; err =3D snd_djm_controls_update(mixer, device_idx, i, value); if (err) return err; @@ -4098,13 +4100,15 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mix= er_interface *mixer) break; =20 case USB_ID(0x17cc, 0x1011): /* Traktor Audio 6 */ - err =3D snd_nativeinstruments_create_mixer(mixer, + err =3D snd_nativeinstruments_create_mixer(/* checkpatch hack */ + mixer, snd_nativeinstruments_ta6_mixers, ARRAY_SIZE(snd_nativeinstruments_ta6_mixers)); break; =20 case USB_ID(0x17cc, 0x1021): /* Traktor Audio 10 */ - err =3D snd_nativeinstruments_create_mixer(mixer, + err =3D snd_nativeinstruments_create_mixer(/* checkpatch hack */ + mixer, snd_nativeinstruments_ta10_mixers, ARRAY_SIZE(snd_nativeinstruments_ta10_mixers)); break; --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 828381FE44B; Mon, 26 May 2025 14:08:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268482; cv=none; b=hBxrp/dmJSfbSG3d+13pUtsWOgUvrZ+MtDKbu+DMb/FC/0FWOzRbhsqC2g5KXGSeL9/uzLcMuiCNM7io7njSvwUZ9hdWRfg3xXldkfSF/iT/SaXFR24tkVR2MwbbSleN2BNoftTcNaxDVaWGL7NZSTE9NLeLvazItPYYxKj0e+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268482; c=relaxed/simple; bh=dEorDuCijfGtDXExtvVoCfx+DrWWw3LQ2tE3EeTTZ6E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z0FwMH2FMLQ1Bljc1RBaG3pPR1U5/6yy70TbwsdWCIJzQPxw5XsrzGQzZXMoAJVMQobMgMEvVSVnICBlXqZoobhR4lTwh0WSZgUkGHQ3nMBqeEF4Ysi97SLUw0jFgjo+MlCiFUmq1aAh1nMkv4F/SQdsUP2nzeX6K3nqyQE/fJ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=AfEl54Et; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="AfEl54Et" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268478; bh=dEorDuCijfGtDXExtvVoCfx+DrWWw3LQ2tE3EeTTZ6E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AfEl54EtruqV9B94Q+8g/ngj7SLtuioyqjqHuObQUQL4IVi/S4ywLdll1OB/8A/77 ncdvLFLPwOJpfJKm9XY2xACpIRaTLJpJhm4od4kJqqhu2XBSr/qocTANwKxofu8hx1 8LlR1G3YiXdafXeunTzE2Vy3B1VUE7CAb/9U7agBBGCjgebDOs/N36Nv5auT+QlTzx ufNmc2YfNvhtR2mtzLObCS4z34syw7nHAaIHXSshKHDyD5fewiJ7ITD9tgU37H76rQ 8eEog0SD6lDCw98TMLfwmsePT2X06z7WhKLL4Cq/bNGB1Ju4y0WKeNo7Ani4TL42om /UuSlxefqK0fA== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 68E8917E1595; Mon, 26 May 2025 16:07:58 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:41 +0300 Subject: [PATCH 2/9] ALSA: usb-audio: Fix whitespace & blank line issues in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-2-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Address all whitespace & blank line(s) related issues reported by checkpatch.pl: ERROR: trailing whitespace ERROR: space required after that ',' (ctx:VxV) WARNING: Missing a blank line after declarations CHECK: Please use a blank line after function/struct/union/enum declarati= ons CHECK: Please don't use multiple blank lines Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index c05861450465a653b982df2f13fb1ca0a4d73bf1..ec14b5ee61c20c9cc098582f078= c5a54e9fb0d81 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -287,7 +287,7 @@ static int snd_usb_soundblaster_remote_init(struct usb_= mixer_interface *mixer) mixer->rc_setup_packet->wLength =3D cpu_to_le16(len); usb_fill_control_urb(mixer->rc_urb, mixer->chip->dev, usb_rcvctrlpipe(mixer->chip->dev, 0), - (u8*)mixer->rc_setup_packet, mixer->rc_buffer, len, + (u8 *)mixer->rc_setup_packet, mixer->rc_buffer, len, snd_usb_soundblaster_remote_complete, mixer); return 0; } @@ -389,7 +389,7 @@ static int snd_audigy2nx_controls_create(struct usb_mix= er_interface *mixer) mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x3042) || mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x30df) || mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x3048))) - break;=20 + break; =20 knew =3D snd_audigy2nx_control; knew.name =3D snd_audigy2nx_led_names[i]; @@ -858,6 +858,7 @@ static const struct snd_kcontrol_new snd_mbox1_src_swit= ch =3D { static int snd_mbox1_controls_create(struct usb_mixer_interface *mixer) { int err; + err =3D add_single_ctl_with_resume(mixer, 0, snd_mbox1_clk_switch_resume, &snd_mbox1_clk_switch, NULL); @@ -871,7 +872,7 @@ static int snd_mbox1_controls_create(struct usb_mixer_i= nterface *mixer) =20 /* Native Instruments device quirks */ =20 -#define _MAKE_NI_CONTROL(bRequest,wIndex) ((bRequest) << 16 | (wIndex)) +#define _MAKE_NI_CONTROL(bRequest, wIndex) ((bRequest) << 16 | (wIndex)) =20 static int snd_ni_control_init_val(struct usb_mixer_interface *mixer, struct snd_kcontrol *kctl) @@ -2183,6 +2184,7 @@ static const u32 snd_rme_rate_table[] =3D { 256000, 352800, 384000, 400000, 512000, 705600, 768000, 800000 }; + /* maximum number of items for AES and S/PDIF rates for above table */ #define SND_RME_RATE_IDX_AES_SPDIF_NUM 12 =20 @@ -3271,7 +3273,6 @@ static int snd_rme_digiface_sync_state_get(struct snd= _kcontrol *kcontrol, return 0; } =20 - static int snd_rme_digiface_format_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { @@ -3283,7 +3284,6 @@ static int snd_rme_digiface_format_info(struct snd_kc= ontrol *kcontrol, ARRAY_SIZE(format), format); } =20 - static int snd_rme_digiface_sync_source_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { @@ -3566,7 +3566,6 @@ static int snd_rme_digiface_controls_create(struct us= b_mixer_interface *mixer) #define SND_DJM_A9_IDX 0x6 #define SND_DJM_V10_IDX 0x7 =20 - #define SND_DJM_CTL(_name, suffix, _default_value, _windex) { \ .name =3D _name, \ .options =3D snd_djm_opts_##suffix, \ @@ -3578,7 +3577,6 @@ static int snd_rme_digiface_controls_create(struct us= b_mixer_interface *mixer) .controls =3D snd_djm_ctls_##suffix, \ .ncontrols =3D ARRAY_SIZE(snd_djm_ctls_##suffix) } =20 - struct snd_djm_device { const char *name; const struct snd_djm_ctl *controls; @@ -3724,7 +3722,6 @@ static const struct snd_djm_ctl snd_djm_ctls_250mk2[]= =3D { SND_DJM_CTL("Output 3 Playback Switch", 250mk2_pb3, 2, SND_DJM_WINDEX_PB) }; =20 - // DJM-450 static const u16 snd_djm_opts_450_cap1[] =3D { 0x0103, 0x0100, 0x0106, 0x0107, 0x0108, 0x0109, 0x010d, 0x010a }; @@ -3749,7 +3746,6 @@ static const struct snd_djm_ctl snd_djm_ctls_450[] = =3D { SND_DJM_CTL("Output 3 Playback Switch", 450_pb3, 2, SND_DJM_WINDEX_PB) }; =20 - // DJM-750 static const u16 snd_djm_opts_750_cap1[] =3D { 0x0101, 0x0103, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010f }; @@ -3768,7 +3764,6 @@ static const struct snd_djm_ctl snd_djm_ctls_750[] = =3D { SND_DJM_CTL("Input 4 Capture Switch", 750_cap4, 0, SND_DJM_WINDEX_CAP) }; =20 - // DJM-850 static const u16 snd_djm_opts_850_cap1[] =3D { 0x0100, 0x0103, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a, 0x010f }; @@ -3787,7 +3782,6 @@ static const struct snd_djm_ctl snd_djm_ctls_850[] = =3D { SND_DJM_CTL("Input 4 Capture Switch", 850_cap4, 1, SND_DJM_WINDEX_CAP) }; =20 - // DJM-900NXS2 static const u16 snd_djm_opts_900nxs2_cap1[] =3D { 0x0100, 0x0102, 0x0103, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a }; @@ -3825,7 +3819,6 @@ static const u16 snd_djm_opts_750mk2_pb1[] =3D { 0x01= 00, 0x0101, 0x0104 }; static const u16 snd_djm_opts_750mk2_pb2[] =3D { 0x0200, 0x0201, 0x0204 }; static const u16 snd_djm_opts_750mk2_pb3[] =3D { 0x0300, 0x0301, 0x0304 }; =20 - static const struct snd_djm_ctl snd_djm_ctls_750mk2[] =3D { SND_DJM_CTL("Master Input Level Capture Switch", cap_level, 0, SND_DJM_WI= NDEX_CAPLVL), SND_DJM_CTL("Input 1 Capture Switch", 750mk2_cap1, 2, SND_DJM_WINDEX_CA= P), @@ -3838,7 +3831,6 @@ static const struct snd_djm_ctl snd_djm_ctls_750mk2[]= =3D { SND_DJM_CTL("Output 3 Playback Switch", 750mk2_pb3, 2, SND_DJM_WINDEX_PB) }; =20 - // DJM-A9 static const u16 snd_djm_opts_a9_cap_level[] =3D { 0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x0500 }; @@ -3867,29 +3859,35 @@ static const struct snd_djm_ctl snd_djm_ctls_a9[] = =3D { static const u16 snd_djm_opts_v10_cap_level[] =3D { 0x0000, 0x0100, 0x0200, 0x0300, 0x0400, 0x0500 }; + static const u16 snd_djm_opts_v10_cap1[] =3D { 0x0103, 0x0100, 0x0102, 0x0106, 0x0110, 0x0107, 0x0108, 0x0109, 0x010a, 0x0121, 0x0122 }; + static const u16 snd_djm_opts_v10_cap2[] =3D { 0x0200, 0x0202, 0x0206, 0x0210, 0x0207, 0x0208, 0x0209, 0x020a, 0x0221, 0x0222 }; + static const u16 snd_djm_opts_v10_cap3[] =3D { 0x0303, 0x0300, 0x0302, 0x0306, 0x0310, 0x0307, 0x0308, 0x0309, 0x030a, 0x0321, 0x0322 }; + static const u16 snd_djm_opts_v10_cap4[] =3D { 0x0403, 0x0400, 0x0402, 0x0406, 0x0410, 0x0407, 0x0408, 0x0409, 0x040a, 0x0421, 0x0422 }; + static const u16 snd_djm_opts_v10_cap5[] =3D { 0x0500, 0x0502, 0x0506, 0x0510, 0x0507, 0x0508, 0x0509, 0x050a, 0x0521, 0x0522 }; + static const u16 snd_djm_opts_v10_cap6[] =3D { 0x0603, 0x0600, 0x0602, 0x0606, 0x0610, 0x0607, @@ -3918,7 +3916,6 @@ static const struct snd_djm_device snd_djm_devices[] = =3D { [SND_DJM_V10_IDX] =3D SND_DJM_DEVICE(v10), }; =20 - static int snd_djm_controls_info(struct snd_kcontrol *kctl, struct snd_ctl_elem_info *info) { @@ -4356,4 +4353,3 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_in= terface *mixer, (cval->control =3D=3D UAC_FU_MUTE || cval->control =3D=3D UAC_FU_VOLU= ME)) snd_fix_plt_name(mixer->chip, &kctl->id); } - --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44911202998; Mon, 26 May 2025 14:08:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268483; cv=none; b=F5YdSGzRRz7A1PfGAzoBdYCQifxEUbvlrot/roUOsrIfgGSGplWHW/YjvVZsGzHw0WqDFtRYY6uZZMmtRcXZ0fCoiXJDGoFi5YtkGJyWjrql+U2pFKKM2g/qhi67JlQNQyfXYCcR0kT0x92WGyg1J6WzqRJchah9FgOigRKZDMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268483; c=relaxed/simple; bh=goUSQdLpIY2NH/Ek9+J+Jas3NOAaNi4mkZBZnKEZ0tc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ERPY+GbgT3FE0UDd6DDygOo2jSdiPV8yVtKdcc9S848/x6ZGsTA0+LKNsL2OwrbnuG7DKYRKWi8n7PMTP3yjBT7rfPTkc8jhc06FzjB70Rc1S31miHACfRQUVLTy7F/JWTp7fGbGuRsylo5Tbr7ZgcZ+7ve9GcHmVNEyRskmxOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=kDSCAbwF; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="kDSCAbwF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268479; bh=goUSQdLpIY2NH/Ek9+J+Jas3NOAaNi4mkZBZnKEZ0tc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kDSCAbwFCSl/PRM5FDxDXnNh922wkvI760R4W2IYD1Nj1fbFiTIIX17Lo+s9JKqfC FS9lXRs+o3erTXl1gpXstr5Ic8VrTlUUelO/cgMRsqlCyliLPx8FUWs4he4WXVo5aH 6ilFceGlB4/Oz0fHFhYtjRFXTYcOYTtSWamaQ+F3MPqNzFUvbNKpRiA1CmclOM27M5 ZyTYi7JAGVf9CqIM2ofFwI6ARvl2z97MjIpNbkoe5oTrAmCxJ09JPIXWVJ7BPNhGV9 CRqVRSipa1MhYYHoFJhqw8jtupSVhEtiBtiP6+yMZ1CxEArLUi3fKzUCzfmyfWtYCu klcx9eDcMKxRA== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 4173517E3701; Mon, 26 May 2025 16:07:59 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:42 +0300 Subject: [PATCH 3/9] ALSA: usb-audio: Avoid precedence issues in mixer_quirks macros Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-3-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Fix all macro related issues identified by checkpatch.pl: CHECK: Macro argument 'x' may be better as '(x)' to avoid precedence issu= es Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index ec14b5ee61c20c9cc098582f078c5a54e9fb0d81..19abd709c4d73939c0a99b82afc= 1ef155c9f22c3 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -2156,15 +2156,15 @@ static int dell_dock_mixer_init(struct usb_mixer_in= terface *mixer) #define SND_RME_CLK_FREQMUL_SHIFT 18 #define SND_RME_CLK_FREQMUL_MASK 0x7 #define SND_RME_CLK_SYSTEM(x) \ - ((x >> SND_RME_CLK_SYSTEM_SHIFT) & SND_RME_CLK_SYSTEM_MASK) + (((x) >> SND_RME_CLK_SYSTEM_SHIFT) & SND_RME_CLK_SYSTEM_MASK) #define SND_RME_CLK_AES(x) \ - ((x >> SND_RME_CLK_AES_SHIFT) & SND_RME_CLK_AES_SPDIF_MASK) + (((x) >> SND_RME_CLK_AES_SHIFT) & SND_RME_CLK_AES_SPDIF_MASK) #define SND_RME_CLK_SPDIF(x) \ - ((x >> SND_RME_CLK_SPDIF_SHIFT) & SND_RME_CLK_AES_SPDIF_MASK) + (((x) >> SND_RME_CLK_SPDIF_SHIFT) & SND_RME_CLK_AES_SPDIF_MASK) #define SND_RME_CLK_SYNC(x) \ - ((x >> SND_RME_CLK_SYNC_SHIFT) & SND_RME_CLK_SYNC_MASK) + (((x) >> SND_RME_CLK_SYNC_SHIFT) & SND_RME_CLK_SYNC_MASK) #define SND_RME_CLK_FREQMUL(x) \ - ((x >> SND_RME_CLK_FREQMUL_SHIFT) & SND_RME_CLK_FREQMUL_MASK) + (((x) >> SND_RME_CLK_FREQMUL_SHIFT) & SND_RME_CLK_FREQMUL_MASK) #define SND_RME_CLK_AES_LOCK 0x1 #define SND_RME_CLK_AES_SYNC 0x4 #define SND_RME_CLK_SPDIF_LOCK 0x2 @@ -2173,9 +2173,9 @@ static int dell_dock_mixer_init(struct usb_mixer_inte= rface *mixer) #define SND_RME_SPDIF_FORMAT_SHIFT 5 #define SND_RME_BINARY_MASK 0x1 #define SND_RME_SPDIF_IF(x) \ - ((x >> SND_RME_SPDIF_IF_SHIFT) & SND_RME_BINARY_MASK) + (((x) >> SND_RME_SPDIF_IF_SHIFT) & SND_RME_BINARY_MASK) #define SND_RME_SPDIF_FORMAT(x) \ - ((x >> SND_RME_SPDIF_FORMAT_SHIFT) & SND_RME_BINARY_MASK) + (((x) >> SND_RME_SPDIF_FORMAT_SHIFT) & SND_RME_BINARY_MASK) =20 static const u32 snd_rme_rate_table[] =3D { 32000, 44100, 48000, 50000, --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10B3420DD52; Mon, 26 May 2025 14:08:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268483; cv=none; b=oggzb9kD+ajZu6azHBoVxi0zZ2ohokYt7wogI0OJPeQZc9yV31I9F27KBVIIdmB7ie5w+R1yA7IZQHP2/1VYjfRg2EHI86OSyeXgTCbkF5zuUe/twRAbH4RI5/YiWwupFi6lfchZBIZMeGIGFUnFzUeJ9010hXBkDr+BvoDBBUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268483; c=relaxed/simple; bh=LnnMY7OsQE+JNzaeQA9B1Iaa5QiJtt9qHy8Om26qen0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L7UIQK1Ef919rJ5EeYqU4Mt1f8/+B8OwyFkMIZZnyvzvcqm0Km6RrKd8LNw+G+QK/tEuy/zXVtEcmbZ1yZ2a0er+CFp5FKZF5vpNH7OdQz5SCE5++tJdi1Lc8I99pvTTDsECcROnKmQ7Tc65McoSro1CAgm4ND8ZPW1WUJZSHWU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=lRoR0R8D; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="lRoR0R8D" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268480; bh=LnnMY7OsQE+JNzaeQA9B1Iaa5QiJtt9qHy8Om26qen0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lRoR0R8DmaQZg5h4sORGVxs8Bxog//W2p0hNYjt74C08clBv4YuuynUAXPPn0v3Fi nA3OEEQkcpRbDGFrKSchtKp3xKb+sBr+TCai3lzxujxq6rwolMwl3nshWRKWEqtoQN JGS6oS00lS/4qhbMGtxHVXJBG5QRjSPGhX+4xIapmqTPQenk+cXOu3T/bRco3ToSk+ Qoz7QVYMOuzm2KFm+/k5jcgeKwCVSmCWGPmipqRDNksnr++TYtwwjZ3/gzSEitUsRw CDBW3fR2CmoBokBui3wfyOlbG6tt69tusFPO4hPxfcsUnZfdKREb2KjnLDo7W2/j8b LCBpWD+zOjsSw== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 1755E17E3702; Mon, 26 May 2025 16:08:00 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:43 +0300 Subject: [PATCH 4/9] ALSA: usb-audio: Fix block comments in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-4-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Address a couple of comment formatting issues indicated by checkpatch.pl: WARNING: Block comments use a trailing */ on a separate line Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index 19abd709c4d73939c0a99b82afc1ef155c9f22c3..5ef8fc714cc328c2dc71301c0d2= 128e4329a6170 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -78,7 +78,8 @@ static int snd_create_std_mono_ctl_offset(struct usb_mixe= r_interface *mixer, cval->idx_off =3D idx_off; =20 /* get_min_max() is called only for integer volumes later, - * so provide a short-cut for booleans */ + * so provide a short-cut for booleans + */ cval->min =3D 0; cval->max =3D 1; cval->res =3D 0; @@ -4255,7 +4256,8 @@ static void snd_dragonfly_quirk_db_scale(struct usb_m= ixer_interface *mixer, struct snd_kcontrol *kctl) { /* Approximation using 10 ranges based on output measurement on hw v1.2. - * This seems close to the cubic mapping e.g. alsamixer uses. */ + * This seems close to the cubic mapping e.g. alsamixer uses. + */ static const DECLARE_TLV_DB_RANGE(scale, 0, 1, TLV_DB_MINMAX_ITEM(-5300, -4970), 2, 5, TLV_DB_MINMAX_ITEM(-4710, -4160), --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3312C20E71C; Mon, 26 May 2025 14:08:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268485; cv=none; b=BCQLBCUfPZRjicBm0mJWFXBNXmcosbo4TwWXWk0/vP75nu06w1IdjJ6TiRx/DCCO+Y8ZpavwcKt++viGWo2vu5GwuwckNPlZoxEo5w8M2it3aeFkWC4ARS3NajKUAM539IfWhiP7NK4nVffQ3412ot+J/ZoveZ6JV3Up13bJPws= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268485; c=relaxed/simple; bh=TQK9H5IOr5u7QW+/6OvA5z2ET++yNWo2hi3BibLCW7U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Aq7zfJdW35mlAN1UVibsHmcj3Wy1vi+tvZEgb1PEyfd0GRwYFKkxs3aJ82Zri6juIADPPDoqk2ZKuuTP3D8jL9wfgqhpe5V1olh8Rlozmyf9cBKUddKLr8oK1V7IoCriTXwbMNWzPAvlmLtJkF0ImnRz3d2sOb8YdprgLyh81KQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=AEW9qGdi; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="AEW9qGdi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268481; bh=TQK9H5IOr5u7QW+/6OvA5z2ET++yNWo2hi3BibLCW7U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AEW9qGdia/5PbzEj+sKB91D9jDt5HzUYU7X/rPD5M2Lgx51re362Ql4BcSMtYev6f /j7zqQmcTcTr6bz/fEVU5JESveyws0BE/G7L0dYISHardo1+ulA+dVXiQNRDiLbkSA IDoTTqNTAZzw38trXuYW2Gh1E7w0Q2Wb77ym6byZ02UDEj4FSUdy3qluvfNZ37eXF+ WJq3TQUg7OoFDj9EZS77nmLoMqe/6fw+cuhH2s0SKHTcJUXWsu+KSsd4qYf7TUJyTT blx5Ijwaq+E0k5BfxA4JfESjcJ8RSvZqICY3kLFcGa/Gf3WqD5aySqUFgNRzEA4ViB wBNTYg326J9HQ== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id DEC9D17E3703; Mon, 26 May 2025 16:08:00 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:44 +0300 Subject: [PATCH 5/9] ALSA: usb-audio: Drop unnecessary parentheses in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-5-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Fix multiple 'CHECK: Unnecessary parentheses around ...' reports from checkpatch.pl. Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index 5ef8fc714cc328c2dc71301c0d2128e4329a6170..071a76554d09e631fdc83c5dc5f= 044eac482a897 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -380,10 +380,10 @@ static int snd_audigy2nx_controls_create(struct usb_m= ixer_interface *mixer) struct snd_kcontrol_new knew; =20 /* USB X-Fi S51 doesn't have a CMSS LED */ - if ((mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x3042)) && i =3D=3D 0) + if (mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x3042) && i =3D=3D 0) continue; /* USB X-Fi S51 Pro doesn't have one either */ - if ((mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x30df)) && i =3D=3D 0) + if (mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x30df) && i =3D=3D 0) continue; if (i > 1 && /* Live24ext has 2 LEDs only */ (mixer->chip->usb_id =3D=3D USB_ID(0x041e, 0x3040) || @@ -3955,7 +3955,7 @@ static int snd_djm_controls_update(struct usb_mixer_i= nterface *mixer, int err; const struct snd_djm_device *device =3D &snd_djm_devices[device_idx]; =20 - if ((group >=3D device->ncontrols) || value >=3D device->controls[group].= noptions) + if (group >=3D device->ncontrols || value >=3D device->controls[group].no= ptions) return -EINVAL; =20 err =3D snd_usb_lock_shutdown(mixer->chip); --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F7F7210198; Mon, 26 May 2025 14:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268485; cv=none; b=M3tvnG4O86HZUcFHTYa0ux5RMgFIHV+DQud/WiXs/7Kn9Rtxe9PFKHkYBn9YH5ba6/RWLuLEv9JvE9MU4Tuqa8ug5p5aODMguGhyaLD2rSgoqdi0ry+asU2NVsU30tucD/Pe0wvkDFE5iTqR0HKJUptlYqO7kDYiozV+p6SplSo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268485; c=relaxed/simple; bh=wgQC4enfJjyfyCiM8wfs2Rxkncl2OSxrlm9/LD/5aq8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cOiPRBoPjNRNFu31UyHQBWz+LOWaTj4/nxcv34ndta5L2O71tC/aEXUDfb3vzvMlEamPmyV+wzSWSK/giOjmw45s+PNEhEyegIK0YUh6EgnDZ2Pjp32kWP6jCcfnbb0uONia2Sdp+V/Xqq3ypZIldrssWoHhTx+jGVjAf9ZV+JE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=MeV7mhGm; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="MeV7mhGm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268481; bh=wgQC4enfJjyfyCiM8wfs2Rxkncl2OSxrlm9/LD/5aq8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MeV7mhGm377R9yQzHiIcMUFjtXQkJPLJkiekLQkVPSex7TOxl9PkeqBLfaJXx0nXl f9cA4SUxAEMqLtj4WzKvw6+tVGBM9UM9KuVIaxh5L5I9N3pmMVs8l2IqauMnn7ooNP qFRooZ3J0WtH5TmKaqcc0R6foB04cxbn/MfOXJgp6JohAUG51x4Rb0IKGC+9AMe5bH 70OOwv9T79uQLYvMV6r3/2q3KSGJZuhWxwdlbDWUi0v7x3RJZD28+PTuZbN99gaC9U YK90PMvVAmaWZPokMkHrdxN1cY/opo6WHtiy41rhYb1sWvKNsCSIpl0/xqnwXfNHvs DIoXzryF/1a2g== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id ADF3717E3716; Mon, 26 May 2025 16:08:01 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:45 +0300 Subject: [PATCH 6/9] ALSA: usb-audio: Avoid multiple assignments in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-6-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Handle report from checkpatch.pl: CHECK: multiple assignments should be avoided Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index 071a76554d09e631fdc83c5dc5f044eac482a897..17c9cbbfce224cdcd4f80802b7f= be377969d289f 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -1739,7 +1739,8 @@ static int snd_microii_spdif_default_put(struct snd_k= control *kcontrol, unsigned int pval, pval_old; int err; =20 - pval =3D pval_old =3D kcontrol->private_value; + pval =3D kcontrol->private_value; + pval_old =3D pval; pval &=3D 0xfffff0f0; pval |=3D (ucontrol->value.iec958.status[1] & 0x0f) << 8; pval |=3D (ucontrol->value.iec958.status[0] & 0x0f); --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63C62212B0A; Mon, 26 May 2025 14:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268486; cv=none; b=VluWvHUiHEX75NI6PQGoHk95nUwa0tnuQqTj2JY3h7XXxYe8Cep7gS84aOloP/tO3xqhVsZhAgKCJmTqQRoSYcueb0r21KfGYU0w+nIY/8vfHG2oJ2qKUSecFtjUDKJhiCoknkFmCMOETZMWlWPwzB29uX6ZfjFgodm2hxyOj4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268486; c=relaxed/simple; bh=Zn1nxRIZwpG9gkrQZ1+GbKqVwAFGF98enOifZD+Uysw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h13XGt36/bTM5xPXbSb5eqYgIW7gyAUKES2JJcyx+dm1OyMGnlvN82X5IuG6MQlE44aS0n9IFbp4bUtG/PacU2pHYIapixehtW3bL241x/J04kS3/rNcdZOiW5mA4VwDPN8EFjZFesrn2H7euzFvkFhrFk+c6YQMk/XVTAofCro= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=pbE24td1; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="pbE24td1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268482; bh=Zn1nxRIZwpG9gkrQZ1+GbKqVwAFGF98enOifZD+Uysw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pbE24td16JEEK1xpt6vjD4CXXi4gMhE+k6ThvstQcWQtLsKcFT3vXZ1bXidczJqpe kZVuFOA5HUn2hc/CYqrw5ExIpnSJm3Y2CkGsWdDbxUAHQd6fr70h+IdMkdaeulnSj3 zks5scFHecmuAxfjTRSN+RAVE3XJ0+FcnqrDEcmMPIZyjwJxU7/2EWvZqPlCdxQynB 5ACo2u87GxpeaojzsV5X0TXKTkAp7wAGB8eiT0s6XAzfIxgSiGlbVLc1IjbwjCqmCw 26CmXy56a+bEBgGGgdFgRKnA9+1EqgXNk8rXJpjENZfMo+dK5X4c3e9tMfTFjZRfhE vcwOpWIFFBvhA== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 7742F17E1553; Mon, 26 May 2025 16:08:02 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:46 +0300 Subject: [PATCH 7/9] ALSA: usb-audio: Simplify NULL comparison in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-7-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Handle report from checkpatch.pl: CHECK: Comparison to NULL could be written "t->name" Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index 17c9cbbfce224cdcd4f80802b7fbe377969d289f..783789cbcfe2901d7dcf30580fa= 19bac62898897 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -129,7 +129,7 @@ static int snd_create_std_mono_table(struct usb_mixer_i= nterface *mixer, { int err; =20 - while (t->name !=3D NULL) { + while (t->name) { err =3D snd_create_std_mono_ctl(mixer, t->unitid, t->control, t->cmask, t->val_type, t->name, t->tlv_callback); --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 41AD52139C8; Mon, 26 May 2025 14:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268487; cv=none; b=CLJKMTYL9EiKyWNS41faxSiVvrkwQrSdShsn52X8brykwSSyKwIpHBYCz4oi7OAYsqN3trovw2PNHEINWKCM1Rb/o3hH+zENy4GWuZfUAnQLFX4EUHj5WbYeWFuDEMcvxTJBSKfzi1SKY221l2RVkIE8zMEh3k3wxjNG7UM+IlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268487; c=relaxed/simple; bh=owUJ57FVHFzWDxKpviR6uO5WheEy4uv8zmSWZJXBe0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BubwfdPSB+c7ezw7OopgUGlVNHbPCAdNdAFjWEtrB+FrnrBbA2Lu317lr9au5CoK1zAjoHRP7Zwna0J2lbm++bb7Db5IfyzKH5ZhSZcpFqtTYH1p587qtBLbUQ8VCEy134orhgpihSZpK1WlxINgiGi69P3FhJk0T5b0MSC/0N4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=SsIC4Huk; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="SsIC4Huk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268483; bh=owUJ57FVHFzWDxKpviR6uO5WheEy4uv8zmSWZJXBe0Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SsIC4Huk24euC21ipxtjoRe7uTK3N6DadoqzdotcwYwShWPrBcLWq6dkeet91tmi4 fsHMCOhXx0Vu83Y1Pv0idS0gozpKsX3Qwq2RCsnkCcY7U1BmXy0jBm7cjZRZZ5Pzv2 YSLH2dujGZCA653cAx9moA/p7q1rE1tNiuOkxEFMnVHv3LSD6Idd5XzPnf2mKrLSwZ YIIMGow0i4x1NVPQkA7j1lRXC32aVQGtSj7KN+tHu7wcgYg5SnyL4qKcFEQUO8XYiz f8QKYwxyir/si3L1aYQ2OO/B2NTmkf/ih/sn5ehjkr1c7O96IPwJpNzBAtKoK47G0i HEWHT6tnus5mw== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 4613717E1560; Mon, 26 May 2025 16:08:03 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:47 +0300 Subject: [PATCH 8/9] ALSA: usb-audio: Remove unneeded wmb() in mixer_quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-8-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Adding a memory barrier before wake_up() in snd_usb_soundblaster_remote_complete() is supposed to ensure the write to mixer->rc_code is visible in wait_event_interruptible() from snd_usb_sbrc_hwdep_read(). However, this is not really necessary, since wake_up() is just a wrapper over __wake_up() which already executes a full memory barrier before accessing the state of the task to be waken up. Drop the redundant call to wmb() and implicitly fix the checkpatch complaint: WARNING: memory barrier without comment Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index 783789cbcfe2901d7dcf30580fa19bac62898897..ffda3b8d42cc6b05ea267266161= 96a012cb6d1e4 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -212,7 +212,6 @@ static void snd_usb_soundblaster_remote_complete(struct= urb *urb) if (code =3D=3D rc->mute_code) snd_usb_mixer_notify_id(mixer, rc->mute_mixer_id); mixer->rc_code =3D code; - wmb(); wake_up(&mixer->rc_waitq); } =20 --=20 2.49.0 From nobody Fri Dec 19 20:56:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF6C4215191; Mon, 26 May 2025 14:08:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268489; cv=none; b=sthvBLXtnIaY6xV0+WeAXuUMFMlusXw85pZ7dmGDwyIcrz/aC5uvM80QZ9DDh/ZUSeFIxfuEjl7Q8PwRq69DRTq4SQU4Nm4YnWh8cF2FUgmSUddYRWl5DXQcUMJTMDcdltb0d+uDmq0UIGvD/Lmx6uo/XwtoHcu1Edd1H86cnAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748268489; c=relaxed/simple; bh=FyfP22yfLEWzxbcL2pK5RHXWi6TCvIek7sBf6PSSgpA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WDR8jV/Uwu65uu2u1gR1FPZyL9GcT7d4SQSUdN0BGeTvZDuFXP19vqwwRjdaMwCp4J9EbTMXRWx52rgyMTAauY4zcfd+b7j+vzVsNSWINBGJ15Nn3M5LZu9zajbAvNgjUWSc5YdBaEzpsDRSWYzWEW2ykuLqhR2rM6c7kpbV/sQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=kJq99sRl; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="kJq99sRl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1748268484; bh=FyfP22yfLEWzxbcL2pK5RHXWi6TCvIek7sBf6PSSgpA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kJq99sRlNYSZahDsz0ocRDyodji1x7pFs+xXIUg159F/Yj6BqFAC1E8exl6s0SgaW tnW5Sm2rSsw+aXdjLT+EyYAV5KNC6tzft+AwK4IjxoFmq3tNXI4umFyzj8h4PhN/SD UXibAUllI0uVm+AwcIqU/FhGCkDXDTSEXNJLhH3dfpM5vg45vZzXBzxbwEYpC42vbR qEWp6cpIWWKCCHCasnHvLqVYpamPfOQxUq3YEArgGMZtw8NsgR7zKSEXigbfgdUkLL 6BVAJxAE/HFfzSTCASUQNgeEumOUTu8MHBUFI/3cwyh/LtRbu0hX2QJJGRML81tIUK DRjRWv3o+j7Kw== Received: from localhost (unknown [82.76.59.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 17E3617E1595; Mon, 26 May 2025 16:08:04 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 26 May 2025 17:07:48 +0300 Subject: [PATCH 9/9] ALSA: usb-audio: Add mixer quirk for Sony DualSense PS5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250526-dualsense-alsa-jack-v1-9-1a821463b632@collabora.com> References: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> In-Reply-To: <20250526-dualsense-alsa-jack-v1-0-1a821463b632@collabora.com> To: Jaroslav Kysela , Takashi Iwai Cc: kernel@collabora.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 The Sony DualSense wireless controller (PS5) features an internal mono speaker, but it also provides a 3.5mm jack socket for headphone output and headset microphone input. Since this is a UAC1 device, it doesn't advertise any jack detection capability. However, the controller is able to report HP & MIC insert events via HID, i.e. through a dedicated input device managed by the hid-playstation driver. Add a quirk to create the jack controls for headphone and headset mic, respectively, and setup an input handler for each of them in order to intercept the related hotplug events. Signed-off-by: Cristian Ciocaltea --- sound/usb/mixer_quirks.c | 263 +++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 263 insertions(+) diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c index ffda3b8d42cc6b05ea26726616196a012cb6d1e4..0769ecd9114401007472b66d3ee= 728a33804de0e 100644 --- a/sound/usb/mixer_quirks.c +++ b/sound/usb/mixer_quirks.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -531,6 +532,263 @@ static int snd_emu0204_controls_create(struct usb_mix= er_interface *mixer) &snd_emu0204_control, NULL); } =20 +/* + * Sony DualSense controller (PS5) jack detection + * + * Since this is an UAC 1 device, it doesn't support jack detection. + * However, the controller hid-playstation driver reports HP & MIC + * insert events through a dedicated input device. + */ + +#define SND_DUALSENSE_JACK_OUT_TERM_ID 3 +#define SND_DUALSENSE_JACK_IN_TERM_ID 4 + +struct dualsense_mixer_elem_info { + struct usb_mixer_elem_info info; + struct input_handler ih; + struct input_device_id id_table[2]; + bool connected; +}; + +static void snd_dualsense_ih_event(struct input_handle *handle, + unsigned int type, unsigned int code, + int value) +{ + struct dualsense_mixer_elem_info *mei; + struct usb_mixer_elem_list *me; + + if (type !=3D EV_SW) + return; + + mei =3D container_of(handle->handler, struct dualsense_mixer_elem_info, i= h); + me =3D &mei->info.head; + + if ((me->id =3D=3D SND_DUALSENSE_JACK_OUT_TERM_ID && code =3D=3D SW_HEADP= HONE_INSERT) || + (me->id =3D=3D SND_DUALSENSE_JACK_IN_TERM_ID && code =3D=3D SW_MICROP= HONE_INSERT)) { + mei->connected =3D !!value; + snd_ctl_notify(me->mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, + &me->kctl->id); + } +} + +static bool snd_dualsense_ih_match(struct input_handler *handler, + struct input_dev *dev) +{ + struct dualsense_mixer_elem_info *mei; + struct usb_device *snd_dev; + char *input_dev_path, *usb_dev_path; + size_t usb_dev_path_len; + bool match =3D false; + + mei =3D container_of(handler, struct dualsense_mixer_elem_info, ih); + snd_dev =3D mei->info.head.mixer->chip->dev; + + input_dev_path =3D kobject_get_path(&dev->dev.kobj, GFP_KERNEL); + if (!input_dev_path) { + dev_warn(&snd_dev->dev, "Failed to get input dev path\n"); + return false; + } + + usb_dev_path =3D kobject_get_path(&snd_dev->dev.kobj, GFP_KERNEL); + if (!usb_dev_path) { + dev_warn(&snd_dev->dev, "Failed to get USB dev path\n"); + goto free_paths; + } + + /* + * Ensure the VID:PID matched input device supposedly owned by the + * hid-playstation driver belongs to the actual hardware handled by + * the current USB audio device, which implies input_dev_path being + * a subpath of usb_dev_path. + * + * This verification is necessary when there is more than one identical + * controller attached to the host system. + */ + usb_dev_path_len =3D strlen(usb_dev_path); + if (usb_dev_path_len >=3D strlen(input_dev_path)) + goto free_paths; + + usb_dev_path[usb_dev_path_len] =3D '/'; + match =3D !memcmp(input_dev_path, usb_dev_path, usb_dev_path_len + 1); + +free_paths: + kfree(input_dev_path); + kfree(usb_dev_path); + + return match; +} + +static int snd_dualsense_ih_connect(struct input_handler *handler, + struct input_dev *dev, + const struct input_device_id *id) +{ + struct input_handle *handle; + int err; + + handle =3D kzalloc(sizeof(*handle), GFP_KERNEL); + if (!handle) + return -ENOMEM; + + handle->dev =3D dev; + handle->handler =3D handler; + handle->name =3D handler->name; + + err =3D input_register_handle(handle); + if (err) + goto err_free; + + err =3D input_open_device(handle); + if (err) + goto err_unregister; + + return 0; + +err_unregister: + input_unregister_handle(handle); +err_free: + kfree(handle); + return err; +} + +static void snd_dualsense_ih_disconnect(struct input_handle *handle) +{ + input_close_device(handle); + input_unregister_handle(handle); + kfree(handle); +} + +static void snd_dualsense_ih_start(struct input_handle *handle) +{ + struct dualsense_mixer_elem_info *mei; + struct usb_mixer_elem_list *me; + int status =3D -1; + + mei =3D container_of(handle->handler, struct dualsense_mixer_elem_info, i= h); + me =3D &mei->info.head; + + if (me->id =3D=3D SND_DUALSENSE_JACK_OUT_TERM_ID && + test_bit(SW_HEADPHONE_INSERT, handle->dev->swbit)) + status =3D test_bit(SW_HEADPHONE_INSERT, handle->dev->sw); + else if (me->id =3D=3D SND_DUALSENSE_JACK_IN_TERM_ID && + test_bit(SW_MICROPHONE_INSERT, handle->dev->swbit)) + status =3D test_bit(SW_MICROPHONE_INSERT, handle->dev->sw); + + if (status >=3D 0) { + mei->connected =3D !!status; + snd_ctl_notify(me->mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, + &me->kctl->id); + } +} + +static int snd_dualsense_jack_get(struct snd_kcontrol *kctl, + struct snd_ctl_elem_value *ucontrol) +{ + struct dualsense_mixer_elem_info *mei =3D snd_kcontrol_chip(kctl); + + ucontrol->value.integer.value[0] =3D mei->connected; + + return 0; +} + +static const struct snd_kcontrol_new snd_dualsense_jack_control =3D { + .iface =3D SNDRV_CTL_ELEM_IFACE_CARD, + .access =3D SNDRV_CTL_ELEM_ACCESS_READ, + .info =3D snd_ctl_boolean_mono_info, + .get =3D snd_dualsense_jack_get, +}; + +static int snd_dualsense_resume_jack(struct usb_mixer_elem_list *list) +{ + snd_ctl_notify(list->mixer->chip->card, SNDRV_CTL_EVENT_MASK_VALUE, + &list->kctl->id); + return 0; +} + +static void snd_dualsense_mixer_elem_free(struct snd_kcontrol *kctl) +{ + struct dualsense_mixer_elem_info *mei =3D snd_kcontrol_chip(kctl); + + if (mei->ih.event) + input_unregister_handler(&mei->ih); + + snd_usb_mixer_elem_free(kctl); +} + +static int snd_dualsense_jack_create(struct usb_mixer_interface *mixer, + const char *name, bool is_output) +{ + struct dualsense_mixer_elem_info *mei; + struct input_device_id *idev_id; + struct snd_kcontrol *kctl; + int err; + + mei =3D kzalloc(sizeof(*mei), GFP_KERNEL); + if (!mei) + return -ENOMEM; + + snd_usb_mixer_elem_init_std(&mei->info.head, mixer, + is_output ? SND_DUALSENSE_JACK_OUT_TERM_ID : + SND_DUALSENSE_JACK_IN_TERM_ID); + + mei->info.head.resume =3D snd_dualsense_resume_jack; + mei->info.val_type =3D USB_MIXER_BOOLEAN; + mei->info.channels =3D 1; + mei->info.min =3D 0; + mei->info.max =3D 1; + + kctl =3D snd_ctl_new1(&snd_dualsense_jack_control, mei); + if (!kctl) { + kfree(mei); + return -ENOMEM; + } + + strscpy(kctl->id.name, name, sizeof(kctl->id.name)); + kctl->private_free =3D snd_dualsense_mixer_elem_free; + + err =3D snd_usb_mixer_add_control(&mei->info.head, kctl); + if (err) + return err; + + idev_id =3D &mei->id_table[0]; + idev_id->flags =3D INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_P= RODUCT | + INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_SWBIT; + idev_id->vendor =3D USB_ID_VENDOR(mixer->chip->usb_id); + idev_id->product =3D USB_ID_PRODUCT(mixer->chip->usb_id); + idev_id->evbit[BIT_WORD(EV_SW)] =3D BIT_MASK(EV_SW); + if (is_output) + idev_id->swbit[BIT_WORD(SW_HEADPHONE_INSERT)] =3D BIT_MASK(SW_HEADPHONE_= INSERT); + else + idev_id->swbit[BIT_WORD(SW_MICROPHONE_INSERT)] =3D BIT_MASK(SW_MICROPHON= E_INSERT); + + mei->ih.event =3D snd_dualsense_ih_event; + mei->ih.match =3D snd_dualsense_ih_match; + mei->ih.connect =3D snd_dualsense_ih_connect, + mei->ih.disconnect =3D snd_dualsense_ih_disconnect, + mei->ih.start =3D snd_dualsense_ih_start, + mei->ih.name =3D name; + mei->ih.id_table =3D mei->id_table; + + err =3D input_register_handler(&mei->ih); + if (err) { + dev_warn(&mixer->chip->dev->dev, + "Could not register input handler: %d\n", err); + mei->ih.event =3D NULL; + } + + return 0; +} + +static int snd_dualsense_controls_create(struct usb_mixer_interface *mixer) +{ + int err; + + err =3D snd_dualsense_jack_create(mixer, "Headphone Jack", true); + if (err < 0) + return err; + + return snd_dualsense_jack_create(mixer, "Headset Mic Jack", false); +} + /* ASUS Xonar U1 / U3 controls */ =20 static int snd_xonar_u1_switch_get(struct snd_kcontrol *kcontrol, @@ -4073,6 +4331,11 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixe= r_interface *mixer) err =3D snd_emu0204_controls_create(mixer); break; =20 + case USB_ID(0x054c, 0x0ce6): /* Sony DualSense controller (PS5) */ + case USB_ID(0x054c, 0x0df2): /* Sony DualSense Edge controller (PS5) */ + err =3D snd_dualsense_controls_create(mixer); + break; + case USB_ID(0x0763, 0x2030): /* M-Audio Fast Track C400 */ case USB_ID(0x0763, 0x2031): /* M-Audio Fast Track C400 */ err =3D snd_c400_create_mixer(mixer); --=20 2.49.0