Skip to content

Commit

Permalink
Merge tag 'sound-fix-5.14-rc1' of git://git.kernel.org/pub/scm/linux/…
Browse files Browse the repository at this point in the history
…kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "Just a collection of small fixes here: the most outstanding one is the
  re-application of USB-audio lowlatency support that was reverted in
  the previous PR. The rest are device-specific quirks/fixes, spelling
  fixes and a regression fix for the old intel8x0 driver"

* tag 'sound-fix-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: intel8x0: Fix breakage at ac97 clock measurement
  ALSA: usb-audio: Reduce latency at playback start, take#2
  ALSA: isa: Fix error return code in snd_cmi8330_probe()
  ALSA: emux: fix spelling mistakes
  ALSA: usb-audio: fix spelling mistakes
  ALSA: bebob: correct duplicated entries with TerraTec OUI
  ALSA: usx2y: fix spelling mistakes
  ALSA: x86: fix spelling mistakes
  ALSA: hda/realtek: fix mute led of the HP Pavilion 15-eh1xxx series
  • Loading branch information
torvalds committed Jul 9, 2021
2 parents 5a7f7fc + 24d1e49 commit 3de6295
Show file tree
Hide file tree
Showing 16 changed files with 43 additions and 26 deletions.
5 changes: 2 additions & 3 deletions sound/firewire/bebob/bebob.c
Original file line number Diff line number Diff line change
Expand Up @@ -403,8 +403,6 @@ static const struct ieee1394_device_id bebob_id_table[] = {
SND_BEBOB_DEV_ENTRY(VEN_APOGEE, 0x01eeee, &spec_normal),
/* ESI, Quatafire610 */
SND_BEBOB_DEV_ENTRY(VEN_ESI, 0x00010064, &spec_normal),
// AcousticReality, eARMasterOne. Terratec OEM.
SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000002, &spec_normal),
/* CME, MatrixKFW */
SND_BEBOB_DEV_ENTRY(VEN_CME, 0x00030000, &spec_normal),
// Phonic Helix Board 12 FireWire MkII.
Expand Down Expand Up @@ -434,7 +432,8 @@ static const struct ieee1394_device_id bebob_id_table[] = {
SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000007, &yamaha_terratec_spec),
/* TerraTec Electronic GmbH, EWS MIC2/MIC8 */
SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000005, &spec_normal),
/* Terratec Electronic GmbH, Aureon 7.1 Firewire */
// Terratec Electronic GmbH, Aureon 7.1 Firewire.
// AcousticReality, eAR Master One, Eroica, Figaro, and Ciaccona. Perhaps Terratec OEM.
SND_BEBOB_DEV_ENTRY(VEN_TERRATEC, 0x00000002, &spec_normal),
/* Yamaha, GO44 */
SND_BEBOB_DEV_ENTRY(VEN_YAMAHA, 0x0010000b, &yamaha_terratec_spec),
Expand Down
2 changes: 1 addition & 1 deletion sound/isa/cmi8330.c
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ static int snd_cmi8330_probe(struct snd_card *card, int dev)
}
if (acard->sb->hardware != SB_HW_16) {
snd_printk(KERN_ERR PFX "SB16 not found during probe\n");
return err;
return -ENODEV;
}

snd_wss_out(acard->wss, CS4231_MISC_INFO, 0x40); /* switch on MODE2 */
Expand Down
1 change: 1 addition & 0 deletions sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -8442,6 +8442,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x888d, "HP ZBook Power 15.6 inch G8 Mobile Workstation PC", ALC236_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED),
SND_PCI_QUIRK(0x103c, 0x8898, "HP EliteBook 845 G8 Notebook PC", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST),
SND_PCI_QUIRK(0x103c, 0x88d0, "HP Pavilion 15-eh1xxx (mainboard 88D0)", ALC287_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
Expand Down
2 changes: 1 addition & 1 deletion sound/pci/intel8x0.c
Original file line number Diff line number Diff line change
Expand Up @@ -694,7 +694,7 @@ static inline void snd_intel8x0_update(struct intel8x0 *chip, struct ichdev *ich
int status, civ, i, step;
int ack = 0;

if (!ichdev->prepared || ichdev->suspended)
if (!(ichdev->prepared || chip->in_measurement) || ichdev->suspended)
return;

spin_lock_irqsave(&chip->reg_lock, flags);
Expand Down
2 changes: 1 addition & 1 deletion sound/synth/emux/emux_nrpn.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ static const int gs_sense[] =
DEF_FX_VIBRATE, DEF_FX_VIBDEPTH, DEF_FX_VIBDELAY
};

/* effect sensitivies for XG controls:
/* effect sensitivities for XG controls:
* adjusted for chaos 8MB soundfonts
*/
static const int xg_sense[] =
Expand Down
6 changes: 3 additions & 3 deletions sound/synth/emux/soundfont.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ snd_soundfont_close_check(struct snd_sf_list *sflist, int client)
* Deal with a soundfont patch. Any driver could use these routines
* although it was designed for the AWE64.
*
* The sample_write and callargs pararameters allow a callback into
* The sample_write and callargs parameters allow a callback into
* the actual driver to write sample data to the board or whatever
* it wants to do with it.
*/
Expand Down Expand Up @@ -799,7 +799,7 @@ snd_sf_linear_to_log(unsigned int amount, int offset, int ratio)
amount <<= 1;
s = (amount >> 24) & 0x7f;
low = (amount >> 16) & 0xff;
/* linear approxmimation by lower 8 bit */
/* linear approximation by lower 8 bit */
v = (log_tbl[s + 1] * low + log_tbl[s] * (0x100 - low)) >> 8;
v -= offset;
v = (v * ratio) >> 16;
Expand Down Expand Up @@ -1433,7 +1433,7 @@ snd_sf_free(struct snd_sf_list *sflist)

/*
* Remove all samples
* The soundcard should be silet before calling this function.
* The soundcard should be silent before calling this function.
*/
int
snd_soundfont_remove_samples(struct snd_sf_list *sflist)
Expand Down
3 changes: 2 additions & 1 deletion sound/usb/card.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ struct audioformat {
unsigned char iface; /* interface number */
unsigned char altsetting; /* corresponding alternate setting */
unsigned char ep_idx; /* endpoint array index */
unsigned char altset_idx; /* array index of altenate setting */
unsigned char altset_idx; /* array index of alternate setting */
unsigned char attributes; /* corresponding attributes of cs endpoint */
unsigned char endpoint; /* endpoint */
unsigned char ep_attr; /* endpoint attributes */
Expand Down Expand Up @@ -158,6 +158,7 @@ struct snd_usb_substream {
unsigned int stream_offset_adj; /* Bytes to drop from beginning of stream (for non-compliant devices) */

unsigned int running: 1; /* running status */
unsigned int period_elapsed_pending; /* delay period handling */

unsigned int buffer_bytes; /* buffer size in bytes */
unsigned int inflight_bytes; /* in-flight data bytes on buffer (for playback) */
Expand Down
4 changes: 2 additions & 2 deletions sound/usb/endpoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ static bool endpoint_compatible(struct snd_usb_endpoint *ep,
}

/*
* Check whether the given fp and hw params are compatbile with the current
* Check whether the given fp and hw params are compatible with the current
* setup of the target EP for implicit feedback sync
*/
bool snd_usb_endpoint_compatible(struct snd_usb_audio *chip,
Expand Down Expand Up @@ -1245,7 +1245,7 @@ static int snd_usb_endpoint_set_params(struct snd_usb_audio *chip,
*
* This function sets up the EP to be fully usable state.
* It's called either from hw_params or prepare callback.
* The function checks need_setup flag, and perfoms nothing unless needed,
* The function checks need_setup flag, and performs nothing unless needed,
* so it's safe to call this multiple times.
*
* This returns zero if unchanged, 1 if the configuration has changed,
Expand Down
2 changes: 1 addition & 1 deletion sound/usb/media.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ int snd_media_device_create(struct snd_usb_audio *chip,
ret);

if (!media_devnode_is_registered(mdev->devnode)) {
/* dont'register if snd_media_mixer_init() failed */
/* don't register if snd_media_mixer_init() failed */
if (ret)
goto create_fail;

Expand Down
2 changes: 1 addition & 1 deletion sound/usb/mixer_s1810c.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ snd_s1810c_send_ctl_packet(struct usb_device *dev, u32 a,
}

/*
* When opening Universal Control the program periodicaly
* When opening Universal Control the program periodically
* sends and receives state packets for syncinc state between
* the device and the host.
*
Expand Down
2 changes: 1 addition & 1 deletion sound/usb/mixer_scarlett.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
* Auto-detection via UAC2 is not feasible to properly discover the vast
* majority of features. It's related to both Linux/ALSA's UAC2 as well as
* Focusrite's implementation of it. Eventually quirks may be sufficient but
* right now it's a major headache to work arount these things.
* right now it's a major headache to work around these things.
*
* NB. Neither the OSX nor the win driver provided by Focusrite performs
* discovery, they seem to operate the same as this driver.
Expand Down
26 changes: 21 additions & 5 deletions sound/usb/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -611,13 +611,9 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
subs->hwptr_done = 0;
subs->transfer_done = 0;
subs->last_frame_number = 0;
subs->period_elapsed_pending = 0;
runtime->delay = 0;

/* for playback, submit the URBs now; otherwise, the first hwptr_done
* updates for all URBs would happen at the same time when starting */
if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK)
ret = start_endpoints(subs);

unlock:
snd_usb_unlock_shutdown(chip);
return ret;
Expand Down Expand Up @@ -1398,6 +1394,10 @@ static void prepare_playback_urb(struct snd_usb_substream *subs,
subs->trigger_tstamp_pending_update = false;
}

if (period_elapsed && !subs->running) {
subs->period_elapsed_pending = 1;
period_elapsed = 0;
}
spin_unlock_irqrestore(&subs->lock, flags);
urb->transfer_buffer_length = bytes;
if (period_elapsed)
Expand All @@ -1413,6 +1413,7 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
{
unsigned long flags;
struct snd_urb_ctx *ctx = urb->context;
bool period_elapsed = false;

spin_lock_irqsave(&subs->lock, flags);
if (ctx->queued) {
Expand All @@ -1423,13 +1424,20 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
}

subs->last_frame_number = usb_get_current_frame_number(subs->dev);
if (subs->running) {
period_elapsed = subs->period_elapsed_pending;
subs->period_elapsed_pending = 0;
}
spin_unlock_irqrestore(&subs->lock, flags);
if (period_elapsed)
snd_pcm_period_elapsed(subs->pcm_substream);
}

static int snd_usb_substream_playback_trigger(struct snd_pcm_substream *substream,
int cmd)
{
struct snd_usb_substream *subs = substream->runtime->private_data;
int err;

switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
Expand All @@ -1440,6 +1448,14 @@ static int snd_usb_substream_playback_trigger(struct snd_pcm_substream *substrea
prepare_playback_urb,
retire_playback_urb,
subs);
if (cmd == SNDRV_PCM_TRIGGER_START) {
err = start_endpoints(subs);
if (err < 0) {
snd_usb_endpoint_set_callback(subs->data_endpoint,
NULL, NULL, NULL);
return err;
}
}
subs->running = 1;
dev_dbg(&subs->dev->dev, "%d:%d Start Playback PCM\n",
subs->cur_audiofmt->iface,
Expand Down
2 changes: 1 addition & 1 deletion sound/usb/usx2y/usbusx2yaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@ static int usx2y_urbs_start(struct snd_usx2y_substream *subs)
cleanup:
if (err) {
usx2y_subs_startup_finish(usx2y);
usx2y_clients_stop(usx2y); // something is completely wroong > stop evrything
usx2y_clients_stop(usx2y); // something is completely wrong > stop everything
}
return err;
}
Expand Down
2 changes: 1 addition & 1 deletion sound/usb/usx2y/usx2yhwdeppcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ static int usx2y_usbpcm_urbs_start(struct snd_usx2y_substream *subs)
cleanup:
if (err) {
usx2y_subs_startup_finish(usx2y); // Call it now
usx2y_clients_stop(usx2y); // something is completely wroong > stop evrything
usx2y_clients_stop(usx2y); // something is completely wrong > stop everything
}
return err;
}
Expand Down
6 changes: 3 additions & 3 deletions sound/x86/intel_hdmi_audio.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ static void had_write_register(struct snd_intelhad *ctx, u32 reg, u32 val)
* updating AUD_CONFIG register.
* This is because:
* Bit6 of AUD_CONFIG register is writeonly due to a silicon bug on VLV2
* HDMI IP. As a result a read-modify of AUD_CONFIG regiter will always
* HDMI IP. As a result a read-modify of AUD_CONFIG register will always
* clear bit6. AUD_CONFIG[6:4] represents the "channels" field of the
* register. This field should be 1xy binary for configuration with 6 or
* more channels. Read-modify of AUD_CONFIG (Eg. for enabling audio)
Expand Down Expand Up @@ -342,7 +342,7 @@ static int had_prog_status_reg(struct snd_pcm_substream *substream,

/*
* function to initialize audio
* registers and buffer confgiuration registers
* registers and buffer configuration registers
* This function is called in the prepare callback
*/
static int had_init_audio_ctrl(struct snd_pcm_substream *substream,
Expand Down Expand Up @@ -1790,7 +1790,7 @@ static int hdmi_lpe_audio_probe(struct platform_device *pdev)
pcm->private_data = ctx;
pcm->info_flags = 0;
strscpy(pcm->name, card->shortname, strlen(card->shortname));
/* setup the ops for playabck */
/* setup the ops for playback */
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &had_pcm_ops);

/* allocate dma pages;
Expand Down
2 changes: 1 addition & 1 deletion sound/x86/intel_hdmi_audio.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ struct pcm_stream_info {
* @had_spinlock: driver lock
* @aes_bits: IEC958 status bits
* @buff_done: id of current buffer done intr
* @dev: platoform device handle
* @dev: platform device handle
* @chmap: holds channel map info
*/
struct snd_intelhad {
Expand Down

0 comments on commit 3de6295

Please sign in to comment.