mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 01:51:34 +00:00
sound fixes for 6.1-rc7
A few more last-minute fixes for 6.1 that have been gathered in the last week; nothing looks too worrisome, mostly device-specific small fixes, including the ABI fix for ASoC SOF. -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmN/muAOHHRpd2FpQHN1 c2UuZGUACgkQLtJE4w1nLE/mpRAAlNct2PsBa+zCqY0GRtrCsRKylM1+jQlqHUZ7 1dibJFA7tJJhgRB8cWnEDpNW8zKcsYiatYKJFIE8HFtECBZ3eMHgeSOaOmGdKLpN EG+zaF5X6j37w7YTywTqU/cmZXRkLcDRK+bCcnz6d+TdhZj9DZuBtaWD8yFGQMTz aUueasZ5N1Vs64hVLXG1vQWlIlYpzP32yF5MUHZp9Ie0siJqW0cwrghSBO4bZRNv qnKIPpryDBZEIcqKv2/VumuYO88X4bDw9F4y2OPAjC4yS/9pxvFe2qIHQs70Zqbg Tkv904OcaqcD0krY1Ux43Td7Hk6sBGYMc1knCoBvQlj9UTkjJ3UKugp9Evwscc3h eAZABjFuAxzeODAAjYqFRqcP/9aVUEW5YkoBIjfpiSxYhikJaklaxYS2BoA6pmrj wUF3EZOq3cOJw1sVu9UgmCtjJk9CojE18zVTQXU4oIPel1G8dA/FNbci+ux7rmQ1 J7lnySiVDfNtkpUXSJBcj0VC/BXWAFtjuaOEn0uoZDwJfdgYhjRptgeuX8WMB7xT lDH30NyZ+YTbQNU+XK/+DtWnz3htjATKmNJGAodtynLhX+8i8Nkfsf7B5jAXsQZ4 RIkp8086ADD2ALhO82kUmba062xUwpra3VmwdLo7InBTuD9j7eXizd7nmiPt3G+/ 77Oc2ug= =5fKR -----END PGP SIGNATURE----- Merge tag 'sound-6.1-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A few more last-minute fixes for 6.1 that have been gathered in the last week; nothing looks too worrisome, mostly device-specific small fixes, including the ABI fix for ASoC SOF" * tag 'sound-6.1-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: soc-pcm: Add NULL check in BE reparenting ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event ASoC: SOF: dai: move AMD_HS to end of list to restore backwards-compatibility ASoC: max98373: Add checks for devm_kcalloc ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine transitions ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open() ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove ASoC: hdac_hda: fix hda pcm buffer overflow issue ASoC: stm32: i2s: remove irqf_oneshot flag ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register
This commit is contained in:
commit
ca66e58001
@ -84,8 +84,8 @@ enum sof_ipc_dai_type {
|
||||
SOF_DAI_AMD_BT, /**< AMD ACP BT*/
|
||||
SOF_DAI_AMD_SP, /**< AMD ACP SP */
|
||||
SOF_DAI_AMD_DMIC, /**< AMD ACP DMIC */
|
||||
SOF_DAI_AMD_HS, /**< Amd HS */
|
||||
SOF_DAI_MEDIATEK_AFE, /**< Mediatek AFE */
|
||||
SOF_DAI_AMD_HS, /**< Amd HS */
|
||||
};
|
||||
|
||||
/* general purpose DAI configuration */
|
||||
|
@ -113,15 +113,19 @@ EXPORT_SYMBOL(snd_seq_dump_var_event);
|
||||
* expand the variable length event to linear buffer space.
|
||||
*/
|
||||
|
||||
static int seq_copy_in_kernel(char **bufptr, const void *src, int size)
|
||||
static int seq_copy_in_kernel(void *ptr, void *src, int size)
|
||||
{
|
||||
char **bufptr = ptr;
|
||||
|
||||
memcpy(*bufptr, src, size);
|
||||
*bufptr += size;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int seq_copy_in_user(char __user **bufptr, const void *src, int size)
|
||||
static int seq_copy_in_user(void *ptr, void *src, int size)
|
||||
{
|
||||
char __user **bufptr = ptr;
|
||||
|
||||
if (copy_to_user(*bufptr, src, size))
|
||||
return -EFAULT;
|
||||
*bufptr += size;
|
||||
@ -151,8 +155,7 @@ int snd_seq_expand_var_event(const struct snd_seq_event *event, int count, char
|
||||
return newlen;
|
||||
}
|
||||
err = snd_seq_dump_var_event(event,
|
||||
in_kernel ? (snd_seq_dump_func_t)seq_copy_in_kernel :
|
||||
(snd_seq_dump_func_t)seq_copy_in_user,
|
||||
in_kernel ? seq_copy_in_kernel : seq_copy_in_user,
|
||||
&buf);
|
||||
return err < 0 ? err : newlen;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ enum {
|
||||
HDAC_HDMI_1_DAI_ID,
|
||||
HDAC_HDMI_2_DAI_ID,
|
||||
HDAC_HDMI_3_DAI_ID,
|
||||
HDAC_LAST_DAI_ID = HDAC_HDMI_3_DAI_ID,
|
||||
HDAC_DAI_ID_NUM
|
||||
};
|
||||
|
||||
struct hdac_hda_pcm {
|
||||
@ -24,7 +24,7 @@ struct hdac_hda_pcm {
|
||||
|
||||
struct hdac_hda_priv {
|
||||
struct hda_codec *codec;
|
||||
struct hdac_hda_pcm pcm[HDAC_LAST_DAI_ID];
|
||||
struct hdac_hda_pcm pcm[HDAC_DAI_ID_NUM];
|
||||
bool need_display_power;
|
||||
};
|
||||
|
||||
|
@ -549,6 +549,10 @@ static int max98373_i2c_probe(struct i2c_client *i2c)
|
||||
max98373->cache = devm_kcalloc(&i2c->dev, max98373->cache_num,
|
||||
sizeof(*max98373->cache),
|
||||
GFP_KERNEL);
|
||||
if (!max98373->cache) {
|
||||
ret = -ENOMEM;
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (i = 0; i < max98373->cache_num; i++)
|
||||
max98373->cache[i].reg = max98373_i2c_cache_reg[i];
|
||||
|
@ -230,7 +230,7 @@ static int rt711_sdca_read_prop(struct sdw_slave *slave)
|
||||
}
|
||||
|
||||
/* set the timeout values */
|
||||
prop->clk_stop_timeout = 20;
|
||||
prop->clk_stop_timeout = 700;
|
||||
|
||||
/* wake-up event */
|
||||
prop->wake_capable = 1;
|
||||
|
@ -1794,6 +1794,7 @@ static void sgtl5000_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client);
|
||||
|
||||
regmap_write(sgtl5000->regmap, SGTL5000_CHIP_CLK_CTRL, SGTL5000_CHIP_CLK_CTRL_DEFAULT);
|
||||
regmap_write(sgtl5000->regmap, SGTL5000_CHIP_DIG_POWER, SGTL5000_DIG_POWER_DEFAULT);
|
||||
regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, SGTL5000_ANA_POWER_DEFAULT);
|
||||
|
||||
|
@ -2503,6 +2503,14 @@ static void wm8962_configure_bclk(struct snd_soc_component *component)
|
||||
snd_soc_component_update_bits(component, WM8962_CLOCKING2,
|
||||
WM8962_SYSCLK_ENA_MASK, WM8962_SYSCLK_ENA);
|
||||
|
||||
/* DSPCLK_DIV field in WM8962_CLOCKING1 register is used to generate
|
||||
* correct frequency of LRCLK and BCLK. Sometimes the read-only value
|
||||
* can't be updated timely after enabling SYSCLK. This results in wrong
|
||||
* calculation values. Delay is introduced here to wait for newest
|
||||
* value from register. The time of the delay should be at least
|
||||
* 500~1000us according to test.
|
||||
*/
|
||||
usleep_range(500, 1000);
|
||||
dspclk = snd_soc_component_read(component, WM8962_CLOCKING1);
|
||||
|
||||
if (snd_soc_component_get_bias_level(component) != SND_SOC_BIAS_ON)
|
||||
|
@ -822,11 +822,6 @@ static int __soc_pcm_open(struct snd_soc_pcm_runtime *rtd,
|
||||
ret = snd_soc_dai_startup(dai, substream);
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
dai->tx_mask = 0;
|
||||
else
|
||||
dai->rx_mask = 0;
|
||||
}
|
||||
|
||||
/* Dynamic PCM DAI links compat checks use dynamic capabilities */
|
||||
@ -1252,6 +1247,8 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe,
|
||||
return;
|
||||
|
||||
be_substream = snd_soc_dpcm_get_substream(be, stream);
|
||||
if (!be_substream)
|
||||
return;
|
||||
|
||||
for_each_dpcm_fe(be, stream, dpcm) {
|
||||
if (dpcm->fe == fe)
|
||||
|
@ -1077,7 +1077,7 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev,
|
||||
if (irq < 0)
|
||||
return irq;
|
||||
|
||||
ret = devm_request_irq(&pdev->dev, irq, stm32_i2s_isr, IRQF_ONESHOT,
|
||||
ret = devm_request_irq(&pdev->dev, irq, stm32_i2s_isr, 0,
|
||||
dev_name(&pdev->dev), i2s);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "irq request returned %d\n", ret);
|
||||
|
Loading…
Reference in New Issue
Block a user