Skip to content

Commit 87bd8c2

Browse files
committed
Merge tag 'sound-fix-5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "All device-specific small fixes and quirks mostly for usual suspects, USB-audio and HD-audio" * tag 'sound-fix-5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: echoaudio: Fix potential Oops in snd_echo_resume() ALSA: hda/hdmi: Use force connectivity quirk on another HP desktop ALSA: hda/realtek - Fix unused variable warning ALSA: hda - reverse the setting value in the micmute_led_set ALSA: echoaduio: Drop superfluous volatile modifier ALSA: usb-audio: Disable Lenovo P620 Rear line-in volume control ALSA: usb-audio: add quirk for Pioneer DDJ-RB ALSA: usb-audio: work around streaming quirk for MacroSilicon MS2109 ALSA: hda - fix the micmute led status for Lenovo ThinkCentre AIO ALSA: usb-audio: fix overeager device match for MacroSilicon MS2109 ALSA: hda/realtek: Fix pin default on Intel NUC 8 Rugged ALSA: usb-audio: Creative USB X-Fi Pro SB1095 volume knob support ALSA: usb-audio: fix spelling mistake "buss" -> "bus"
2 parents 5848dc5 + 5a25de6 commit 87bd8c2

File tree

12 files changed

+92
-12
lines changed

12 files changed

+92
-12
lines changed

sound/pci/echoaudio/echoaudio.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1950,8 +1950,7 @@ static int snd_echo_create(struct snd_card *card,
19501950
snd_echo_free(chip);
19511951
return -EBUSY;
19521952
}
1953-
chip->dsp_registers = (volatile u32 __iomem *)
1954-
ioremap(chip->dsp_registers_phys, sz);
1953+
chip->dsp_registers = ioremap(chip->dsp_registers_phys, sz);
19551954
if (!chip->dsp_registers) {
19561955
dev_err(chip->card->dev, "ioremap failed\n");
19571956
snd_echo_free(chip);
@@ -2213,7 +2212,6 @@ static int snd_echo_resume(struct device *dev)
22132212
if (err < 0) {
22142213
kfree(commpage_bak);
22152214
dev_err(dev, "resume init_hw err=%d\n", err);
2216-
snd_echo_free(chip);
22172215
return err;
22182216
}
22192217

@@ -2240,7 +2238,6 @@ static int snd_echo_resume(struct device *dev)
22402238
if (request_irq(pci->irq, snd_echo_interrupt, IRQF_SHARED,
22412239
KBUILD_MODNAME, chip)) {
22422240
dev_err(chip->card->dev, "cannot grab irq\n");
2243-
snd_echo_free(chip);
22442241
return -EBUSY;
22452242
}
22462243
chip->irq = pci->irq;

sound/pci/echoaudio/echoaudio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ struct echoaudio {
419419
short asic_code; /* Current ASIC code */
420420
u32 comm_page_phys; /* Physical address of the
421421
* memory seen by DSP */
422-
volatile u32 __iomem *dsp_registers; /* DSP's register base */
422+
u32 __iomem *dsp_registers; /* DSP's register base */
423423
u32 active_mask; /* Chs. active mask or
424424
* punks out */
425425
#ifdef CONFIG_PM_SLEEP

sound/pci/hda/patch_hdmi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1863,6 +1863,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
18631863
}
18641864

18651865
static const struct snd_pci_quirk force_connect_list[] = {
1866+
SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1),
18661867
SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
18671868
{}
18681869
};

sound/pci/hda/patch_realtek.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4125,7 +4125,7 @@ static int micmute_led_set(struct led_classdev *led_cdev,
41254125
struct alc_spec *spec = codec->spec;
41264126

41274127
alc_update_gpio_led(codec, spec->gpio_mic_led_mask,
4128-
spec->micmute_led_polarity, !!brightness);
4128+
spec->micmute_led_polarity, !brightness);
41294129
return 0;
41304130
}
41314131

@@ -4160,10 +4160,6 @@ static void alc269_fixup_hp_gpio_led(struct hda_codec *codec,
41604160
static void alc285_fixup_hp_gpio_led(struct hda_codec *codec,
41614161
const struct hda_fixup *fix, int action)
41624162
{
4163-
struct alc_spec *spec = codec->spec;
4164-
4165-
spec->micmute_led_polarity = 1;
4166-
41674163
alc_fixup_hp_gpio_led(codec, action, 0x04, 0x01);
41684164
}
41694165

@@ -6159,6 +6155,7 @@ enum {
61596155
ALC269_FIXUP_CZC_L101,
61606156
ALC269_FIXUP_LEMOTE_A1802,
61616157
ALC269_FIXUP_LEMOTE_A190X,
6158+
ALC256_FIXUP_INTEL_NUC8_RUGGED,
61626159
};
61636160

61646161
static const struct hda_fixup alc269_fixups[] = {
@@ -7480,6 +7477,15 @@ static const struct hda_fixup alc269_fixups[] = {
74807477
},
74817478
.chain_id = ALC269_FIXUP_DMIC,
74827479
},
7480+
[ALC256_FIXUP_INTEL_NUC8_RUGGED] = {
7481+
.type = HDA_FIXUP_PINS,
7482+
.v.pins = (const struct hda_pintbl[]) {
7483+
{ 0x1b, 0x01a1913c }, /* use as headset mic, without its own jack detect */
7484+
{ }
7485+
},
7486+
.chained = true,
7487+
.chain_id = ALC269_FIXUP_HEADSET_MODE
7488+
},
74837489
};
74847490

74857491
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -7777,6 +7783,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
77777783
SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE),
77787784
SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802),
77797785
SND_PCI_QUIRK(0x1c06, 0x2015, "Lemote A190X", ALC269_FIXUP_LEMOTE_A190X),
7786+
SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED),
77807787

77817788
#if 0
77827789
/* Below is a quirk table taken from the old code.

sound/usb/card.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ struct snd_usb_substream {
137137
unsigned int tx_length_quirk:1; /* add length specifier to transfers */
138138
unsigned int fmt_type; /* USB audio format type (1-3) */
139139
unsigned int pkt_offset_adj; /* Bytes to drop from beginning of packets (for non-compliant devices) */
140+
unsigned int stream_offset_adj; /* Bytes to drop from beginning of stream (for non-compliant devices) */
140141

141142
unsigned int running: 1; /* running status */
142143

sound/usb/mixer_maps.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ static const struct usbmix_name_map asus_rog_map[] = {
371371
};
372372

373373
static const struct usbmix_name_map lenovo_p620_rear_map[] = {
374+
{ 19, NULL, 2 }, /* FU, Volume */
374375
{ 19, NULL, 12 }, /* FU, Input Gain Pad */
375376
{}
376377
};

sound/usb/mixer_quirks.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ static const struct rc_config {
185185
{ USB_ID(0x041e, 0x3042), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 */
186186
{ USB_ID(0x041e, 0x30df), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
187187
{ USB_ID(0x041e, 0x3237), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
188+
{ USB_ID(0x041e, 0x3263), 0, 1, 1, 1, 1, 0x000d }, /* Usb X-Fi S51 Pro */
188189
{ USB_ID(0x041e, 0x3048), 2, 2, 6, 6, 2, 0x6e91 }, /* Toshiba SB0500 */
189190
};
190191

sound/usb/mixer_us16x08.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ static int snd_us16x08_bus_put(struct snd_kcontrol *kcontrol,
329329
elem->cached |= 1;
330330
elem->cache_val[0] = val;
331331
} else {
332-
usb_audio_dbg(chip, "Failed to set buss param, err:%d\n", err);
332+
usb_audio_dbg(chip, "Failed to set bus parameter, err:%d\n", err);
333333
}
334334

335335
return err > 0 ? 1 : 0;

sound/usb/pcm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1420,6 +1420,12 @@ static void retire_capture_urb(struct snd_usb_substream *subs,
14201420
// continue;
14211421
}
14221422
bytes = urb->iso_frame_desc[i].actual_length;
1423+
if (subs->stream_offset_adj > 0) {
1424+
unsigned int adj = min(subs->stream_offset_adj, bytes);
1425+
cp += adj;
1426+
bytes -= adj;
1427+
subs->stream_offset_adj -= adj;
1428+
}
14231429
frames = bytes / stride;
14241430
if (!subs->txfr_quirk)
14251431
bytes = frames * stride;

sound/usb/quirks-table.h

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3558,6 +3558,62 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
35583558
}
35593559
}
35603560
},
3561+
{
3562+
/*
3563+
* PIONEER DJ DDJ-RB
3564+
* PCM is 4 channels out, 2 dummy channels in @ 44.1 fixed
3565+
* The feedback for the output is the dummy input.
3566+
*/
3567+
USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e),
3568+
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3569+
.ifnum = QUIRK_ANY_INTERFACE,
3570+
.type = QUIRK_COMPOSITE,
3571+
.data = (const struct snd_usb_audio_quirk[]) {
3572+
{
3573+
.ifnum = 0,
3574+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
3575+
.data = &(const struct audioformat) {
3576+
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
3577+
.channels = 4,
3578+
.iface = 0,
3579+
.altsetting = 1,
3580+
.altset_idx = 1,
3581+
.endpoint = 0x01,
3582+
.ep_attr = USB_ENDPOINT_XFER_ISOC|
3583+
USB_ENDPOINT_SYNC_ASYNC,
3584+
.rates = SNDRV_PCM_RATE_44100,
3585+
.rate_min = 44100,
3586+
.rate_max = 44100,
3587+
.nr_rates = 1,
3588+
.rate_table = (unsigned int[]) { 44100 }
3589+
}
3590+
},
3591+
{
3592+
.ifnum = 0,
3593+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
3594+
.data = &(const struct audioformat) {
3595+
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
3596+
.channels = 2,
3597+
.iface = 0,
3598+
.altsetting = 1,
3599+
.altset_idx = 1,
3600+
.endpoint = 0x82,
3601+
.ep_attr = USB_ENDPOINT_XFER_ISOC|
3602+
USB_ENDPOINT_SYNC_ASYNC|
3603+
USB_ENDPOINT_USAGE_IMPLICIT_FB,
3604+
.rates = SNDRV_PCM_RATE_44100,
3605+
.rate_min = 44100,
3606+
.rate_max = 44100,
3607+
.nr_rates = 1,
3608+
.rate_table = (unsigned int[]) { 44100 }
3609+
}
3610+
},
3611+
{
3612+
.ifnum = -1
3613+
}
3614+
}
3615+
}
3616+
},
35613617

35623618
#define ALC1220_VB_DESKTOP(vend, prod) { \
35633619
USB_DEVICE(vend, prod), \
@@ -3662,7 +3718,13 @@ ALC1220_VB_DESKTOP(0x26ce, 0x0a01), /* Asrock TRX40 Creator */
36623718
* with.
36633719
*/
36643720
{
3665-
USB_DEVICE(0x534d, 0x2109),
3721+
.match_flags = USB_DEVICE_ID_MATCH_DEVICE |
3722+
USB_DEVICE_ID_MATCH_INT_CLASS |
3723+
USB_DEVICE_ID_MATCH_INT_SUBCLASS,
3724+
.idVendor = 0x534d,
3725+
.idProduct = 0x2109,
3726+
.bInterfaceClass = USB_CLASS_AUDIO,
3727+
.bInterfaceSubClass = USB_SUBCLASS_AUDIOCONTROL,
36663728
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
36673729
.vendor_name = "MacroSilicon",
36683730
.product_name = "MS2109",

0 commit comments

Comments
 (0)