Merge branch 'for-5.8' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.9
This commit is contained in:
commit
351cf7445f
|
@ -12,6 +12,7 @@ struct rt5670_platform_data {
|
|||
int jd_mode;
|
||||
bool in2_diff;
|
||||
bool dev_gpio;
|
||||
bool gpio1_is_ext_spk_en;
|
||||
|
||||
bool dmic_en;
|
||||
unsigned int dmic1_data_pin;
|
||||
|
|
|
@ -208,8 +208,8 @@ static const struct config_entry config_table[] = {
|
|||
},
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE)
|
||||
/* Cometlake-LP */
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_LP)
|
||||
{
|
||||
.flags = FLAG_SOF,
|
||||
.device = 0x02c8,
|
||||
|
@ -240,9 +240,7 @@ static const struct config_entry config_table[] = {
|
|||
.flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
|
||||
.device = 0x02c8,
|
||||
},
|
||||
#endif
|
||||
/* Cometlake-H */
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_H)
|
||||
{
|
||||
.flags = FLAG_SOF,
|
||||
.device = 0x06c8,
|
||||
|
|
|
@ -342,11 +342,34 @@ static int acp3x_dma_close(struct snd_soc_component *component,
|
|||
{
|
||||
struct snd_soc_pcm_runtime *prtd;
|
||||
struct i2s_dev_data *adata;
|
||||
struct i2s_stream_instance *ins;
|
||||
|
||||
prtd = substream->private_data;
|
||||
component = snd_soc_rtdcom_lookup(prtd, DRV_NAME);
|
||||
adata = dev_get_drvdata(component->dev);
|
||||
ins = substream->runtime->private_data;
|
||||
if (!ins)
|
||||
return -EINVAL;
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
switch (ins->i2s_instance) {
|
||||
case I2S_BT_INSTANCE:
|
||||
adata->play_stream = NULL;
|
||||
break;
|
||||
case I2S_SP_INSTANCE:
|
||||
default:
|
||||
adata->i2ssp_play_stream = NULL;
|
||||
}
|
||||
} else {
|
||||
switch (ins->i2s_instance) {
|
||||
case I2S_BT_INSTANCE:
|
||||
adata->capture_stream = NULL;
|
||||
break;
|
||||
case I2S_SP_INSTANCE:
|
||||
default:
|
||||
adata->i2ssp_capture_stream = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Disable ACP irq, when the current stream is being closed and
|
||||
* another stream is also not active.
|
||||
|
@ -354,13 +377,6 @@ static int acp3x_dma_close(struct snd_soc_component *component,
|
|||
if (!adata->play_stream && !adata->capture_stream &&
|
||||
!adata->i2ssp_play_stream && !adata->i2ssp_capture_stream)
|
||||
rv_writel(0, adata->acp3x_base + mmACP_EXTERNAL_INTR_ENB);
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
adata->play_stream = NULL;
|
||||
adata->i2ssp_play_stream = NULL;
|
||||
} else {
|
||||
adata->capture_stream = NULL;
|
||||
adata->i2ssp_capture_stream = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# Renoir platform Support
|
||||
snd-rn-pci-acp3x-objs := rn-pci-acp3x.o
|
||||
snd-acp3x-pdm-dma-objs := acp3x-pdm-dma.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR) += snd-rn-pci-acp3x.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR) += snd-acp3x-pdm-dma.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR_MACH) += acp3x-rn.o
|
||||
snd-acp3x-rn-objs := acp3x-rn.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR) += snd-rn-pci-acp3x.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR) += snd-acp3x-pdm-dma.o
|
||||
obj-$(CONFIG_SND_SOC_AMD_RENOIR_MACH) += snd-acp3x-rn.o
|
||||
|
|
|
@ -441,13 +441,13 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
|
|||
ret = snd_hda_codec_set_name(hcodec, hcodec->preset->name);
|
||||
if (ret < 0) {
|
||||
dev_err(&hdev->dev, "name failed %s\n", hcodec->preset->name);
|
||||
goto error;
|
||||
goto error_pm;
|
||||
}
|
||||
|
||||
ret = snd_hdac_regmap_init(&hcodec->core);
|
||||
if (ret < 0) {
|
||||
dev_err(&hdev->dev, "regmap init failed\n");
|
||||
goto error;
|
||||
goto error_pm;
|
||||
}
|
||||
|
||||
patch = (hda_codec_patch_t)hcodec->preset->driver_data;
|
||||
|
@ -455,7 +455,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
|
|||
ret = patch(hcodec);
|
||||
if (ret < 0) {
|
||||
dev_err(&hdev->dev, "patch failed %d\n", ret);
|
||||
goto error;
|
||||
goto error_regmap;
|
||||
}
|
||||
} else {
|
||||
dev_dbg(&hdev->dev, "no patch file found\n");
|
||||
|
@ -467,7 +467,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
|
|||
ret = snd_hda_codec_parse_pcms(hcodec);
|
||||
if (ret < 0) {
|
||||
dev_err(&hdev->dev, "unable to map pcms to dai %d\n", ret);
|
||||
goto error;
|
||||
goto error_regmap;
|
||||
}
|
||||
|
||||
/* HDMI controls need to be created in machine drivers */
|
||||
|
@ -476,7 +476,7 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
|
|||
if (ret < 0) {
|
||||
dev_err(&hdev->dev, "unable to create controls %d\n",
|
||||
ret);
|
||||
goto error;
|
||||
goto error_regmap;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -496,7 +496,9 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
|
|||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
error_regmap:
|
||||
snd_hdac_regmap_exit(hdev);
|
||||
error_pm:
|
||||
pm_runtime_put(&hdev->dev);
|
||||
error_no_pm:
|
||||
snd_hdac_ext_bus_link_put(hdev->bus, hlink);
|
||||
|
@ -518,6 +520,8 @@ static void hdac_hda_codec_remove(struct snd_soc_component *component)
|
|||
|
||||
pm_runtime_disable(&hdev->dev);
|
||||
snd_hdac_ext_bus_link_put(hdev->bus, hlink);
|
||||
|
||||
snd_hdac_regmap_exit(hdev);
|
||||
}
|
||||
|
||||
static const struct snd_soc_dapm_route hdac_hda_dapm_routes[] = {
|
||||
|
|
|
@ -31,18 +31,19 @@
|
|||
#include "rt5670.h"
|
||||
#include "rt5670-dsp.h"
|
||||
|
||||
#define RT5670_DEV_GPIO BIT(0)
|
||||
#define RT5670_IN2_DIFF BIT(1)
|
||||
#define RT5670_DMIC_EN BIT(2)
|
||||
#define RT5670_DMIC1_IN2P BIT(3)
|
||||
#define RT5670_DMIC1_GPIO6 BIT(4)
|
||||
#define RT5670_DMIC1_GPIO7 BIT(5)
|
||||
#define RT5670_DMIC2_INR BIT(6)
|
||||
#define RT5670_DMIC2_GPIO8 BIT(7)
|
||||
#define RT5670_DMIC3_GPIO5 BIT(8)
|
||||
#define RT5670_JD_MODE1 BIT(9)
|
||||
#define RT5670_JD_MODE2 BIT(10)
|
||||
#define RT5670_JD_MODE3 BIT(11)
|
||||
#define RT5670_DEV_GPIO BIT(0)
|
||||
#define RT5670_IN2_DIFF BIT(1)
|
||||
#define RT5670_DMIC_EN BIT(2)
|
||||
#define RT5670_DMIC1_IN2P BIT(3)
|
||||
#define RT5670_DMIC1_GPIO6 BIT(4)
|
||||
#define RT5670_DMIC1_GPIO7 BIT(5)
|
||||
#define RT5670_DMIC2_INR BIT(6)
|
||||
#define RT5670_DMIC2_GPIO8 BIT(7)
|
||||
#define RT5670_DMIC3_GPIO5 BIT(8)
|
||||
#define RT5670_JD_MODE1 BIT(9)
|
||||
#define RT5670_JD_MODE2 BIT(10)
|
||||
#define RT5670_JD_MODE3 BIT(11)
|
||||
#define RT5670_GPIO1_IS_EXT_SPK_EN BIT(12)
|
||||
|
||||
static unsigned long rt5670_quirk;
|
||||
static unsigned int quirk_override;
|
||||
|
@ -602,9 +603,9 @@ int rt5670_set_jack_detect(struct snd_soc_component *component,
|
|||
EXPORT_SYMBOL_GPL(rt5670_set_jack_detect);
|
||||
|
||||
static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
|
||||
static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0);
|
||||
static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0);
|
||||
static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
|
||||
static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
|
||||
static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000);
|
||||
static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
|
||||
|
||||
/* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
|
||||
|
@ -1447,6 +1448,33 @@ static int rt5670_hp_event(struct snd_soc_dapm_widget *w,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int rt5670_spk_event(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event)
|
||||
{
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
if (!rt5670->pdata.gpio1_is_ext_spk_en)
|
||||
return 0;
|
||||
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_POST_PMU:
|
||||
regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
|
||||
RT5670_GP1_OUT_MASK, RT5670_GP1_OUT_HI);
|
||||
break;
|
||||
|
||||
case SND_SOC_DAPM_PRE_PMD:
|
||||
regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
|
||||
RT5670_GP1_OUT_MASK, RT5670_GP1_OUT_LO);
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rt5670_bst1_event(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event)
|
||||
{
|
||||
|
@ -1860,7 +1888,9 @@ static const struct snd_soc_dapm_widget rt5670_specific_dapm_widgets[] = {
|
|||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget rt5672_specific_dapm_widgets[] = {
|
||||
SND_SOC_DAPM_PGA("SPO Amp", SND_SOC_NOPM, 0, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA_E("SPO Amp", SND_SOC_NOPM, 0, 0, NULL, 0,
|
||||
rt5670_spk_event, SND_SOC_DAPM_PRE_PMD |
|
||||
SND_SOC_DAPM_POST_PMU),
|
||||
SND_SOC_DAPM_OUTPUT("SPOLP"),
|
||||
SND_SOC_DAPM_OUTPUT("SPOLN"),
|
||||
SND_SOC_DAPM_OUTPUT("SPORP"),
|
||||
|
@ -2857,14 +2887,14 @@ static const struct dmi_system_id dmi_platform_intel_quirks[] = {
|
|||
},
|
||||
{
|
||||
.callback = rt5670_quirk_cb,
|
||||
.ident = "Lenovo Thinkpad Tablet 10",
|
||||
.ident = "Lenovo Miix 2 10",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Miix 2 10"),
|
||||
},
|
||||
.driver_data = (unsigned long *)(RT5670_DMIC_EN |
|
||||
RT5670_DMIC1_IN2P |
|
||||
RT5670_DEV_GPIO |
|
||||
RT5670_GPIO1_IS_EXT_SPK_EN |
|
||||
RT5670_JD_MODE2),
|
||||
},
|
||||
{
|
||||
|
@ -2924,6 +2954,10 @@ static int rt5670_i2c_probe(struct i2c_client *i2c,
|
|||
rt5670->pdata.dev_gpio = true;
|
||||
dev_info(&i2c->dev, "quirk dev_gpio\n");
|
||||
}
|
||||
if (rt5670_quirk & RT5670_GPIO1_IS_EXT_SPK_EN) {
|
||||
rt5670->pdata.gpio1_is_ext_spk_en = true;
|
||||
dev_info(&i2c->dev, "quirk GPIO1 is external speaker enable\n");
|
||||
}
|
||||
if (rt5670_quirk & RT5670_IN2_DIFF) {
|
||||
rt5670->pdata.in2_diff = true;
|
||||
dev_info(&i2c->dev, "quirk IN2_DIFF\n");
|
||||
|
@ -3023,6 +3057,13 @@ static int rt5670_i2c_probe(struct i2c_client *i2c,
|
|||
RT5670_GP1_PF_MASK, RT5670_GP1_PF_OUT);
|
||||
}
|
||||
|
||||
if (rt5670->pdata.gpio1_is_ext_spk_en) {
|
||||
regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
|
||||
RT5670_GP1_PIN_MASK, RT5670_GP1_PIN_GPIO1);
|
||||
regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
|
||||
RT5670_GP1_PF_MASK, RT5670_GP1_PF_OUT);
|
||||
}
|
||||
|
||||
if (rt5670->pdata.jd_mode) {
|
||||
regmap_update_bits(rt5670->regmap, RT5670_GLB_CLK,
|
||||
RT5670_SCLK_SRC_MASK, RT5670_SCLK_SRC_RCCLK);
|
||||
|
|
|
@ -757,7 +757,7 @@
|
|||
#define RT5670_PWR_VREF2_BIT 4
|
||||
#define RT5670_PWR_FV2 (0x1 << 3)
|
||||
#define RT5670_PWR_FV2_BIT 3
|
||||
#define RT5670_LDO_SEL_MASK (0x3)
|
||||
#define RT5670_LDO_SEL_MASK (0x7)
|
||||
#define RT5670_LDO_SEL_SFT 0
|
||||
|
||||
/* Power Management for Analog 2 (0x64) */
|
||||
|
|
|
@ -932,7 +932,9 @@ int rt5682_headset_detect(struct snd_soc_component *component, int jack_insert)
|
|||
RT5682_PWR_ANLG_1, RT5682_PWR_FV2, RT5682_PWR_FV2);
|
||||
snd_soc_component_update_bits(component, RT5682_PWR_ANLG_3,
|
||||
RT5682_PWR_CBJ, RT5682_PWR_CBJ);
|
||||
|
||||
snd_soc_component_update_bits(component,
|
||||
RT5682_HP_CHARGE_PUMP_1,
|
||||
RT5682_OSW_L_MASK | RT5682_OSW_R_MASK, 0);
|
||||
snd_soc_component_update_bits(component, RT5682_CBJ_CTRL_1,
|
||||
RT5682_TRIG_JD_MASK, RT5682_TRIG_JD_HIGH);
|
||||
|
||||
|
@ -956,6 +958,11 @@ int rt5682_headset_detect(struct snd_soc_component *component, int jack_insert)
|
|||
rt5682->jack_type = SND_JACK_HEADPHONE;
|
||||
break;
|
||||
}
|
||||
|
||||
snd_soc_component_update_bits(component,
|
||||
RT5682_HP_CHARGE_PUMP_1,
|
||||
RT5682_OSW_L_MASK | RT5682_OSW_R_MASK,
|
||||
RT5682_OSW_L_EN | RT5682_OSW_R_EN);
|
||||
} else {
|
||||
rt5682_enable_push_button_irq(component, false);
|
||||
snd_soc_component_update_bits(component, RT5682_CBJ_CTRL_1,
|
||||
|
|
|
@ -265,12 +265,20 @@ static int fsl_mqs_remove(struct platform_device *pdev)
|
|||
static int fsl_mqs_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct fsl_mqs *mqs_priv = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
if (mqs_priv->ipg)
|
||||
clk_prepare_enable(mqs_priv->ipg);
|
||||
ret = clk_prepare_enable(mqs_priv->ipg);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to enable ipg clock\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (mqs_priv->mclk)
|
||||
clk_prepare_enable(mqs_priv->mclk);
|
||||
ret = clk_prepare_enable(mqs_priv->mclk);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to enable mclk clock\n");
|
||||
clk_disable_unprepare(mqs_priv->ipg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (mqs_priv->use_gpr)
|
||||
regmap_write(mqs_priv->regmap, IOMUXC_GPR2,
|
||||
|
@ -292,11 +300,8 @@ static int fsl_mqs_runtime_suspend(struct device *dev)
|
|||
regmap_read(mqs_priv->regmap, REG_MQS_CTRL,
|
||||
&mqs_priv->reg_mqs_ctrl);
|
||||
|
||||
if (mqs_priv->mclk)
|
||||
clk_disable_unprepare(mqs_priv->mclk);
|
||||
|
||||
if (mqs_priv->ipg)
|
||||
clk_disable_unprepare(mqs_priv->ipg);
|
||||
clk_disable_unprepare(mqs_priv->mclk);
|
||||
clk_disable_unprepare(mqs_priv->ipg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -678,8 +678,9 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream,
|
|||
struct regmap *regs = ssi->regs;
|
||||
u32 pm = 999, div2, psr, stccr, mask, afreq, factor, i;
|
||||
unsigned long clkrate, baudrate, tmprate;
|
||||
unsigned int slots = params_channels(hw_params);
|
||||
unsigned int slot_width = 32;
|
||||
unsigned int channels = params_channels(hw_params);
|
||||
unsigned int slot_width = params_width(hw_params);
|
||||
unsigned int slots = 2;
|
||||
u64 sub, savesub = 100000;
|
||||
unsigned int freq;
|
||||
bool baudclk_is_used;
|
||||
|
@ -688,10 +689,14 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream,
|
|||
/* Override slots and slot_width if being specifically set... */
|
||||
if (ssi->slots)
|
||||
slots = ssi->slots;
|
||||
/* ...but keep 32 bits if slots is 2 -- I2S Master mode */
|
||||
if (ssi->slot_width && slots != 2)
|
||||
if (ssi->slot_width)
|
||||
slot_width = ssi->slot_width;
|
||||
|
||||
/* ...but force 32 bits for stereo audio using I2S Master Mode */
|
||||
if (channels == 2 &&
|
||||
(ssi->i2s_net & SSI_SCR_I2S_MODE_MASK) == SSI_SCR_I2S_MODE_MASTER)
|
||||
slot_width = 32;
|
||||
|
||||
/* Generate bit clock based on the slot number and slot width */
|
||||
freq = slots * slot_width * params_rate(hw_params);
|
||||
|
||||
|
|
|
@ -492,7 +492,7 @@ config SND_SOC_INTEL_SOF_PCM512x_MACH
|
|||
|
||||
endif ## SND_SOC_SOF_HDA_LINK || SND_SOC_SOF_BAYTRAIL
|
||||
|
||||
if (SND_SOC_SOF_COMETLAKE_LP && SND_SOC_SOF_HDA_LINK)
|
||||
if (SND_SOC_SOF_COMETLAKE && SND_SOC_SOF_HDA_LINK)
|
||||
|
||||
config SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH
|
||||
tristate "CML_LP with DA7219 and MAX98357A in I2S Mode"
|
||||
|
@ -520,7 +520,7 @@ config SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH
|
|||
Say Y if you have such a device.
|
||||
If unsure select "N".
|
||||
|
||||
endif ## SND_SOC_SOF_COMETLAKE_LP && SND_SOC_SOF_HDA_LINK
|
||||
endif ## SND_SOC_SOF_COMETLAKE && SND_SOC_SOF_HDA_LINK
|
||||
|
||||
if SND_SOC_SOF_JASPERLAKE
|
||||
|
||||
|
|
|
@ -253,21 +253,20 @@ static int cht_codec_fixup(struct snd_soc_pcm_runtime *rtd,
|
|||
params_set_format(params, SNDRV_PCM_FORMAT_S24_LE);
|
||||
|
||||
/*
|
||||
* Default mode for SSP configuration is TDM 4 slot
|
||||
* Default mode for SSP configuration is TDM 4 slot. One board/design,
|
||||
* the Lenovo Miix 2 10 uses not 1 but 2 codecs connected to SSP2. The
|
||||
* second piggy-backed, output-only codec is inside the keyboard-dock
|
||||
* (which has extra speakers). Unlike the main rt5672 codec, we cannot
|
||||
* configure this codec, it is hard coded to use 2 channel 24 bit I2S.
|
||||
* Since we only support 2 channels anyways, there is no need for TDM
|
||||
* on any cht-bsw-rt5672 designs. So we simply use I2S 2ch everywhere.
|
||||
*/
|
||||
ret = snd_soc_dai_set_fmt(asoc_rtd_to_codec(rtd, 0),
|
||||
SND_SOC_DAIFMT_DSP_B |
|
||||
SND_SOC_DAIFMT_IB_NF |
|
||||
ret = snd_soc_dai_set_fmt(asoc_rtd_to_cpu(rtd, 0),
|
||||
SND_SOC_DAIFMT_I2S |
|
||||
SND_SOC_DAIFMT_NB_NF |
|
||||
SND_SOC_DAIFMT_CBS_CFS);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "can't set format to TDM %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* TDM 4 slots 24 bit, set Rx & Tx bitmask to 4 active slots */
|
||||
ret = snd_soc_dai_set_tdm_slot(asoc_rtd_to_codec(rtd, 0), 0xF, 0xF, 4, 24);
|
||||
if (ret < 0) {
|
||||
dev_err(rtd->dev, "can't set codec TDM slot %d\n", ret);
|
||||
dev_err(rtd->dev, "can't set format to I2S, err %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ config SND_SOC_QDSP6_ASM_DAI
|
|||
|
||||
config SND_SOC_QDSP6
|
||||
tristate "SoC ALSA audio driver for QDSP6"
|
||||
depends on QCOM_APR && HAS_DMA
|
||||
depends on QCOM_APR
|
||||
select SND_SOC_QDSP6_COMMON
|
||||
select SND_SOC_QDSP6_CORE
|
||||
select SND_SOC_QDSP6_AFE
|
||||
|
|
|
@ -590,8 +590,10 @@ static int rockchip_pdm_resume(struct device *dev)
|
|||
int ret;
|
||||
|
||||
ret = pm_runtime_get_sync(dev);
|
||||
if (ret < 0)
|
||||
if (ret < 0) {
|
||||
pm_runtime_put(dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = regcache_sync(pdm->regmap);
|
||||
|
||||
|
|
|
@ -25,8 +25,7 @@ config SND_SOC_SOF_INTEL_PCI
|
|||
select SND_SOC_SOF_CANNONLAKE if SND_SOC_SOF_CANNONLAKE_SUPPORT
|
||||
select SND_SOC_SOF_COFFEELAKE if SND_SOC_SOF_COFFEELAKE_SUPPORT
|
||||
select SND_SOC_SOF_ICELAKE if SND_SOC_SOF_ICELAKE_SUPPORT
|
||||
select SND_SOC_SOF_COMETLAKE_LP if SND_SOC_SOF_COMETLAKE_LP_SUPPORT
|
||||
select SND_SOC_SOF_COMETLAKE_H if SND_SOC_SOF_COMETLAKE_H_SUPPORT
|
||||
select SND_SOC_SOF_COMETLAKE if SND_SOC_SOF_COMETLAKE_SUPPORT
|
||||
select SND_SOC_SOF_TIGERLAKE if SND_SOC_SOF_TIGERLAKE_SUPPORT
|
||||
select SND_SOC_SOF_ELKHARTLAKE if SND_SOC_SOF_ELKHARTLAKE_SUPPORT
|
||||
select SND_SOC_SOF_JASPERLAKE if SND_SOC_SOF_JASPERLAKE_SUPPORT
|
||||
|
@ -201,34 +200,22 @@ config SND_SOC_SOF_ICELAKE
|
|||
This option is not user-selectable but automagically handled by
|
||||
'select' statements at a higher level
|
||||
|
||||
config SND_SOC_SOF_COMETLAKE_LP
|
||||
config SND_SOC_SOF_COMETLAKE
|
||||
tristate
|
||||
select SND_SOC_SOF_HDA_COMMON
|
||||
help
|
||||
This option is not user-selectable but automagically handled by
|
||||
'select' statements at a higher level
|
||||
|
||||
config SND_SOC_SOF_COMETLAKE_SUPPORT
|
||||
bool
|
||||
|
||||
config SND_SOC_SOF_COMETLAKE_LP_SUPPORT
|
||||
bool "SOF support for CometLake-LP"
|
||||
bool "SOF support for CometLake"
|
||||
select SND_SOC_SOF_COMETLAKE_SUPPORT
|
||||
help
|
||||
This adds support for Sound Open Firmware for Intel(R) platforms
|
||||
using the Cometlake-LP processors.
|
||||
Say Y if you have such a device.
|
||||
If unsure select "N".
|
||||
|
||||
config SND_SOC_SOF_COMETLAKE_H
|
||||
tristate
|
||||
select SND_SOC_SOF_HDA_COMMON
|
||||
help
|
||||
This option is not user-selectable but automagically handled by
|
||||
'select' statements at a higher level
|
||||
|
||||
config SND_SOC_SOF_COMETLAKE_H_SUPPORT
|
||||
bool "SOF support for CometLake-H"
|
||||
help
|
||||
This adds support for Sound Open Firmware for Intel(R) platforms
|
||||
using the Cometlake-H processors.
|
||||
Say Y if you have such a device.
|
||||
using the Cometlake processors.
|
||||
If unsure select "N".
|
||||
|
||||
config SND_SOC_SOF_TIGERLAKE_SUPPORT
|
||||
|
|
|
@ -151,9 +151,7 @@ static const struct sof_dev_desc cfl_desc = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_LP) || \
|
||||
IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_H)
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE)
|
||||
static const struct sof_dev_desc cml_desc = {
|
||||
.machines = snd_soc_acpi_intel_cml_machines,
|
||||
.alt_machines = snd_soc_acpi_intel_cml_sdw_machines,
|
||||
|
@ -411,8 +409,11 @@ static const struct pci_device_id sof_pci_ids[] = {
|
|||
.driver_data = (unsigned long)&cfl_desc},
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_ICELAKE)
|
||||
{ PCI_DEVICE(0x8086, 0x34C8),
|
||||
{ PCI_DEVICE(0x8086, 0x34C8), /* ICL-LP */
|
||||
.driver_data = (unsigned long)&icl_desc},
|
||||
{ PCI_DEVICE(0x8086, 0x3dc8), /* ICL-H */
|
||||
.driver_data = (unsigned long)&icl_desc},
|
||||
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_JASPERLAKE)
|
||||
{ PCI_DEVICE(0x8086, 0x38c8),
|
||||
|
@ -420,17 +421,20 @@ static const struct pci_device_id sof_pci_ids[] = {
|
|||
{ PCI_DEVICE(0x8086, 0x4dc8),
|
||||
.driver_data = (unsigned long)&jsl_desc},
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_LP)
|
||||
{ PCI_DEVICE(0x8086, 0x02c8),
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE)
|
||||
{ PCI_DEVICE(0x8086, 0x02c8), /* CML-LP */
|
||||
.driver_data = (unsigned long)&cml_desc},
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_COMETLAKE_H)
|
||||
{ PCI_DEVICE(0x8086, 0x06c8),
|
||||
{ PCI_DEVICE(0x8086, 0x06c8), /* CML-H */
|
||||
.driver_data = (unsigned long)&cml_desc},
|
||||
{ PCI_DEVICE(0x8086, 0xa3f0), /* CML-S */
|
||||
.driver_data = (unsigned long)&cml_desc},
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_TIGERLAKE)
|
||||
{ PCI_DEVICE(0x8086, 0xa0c8),
|
||||
{ PCI_DEVICE(0x8086, 0xa0c8), /* TGL-LP */
|
||||
.driver_data = (unsigned long)&tgl_desc},
|
||||
{ PCI_DEVICE(0x8086, 0x43c8), /* TGL-H */
|
||||
.driver_data = (unsigned long)&tgl_desc},
|
||||
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_ELKHARTLAKE)
|
||||
{ PCI_DEVICE(0x8086, 0x4b55),
|
||||
|
|
Loading…
Reference in a new issue