Unverified Commit de7a09de authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: Merge up fixes

We need some of the AMD fixes as a base for new work.
parents ae8fc294 90f3feb2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18210,6 +18210,7 @@ QCOM AUDIO (ASoC) DRIVERS
M:	Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
M:	Banajit Goswami <bgoswami@quicinc.com>
L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
L:	linux-arm-msm@vger.kernel.org
S:	Supported
F:	Documentation/devicetree/bindings/soc/qcom/qcom,apr*
F:	Documentation/devicetree/bindings/sound/qcom,*
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ snd_pcm_uframes_t snd_dmaengine_pcm_pointer_no_residue(struct snd_pcm_substream
int snd_dmaengine_pcm_open(struct snd_pcm_substream *substream,
	struct dma_chan *chan);
int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream);
int snd_dmaengine_pcm_sync_stop(struct snd_pcm_substream *substream);

int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
	dma_filter_fn filter_fn, void *filter_data);
+10 −0
Original line number Diff line number Diff line
@@ -349,6 +349,16 @@ int snd_dmaengine_pcm_open_request_chan(struct snd_pcm_substream *substream,
}
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open_request_chan);

int snd_dmaengine_pcm_sync_stop(struct snd_pcm_substream *substream)
{
	struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream);

	dmaengine_synchronize(prtd->dma_chan);

	return 0;
}
EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_sync_stop);

/**
 * snd_dmaengine_pcm_close - Close a dmaengine based PCM substream
 * @substream: PCM substream
+0 −8
Original line number Diff line number Diff line
@@ -588,20 +588,12 @@ static int acp_i2s_probe(struct snd_soc_dai *dai)
{
	struct device *dev = dai->component->dev;
	struct acp_dev_data *adata = dev_get_drvdata(dev);
	struct acp_resource *rsrc = adata->rsrc;
	unsigned int val;

	if (!adata->acp_base) {
		dev_err(dev, "I2S base is NULL\n");
		return -EINVAL;
	}

	val = readl(adata->acp_base + rsrc->i2s_pin_cfg_offset);
	if (val != rsrc->i2s_mode) {
		dev_err(dev, "I2S Mode not supported val %x\n", val);
		return -EINVAL;
	}

	return 0;
}

+7 −5
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
		ret = -EINVAL;
		goto release_regions;
	}
	chip->flag = flag;
	dmic_dev = platform_device_register_data(dev, "dmic-codec", PLATFORM_DEVID_NONE, NULL, 0);
	if (IS_ERR(dmic_dev)) {
		dev_err(dev, "failed to create DMIC device\n");
@@ -139,7 +140,6 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
		}
	}

	chip->flag = flag;
	memset(&pdevinfo, 0, sizeof(pdevinfo));

	pdevinfo.name = chip->name;
@@ -199,10 +199,12 @@ static int __maybe_unused snd_acp_resume(struct device *dev)
	ret = acp_init(chip);
	if (ret)
		dev_err(dev, "ACP init failed\n");
	if (chip->chip_pdev) {
		child = chip->chip_pdev->dev;
		adata = dev_get_drvdata(&child);
		if (adata)
			acp_enable_interrupts(adata);
	}
	return ret;
}

Loading