Skip to content

Commit

Permalink
Merge existing fixes from asoc/for-5.14
Browse files Browse the repository at this point in the history
  • Loading branch information
broonie committed Jul 11, 2021
2 parents e73f0f0 + 9cf76a7 commit 999abd7
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 38 deletions.
7 changes: 1 addition & 6 deletions sound/soc/codecs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1325,7 +1325,7 @@ config SND_SOC_SSM2305
high-efficiency mono Class-D audio power amplifiers.

config SND_SOC_SSM2518
tristate
tristate "Analog Devices SSM2518 Class-D Amplifier"
depends on I2C

config SND_SOC_SSM2602
Expand Down Expand Up @@ -1813,11 +1813,6 @@ config SND_SOC_ZL38060
which consists of a Digital Signal Processor (DSP), several Digital
Audio Interfaces (DAIs), analog outputs, and a block of 14 GPIOs.

config SND_SOC_ZX_AUD96P22
tristate "ZTE ZX AUD96P22 CODEC"
depends on I2C
select REGMAP_I2C

# Amp
config SND_SOC_LM4857
tristate
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/tlv320aic31xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,8 @@ struct aic31xx_pdata {
#define AIC31XX_WORD_LEN_24BITS 0x02
#define AIC31XX_WORD_LEN_32BITS 0x03
#define AIC31XX_IFACE1_MASTER_MASK GENMASK(3, 2)
#define AIC31XX_BCLK_MASTER BIT(2)
#define AIC31XX_WCLK_MASTER BIT(3)
#define AIC31XX_BCLK_MASTER BIT(3)
#define AIC31XX_WCLK_MASTER BIT(2)

/* AIC31XX_DATA_OFFSET */
#define AIC31XX_DATA_OFFSET_MASK GENMASK(7, 0)
Expand Down
6 changes: 4 additions & 2 deletions sound/soc/codecs/wm_adsp.c
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,7 @@
/*
* HALO_CCM_CORE_CONTROL
*/
#define HALO_CORE_RESET 0x00000200
#define HALO_CORE_EN 0x00000001

/*
Expand Down Expand Up @@ -1213,7 +1214,7 @@ static int wm_coeff_tlv_get(struct snd_kcontrol *kctl,

mutex_lock(&ctl->dsp->pwr_lock);

ret = wm_coeff_read_ctrl_raw(ctl, ctl->cache, size);
ret = wm_coeff_read_ctrl(ctl, ctl->cache, size);

if (!ret && copy_to_user(bytes, ctl->cache, size))
ret = -EFAULT;
Expand Down Expand Up @@ -3333,7 +3334,8 @@ static int wm_halo_start_core(struct wm_adsp *dsp)
{
return regmap_update_bits(dsp->regmap,
dsp->base + HALO_CCM_CORE_CONTROL,
HALO_CORE_EN, HALO_CORE_EN);
HALO_CORE_RESET | HALO_CORE_EN,
HALO_CORE_RESET | HALO_CORE_EN);
}

static void wm_halo_stop_core(struct wm_adsp *dsp)
Expand Down
81 changes: 53 additions & 28 deletions sound/soc/intel/boards/sof_sdw_max98373.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,43 +55,68 @@ static int spk_init(struct snd_soc_pcm_runtime *rtd)
return ret;
}

static int max98373_sdw_trigger(struct snd_pcm_substream *substream, int cmd)
static int mx8373_enable_spk_pin(struct snd_pcm_substream *substream, bool enable)
{
struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
struct snd_soc_dai *codec_dai;
struct snd_soc_dai *cpu_dai;
int ret;
int j;

switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME:
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
/* enable max98373 first */
ret = max_98373_trigger(substream, cmd);
if (ret < 0)
break;

ret = sdw_trigger(substream, cmd);
break;
case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND:
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
ret = sdw_trigger(substream, cmd);
if (ret < 0)
break;

ret = max_98373_trigger(substream, cmd);
break;
default:
ret = -EINVAL;
break;
/* set spk pin by playback only */
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
return 0;

cpu_dai = asoc_rtd_to_cpu(rtd, 0);
for_each_rtd_codec_dais(rtd, j, codec_dai) {
struct snd_soc_dapm_context *dapm =
snd_soc_component_get_dapm(cpu_dai->component);
char pin_name[16];

snprintf(pin_name, ARRAY_SIZE(pin_name), "%s Spk",
codec_dai->component->name_prefix);

if (enable)
ret = snd_soc_dapm_enable_pin(dapm, pin_name);
else
ret = snd_soc_dapm_disable_pin(dapm, pin_name);

if (!ret)
snd_soc_dapm_sync(dapm);
}

return ret;
return 0;
}

static int mx8373_sdw_prepare(struct snd_pcm_substream *substream)
{
int ret = 0;

/* according to soc_pcm_prepare dai link prepare is called first */
ret = sdw_prepare(substream);
if (ret < 0)
return ret;

return mx8373_enable_spk_pin(substream, true);
}

static int mx8373_sdw_hw_free(struct snd_pcm_substream *substream)
{
int ret = 0;

/* according to soc_pcm_hw_free dai link free is called first */
ret = sdw_hw_free(substream);
if (ret < 0)
return ret;

return mx8373_enable_spk_pin(substream, false);
}

static const struct snd_soc_ops max_98373_sdw_ops = {
.startup = sdw_startup,
.prepare = sdw_prepare,
.trigger = max98373_sdw_trigger,
.hw_free = sdw_hw_free,
.prepare = mx8373_sdw_prepare,
.trigger = sdw_trigger,
.hw_free = mx8373_sdw_hw_free,
.shutdown = sdw_shutdown,
};

Expand Down

0 comments on commit 999abd7

Please sign in to comment.