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.