Unverified Commit 549ade57 authored by Mark Brown's avatar Mark Brown
Browse files

Merge existing fixes from asoc/for-5.9

parents 9123e3a7 062fa09f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ static int acp3x_1015_hw_params(struct snd_pcm_substream *substream,
	srate = params_rate(params);

	for_each_rtd_codec_dais(rtd, i, codec_dai) {
		if (strcmp(codec_dai->component->name, "rt1015-aif"))
		if (strcmp(codec_dai->name, "rt1015-aif"))
			continue;
		ret = snd_soc_dai_set_bclk_ratio(codec_dai, 64);
		if (ret < 0)
+9 −20
Original line number Diff line number Diff line
@@ -314,40 +314,30 @@ static int acp_pdm_dma_close(struct snd_soc_component *component,
	return 0;
}

static int acp_pdm_dai_hw_params(struct snd_pcm_substream *substream,
				 struct snd_pcm_hw_params *params,
				 struct snd_soc_dai *dai)
static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
			       int cmd, struct snd_soc_dai *dai)
{
	struct pdm_stream_instance *rtd;
	int ret;
	bool pdm_status;
	unsigned int ch_mask;

	rtd = substream->runtime->private_data;
	switch (params_channels(params)) {
	ret = 0;
	switch (substream->runtime->channels) {
	case TWO_CH:
		ch_mask = 0x00;
		break;
	default:
		return -EINVAL;
	}
	rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS);
	rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base +
		  ACP_WOV_PDM_DECIMATION_FACTOR);
	return 0;
}

static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
			       int cmd, struct snd_soc_dai *dai)
{
	struct pdm_stream_instance *rtd;
	int ret;
	bool pdm_status;

	rtd = substream->runtime->private_data;
	ret = 0;
	switch (cmd) {
	case SNDRV_PCM_TRIGGER_START:
	case SNDRV_PCM_TRIGGER_RESUME:
	case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
		rn_writel(ch_mask, rtd->acp_base + ACP_WOV_PDM_NO_OF_CHANNELS);
		rn_writel(PDM_DECIMATION_FACTOR, rtd->acp_base +
			  ACP_WOV_PDM_DECIMATION_FACTOR);
		rtd->bytescount = acp_pdm_get_byte_count(rtd,
							 substream->stream);
		pdm_status = check_pdm_dma_status(rtd->acp_base);
@@ -369,7 +359,6 @@ static int acp_pdm_dai_trigger(struct snd_pcm_substream *substream,
}

static struct snd_soc_dai_ops acp_pdm_dai_ops = {
	.hw_params = acp_pdm_dai_hw_params,
	.trigger   = acp_pdm_dai_trigger,
};

+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@

#define CDC_D_REVISION1			(0xf000)
#define CDC_D_PERPH_SUBTYPE		(0xf005)
#define CDC_D_INT_EN_SET		(0x015)
#define CDC_D_INT_EN_CLR		(0x016)
#define CDC_D_INT_EN_SET		(0xf015)
#define CDC_D_INT_EN_CLR		(0xf016)
#define MBHC_SWITCH_INT			BIT(7)
#define MBHC_MIC_ELECTRICAL_INS_REM_DET	BIT(6)
#define MBHC_BUTTON_PRESS_DET		BIT(5)
+4 −0
Original line number Diff line number Diff line
@@ -412,8 +412,12 @@ int wm8958_aif_ev(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 wm8994 *control = dev_get_drvdata(component->dev->parent);
	int i;

	if (control->type != WM8958)
		return 0;

	switch (event) {
	case SND_SOC_DAPM_POST_PMU:
	case SND_SOC_DAPM_PRE_PMU:
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,6 @@ static const struct reg_default wm8962_reg[] = {
	{ 40, 0x0000 },   /* R40    - SPKOUTL volume */
	{ 41, 0x0000 },   /* R41    - SPKOUTR volume */

	{ 48, 0x0000 },   /* R48    - Additional control(4) */
	{ 49, 0x0010 },   /* R49    - Class D Control 1 */
	{ 51, 0x0003 },   /* R51    - Class D Control 2 */

@@ -842,6 +841,7 @@ static bool wm8962_readable_register(struct device *dev, unsigned int reg)
	case WM8962_SPKOUTL_VOLUME:
	case WM8962_SPKOUTR_VOLUME:
	case WM8962_THERMAL_SHUTDOWN_STATUS:
	case WM8962_ADDITIONAL_CONTROL_4:
	case WM8962_CLASS_D_CONTROL_1:
	case WM8962_CLASS_D_CONTROL_2:
	case WM8962_CLOCKING_4:
Loading