Commit bfceb9c2 authored by Mark Brown's avatar Mark Brown

Merge branch 'asoc-5.15' into asoc-5.16

parents a79b02d5 4ca239f3
...@@ -1612,6 +1612,7 @@ config SND_SOC_WCD938X_SDW ...@@ -1612,6 +1612,7 @@ config SND_SOC_WCD938X_SDW
tristate "WCD9380/WCD9385 Codec - SDW" tristate "WCD9380/WCD9385 Codec - SDW"
select SND_SOC_WCD938X select SND_SOC_WCD938X
select SND_SOC_WCD_MBHC select SND_SOC_WCD_MBHC
select REGMAP_IRQ
depends on SOUNDWIRE depends on SOUNDWIRE
select REGMAP_SOUNDWIRE select REGMAP_SOUNDWIRE
help help
......
This diff is collapsed.
...@@ -347,6 +347,7 @@ ...@@ -347,6 +347,7 @@
#define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A) #define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A)
#define CS42L42_CLK_IASRC_SEL_SHIFT 0 #define CS42L42_CLK_IASRC_SEL_SHIFT 0
#define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT) #define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT)
#define CS42L42_CLK_IASRC_SEL_6 0
#define CS42L42_CLK_IASRC_SEL_12 1 #define CS42L42_CLK_IASRC_SEL_12 1
#define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B) #define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B)
...@@ -820,6 +821,7 @@ ...@@ -820,6 +821,7 @@
#define CS42L42_CLOCK_SWITCH_DELAY_US 150 #define CS42L42_CLOCK_SWITCH_DELAY_US 150
#define CS42L42_PLL_LOCK_POLL_US 250 #define CS42L42_PLL_LOCK_POLL_US 250
#define CS42L42_PLL_LOCK_TIMEOUT_US 1250 #define CS42L42_PLL_LOCK_TIMEOUT_US 1250
#define CS42L42_HP_ADC_EN_TIME_US 20000
static const char *const cs42l42_supply_names[CS42L42_NUM_SUPPLIES] = { static const char *const cs42l42_supply_names[CS42L42_NUM_SUPPLIES] = {
"VA", "VA",
...@@ -853,6 +855,7 @@ struct cs42l42_private { ...@@ -853,6 +855,7 @@ struct cs42l42_private {
u8 hs_bias_ramp_time; u8 hs_bias_ramp_time;
u8 hs_bias_sense_en; u8 hs_bias_sense_en;
u8 stream_use; u8 stream_use;
bool hp_adc_up_pending;
}; };
#endif /* __CS42L42_H__ */ #endif /* __CS42L42_H__ */
...@@ -305,12 +305,19 @@ static int cs4341_spi_probe(struct spi_device *spi) ...@@ -305,12 +305,19 @@ static int cs4341_spi_probe(struct spi_device *spi)
return cs4341_probe(&spi->dev); return cs4341_probe(&spi->dev);
} }
static const struct spi_device_id cs4341_spi_ids[] = {
{ "cs4341a" },
{ }
};
MODULE_DEVICE_TABLE(spi, cs4341_spi_ids);
static struct spi_driver cs4341_spi_driver = { static struct spi_driver cs4341_spi_driver = {
.driver = { .driver = {
.name = "cs4341-spi", .name = "cs4341-spi",
.of_match_table = of_match_ptr(cs4341_dt_ids), .of_match_table = of_match_ptr(cs4341_dt_ids),
}, },
.probe = cs4341_spi_probe, .probe = cs4341_spi_probe,
.id_table = cs4341_spi_ids,
}; };
#endif #endif
......
...@@ -875,8 +875,8 @@ static void nau8824_jdet_work(struct work_struct *work) ...@@ -875,8 +875,8 @@ static void nau8824_jdet_work(struct work_struct *work)
struct regmap *regmap = nau8824->regmap; struct regmap *regmap = nau8824->regmap;
int adc_value, event = 0, event_mask = 0; int adc_value, event = 0, event_mask = 0;
snd_soc_dapm_enable_pin(dapm, "MICBIAS"); snd_soc_dapm_force_enable_pin(dapm, "MICBIAS");
snd_soc_dapm_enable_pin(dapm, "SAR"); snd_soc_dapm_force_enable_pin(dapm, "SAR");
snd_soc_dapm_sync(dapm); snd_soc_dapm_sync(dapm);
msleep(100); msleep(100);
......
...@@ -36,6 +36,7 @@ static const struct of_device_id pcm179x_of_match[] = { ...@@ -36,6 +36,7 @@ static const struct of_device_id pcm179x_of_match[] = {
MODULE_DEVICE_TABLE(of, pcm179x_of_match); MODULE_DEVICE_TABLE(of, pcm179x_of_match);
static const struct spi_device_id pcm179x_spi_ids[] = { static const struct spi_device_id pcm179x_spi_ids[] = {
{ "pcm1792a", 0 },
{ "pcm179x", 0 }, { "pcm179x", 0 },
{ }, { },
}; };
......
...@@ -116,6 +116,8 @@ static const struct reg_default pcm512x_reg_defaults[] = { ...@@ -116,6 +116,8 @@ static const struct reg_default pcm512x_reg_defaults[] = {
{ PCM512x_FS_SPEED_MODE, 0x00 }, { PCM512x_FS_SPEED_MODE, 0x00 },
{ PCM512x_IDAC_1, 0x01 }, { PCM512x_IDAC_1, 0x01 },
{ PCM512x_IDAC_2, 0x00 }, { PCM512x_IDAC_2, 0x00 },
{ PCM512x_I2S_1, 0x02 },
{ PCM512x_I2S_2, 0x00 },
}; };
static bool pcm512x_readable(struct device *dev, unsigned int reg) static bool pcm512x_readable(struct device *dev, unsigned int reg)
......
...@@ -4144,10 +4144,10 @@ static int wcd938x_codec_set_jack(struct snd_soc_component *comp, ...@@ -4144,10 +4144,10 @@ static int wcd938x_codec_set_jack(struct snd_soc_component *comp,
{ {
struct wcd938x_priv *wcd = dev_get_drvdata(comp->dev); struct wcd938x_priv *wcd = dev_get_drvdata(comp->dev);
if (!jack) if (jack)
return wcd_mbhc_start(wcd->wcd_mbhc, &wcd->mbhc_cfg, jack); return wcd_mbhc_start(wcd->wcd_mbhc, &wcd->mbhc_cfg, jack);
else
wcd_mbhc_stop(wcd->wcd_mbhc); wcd_mbhc_stop(wcd->wcd_mbhc);
return 0; return 0;
} }
......
...@@ -742,9 +742,16 @@ static int wm8960_configure_clocking(struct snd_soc_component *component) ...@@ -742,9 +742,16 @@ static int wm8960_configure_clocking(struct snd_soc_component *component)
int i, j, k; int i, j, k;
int ret; int ret;
if (!(iface1 & (1<<6))) { /*
dev_dbg(component->dev, * For Slave mode clocking should still be configured,
"Codec is slave mode, no need to configure clock\n"); * so this if statement should be removed, but some platform
* may not work if the sysclk is not configured, to avoid such
* compatible issue, just add '!wm8960->sysclk' condition in
* this if statement.
*/
if (!(iface1 & (1 << 6)) && !wm8960->sysclk) {
dev_warn(component->dev,
"slave mode, but proceeding with no clock configuration\n");
return 0; return 0;
} }
......
...@@ -487,8 +487,9 @@ static int fsl_xcvr_prepare(struct snd_pcm_substream *substream, ...@@ -487,8 +487,9 @@ static int fsl_xcvr_prepare(struct snd_pcm_substream *substream,
return ret; return ret;
} }
/* clear DPATH RESET */ /* set DPATH RESET */
m_ctl |= FSL_XCVR_EXT_CTRL_DPTH_RESET(tx); m_ctl |= FSL_XCVR_EXT_CTRL_DPTH_RESET(tx);
v_ctl |= FSL_XCVR_EXT_CTRL_DPTH_RESET(tx);
ret = regmap_update_bits(xcvr->regmap, FSL_XCVR_EXT_CTRL, m_ctl, v_ctl); ret = regmap_update_bits(xcvr->regmap, FSL_XCVR_EXT_CTRL, m_ctl, v_ctl);
if (ret < 0) { if (ret < 0) {
dev_err(dai->dev, "Error while setting EXT_CTRL: %d\n", ret); dev_err(dai->dev, "Error while setting EXT_CTRL: %d\n", ret);
...@@ -590,10 +591,6 @@ static void fsl_xcvr_shutdown(struct snd_pcm_substream *substream, ...@@ -590,10 +591,6 @@ static void fsl_xcvr_shutdown(struct snd_pcm_substream *substream,
val |= FSL_XCVR_EXT_CTRL_CMDC_RESET(tx); val |= FSL_XCVR_EXT_CTRL_CMDC_RESET(tx);
} }
/* set DPATH RESET */
mask |= FSL_XCVR_EXT_CTRL_DPTH_RESET(tx);
val |= FSL_XCVR_EXT_CTRL_DPTH_RESET(tx);
ret = regmap_update_bits(xcvr->regmap, FSL_XCVR_EXT_CTRL, mask, val); ret = regmap_update_bits(xcvr->regmap, FSL_XCVR_EXT_CTRL, mask, val);
if (ret < 0) { if (ret < 0) {
dev_err(dai->dev, "Err setting DPATH RESET: %d\n", ret); dev_err(dai->dev, "Err setting DPATH RESET: %d\n", ret);
...@@ -643,6 +640,16 @@ static int fsl_xcvr_trigger(struct snd_pcm_substream *substream, int cmd, ...@@ -643,6 +640,16 @@ static int fsl_xcvr_trigger(struct snd_pcm_substream *substream, int cmd,
dev_err(dai->dev, "Failed to enable DMA: %d\n", ret); dev_err(dai->dev, "Failed to enable DMA: %d\n", ret);
return ret; return ret;
} }
/* clear DPATH RESET */
ret = regmap_update_bits(xcvr->regmap, FSL_XCVR_EXT_CTRL,
FSL_XCVR_EXT_CTRL_DPTH_RESET(tx),
0);
if (ret < 0) {
dev_err(dai->dev, "Failed to clear DPATH RESET: %d\n", ret);
return ret;
}
break; break;
case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND: case SNDRV_PCM_TRIGGER_SUSPEND:
......
...@@ -2578,6 +2578,7 @@ int snd_soc_component_initialize(struct snd_soc_component *component, ...@@ -2578,6 +2578,7 @@ int snd_soc_component_initialize(struct snd_soc_component *component,
INIT_LIST_HEAD(&component->dai_list); INIT_LIST_HEAD(&component->dai_list);
INIT_LIST_HEAD(&component->dobj_list); INIT_LIST_HEAD(&component->dobj_list);
INIT_LIST_HEAD(&component->card_list); INIT_LIST_HEAD(&component->card_list);
INIT_LIST_HEAD(&component->list);
mutex_init(&component->io_mutex); mutex_init(&component->io_mutex);
component->name = fmt_single_name(dev, &component->id); component->name = fmt_single_name(dev, &component->id);
......
...@@ -2563,6 +2563,7 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm, ...@@ -2563,6 +2563,7 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
const char *pin, int status) const char *pin, int status)
{ {
struct snd_soc_dapm_widget *w = dapm_find_widget(dapm, pin, true); struct snd_soc_dapm_widget *w = dapm_find_widget(dapm, pin, true);
int ret = 0;
dapm_assert_locked(dapm); dapm_assert_locked(dapm);
...@@ -2575,13 +2576,14 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm, ...@@ -2575,13 +2576,14 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
dapm_mark_dirty(w, "pin configuration"); dapm_mark_dirty(w, "pin configuration");
dapm_widget_invalidate_input_paths(w); dapm_widget_invalidate_input_paths(w);
dapm_widget_invalidate_output_paths(w); dapm_widget_invalidate_output_paths(w);
ret = 1;
} }
w->connected = status; w->connected = status;
if (status == 0) if (status == 0)
w->force = 0; w->force = 0;
return 0; return ret;
} }
/** /**
...@@ -3585,14 +3587,15 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol, ...@@ -3585,14 +3587,15 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
{ {
struct snd_soc_card *card = snd_kcontrol_chip(kcontrol); struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
const char *pin = (const char *)kcontrol->private_value; const char *pin = (const char *)kcontrol->private_value;
int ret;
if (ucontrol->value.integer.value[0]) if (ucontrol->value.integer.value[0])
snd_soc_dapm_enable_pin(&card->dapm, pin); ret = snd_soc_dapm_enable_pin(&card->dapm, pin);
else else
snd_soc_dapm_disable_pin(&card->dapm, pin); ret = snd_soc_dapm_disable_pin(&card->dapm, pin);
snd_soc_dapm_sync(&card->dapm); snd_soc_dapm_sync(&card->dapm);
return 0; return ret;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_put_pin_switch); EXPORT_SYMBOL_GPL(snd_soc_dapm_put_pin_switch);
...@@ -4025,7 +4028,7 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol, ...@@ -4025,7 +4028,7 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
rtd->params_select = ucontrol->value.enumerated.item[0]; rtd->params_select = ucontrol->value.enumerated.item[0];
return 0; return 1;
} }
static void static void
......
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