aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb/quirks.c')
-rw-r--r--sound/usb/quirks.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index acbeb52f6fd6..f4b69173682c 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -851,6 +851,36 @@ static int snd_usb_mbox2_boot_quirk(struct usb_device *dev)
851 return 0; /* Successful boot */ 851 return 0; /* Successful boot */
852} 852}
853 853
854static int snd_usb_axefx3_boot_quirk(struct usb_device *dev)
855{
856 int err;
857
858 dev_dbg(&dev->dev, "Waiting for Axe-Fx III to boot up...\n");
859
860 /* If the Axe-Fx III has not fully booted, it will timeout when trying
861 * to enable the audio streaming interface. A more generous timeout is
862 * used here to detect when the Axe-Fx III has finished booting as the
863 * set interface message will be acked once it has
864 */
865 err = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
866 USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE,
867 1, 1, NULL, 0, 120000);
868 if (err < 0) {
869 dev_err(&dev->dev,
870 "failed waiting for Axe-Fx III to boot: %d\n", err);
871 return err;
872 }
873
874 dev_dbg(&dev->dev, "Axe-Fx III is now ready\n");
875
876 err = usb_set_interface(dev, 1, 0);
877 if (err < 0)
878 dev_dbg(&dev->dev,
879 "error stopping Axe-Fx III interface: %d\n", err);
880
881 return 0;
882}
883
854/* 884/*
855 * Setup quirks 885 * Setup quirks
856 */ 886 */
@@ -1026,6 +1056,8 @@ int snd_usb_apply_boot_quirk(struct usb_device *dev,
1026 return snd_usb_fasttrackpro_boot_quirk(dev); 1056 return snd_usb_fasttrackpro_boot_quirk(dev);
1027 case USB_ID(0x047f, 0xc010): /* Plantronics Gamecom 780 */ 1057 case USB_ID(0x047f, 0xc010): /* Plantronics Gamecom 780 */
1028 return snd_usb_gamecon780_boot_quirk(dev); 1058 return snd_usb_gamecon780_boot_quirk(dev);
1059 case USB_ID(0x2466, 0x8010): /* Fractal Audio Axe-Fx 3 */
1060 return snd_usb_axefx3_boot_quirk(dev);
1029 } 1061 }
1030 1062
1031 return 0; 1063 return 0;
@@ -1327,20 +1359,47 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
1327 1359
1328 /* XMOS based USB DACs */ 1360 /* XMOS based USB DACs */
1329 switch (chip->usb_id) { 1361 switch (chip->usb_id) {
1362 case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */
1363 case USB_ID(0x20b1, 0x0002): /* Wyred 4 Sound DAC-2 DSD */
1364 case USB_ID(0x20b1, 0x2004): /* Matrix Audio X-SPDIF 2 */
1330 case USB_ID(0x20b1, 0x3008): /* iFi Audio micro/nano iDSD */ 1365 case USB_ID(0x20b1, 0x3008): /* iFi Audio micro/nano iDSD */
1331 case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */ 1366 case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */
1332 case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */ 1367 case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */
1333 case USB_ID(0x22d9, 0x0416): /* OPPO HA-1 */ 1368 case USB_ID(0x22d9, 0x0416): /* OPPO HA-1 */
1369 case USB_ID(0x22d9, 0x0436): /* OPPO Sonica */
1370 case USB_ID(0x22d9, 0x0461): /* OPPO UDP-205 */
1371 case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */
1372 case USB_ID(0x25ce, 0x001f): /* Mytek Brooklyn DAC */
1373 case USB_ID(0x25ce, 0x0021): /* Mytek Manhattan DAC */
1374 case USB_ID(0x25ce, 0x8025): /* Mytek Brooklyn DAC+ */
1334 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */ 1375 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */
1335 if (fp->altsetting == 2) 1376 if (fp->altsetting == 2)
1336 return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1377 return SNDRV_PCM_FMTBIT_DSD_U32_BE;
1337 break; 1378 break;
1338 1379
1380 case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */
1381 case USB_ID(0x16b0, 0x06b2): /* NuPrime DAC-10 */
1382 case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */
1383 case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */
1384 case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */
1339 case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */ 1385 case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */
1386 case USB_ID(0x20b1, 0x2005): /* Denafrips Ares DAC */
1340 case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */ 1387 case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
1341 case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */ 1388 case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
1389 case USB_ID(0x20b1, 0x3021): /* Eastern El. MiniMax Tube DAC Supreme */
1342 case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */ 1390 case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */
1391 case USB_ID(0x20b1, 0x302d): /* Unison Research Unico CD Due */
1392 case USB_ID(0x20b1, 0x3036): /* Holo Springs Level 3 R2R DAC */
1393 case USB_ID(0x20b1, 0x307b): /* CH Precision C1 DAC */
1394 case USB_ID(0x20b1, 0x3086): /* Singxer F-1 converter board */
1395 case USB_ID(0x22d9, 0x0426): /* OPPO HA-2 */
1396 case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */
1397 case USB_ID(0x249c, 0x9326): /* M2Tech Young MkIII */
1343 case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */ 1398 case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */
1399 case USB_ID(0x2622, 0x0041): /* Audiolab M-DAC+ */
1400 case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */
1401 case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */
1402 case USB_ID(0x6b42, 0x0042): /* MSB Technology */
1344 if (fp->altsetting == 3) 1403 if (fp->altsetting == 3)
1345 return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1404 return SNDRV_PCM_FMTBIT_DSD_U32_BE;
1346 break; 1405 break;