Merge tag 'sound-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai: "As the diffstat shows we've had again a lot of works done for this cycle: the majority of changes are the continued componentization and code refactoring in ASoC, the tree-wide PCM API updates and cleanups and SOF updates while a few ASoC driver updates are seen, too. Here we go, some highlights: Core: - Finally y2038 support landed to ALSA ABI; some ioctls have been extended and lots of tricks were applied - Applying the new managed PCM buffer API to all drivers; the API itself was already merged in 5.5 - The already deprecated dimension support in ALSA control API is dropped completely now - Verification of ALSA control elements to catch API misuses ASoC: - Further code refactorings and moving things to the component level - Lots of updates and improvements on SOF / Intel drivers; now including common HDMI driver and SoundWire support - New driver support for Ingenic JZ4770, Mediatek MT6660, Qualcomm WCD934x and WSA881x, and Realtek RT700, RT711, RT715, RT1011, RT1015 and RT1308 HD-audio: - Improved ring-buffer communications using waitqueue - Drop the superfluous buffer preallocation on x86 Others: - Many code cleanups, mostly constifications over the whole tree - USB-audio: quirks for MOTU, Corsair Virtuoso, Line6 Helix - FireWire: code refactoring for oxfw and dice drivers" * tag 'sound-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (638 commits) ALSA: usb-audio: add quirks for Line6 Helix devices fw>=2.82 ALSA: hda: Add Clevo W65_67SB the power_save blacklist ASoC: soc-core: remove null_snd_soc_ops ASoC: soc-pcm: add soc_rtd_trigger() ASoC: soc-pcm: add soc_rtd_hw_free() ASoC: soc-pcm: add soc_rtd_hw_params() ASoC: soc-pcm: add soc_rtd_prepare() ASoC: soc-pcm: add soc_rtd_shutdown() ASoC: soc-pcm: add soc_rtd_startup() ASoC: rt1015: add rt1015 amplifier driver ASoC: madera: Correct some kernel doc ASoC: topology: fix soc_tplg_fe_link_create() - link->dobj initialization order ASoC: Intel: skl_hda_dsp_common: Fix global-out-of-bounds bug ASoC: madera: Correct DMIC only input hook ups ALSA: cs46xx: fix spelling mistake "to" -> "too" ALSA: hda - Add docking station support for Lenovo Thinkpad T420s ASoC: Add MediaTek MT6660 Speaker Amp Driver ASoC: dt-bindings: rt5645: add suppliers ASoC: max98090: fix deadlock in max98090_dapm_put_enum_double() ASoC: dapm: add snd_soc_dapm_put_enum_double_locked ...
Cette révision appartient à :
@@ -56,7 +56,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -61,7 +61,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -74,7 +74,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -23,7 +23,7 @@ MODULE_PARM_DESC(id, "ID string for " ECHOCARD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard.");
|
||||
|
||||
static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999};
|
||||
static const unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999};
|
||||
static const DECLARE_TLV_DB_SCALE(db_scale_output_gain, -12800, 100, 1);
|
||||
|
||||
|
||||
@@ -547,16 +547,6 @@ static int init_engine(struct snd_pcm_substream *substream,
|
||||
"pcm_hw_params (bufsize=%dB periods=%d persize=%dB)\n",
|
||||
params_buffer_bytes(hw_params), params_periods(hw_params),
|
||||
params_period_bytes(hw_params));
|
||||
err = snd_pcm_lib_malloc_pages(substream,
|
||||
params_buffer_bytes(hw_params));
|
||||
if (err < 0) {
|
||||
dev_err(chip->card->dev, "malloc_pages err=%d\n", err);
|
||||
spin_lock_irq(&chip->lock);
|
||||
free_pipes(chip, pipe);
|
||||
spin_unlock_irq(&chip->lock);
|
||||
pipe->index = -1;
|
||||
return err;
|
||||
}
|
||||
|
||||
sglist_init(chip, pipe);
|
||||
edge = PAGE_SIZE;
|
||||
@@ -671,7 +661,6 @@ static int pcm_hw_free(struct snd_pcm_substream *substream)
|
||||
}
|
||||
spin_unlock_irq(&chip->lock);
|
||||
|
||||
snd_pcm_lib_free_pages(substream);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -818,7 +807,6 @@ static snd_pcm_uframes_t pcm_pointer(struct snd_pcm_substream *substream)
|
||||
static const struct snd_pcm_ops analog_playback_ops = {
|
||||
.open = pcm_analog_out_open,
|
||||
.close = pcm_close,
|
||||
.ioctl = snd_pcm_lib_ioctl,
|
||||
.hw_params = pcm_analog_out_hw_params,
|
||||
.hw_free = pcm_hw_free,
|
||||
.prepare = pcm_prepare,
|
||||
@@ -828,7 +816,6 @@ static const struct snd_pcm_ops analog_playback_ops = {
|
||||
static const struct snd_pcm_ops analog_capture_ops = {
|
||||
.open = pcm_analog_in_open,
|
||||
.close = pcm_close,
|
||||
.ioctl = snd_pcm_lib_ioctl,
|
||||
.hw_params = pcm_analog_in_hw_params,
|
||||
.hw_free = pcm_hw_free,
|
||||
.prepare = pcm_prepare,
|
||||
@@ -840,7 +827,6 @@ static const struct snd_pcm_ops analog_capture_ops = {
|
||||
static const struct snd_pcm_ops digital_playback_ops = {
|
||||
.open = pcm_digital_out_open,
|
||||
.close = pcm_close,
|
||||
.ioctl = snd_pcm_lib_ioctl,
|
||||
.hw_params = pcm_digital_out_hw_params,
|
||||
.hw_free = pcm_hw_free,
|
||||
.prepare = pcm_prepare,
|
||||
@@ -851,7 +837,6 @@ static const struct snd_pcm_ops digital_playback_ops = {
|
||||
static const struct snd_pcm_ops digital_capture_ops = {
|
||||
.open = pcm_digital_in_open,
|
||||
.close = pcm_close,
|
||||
.ioctl = snd_pcm_lib_ioctl,
|
||||
.hw_params = pcm_digital_in_hw_params,
|
||||
.hw_free = pcm_hw_free,
|
||||
.prepare = pcm_prepare,
|
||||
@@ -872,10 +857,10 @@ static void snd_echo_preallocate_pages(struct snd_pcm *pcm, struct device *dev)
|
||||
|
||||
for (stream = 0; stream < 2; stream++)
|
||||
for (ss = pcm->streams[stream].substream; ss; ss = ss->next)
|
||||
snd_pcm_lib_preallocate_pages(ss, SNDRV_DMA_TYPE_DEV_SG,
|
||||
dev,
|
||||
ss->number ? 0 : 128<<10,
|
||||
256<<10);
|
||||
snd_pcm_set_managed_buffer(ss, SNDRV_DMA_TYPE_DEV_SG,
|
||||
dev,
|
||||
ss->number ? 0 : 128<<10,
|
||||
256<<10);
|
||||
}
|
||||
|
||||
|
||||
@@ -1245,15 +1230,10 @@ static const struct snd_kcontrol_new snd_echo_intput_nominal_level = {
|
||||
static int snd_echo_mixer_info(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_info *uinfo)
|
||||
{
|
||||
struct echoaudio *chip;
|
||||
|
||||
chip = snd_kcontrol_chip(kcontrol);
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
||||
uinfo->count = 1;
|
||||
uinfo->value.integer.min = ECHOGAIN_MINOUT;
|
||||
uinfo->value.integer.max = ECHOGAIN_MAXOUT;
|
||||
uinfo->dimen.d[0] = num_busses_out(chip);
|
||||
uinfo->dimen.d[1] = num_busses_in(chip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1317,15 +1297,10 @@ static struct snd_kcontrol_new snd_echo_monitor_mixer = {
|
||||
static int snd_echo_vmixer_info(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_info *uinfo)
|
||||
{
|
||||
struct echoaudio *chip;
|
||||
|
||||
chip = snd_kcontrol_chip(kcontrol);
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
||||
uinfo->count = 1;
|
||||
uinfo->value.integer.min = ECHOGAIN_MINOUT;
|
||||
uinfo->value.integer.max = ECHOGAIN_MAXOUT;
|
||||
uinfo->dimen.d[0] = num_busses_out(chip);
|
||||
uinfo->dimen.d[1] = num_pipes_out(chip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1708,13 +1683,6 @@ static int snd_echo_vumeters_info(struct snd_kcontrol *kcontrol,
|
||||
uinfo->count = 96;
|
||||
uinfo->value.integer.min = ECHOGAIN_MINOUT;
|
||||
uinfo->value.integer.max = 0;
|
||||
#ifdef ECHOCARD_HAS_VMIXER
|
||||
uinfo->dimen.d[0] = 3; /* Out, In, Virt */
|
||||
#else
|
||||
uinfo->dimen.d[0] = 2; /* Out, In */
|
||||
#endif
|
||||
uinfo->dimen.d[1] = 16; /* 16 channels */
|
||||
uinfo->dimen.d[2] = 2; /* 0=level, 1=peak */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1882,7 +1850,7 @@ static int snd_echo_create(struct snd_card *card,
|
||||
struct echoaudio *chip;
|
||||
int err;
|
||||
size_t sz;
|
||||
static struct snd_device_ops ops = {
|
||||
static const struct snd_device_ops ops = {
|
||||
.dev_free = snd_echo_dev_free,
|
||||
};
|
||||
|
||||
@@ -1943,6 +1911,7 @@ static int snd_echo_create(struct snd_card *card,
|
||||
return -EBUSY;
|
||||
}
|
||||
chip->irq = pci->irq;
|
||||
card->sync_irq = chip->irq;
|
||||
dev_dbg(card->dev, "pci=%p irq=%d subdev=%04x Init hardware...\n",
|
||||
chip->pci, chip->irq, chip->pci->subsystem_device);
|
||||
|
||||
@@ -2166,6 +2135,7 @@ static int snd_echo_suspend(struct device *dev)
|
||||
chip->dsp_code = NULL;
|
||||
free_irq(chip->irq, chip);
|
||||
chip->irq = -1;
|
||||
chip->card->sync_irq = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2219,6 +2189,7 @@ static int snd_echo_resume(struct device *dev)
|
||||
return -EBUSY;
|
||||
}
|
||||
chip->irq = pci->irq;
|
||||
chip->card->sync_irq = chip->irq;
|
||||
dev_dbg(dev, "resume irq=%d\n", chip->irq);
|
||||
|
||||
#ifdef ECHOCARD_HAS_MIDI
|
||||
|
@@ -60,7 +60,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -81,7 +81,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -61,7 +61,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -61,7 +61,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -61,7 +61,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -62,7 +62,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -62,7 +62,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -70,7 +70,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -80,7 +80,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -71,7 +71,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
@@ -90,7 +90,7 @@ static const struct pci_device_id snd_echo_ids[] = {
|
||||
{0,}
|
||||
};
|
||||
|
||||
static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
static const struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur