Merge remote-tracking branches 'asoc/topic/mc13783', 'asoc/topic/msm8916', 'asoc...
[linux-2.6-block.git] / sound / usb / quirks.c
index 20624320b753f4c892cb660b00d874eb1cca879e..a66ef5777887a78d7416e64c049c73b26477c7f7 100644 (file)
@@ -1128,30 +1128,24 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
        /* devices which do not support reading the sample rate. */
        switch (chip->usb_id) {
        case USB_ID(0x041E, 0x4080): /* Creative Live Cam VF0610 */
-       case USB_ID(0x045E, 0x075D): /* MS Lifecam Cinema  */
-       case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
-       case USB_ID(0x045E, 0x076E): /* MS Lifecam HD-5001 */
-       case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */
-       case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
-       case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
-       case USB_ID(0x047F, 0x02F7): /* Plantronics BT-600 */
-       case USB_ID(0x047F, 0x0415): /* Plantronics BT-300 */
-       case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */
-       case USB_ID(0x047F, 0xC022): /* Plantronics C310 */
-       case USB_ID(0x047F, 0xC02F): /* Plantronics P610 */
-       case USB_ID(0x047F, 0xC036): /* Plantronics C520-M */
        case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
        case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */
        case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */
        case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
        case USB_ID(0x1395, 0x740a): /* Sennheiser DECT */
        case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
-       case USB_ID(0x1de7, 0x0013): /* Phoenix Audio MT202exe */
-       case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */
-       case USB_ID(0x1de7, 0x0114): /* Phoenix Audio MT202pcs */
        case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */
                return true;
        }
+
+       /* devices of these vendors don't support reading rate, either */
+       switch (USB_ID_VENDOR(chip->usb_id)) {
+       case 0x045E: /* MS Lifecam */
+       case 0x047F: /* Plantronics */
+       case 0x1de7: /* Phoenix Audio */
+               return true;
+       }
+
        return false;
 }
 
@@ -1172,10 +1166,11 @@ static bool is_marantz_denon_dac(unsigned int id)
 /* TEAC UD-501/UD-503/NT-503 USB DACs need a vendor cmd to switch
  * between PCM/DOP and native DSD mode
  */
-static bool is_teac_50X_dac(unsigned int id)
+static bool is_teac_dsd_dac(unsigned int id)
 {
        switch (id) {
        case USB_ID(0x0644, 0x8043): /* TEAC UD-501/UD-503/NT-503 */
+       case USB_ID(0x0644, 0x8044): /* Esoteric D-05X */
                return true;
        }
        return false;
@@ -1208,7 +1203,7 @@ int snd_usb_select_mode_quirk(struct snd_usb_substream *subs,
                        break;
                }
                mdelay(20);
-       } else if (is_teac_50X_dac(subs->stream->chip->usb_id)) {
+       } else if (is_teac_dsd_dac(subs->stream->chip->usb_id)) {
                /* Vendor mode switch cmd is required. */
                switch (fmt->altsetting) {
                case 3: /* DSD mode (DSD_U32) requested */
@@ -1398,7 +1393,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
        }
 
        /* TEAC devices with USB DAC functionality */
-       if (is_teac_50X_dac(chip->usb_id)) {
+       if (is_teac_dsd_dac(chip->usb_id)) {
                if (fp->altsetting == 3)
                        return SNDRV_PCM_FMTBIT_DSD_U32_BE;
        }