All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20251210072948.576445467@linuxfoundation.org>

diff --git a/a/1.txt b/N1/1.txt
index 49d7d24..5fc4392 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,77 +1,63 @@
-6.12-stable review patch.  If anyone has any objections, please let me know.
+6.17-stable review patch.  If anyone has any objections, please let me know.
 
 ------------------
 
-From: Johan Hovold <johan@kernel.org>
+From: Lushih Hsieh <bruce@mail.kh.edu.tw>
 
-commit b6e0b3016187446ddef9edac03cd9d544ac63f11 upstream.
+[ Upstream commit 21a9ab5b90b3716a631d559e62818029b4e7f5b7 ]
 
-Asserting or deasserting a modem control line using TIOCMBIS or TIOCMBIC
-should not deassert any lines that are not in the mask.
+The PureAudio APA DAC and Lotus DAC5 series are USB Audio
+2.0 Class devices that support native Direct Stream Digital (DSD)
+playback via specific vendor protocols.
 
-Fix this long-standing regression dating back to 2003 when the
-tiocmset() callback was introduced.
+Without these quirks, the devices may only function in standard
+PCM mode, or fail to correctly report their DSD format capabilities
+to the ALSA framework, preventing native DSD playback under Linux.
 
-Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
-Cc: stable@vger.kernel.org
-Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Johan Hovold <johan@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+This commit adds new quirk entries for the mentioned DAC models
+based on their respective Vendor/Product IDs (VID:PID), for example:
+0x16d0:0x0ab1 (APA DAC), 0x16d0:0xeca1 (DAC5 series), etc.
+
+The quirk ensures correct DSD format handling by setting the required
+SNDRV_PCM_FMTBIT_DSD_U32_BE format bit and defining the DSD-specific
+Audio Class 2.0 (AC2.0) endpoint configurations. This allows the ALSA
+DSD API to correctly address the device for high-bitrate DSD streams,
+bypassing the need for DoP (DSD over PCM).
+
+Test on APA DAC and Lotus DAC5 SE under Arch Linux.
+
+Tested-by: Lushih Hsieh <bruce@mail.kh.edu.tw>
+Signed-off-by: Lushih Hsieh <bruce@mail.kh.edu.tw>
+Link: https://patch.msgid.link/20251114052053.54989-1-bruce@mail.kh.edu.tw
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
 ---
- drivers/usb/serial/belkin_sa.c |   28 +++++++++++++++++-----------
- 1 file changed, 17 insertions(+), 11 deletions(-)
+ sound/usb/quirks.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
 
---- a/drivers/usb/serial/belkin_sa.c
-+++ b/drivers/usb/serial/belkin_sa.c
-@@ -435,7 +435,7 @@ static int belkin_sa_tiocmset(struct tty
- 	struct belkin_sa_private *priv = usb_get_serial_port_data(port);
- 	unsigned long control_state;
- 	unsigned long flags;
--	int retval;
-+	int retval = 0;
- 	int rts = 0;
- 	int dtr = 0;
- 
-@@ -452,26 +452,32 @@ static int belkin_sa_tiocmset(struct tty
- 	}
- 	if (clear & TIOCM_RTS) {
- 		control_state &= ~TIOCM_RTS;
--		rts = 0;
-+		rts = 1;
- 	}
- 	if (clear & TIOCM_DTR) {
- 		control_state &= ~TIOCM_DTR;
--		dtr = 0;
-+		dtr = 1;
- 	}
- 
- 	priv->control_state = control_state;
- 	spin_unlock_irqrestore(&priv->lock, flags);
- 
--	retval = BSA_USB_CMD(BELKIN_SA_SET_RTS_REQUEST, rts);
--	if (retval < 0) {
--		dev_err(&port->dev, "Set RTS error %d\n", retval);
--		goto exit;
-+	if (rts) {
-+		retval = BSA_USB_CMD(BELKIN_SA_SET_RTS_REQUEST,
-+					!!(control_state & TIOCM_RTS));
-+		if (retval < 0) {
-+			dev_err(&port->dev, "Set RTS error %d\n", retval);
-+			goto exit;
-+		}
- 	}
- 
--	retval = BSA_USB_CMD(BELKIN_SA_SET_DTR_REQUEST, dtr);
--	if (retval < 0) {
--		dev_err(&port->dev, "Set DTR error %d\n", retval);
--		goto exit;
-+	if (dtr) {
-+		retval = BSA_USB_CMD(BELKIN_SA_SET_DTR_REQUEST,
-+					!!(control_state & TIOCM_DTR));
-+		if (retval < 0) {
-+			dev_err(&port->dev, "Set DTR error %d\n", retval);
-+			goto exit;
-+		}
- 	}
- exit:
- 	return retval;
+diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
+index b04f52adb1f48..70f9e0cc28fac 100644
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -2022,6 +2022,8 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
+ 	case USB_ID(0x16d0, 0x09d8): /* NuPrime IDA-8 */
+ 	case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */
+ 	case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
++	case USB_ID(0x16d0, 0x0ab1): /* PureAudio APA DAC */
++	case USB_ID(0x16d0, 0xeca1): /* PureAudio Lotus DAC5, DAC5 SE, DAC5 Pro */
+ 	case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */
+ 	case USB_ID(0x20a0, 0x4143): /* WaveIO USB Audio 2.0 */
+ 	case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */
+@@ -2289,6 +2291,10 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
+ 		   QUIRK_FLAG_IGNORE_CLOCK_SOURCE),
+ 	DEVICE_FLG(0x1686, 0x00dd, /* Zoom R16/24 */
+ 		   QUIRK_FLAG_TX_LENGTH | QUIRK_FLAG_CTL_MSG_DELAY_1M),
++	DEVICE_FLG(0x16d0, 0x0ab1, /* PureAudio APA DAC */
++		   QUIRK_FLAG_DSD_RAW),
++	DEVICE_FLG(0x16d0, 0xeca1, /* PureAudio Lotus DAC5, DAC5 SE and DAC5 Pro */
++		   QUIRK_FLAG_DSD_RAW),
+ 	DEVICE_FLG(0x17aa, 0x1046, /* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */
+ 		   QUIRK_FLAG_DISABLE_AUTOSUSPEND),
+ 	DEVICE_FLG(0x17aa, 0x104d, /* Lenovo ThinkStation P620 Internal Speaker + Front Headset */
+-- 
+2.51.0
diff --git a/a/content_digest b/N1/content_digest
index 44aeee2..ba63c11 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,89 +1,77 @@
- "ref\020251210072948.125620687@linuxfoundation.org\0"
+ "ref\020251210072947.850479903@linuxfoundation.org\0"
  "From\0Greg Kroah-Hartman <gregkh@linuxfoundation.org>\0"
- "Subject\0[PATCH 6.12 18/49] USB: serial: belkin_sa: fix TIOCMBIS and TIOCMBIC\0"
- "Date\0Wed, 10 Dec 2025 16:29:48 +0900\0"
+ "Subject\0[PATCH 6.17 30/60] ALSA: usb-audio: Add native DSD quirks for PureAudio DAC series\0"
+ "Date\0Wed, 10 Dec 2025 16:30:00 +0900\0"
  "To\0stable@vger.kernel.org\0"
  "Cc\0Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
   patches@lists.linux.dev
- " Johan Hovold <johan@kernel.org>\0"
+  Lushih Hsieh <bruce@mail.kh.edu.tw>
+  Takashi Iwai <tiwai@suse.de>
+ " Sasha Levin <sashal@kernel.org>\0"
  "\00:1\0"
  "b\0"
- "6.12-stable review patch.  If anyone has any objections, please let me know.\n"
+ "6.17-stable review patch.  If anyone has any objections, please let me know.\n"
  "\n"
  "------------------\n"
  "\n"
- "From: Johan Hovold <johan@kernel.org>\n"
+ "From: Lushih Hsieh <bruce@mail.kh.edu.tw>\n"
  "\n"
- "commit b6e0b3016187446ddef9edac03cd9d544ac63f11 upstream.\n"
+ "[ Upstream commit 21a9ab5b90b3716a631d559e62818029b4e7f5b7 ]\n"
  "\n"
- "Asserting or deasserting a modem control line using TIOCMBIS or TIOCMBIC\n"
- "should not deassert any lines that are not in the mask.\n"
+ "The PureAudio APA DAC and Lotus DAC5 series are USB Audio\n"
+ "2.0 Class devices that support native Direct Stream Digital (DSD)\n"
+ "playback via specific vendor protocols.\n"
  "\n"
- "Fix this long-standing regression dating back to 2003 when the\n"
- "tiocmset() callback was introduced.\n"
+ "Without these quirks, the devices may only function in standard\n"
+ "PCM mode, or fail to correctly report their DSD format capabilities\n"
+ "to the ALSA framework, preventing native DSD playback under Linux.\n"
  "\n"
- "Fixes: 1da177e4c3f4 (\"Linux-2.6.12-rc2\")\n"
- "Cc: stable@vger.kernel.org\n"
- "Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n"
- "Signed-off-by: Johan Hovold <johan@kernel.org>\n"
- "Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>\n"
+ "This commit adds new quirk entries for the mentioned DAC models\n"
+ "based on their respective Vendor/Product IDs (VID:PID), for example:\n"
+ "0x16d0:0x0ab1 (APA DAC), 0x16d0:0xeca1 (DAC5 series), etc.\n"
+ "\n"
+ "The quirk ensures correct DSD format handling by setting the required\n"
+ "SNDRV_PCM_FMTBIT_DSD_U32_BE format bit and defining the DSD-specific\n"
+ "Audio Class 2.0 (AC2.0) endpoint configurations. This allows the ALSA\n"
+ "DSD API to correctly address the device for high-bitrate DSD streams,\n"
+ "bypassing the need for DoP (DSD over PCM).\n"
+ "\n"
+ "Test on APA DAC and Lotus DAC5 SE under Arch Linux.\n"
+ "\n"
+ "Tested-by: Lushih Hsieh <bruce@mail.kh.edu.tw>\n"
+ "Signed-off-by: Lushih Hsieh <bruce@mail.kh.edu.tw>\n"
+ "Link: https://patch.msgid.link/20251114052053.54989-1-bruce@mail.kh.edu.tw\n"
+ "Signed-off-by: Takashi Iwai <tiwai@suse.de>\n"
+ "Signed-off-by: Sasha Levin <sashal@kernel.org>\n"
  "---\n"
- " drivers/usb/serial/belkin_sa.c |   28 +++++++++++++++++-----------\n"
- " 1 file changed, 17 insertions(+), 11 deletions(-)\n"
+ " sound/usb/quirks.c | 6 ++++++\n"
+ " 1 file changed, 6 insertions(+)\n"
  "\n"
- "--- a/drivers/usb/serial/belkin_sa.c\n"
- "+++ b/drivers/usb/serial/belkin_sa.c\n"
- "@@ -435,7 +435,7 @@ static int belkin_sa_tiocmset(struct tty\n"
- " \tstruct belkin_sa_private *priv = usb_get_serial_port_data(port);\n"
- " \tunsigned long control_state;\n"
- " \tunsigned long flags;\n"
- "-\tint retval;\n"
- "+\tint retval = 0;\n"
- " \tint rts = 0;\n"
- " \tint dtr = 0;\n"
- " \n"
- "@@ -452,26 +452,32 @@ static int belkin_sa_tiocmset(struct tty\n"
- " \t}\n"
- " \tif (clear & TIOCM_RTS) {\n"
- " \t\tcontrol_state &= ~TIOCM_RTS;\n"
- "-\t\trts = 0;\n"
- "+\t\trts = 1;\n"
- " \t}\n"
- " \tif (clear & TIOCM_DTR) {\n"
- " \t\tcontrol_state &= ~TIOCM_DTR;\n"
- "-\t\tdtr = 0;\n"
- "+\t\tdtr = 1;\n"
- " \t}\n"
- " \n"
- " \tpriv->control_state = control_state;\n"
- " \tspin_unlock_irqrestore(&priv->lock, flags);\n"
- " \n"
- "-\tretval = BSA_USB_CMD(BELKIN_SA_SET_RTS_REQUEST, rts);\n"
- "-\tif (retval < 0) {\n"
- "-\t\tdev_err(&port->dev, \"Set RTS error %d\\n\", retval);\n"
- "-\t\tgoto exit;\n"
- "+\tif (rts) {\n"
- "+\t\tretval = BSA_USB_CMD(BELKIN_SA_SET_RTS_REQUEST,\n"
- "+\t\t\t\t\t!!(control_state & TIOCM_RTS));\n"
- "+\t\tif (retval < 0) {\n"
- "+\t\t\tdev_err(&port->dev, \"Set RTS error %d\\n\", retval);\n"
- "+\t\t\tgoto exit;\n"
- "+\t\t}\n"
- " \t}\n"
- " \n"
- "-\tretval = BSA_USB_CMD(BELKIN_SA_SET_DTR_REQUEST, dtr);\n"
- "-\tif (retval < 0) {\n"
- "-\t\tdev_err(&port->dev, \"Set DTR error %d\\n\", retval);\n"
- "-\t\tgoto exit;\n"
- "+\tif (dtr) {\n"
- "+\t\tretval = BSA_USB_CMD(BELKIN_SA_SET_DTR_REQUEST,\n"
- "+\t\t\t\t\t!!(control_state & TIOCM_DTR));\n"
- "+\t\tif (retval < 0) {\n"
- "+\t\t\tdev_err(&port->dev, \"Set DTR error %d\\n\", retval);\n"
- "+\t\t\tgoto exit;\n"
- "+\t\t}\n"
- " \t}\n"
- " exit:\n"
- " \treturn retval;"
+ "diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c\n"
+ "index b04f52adb1f48..70f9e0cc28fac 100644\n"
+ "--- a/sound/usb/quirks.c\n"
+ "+++ b/sound/usb/quirks.c\n"
+ "@@ -2022,6 +2022,8 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,\n"
+ " \tcase USB_ID(0x16d0, 0x09d8): /* NuPrime IDA-8 */\n"
+ " \tcase USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */\n"
+ " \tcase USB_ID(0x16d0, 0x09dd): /* Encore mDSD */\n"
+ "+\tcase USB_ID(0x16d0, 0x0ab1): /* PureAudio APA DAC */\n"
+ "+\tcase USB_ID(0x16d0, 0xeca1): /* PureAudio Lotus DAC5, DAC5 SE, DAC5 Pro */\n"
+ " \tcase USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */\n"
+ " \tcase USB_ID(0x20a0, 0x4143): /* WaveIO USB Audio 2.0 */\n"
+ " \tcase USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */\n"
+ "@@ -2289,6 +2291,10 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {\n"
+ " \t\t   QUIRK_FLAG_IGNORE_CLOCK_SOURCE),\n"
+ " \tDEVICE_FLG(0x1686, 0x00dd, /* Zoom R16/24 */\n"
+ " \t\t   QUIRK_FLAG_TX_LENGTH | QUIRK_FLAG_CTL_MSG_DELAY_1M),\n"
+ "+\tDEVICE_FLG(0x16d0, 0x0ab1, /* PureAudio APA DAC */\n"
+ "+\t\t   QUIRK_FLAG_DSD_RAW),\n"
+ "+\tDEVICE_FLG(0x16d0, 0xeca1, /* PureAudio Lotus DAC5, DAC5 SE and DAC5 Pro */\n"
+ "+\t\t   QUIRK_FLAG_DSD_RAW),\n"
+ " \tDEVICE_FLG(0x17aa, 0x1046, /* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */\n"
+ " \t\t   QUIRK_FLAG_DISABLE_AUTOSUSPEND),\n"
+ " \tDEVICE_FLG(0x17aa, 0x104d, /* Lenovo ThinkStation P620 Internal Speaker + Front Headset */\n"
+ "-- \n"
+ 2.51.0
 
-31f792d9f156b93a2ebe1b974d72e406f0575f7b20fa92447f2c565d3d16b393
+62e77ebfe0c42ff19585f607cf104e3b2c8f53e52bb9e1fddd805a26bfb58008

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.