mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 15:03:53 +02:00
sound fixes for 6.16-rc6
Here are device-specific small fixes, including HD-audio, USB-audio and ASoC Intel quirks, as well as ASoC fsl, Cirrus codec and the legacy AD driver fixes. All look safe and easy. -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmhtAV4OHHRpd2FpQHN1 c2UuZGUACgkQLtJE4w1nLE+ZtxAApt86En3KCpko//EB9KjaWlsP+YV9M/uB/IB/ W2nDBTkoUa5UgLm3XB/3GmvxyPJx46Mi+MFrnrxqpHahT7tFvQKug88IMgGMkUuP lnopa6MoX6jJsz+9usN+94vN+WtdEtksWAk1tKtx+A0BI4Pb+zUikpikzRcv5jez qiugNd3Xtx85N1XXgHMfIroX8ie7uW5e/AZCycjCNP3fhpU+A1J8aMYD5HVGprE2 d2QkeNmtSNlShY624ovIwlpdQnIvOx8gaES/z6/tfl43yjF//72mJedmREdIMtOi HHowMZJrTYqFYp8PUROAoNe3NgBcqgEulyh4qgUla3wJuUfl7X8K6fQS/9xkYdAk 96jdaWheAIIitdO2+MUb3vMDBrEHohFw8YZUdGzvJgSZJPBMwmGYPl4830TROqrr o7GAcN0XOA8l3jIpvVtfIItBTCWvlUOqvo7T9a6wWHaBACPk+0uXfm4yVyP/Mmfd 3AixPXEZZSn14lKXNt7mDJyeVkRSPaFsOGBSY+KIhLgOXN2EsNdWLOZXeT5wzMRe wTc0da1LTYijB43a7exIBb8ksdmeo4gK9HoblEvQxWsLQJsN+Dy7t+uPK0/ux6DX Eo3xR0THIWuZYwsTM27FZ2SBQUkZkwGNYhlxrAv0j1v1TBbLSiA4+EpErc4+x8eT Aea7M9M= =ZXWB -----END PGP SIGNATURE----- Merge tag 'sound-6.16-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "Here are device-specific small fixes, including HD-audio, USB-audio and ASoC Intel quirks, as well as ASoC fsl, Cirrus codec and the legacy AD driver fixes. All look safe and easy" * tag 'sound-6.16-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/realtek: Enable headset Mic on Positivo K116J ALSA: hda/tas2781: Fix calibration data parser issue ALSA: ad1816a: Fix potential NULL pointer deref in snd_card_ad1816a_pnp() ASoC: cs35l56: probe() should fail if the device ID is not recognized ALSA: hda/realtek: Add quirk for ASUS ExpertBook B9403CVAR ASoC: Intel: sof_sdw: Add quirks for Lenovo P1 and P16 ALSA: usb-audio: Improve filtering of sample rates on Focusrite devices ASoC: Intel: soc-acpi: arl: Correct order of cs42l43 matches MAINTAINERS: update Qualcomm audio codec drivers list ASoC: fsl_sai: Force a software reset when starting in consumer mode ASoC: Intel: SND_SOC_INTEL_SOF_BOARD_HELPERS select SND_SOC_ACPI_INTEL_MATCH ASoC: fsl_asrc: use internal measured ratio for non-ideal ratio mode ALSA: hda/realtek - Add mute LED support for HP Victus 15-fb2xxx ALSA: hda: Add missing NVIDIA HDA codec IDs
This commit is contained in:
commit
d006330be3
16
MAINTAINERS
16
MAINTAINERS
|
@ -20155,21 +20155,15 @@ S: Supported
|
|||
F: Documentation/devicetree/bindings/soc/qcom/qcom,apr*
|
||||
F: Documentation/devicetree/bindings/sound/qcom,*
|
||||
F: drivers/soc/qcom/apr.c
|
||||
F: include/dt-bindings/sound/qcom,wcd9335.h
|
||||
F: include/dt-bindings/sound/qcom,wcd934x.h
|
||||
F: sound/soc/codecs/lpass-rx-macro.*
|
||||
F: sound/soc/codecs/lpass-tx-macro.*
|
||||
F: sound/soc/codecs/lpass-va-macro.c
|
||||
F: sound/soc/codecs/lpass-wsa-macro.*
|
||||
F: drivers/soundwire/qcom.c
|
||||
F: include/dt-bindings/sound/qcom,wcd93*
|
||||
F: sound/soc/codecs/lpass-*.*
|
||||
F: sound/soc/codecs/msm8916-wcd-analog.c
|
||||
F: sound/soc/codecs/msm8916-wcd-digital.c
|
||||
F: sound/soc/codecs/wcd-clsh-v2.*
|
||||
F: sound/soc/codecs/wcd-mbhc-v2.*
|
||||
F: sound/soc/codecs/wcd9335.*
|
||||
F: sound/soc/codecs/wcd934x.c
|
||||
F: sound/soc/codecs/wsa881x.c
|
||||
F: sound/soc/codecs/wsa883x.c
|
||||
F: sound/soc/codecs/wsa884x.c
|
||||
F: sound/soc/codecs/wcd93*.*
|
||||
F: sound/soc/codecs/wsa88*.*
|
||||
F: sound/soc/qcom/
|
||||
|
||||
QCOM EMBEDDED USB DEBUGGER (EUD)
|
||||
|
|
|
@ -98,7 +98,7 @@ static int snd_card_ad1816a_pnp(int dev, struct pnp_card_link *card,
|
|||
pdev = pnp_request_card_device(card, id->devs[1].id, NULL);
|
||||
if (pdev == NULL) {
|
||||
mpu_port[dev] = -1;
|
||||
dev_warn(&pdev->dev, "MPU401 device busy, skipping.\n");
|
||||
pr_warn("MPU401 device busy, skipping.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -4551,7 +4551,9 @@ HDA_CODEC_ENTRY(0x10de002e, "Tegra186 HDMI/DP1", patch_tegra_hdmi),
|
|||
HDA_CODEC_ENTRY(0x10de002f, "Tegra194 HDMI/DP2", patch_tegra_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0030, "Tegra194 HDMI/DP3", patch_tegra_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0031, "Tegra234 HDMI/DP", patch_tegra234_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0033, "SoC 33 HDMI/DP", patch_tegra234_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0034, "Tegra264 HDMI/DP", patch_tegra234_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0035, "SoC 35 HDMI/DP", patch_tegra234_hdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi),
|
||||
|
@ -4590,15 +4592,32 @@ HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI/DP", patch_nvhdmi),
|
|||
HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009a, "GPU 9a HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009b, "GPU 9b HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009c, "GPU 9c HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009d, "GPU 9d HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009e, "GPU 9e HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de009f, "GPU 9f HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a0, "GPU a0 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a1, "GPU a1 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a3, "GPU a3 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a4, "GPU a4 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a5, "GPU a5 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a6, "GPU a6 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a7, "GPU a7 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a8, "GPU a8 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00a9, "GPU a9 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00aa, "GPU aa HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00ab, "GPU ab HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00ad, "GPU ad HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00ae, "GPU ae HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00af, "GPU af HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00b0, "GPU b0 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00b1, "GPU b1 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00c0, "GPU c0 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00c1, "GPU c1 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00c3, "GPU c3 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00c4, "GPU c4 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de00c5, "GPU c5 HDMI/DP", patch_nvhdmi),
|
||||
HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch),
|
||||
HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI", patch_nvhdmi_2ch),
|
||||
HDA_CODEC_ENTRY(0x67663d82, "Arise 82 HDMI/DP", patch_gf_hdmi),
|
||||
|
|
|
@ -10881,6 +10881,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x103c, 0x8ce0, "HP SnowWhite", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8cf5, "HP ZBook Studio 16", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d01, "HP ZBook Power 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d07, "HP Victus 15-fb2xxx (MB 8D07)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d18, "HP EliteStudio 8 AIO", ALC274_FIXUP_HP_AIO_BIND_DACS),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d84, "HP EliteBook X G1i", ALC285_FIXUP_HP_GPIO_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8d85, "HP EliteBook 14 G12", ALC285_FIXUP_HP_GPIO_LED),
|
||||
|
@ -11040,6 +11041,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x1043, 0x1e63, "ASUS H7606W", ALC285_FIXUP_ASUS_GU605_SPI_SPEAKER2_TO_DAC1),
|
||||
SND_PCI_QUIRK(0x1043, 0x1e83, "ASUS GA605W", ALC285_FIXUP_ASUS_GU605_SPI_SPEAKER2_TO_DAC1),
|
||||
SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401),
|
||||
SND_PCI_QUIRK(0x1043, 0x1e93, "ASUS ExpertBook B9403CVAR", ALC294_FIXUP_ASUS_HPE),
|
||||
SND_PCI_QUIRK(0x1043, 0x1eb3, "ASUS Ally RCLA72", ALC287_FIXUP_TAS2781_I2C),
|
||||
SND_PCI_QUIRK(0x1043, 0x1ed3, "ASUS HN7306W", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x1043, 0x1ee2, "ASUS UM6702RA/RC", ALC287_FIXUP_CS35L41_I2C_2),
|
||||
|
@ -11424,6 +11426,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
|||
SND_PCI_QUIRK(0x2782, 0x0228, "Infinix ZERO BOOK 13", ALC269VB_FIXUP_INFINIX_ZERO_BOOK_13),
|
||||
SND_PCI_QUIRK(0x2782, 0x0232, "CHUWI CoreBook XPro", ALC269VB_FIXUP_CHUWI_COREBOOK_XPRO),
|
||||
SND_PCI_QUIRK(0x2782, 0x1407, "Positivo P15X", ALC269_FIXUP_POSITIVO_P15X_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x2782, 0x1409, "Positivo K116J", ALC269_FIXUP_POSITIVO_P15X_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x2782, 0x1701, "Infinix Y4 Max", ALC269VC_FIXUP_INFINIX_Y4_MAX),
|
||||
SND_PCI_QUIRK(0x2782, 0x1705, "MEDION E15433", ALC269VC_FIXUP_INFINIX_Y4_MAX),
|
||||
SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME),
|
||||
|
|
|
@ -44,7 +44,7 @@ static void tas2781_apply_calib(struct tasdevice_priv *p)
|
|||
TASDEVICE_REG(0, 0x13, 0x70),
|
||||
TASDEVICE_REG(0, 0x18, 0x7c),
|
||||
};
|
||||
unsigned int crc, oft;
|
||||
unsigned int crc, oft, node_num;
|
||||
unsigned char *buf;
|
||||
int i, j, k, l;
|
||||
|
||||
|
@ -80,8 +80,9 @@ static void tas2781_apply_calib(struct tasdevice_priv *p)
|
|||
dev_err(p->dev, "%s: CRC error\n", __func__);
|
||||
return;
|
||||
}
|
||||
node_num = tmp_val[1];
|
||||
|
||||
for (j = 0, k = 0; j < tmp_val[1]; j++) {
|
||||
for (j = 0, k = 0; j < node_num; j++) {
|
||||
oft = j * 6 + 3;
|
||||
if (tmp_val[oft] == TASDEV_UEFI_CALI_REG_ADDR_FLG) {
|
||||
for (i = 0; i < TASDEV_CALIB_N; i++) {
|
||||
|
@ -99,8 +100,9 @@ static void tas2781_apply_calib(struct tasdevice_priv *p)
|
|||
}
|
||||
|
||||
data[l] = k;
|
||||
oft++;
|
||||
for (i = 0; i < TASDEV_CALIB_N * 4; i++)
|
||||
data[l + i] = data[4 * oft + i];
|
||||
data[l + i + 1] = data[4 * oft + i];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -980,7 +980,7 @@ int cs35l56_hw_init(struct cs35l56_base *cs35l56_base)
|
|||
break;
|
||||
default:
|
||||
dev_err(cs35l56_base->dev, "Unknown device %x\n", devid);
|
||||
return ret;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
cs35l56_base->type = devid & 0xFF;
|
||||
|
|
|
@ -517,7 +517,8 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair, bool use_ideal_rate)
|
|||
regmap_update_bits(asrc->regmap, REG_ASRCTR,
|
||||
ASRCTR_ATSi_MASK(index), ASRCTR_ATS(index));
|
||||
regmap_update_bits(asrc->regmap, REG_ASRCTR,
|
||||
ASRCTR_USRi_MASK(index), 0);
|
||||
ASRCTR_IDRi_MASK(index) | ASRCTR_USRi_MASK(index),
|
||||
ASRCTR_USR(index));
|
||||
|
||||
/* Set the input and output clock sources */
|
||||
regmap_update_bits(asrc->regmap, REG_ASRCSR,
|
||||
|
|
|
@ -803,13 +803,15 @@ static void fsl_sai_config_disable(struct fsl_sai *sai, int dir)
|
|||
* anymore. Add software reset to fix this issue.
|
||||
* This is a hardware bug, and will be fix in the
|
||||
* next sai version.
|
||||
*
|
||||
* In consumer mode, this can happen even after a
|
||||
* single open/close, especially if both tx and rx
|
||||
* are running concurrently.
|
||||
*/
|
||||
if (!sai->is_consumer_mode[tx]) {
|
||||
/* Software Reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR);
|
||||
/* Clear SR bit to finish the reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), 0);
|
||||
}
|
||||
/* Software Reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR);
|
||||
/* Clear SR bit to finish the reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), 0);
|
||||
}
|
||||
|
||||
static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||
|
|
|
@ -42,6 +42,7 @@ config SND_SOC_INTEL_SOF_NUVOTON_COMMON
|
|||
tristate
|
||||
|
||||
config SND_SOC_INTEL_SOF_BOARD_HELPERS
|
||||
select SND_SOC_ACPI_INTEL_MATCH
|
||||
tristate
|
||||
|
||||
if SND_SOC_INTEL_CATPT
|
||||
|
|
|
@ -783,6 +783,9 @@ static const struct dmi_system_id sof_sdw_quirk_table[] = {
|
|||
static const struct snd_pci_quirk sof_sdw_ssid_quirk_table[] = {
|
||||
SND_PCI_QUIRK(0x1043, 0x1e13, "ASUS Zenbook S14", SOC_SDW_CODEC_MIC),
|
||||
SND_PCI_QUIRK(0x1043, 0x1f43, "ASUS Zenbook S16", SOC_SDW_CODEC_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x2347, "Lenovo P16", SOC_SDW_CODEC_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x2348, "Lenovo P16", SOC_SDW_CODEC_MIC),
|
||||
SND_PCI_QUIRK(0x17aa, 0x2349, "Lenovo P1", SOC_SDW_CODEC_MIC),
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
@ -467,13 +467,6 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = {
|
|||
.sof_tplg_filename = "sof-arl-cs42l43-l0.tplg",
|
||||
.get_function_tplg_files = sof_sdw_get_tplg_files,
|
||||
},
|
||||
{
|
||||
.link_mask = BIT(2),
|
||||
.links = arl_cs42l43_l2,
|
||||
.drv_name = "sof_sdw",
|
||||
.sof_tplg_filename = "sof-arl-cs42l43-l2.tplg",
|
||||
.get_function_tplg_files = sof_sdw_get_tplg_files,
|
||||
},
|
||||
{
|
||||
.link_mask = BIT(2) | BIT(3),
|
||||
.links = arl_cs42l43_l2_cs35l56_l3,
|
||||
|
@ -481,6 +474,13 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = {
|
|||
.sof_tplg_filename = "sof-arl-cs42l43-l2-cs35l56-l3.tplg",
|
||||
.get_function_tplg_files = sof_sdw_get_tplg_files,
|
||||
},
|
||||
{
|
||||
.link_mask = BIT(2),
|
||||
.links = arl_cs42l43_l2,
|
||||
.drv_name = "sof_sdw",
|
||||
.sof_tplg_filename = "sof-arl-cs42l43-l2.tplg",
|
||||
.get_function_tplg_files = sof_sdw_get_tplg_files,
|
||||
},
|
||||
{
|
||||
.link_mask = 0x1, /* link0 required */
|
||||
.links = arl_rvp,
|
||||
|
|
|
@ -310,16 +310,14 @@ static bool focusrite_valid_sample_rate(struct snd_usb_audio *chip,
|
|||
struct audioformat *fp,
|
||||
unsigned int rate)
|
||||
{
|
||||
struct usb_interface *iface;
|
||||
struct usb_host_interface *alts;
|
||||
unsigned char *fmt;
|
||||
unsigned int max_rate;
|
||||
|
||||
iface = usb_ifnum_to_if(chip->dev, fp->iface);
|
||||
if (!iface)
|
||||
alts = snd_usb_get_host_interface(chip, fp->iface, fp->altsetting);
|
||||
if (!alts)
|
||||
return true;
|
||||
|
||||
alts = &iface->altsetting[fp->altset_idx];
|
||||
fmt = snd_usb_find_csint_desc(alts->extra, alts->extralen,
|
||||
NULL, UAC_FORMAT_TYPE);
|
||||
if (!fmt)
|
||||
|
@ -328,20 +326,20 @@ static bool focusrite_valid_sample_rate(struct snd_usb_audio *chip,
|
|||
if (fmt[0] == 10) { /* bLength */
|
||||
max_rate = combine_quad(&fmt[6]);
|
||||
|
||||
/* Validate max rate */
|
||||
if (max_rate != 48000 &&
|
||||
max_rate != 96000 &&
|
||||
max_rate != 192000 &&
|
||||
max_rate != 384000) {
|
||||
|
||||
switch (max_rate) {
|
||||
case 48000:
|
||||
return (rate == 44100 || rate == 48000);
|
||||
case 96000:
|
||||
return (rate == 88200 || rate == 96000);
|
||||
case 192000:
|
||||
return (rate == 176400 || rate == 192000);
|
||||
default:
|
||||
usb_audio_info(chip,
|
||||
"%u:%d : unexpected max rate: %u\n",
|
||||
fp->iface, fp->altsetting, max_rate);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return rate <= max_rate;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue
Block a user