Ignore:
Timestamp:
Apr 14, 2017, 9:41:36 PM (6 weeks ago)
Author:
brainslayer
Message:

kernel update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/sound/usb/quirks.c

    r31574 r31859  
    11671167}
    11681168
     1169/* TEAC UD-501/UD-503/NT-503 USB DACs need a vendor cmd to switch
     1170 * between PCM/DOP and native DSD mode
     1171 */
     1172static bool is_teac_50X_dac(unsigned int id)
     1173{
     1174        switch (id) {
     1175        case USB_ID(0x0644, 0x8043): /* TEAC UD-501/UD-503/NT-503 */
     1176                return true;
     1177        }
     1178        return false;
     1179}
     1180
    11691181int snd_usb_select_mode_quirk(struct snd_usb_substream *subs,
    11701182                              struct audioformat *fmt)
     
    11941206                }
    11951207                mdelay(20);
     1208        } else if (is_teac_50X_dac(subs->stream->chip->usb_id)) {
     1209                /* Vendor mode switch cmd is required. */
     1210                switch (fmt->altsetting) {
     1211                case 3: /* DSD mode (DSD_U32) requested */
     1212                        err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0,
     1213                                              USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
     1214                                              1, 1, NULL, 0);
     1215                        if (err < 0)
     1216                                return err;
     1217                        break;
     1218
     1219                case 2: /* PCM or DOP mode (S32) requested */
     1220                case 1: /* PCM mode (S16) requested */
     1221                        err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0,
     1222                                              USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
     1223                                              0, 1, NULL, 0);
     1224                        if (err < 0)
     1225                                return err;
     1226                        break;
     1227                }
    11961228        }
    11971229        return 0;
     
    13391371        }
    13401372
    1341         return 0;
    1342 }
     1373        /* TEAC devices with USB DAC functionality */
     1374        if (is_teac_50X_dac(chip->usb_id)) {
     1375                if (fp->altsetting == 3)
     1376                        return SNDRV_PCM_FMTBIT_DSD_U32_BE;
     1377        }
     1378
     1379        return 0;
     1380}
Note: See TracChangeset for help on using the changeset viewer.