mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
sound fixes for 6.13-rc3
A collection of fixes; all look small, device-specific and boring. -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmda9xkOHHRpd2FpQHN1 c2UuZGUACgkQLtJE4w1nLE/kUA/+Jx7jW36zxRhPqRydtpmkRXGPOcsV1y6NZyD8 i0vjlW6oNHZZeOtdU4ap2CL8x6YMYnCzQhtFbZD1Lob2O2G2aUYi9tWtYWeetws1 OIB/Nj7xebJDtPl7yIrE5I9TRYGQKMT33LVopnFdihcVlQhSGmxIhJSm1C+n1Nsf gFGt2smUnaJ3dzaRXcUDaAcwoc4+DGJ4owpWJfnQae+klI+A6iiVSEoOcfoFL++q yp200Zb9Q49OUnDkqe2Nwjsqj3rSMulEtuF6S/NOiFqDR/Q6TDQfv+a1jaTPx58v OVtyeByMFV+usvq8qRPEgaAsQuWX+IukHoHEkLH3uUEt3DXAi5p2USl33bnabNv/ le+du0O1vJmYkZD72jPBtkKwDElnRs8w1BlMcrenAdjHtwfB+Wy+cW6bzugiV53K ykQV3jGEThPerXomR9etYrumsvBNW7SsaZpy+8T7WjTAS1IPHaOkitlHAI16Ejv4 F8o2SDm8pf2lBc9pGPZmOk3wJWLeLk1dn2q62wtRCD5RHFbC/Eh4JFn7hKq2rfyl am9c9fmfs+3BMHNuue8UJgsO4BV8+pUwRy5ZrG1sbUQ0ZOxqczSw+/+ehHozahBC i7DtlpJNBuOhRrZukAp3sGE0Mx6muoslZXo0CVqvFIJFgXR0BXx4Ymt8LLqOTBTl 1w0FBoE= =u9jP -----END PGP SIGNATURE----- Merge tag 'sound-6.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A collection of fixes; all look small, device-specific and boring" * tag 'sound-6.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: Intel: sof_sdw: Add space for a terminator into DAIs array ASoC: fsl_spdif: change IFACE_PCM to IFACE_MIXER ASoC: fsl_xcvr: change IFACE_PCM to IFACE_MIXER ASoC: tas2781: Fix calibration issue in stress test ASoC: audio-graph-card: Call of_node_put() on correct node ASoC: amd: yc: Fix the wrong return value ALSA: control: Avoid WARN() for symlink errors sound: usb: format: don't warn that raw DSD is unsupported sound: usb: enable DSD output for ddHiFi TC44C ALSA: hda/realtek: Add new alc2xx-fixup-headset-mic model ALSA: hda/ca0132: Use standard HD-audio quirk matching helpers ALSA: usb-audio: Add implicit feedback quirk for Yamaha THR5 ALSA: hda/realtek - Add support for ASUS Zen AIO 27 Z272SD_A272SD audio ALSA: hda/realtek: Fix headset mic on Acer Nitro 5 ALSA: hda: cs35l56: Remove calls to cs35l56_force_sync_asp1_registers_from_cache()
This commit is contained in:
commit
de20dc2b96
@ -271,12 +271,6 @@ struct cs35l56_base {
|
||||
struct gpio_desc *reset_gpio;
|
||||
};
|
||||
|
||||
/* Temporary to avoid a build break with the HDA driver */
|
||||
static inline int cs35l56_force_sync_asp1_registers_from_cache(struct cs35l56_base *cs35l56_base)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool cs35l56_is_otp_register(unsigned int reg)
|
||||
{
|
||||
return (reg >> 16) == 3;
|
||||
|
@ -668,10 +668,16 @@ static void snd_ctl_led_sysfs_add(struct snd_card *card)
|
||||
goto cerr;
|
||||
led->cards[card->number] = led_card;
|
||||
snprintf(link_name, sizeof(link_name), "led-%s", led->name);
|
||||
WARN(sysfs_create_link(&card->ctl_dev->kobj, &led_card->dev.kobj, link_name),
|
||||
"can't create symlink to controlC%i device\n", card->number);
|
||||
WARN(sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj, "card"),
|
||||
"can't create symlink to card%i\n", card->number);
|
||||
if (sysfs_create_link(&card->ctl_dev->kobj, &led_card->dev.kobj,
|
||||
link_name))
|
||||
dev_err(card->dev,
|
||||
"%s: can't create symlink to controlC%i device\n",
|
||||
__func__, card->number);
|
||||
if (sysfs_create_link(&led_card->dev.kobj, &card->card_dev.kobj,
|
||||
"card"))
|
||||
dev_err(card->dev,
|
||||
"%s: can't create symlink to card%i\n",
|
||||
__func__, card->number);
|
||||
|
||||
continue;
|
||||
cerr:
|
||||
|
@ -151,10 +151,6 @@ static int cs35l56_hda_runtime_resume(struct device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
ret = cs35l56_force_sync_asp1_registers_from_cache(&cs35l56->base);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
@ -1059,9 +1055,6 @@ int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int hid, int id)
|
||||
|
||||
regmap_multi_reg_write(cs35l56->base.regmap, cs35l56_hda_dai_config,
|
||||
ARRAY_SIZE(cs35l56_hda_dai_config));
|
||||
ret = cs35l56_force_sync_asp1_registers_from_cache(&cs35l56->base);
|
||||
if (ret)
|
||||
goto dsp_err;
|
||||
|
||||
/*
|
||||
* By default only enable one ASP1TXn, where n=amplifier index,
|
||||
@ -1087,7 +1080,6 @@ int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int hid, int id)
|
||||
|
||||
pm_err:
|
||||
pm_runtime_disable(cs35l56->base.dev);
|
||||
dsp_err:
|
||||
cs_dsp_remove(&cs35l56->cs_dsp);
|
||||
err:
|
||||
gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 0);
|
||||
|
@ -1134,7 +1134,6 @@ struct ca0132_spec {
|
||||
|
||||
struct hda_codec *codec;
|
||||
struct delayed_work unsol_hp_work;
|
||||
int quirk;
|
||||
|
||||
#ifdef ENABLE_TUNING_CONTROLS
|
||||
long cur_ctl_vals[TUNING_CTLS_COUNT];
|
||||
@ -1166,7 +1165,6 @@ struct ca0132_spec {
|
||||
* CA0132 quirks table
|
||||
*/
|
||||
enum {
|
||||
QUIRK_NONE,
|
||||
QUIRK_ALIENWARE,
|
||||
QUIRK_ALIENWARE_M17XR4,
|
||||
QUIRK_SBZ,
|
||||
@ -1176,10 +1174,11 @@ enum {
|
||||
QUIRK_R3D,
|
||||
QUIRK_AE5,
|
||||
QUIRK_AE7,
|
||||
QUIRK_NONE = HDA_FIXUP_ID_NOT_SET,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
#define ca0132_quirk(spec) ((spec)->quirk)
|
||||
#define ca0132_quirk(spec) ((spec)->codec->fixup_id)
|
||||
#define ca0132_use_pci_mmio(spec) ((spec)->use_pci_mmio)
|
||||
#define ca0132_use_alt_functions(spec) ((spec)->use_alt_functions)
|
||||
#define ca0132_use_alt_controls(spec) ((spec)->use_alt_controls)
|
||||
@ -1293,7 +1292,7 @@ static const struct hda_pintbl ae7_pincfgs[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct snd_pci_quirk ca0132_quirks[] = {
|
||||
static const struct hda_quirk ca0132_quirks[] = {
|
||||
SND_PCI_QUIRK(0x1028, 0x057b, "Alienware M17x R4", QUIRK_ALIENWARE_M17XR4),
|
||||
SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15 2015", QUIRK_ALIENWARE),
|
||||
SND_PCI_QUIRK(0x1028, 0x0688, "Alienware 17 2015", QUIRK_ALIENWARE),
|
||||
@ -1316,6 +1315,19 @@ static const struct snd_pci_quirk ca0132_quirks[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct hda_model_fixup ca0132_quirk_models[] = {
|
||||
{ .id = QUIRK_ALIENWARE, .name = "alienware" },
|
||||
{ .id = QUIRK_ALIENWARE_M17XR4, .name = "alienware-m17xr4" },
|
||||
{ .id = QUIRK_SBZ, .name = "sbz" },
|
||||
{ .id = QUIRK_ZXR, .name = "zxr" },
|
||||
{ .id = QUIRK_ZXR_DBPRO, .name = "zxr-dbpro" },
|
||||
{ .id = QUIRK_R3DI, .name = "r3di" },
|
||||
{ .id = QUIRK_R3D, .name = "r3d" },
|
||||
{ .id = QUIRK_AE5, .name = "ae5" },
|
||||
{ .id = QUIRK_AE7, .name = "ae7" },
|
||||
{}
|
||||
};
|
||||
|
||||
/* Output selection quirk info structures. */
|
||||
#define MAX_QUIRK_MMIO_GPIO_SET_VALS 3
|
||||
#define MAX_QUIRK_SCP_SET_VALS 2
|
||||
@ -9957,17 +9969,15 @@ static int ca0132_prepare_verbs(struct hda_codec *codec)
|
||||
*/
|
||||
static void sbz_detect_quirk(struct hda_codec *codec)
|
||||
{
|
||||
struct ca0132_spec *spec = codec->spec;
|
||||
|
||||
switch (codec->core.subsystem_id) {
|
||||
case 0x11020033:
|
||||
spec->quirk = QUIRK_ZXR;
|
||||
codec->fixup_id = QUIRK_ZXR;
|
||||
break;
|
||||
case 0x1102003f:
|
||||
spec->quirk = QUIRK_ZXR_DBPRO;
|
||||
codec->fixup_id = QUIRK_ZXR_DBPRO;
|
||||
break;
|
||||
default:
|
||||
spec->quirk = QUIRK_SBZ;
|
||||
codec->fixup_id = QUIRK_SBZ;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -9976,7 +9986,6 @@ static int patch_ca0132(struct hda_codec *codec)
|
||||
{
|
||||
struct ca0132_spec *spec;
|
||||
int err;
|
||||
const struct snd_pci_quirk *quirk;
|
||||
|
||||
codec_dbg(codec, "patch_ca0132\n");
|
||||
|
||||
@ -9987,11 +9996,7 @@ static int patch_ca0132(struct hda_codec *codec)
|
||||
spec->codec = codec;
|
||||
|
||||
/* Detect codec quirk */
|
||||
quirk = snd_pci_quirk_lookup(codec->bus->pci, ca0132_quirks);
|
||||
if (quirk)
|
||||
spec->quirk = quirk->value;
|
||||
else
|
||||
spec->quirk = QUIRK_NONE;
|
||||
snd_hda_pick_fixup(codec, ca0132_quirk_models, ca0132_quirks, NULL);
|
||||
if (ca0132_quirk(spec) == QUIRK_SBZ)
|
||||
sbz_detect_quirk(codec);
|
||||
|
||||
@ -10068,7 +10073,7 @@ static int patch_ca0132(struct hda_codec *codec)
|
||||
spec->mem_base = pci_iomap(codec->bus->pci, 2, 0xC20);
|
||||
if (spec->mem_base == NULL) {
|
||||
codec_warn(codec, "pci_iomap failed! Setting quirk to QUIRK_NONE.");
|
||||
spec->quirk = QUIRK_NONE;
|
||||
codec->fixup_id = QUIRK_NONE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -7714,6 +7714,7 @@ enum {
|
||||
ALC274_FIXUP_HP_MIC,
|
||||
ALC274_FIXUP_HP_HEADSET_MIC,
|
||||
ALC274_FIXUP_HP_ENVY_GPIO,
|
||||
ALC274_FIXUP_ASUS_ZEN_AIO_27,
|
||||
ALC256_FIXUP_ASUS_HPE,
|
||||
ALC285_FIXUP_THINKPAD_NO_BASS_SPK_HEADSET_JACK,
|
||||
ALC287_FIXUP_HP_GPIO_LED,
|
||||
@ -9516,6 +9517,26 @@ static const struct hda_fixup alc269_fixups[] = {
|
||||
.type = HDA_FIXUP_FUNC,
|
||||
.v.func = alc274_fixup_hp_envy_gpio,
|
||||
},
|
||||
[ALC274_FIXUP_ASUS_ZEN_AIO_27] = {
|
||||
.type = HDA_FIXUP_VERBS,
|
||||
.v.verbs = (const struct hda_verb[]) {
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x10 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xc420 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x40 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x8800 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x49 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x0249 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x4a },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x202b },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x62 },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0xa007 },
|
||||
{ 0x20, AC_VERB_SET_COEF_INDEX, 0x6b },
|
||||
{ 0x20, AC_VERB_SET_PROC_COEF, 0x5060 },
|
||||
{}
|
||||
},
|
||||
.chained = true,
|
||||
.chain_id = ALC2XX_FIXUP_HEADSET_MIC,
|
||||
},
|
||||
[ALC256_FIXUP_ASUS_HPE] = {
|
||||
.type = HDA_FIXUP_VERBS,
|
||||
.v.verbs = (const struct hda_verb[]) {
|
||||
@ -10142,6 +10163,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1025, 0x1430, "Acer TravelMate B311R-31", ALC256_FIXUP_ACER_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x1025, 0x159c, "Acer Nitro 5 AN515-58", ALC2XX_FIXUP_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED),
|
||||
SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
|
||||
SND_PCI_QUIRK(0x1028, 0x053c, "Dell Latitude E5430", ALC292_FIXUP_DELL_E7X),
|
||||
@ -10630,6 +10652,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1043, 0x1f62, "ASUS UX7602ZM", ALC245_FIXUP_CS35L41_SPI_2),
|
||||
SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401),
|
||||
SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
|
||||
SND_PCI_QUIRK(0x1043, 0x31d0, "ASUS Zen AIO 27 Z272SD_A272SD", ALC274_FIXUP_ASUS_ZEN_AIO_27),
|
||||
SND_PCI_QUIRK(0x1043, 0x3a20, "ASUS G614JZR", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS),
|
||||
SND_PCI_QUIRK(0x1043, 0x3a30, "ASUS G814JVR/JIR", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS),
|
||||
SND_PCI_QUIRK(0x1043, 0x3a40, "ASUS G814JZR", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS),
|
||||
@ -11177,6 +11200,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
|
||||
{.id = ALC255_FIXUP_ACER_HEADPHONE_AND_MIC, .name = "alc255-acer-headphone-and-mic"},
|
||||
{.id = ALC285_FIXUP_HP_GPIO_AMP_INIT, .name = "alc285-hp-amp-init"},
|
||||
{.id = ALC236_FIXUP_LENOVO_INV_DMIC, .name = "alc236-fixup-lenovo-inv-mic"},
|
||||
{.id = ALC2XX_FIXUP_HEADSET_MIC, .name = "alc2xx-fixup-headset-mic"},
|
||||
{}
|
||||
};
|
||||
#define ALC225_STANDARD_PINS \
|
||||
|
@ -578,14 +578,19 @@ static int acp6x_probe(struct platform_device *pdev)
|
||||
|
||||
handle = ACPI_HANDLE(pdev->dev.parent);
|
||||
ret = acpi_evaluate_integer(handle, "_WOV", NULL, &dmic_status);
|
||||
if (!ACPI_FAILURE(ret))
|
||||
if (!ACPI_FAILURE(ret)) {
|
||||
wov_en = dmic_status;
|
||||
if (!wov_en)
|
||||
return -ENODEV;
|
||||
} else {
|
||||
/* Incase of ACPI method read failure then jump to check_dmi_entry */
|
||||
goto check_dmi_entry;
|
||||
}
|
||||
|
||||
if (is_dmic_enable && wov_en)
|
||||
if (is_dmic_enable)
|
||||
platform_set_drvdata(pdev, &acp6x_card);
|
||||
else
|
||||
return 0;
|
||||
|
||||
check_dmi_entry:
|
||||
/* check for any DMI overrides */
|
||||
dmi_id = dmi_first_match(yc_acp_quirk_table);
|
||||
if (dmi_id)
|
||||
|
@ -370,7 +370,7 @@ static void sngl_calib_start(struct tasdevice_priv *tas_priv, int i,
|
||||
tasdevice_dev_read(tas_priv, i, p[j].reg,
|
||||
(int *)&p[j].val[0]);
|
||||
} else {
|
||||
switch (p[j].reg) {
|
||||
switch (tas2781_cali_start_reg[j].reg) {
|
||||
case 0: {
|
||||
if (!reg[0])
|
||||
continue;
|
||||
|
@ -1204,7 +1204,7 @@ static struct snd_kcontrol_new fsl_spdif_ctrls[] = {
|
||||
},
|
||||
/* DPLL lock info get controller */
|
||||
{
|
||||
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
||||
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
||||
.name = RX_SAMPLE_RATE_KCONTROL,
|
||||
.access = SNDRV_CTL_ELEM_ACCESS_READ |
|
||||
SNDRV_CTL_ELEM_ACCESS_VOLATILE,
|
||||
|
@ -171,7 +171,7 @@ static int fsl_xcvr_capds_put(struct snd_kcontrol *kcontrol,
|
||||
}
|
||||
|
||||
static struct snd_kcontrol_new fsl_xcvr_earc_capds_kctl = {
|
||||
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
||||
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
||||
.name = "Capabilities Data Structure",
|
||||
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
|
||||
.info = fsl_xcvr_type_capds_bytes_info,
|
||||
|
@ -771,7 +771,7 @@ static void graph_link_init(struct simple_util_priv *priv,
|
||||
of_node_get(port_codec);
|
||||
if (graph_lnk_is_multi(port_codec)) {
|
||||
ep_codec = graph_get_next_multi_ep(&port_codec);
|
||||
of_node_put(port_cpu);
|
||||
of_node_put(port_codec);
|
||||
port_codec = ep_to_port(ep_codec);
|
||||
} else {
|
||||
ep_codec = of_graph_get_next_port_endpoint(port_codec, NULL);
|
||||
|
@ -1067,8 +1067,12 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* One per DAI link, worst case is a DAI link for every endpoint */
|
||||
sof_dais = kcalloc(num_ends, sizeof(*sof_dais), GFP_KERNEL);
|
||||
/*
|
||||
* One per DAI link, worst case is a DAI link for every endpoint, also
|
||||
* add one additional to act as a terminator such that code can iterate
|
||||
* until it hits an uninitialised DAI.
|
||||
*/
|
||||
sof_dais = kcalloc(num_ends + 1, sizeof(*sof_dais), GFP_KERNEL);
|
||||
if (!sof_dais)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -60,6 +60,8 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
|
||||
pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
|
||||
/* flag potentially raw DSD capable altsettings */
|
||||
fp->dsd_raw = true;
|
||||
/* clear special format bit to avoid "unsupported format" msg below */
|
||||
format &= ~UAC2_FORMAT_TYPE_I_RAW_DATA;
|
||||
}
|
||||
|
||||
format <<= 1;
|
||||
@ -71,8 +73,11 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
|
||||
sample_width = as->bBitResolution;
|
||||
sample_bytes = as->bSubslotSize;
|
||||
|
||||
if (format & UAC3_FORMAT_TYPE_I_RAW_DATA)
|
||||
if (format & UAC3_FORMAT_TYPE_I_RAW_DATA) {
|
||||
pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
|
||||
/* clear special format bit to avoid "unsupported format" msg below */
|
||||
format &= ~UAC3_FORMAT_TYPE_I_RAW_DATA;
|
||||
}
|
||||
|
||||
format <<= 1;
|
||||
break;
|
||||
|
@ -2179,6 +2179,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
|
||||
QUIRK_FLAG_CTL_MSG_DELAY_1M | QUIRK_FLAG_MIC_RES_384),
|
||||
DEVICE_FLG(0x046d, 0x09a4, /* Logitech QuickCam E 3500 */
|
||||
QUIRK_FLAG_CTL_MSG_DELAY_1M | QUIRK_FLAG_IGNORE_CTL_ERROR),
|
||||
DEVICE_FLG(0x0499, 0x1506, /* Yamaha THR5 */
|
||||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
||||
DEVICE_FLG(0x0499, 0x1509, /* Steinberg UR22 */
|
||||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
||||
DEVICE_FLG(0x0499, 0x3108, /* Yamaha YIT-W12TX */
|
||||
@ -2323,6 +2325,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
|
||||
QUIRK_FLAG_DSD_RAW),
|
||||
DEVICE_FLG(0x2522, 0x0007, /* LH Labs Geek Out HD Audio 1V5 */
|
||||
QUIRK_FLAG_SET_IFACE_FIRST),
|
||||
DEVICE_FLG(0x262a, 0x9302, /* ddHiFi TC44C */
|
||||
QUIRK_FLAG_DSD_RAW),
|
||||
DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
|
||||
QUIRK_FLAG_IGNORE_CTL_ERROR),
|
||||
DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
|
||||
|
Loading…
Reference in New Issue
Block a user