Commit ecae4c89 authored by Takashi Iwai's avatar Takashi Iwai

Merge tag 'asoc-fix-v6.1-rc6' of...

Merge tag 'asoc-fix-v6.1-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.1

A clutch of small fixes that have come in in the past week, people seem
to have been unusually active for this late in the release cycle.  The
most critical one here is the fix to renumber the SOF DAI types in order
to restore ABI compatibility which was broken by the addition of AMD
support.
parents 05530ef7 db8f91d4
...@@ -84,8 +84,8 @@ enum sof_ipc_dai_type { ...@@ -84,8 +84,8 @@ enum sof_ipc_dai_type {
SOF_DAI_AMD_BT, /**< AMD ACP BT*/ SOF_DAI_AMD_BT, /**< AMD ACP BT*/
SOF_DAI_AMD_SP, /**< AMD ACP SP */ SOF_DAI_AMD_SP, /**< AMD ACP SP */
SOF_DAI_AMD_DMIC, /**< AMD ACP DMIC */ SOF_DAI_AMD_DMIC, /**< AMD ACP DMIC */
SOF_DAI_AMD_HS, /**< Amd HS */
SOF_DAI_MEDIATEK_AFE, /**< Mediatek AFE */ SOF_DAI_MEDIATEK_AFE, /**< Mediatek AFE */
SOF_DAI_AMD_HS, /**< Amd HS */
}; };
/* general purpose DAI configuration */ /* general purpose DAI configuration */
......
...@@ -14,7 +14,7 @@ enum { ...@@ -14,7 +14,7 @@ enum {
HDAC_HDMI_1_DAI_ID, HDAC_HDMI_1_DAI_ID,
HDAC_HDMI_2_DAI_ID, HDAC_HDMI_2_DAI_ID,
HDAC_HDMI_3_DAI_ID, HDAC_HDMI_3_DAI_ID,
HDAC_LAST_DAI_ID = HDAC_HDMI_3_DAI_ID, HDAC_DAI_ID_NUM
}; };
struct hdac_hda_pcm { struct hdac_hda_pcm {
...@@ -24,7 +24,7 @@ struct hdac_hda_pcm { ...@@ -24,7 +24,7 @@ struct hdac_hda_pcm {
struct hdac_hda_priv { struct hdac_hda_priv {
struct hda_codec *codec; 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; bool need_display_power;
}; };
......
...@@ -549,6 +549,10 @@ static int max98373_i2c_probe(struct i2c_client *i2c) ...@@ -549,6 +549,10 @@ static int max98373_i2c_probe(struct i2c_client *i2c)
max98373->cache = devm_kcalloc(&i2c->dev, max98373->cache_num, max98373->cache = devm_kcalloc(&i2c->dev, max98373->cache_num,
sizeof(*max98373->cache), sizeof(*max98373->cache),
GFP_KERNEL); GFP_KERNEL);
if (!max98373->cache) {
ret = -ENOMEM;
return ret;
}
for (i = 0; i < max98373->cache_num; i++) for (i = 0; i < max98373->cache_num; i++)
max98373->cache[i].reg = max98373_i2c_cache_reg[i]; max98373->cache[i].reg = max98373_i2c_cache_reg[i];
......
...@@ -230,7 +230,7 @@ static int rt711_sdca_read_prop(struct sdw_slave *slave) ...@@ -230,7 +230,7 @@ static int rt711_sdca_read_prop(struct sdw_slave *slave)
} }
/* set the timeout values */ /* set the timeout values */
prop->clk_stop_timeout = 20; prop->clk_stop_timeout = 700;
/* wake-up event */ /* wake-up event */
prop->wake_capable = 1; prop->wake_capable = 1;
......
...@@ -1794,6 +1794,7 @@ static void sgtl5000_i2c_remove(struct i2c_client *client) ...@@ -1794,6 +1794,7 @@ static void sgtl5000_i2c_remove(struct i2c_client *client)
{ {
struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(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_DIG_POWER, SGTL5000_DIG_POWER_DEFAULT);
regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, SGTL5000_ANA_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) ...@@ -2503,6 +2503,14 @@ static void wm8962_configure_bclk(struct snd_soc_component *component)
snd_soc_component_update_bits(component, WM8962_CLOCKING2, snd_soc_component_update_bits(component, WM8962_CLOCKING2,
WM8962_SYSCLK_ENA_MASK, WM8962_SYSCLK_ENA); 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); dspclk = snd_soc_component_read(component, WM8962_CLOCKING1);
if (snd_soc_component_get_bias_level(component) != SND_SOC_BIAS_ON) 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, ...@@ -822,11 +822,6 @@ static int __soc_pcm_open(struct snd_soc_pcm_runtime *rtd,
ret = snd_soc_dai_startup(dai, substream); ret = snd_soc_dai_startup(dai, substream);
if (ret < 0) if (ret < 0)
goto err; 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 */ /* Dynamic PCM DAI links compat checks use dynamic capabilities */
...@@ -1252,6 +1247,8 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe, ...@@ -1252,6 +1247,8 @@ static void dpcm_be_reparent(struct snd_soc_pcm_runtime *fe,
return; return;
be_substream = snd_soc_dpcm_get_substream(be, stream); be_substream = snd_soc_dpcm_get_substream(be, stream);
if (!be_substream)
return;
for_each_dpcm_fe(be, stream, dpcm) { for_each_dpcm_fe(be, stream, dpcm) {
if (dpcm->fe == fe) if (dpcm->fe == fe)
......
...@@ -1077,7 +1077,7 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev, ...@@ -1077,7 +1077,7 @@ static int stm32_i2s_parse_dt(struct platform_device *pdev,
if (irq < 0) if (irq < 0)
return irq; 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); dev_name(&pdev->dev), i2s);
if (ret) { if (ret) {
dev_err(&pdev->dev, "irq request returned %d\n", ret); dev_err(&pdev->dev, "irq request returned %d\n", ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment