| From fabd0584e2b4b520958da15842ab1efd9ca311b3 Mon Sep 17 00:00:00 2001 |
| From: Arvind Sankar <nivedita@alum.mit.edu> |
| Date: Tue, 11 Feb 2020 11:22:35 -0500 |
| Subject: [PATCH] ALSA: usb-audio: Apply sample rate quirk for Audioengine D1 |
| |
| commit 93f9d1a4ac5930654c17412e3911b46ece73755a upstream. |
| |
| The Audioengine D1 (0x2912:0x30c8) does support reading the sample rate, |
| but it returns the rate in byte-reversed order. |
| |
| When setting sampling rate, the driver produces these warning messages: |
| [168840.944226] usb 3-2.2: current rate 4500480 is different from the runtime rate 44100 |
| [168854.930414] usb 3-2.2: current rate 8436480 is different from the runtime rate 48000 |
| [168905.185825] usb 3-2.1.2: current rate 30465 is different from the runtime rate 96000 |
| |
| As can be seen from the hexadecimal conversion, the current rate read |
| back is byte-reversed from the rate that was set. |
| |
| 44100 == 0x00ac44, 4500480 == 0x44ac00 |
| 48000 == 0x00bb80, 8436480 == 0x80bb00 |
| 96000 == 0x017700, 30465 == 0x007701 |
| |
| Rather than implementing a new quirk to reverse the order, just skip |
| checking the rate to avoid spamming the log. |
| |
| Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> |
| Cc: <stable@vger.kernel.org> |
| Link: https://lore.kernel.org/r/20200211162235.1639889-1-nivedita@alum.mit.edu |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c |
| index 82184036437b..1ed25b1d2a6a 100644 |
| --- a/sound/usb/quirks.c |
| +++ b/sound/usb/quirks.c |
| @@ -1402,6 +1402,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) |
| case USB_ID(0x1395, 0x740a): /* Sennheiser DECT */ |
| case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */ |
| case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */ |
| + case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */ |
| return true; |
| } |
| |
| -- |
| 2.7.4 |
| |