diff mbox

[v6,09/10] snd: dmaengine-pcm: add snd_dmaengine_pcm_get_caps interface

Message ID 1444872998-2548-1-git-send-email-shawn.lin@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Shawn Lin Oct. 15, 2015, 1:36 a.m. UTC
Add snd_dmaengine_pcm_get_caps for I2S devices to query
dma controller's caps if they need it to make special limitation
due to specific dma controller design

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>

---

Changes in v6:
- remove get quirks and add get slave caps

Changes in v5: None
Changes in v4: None
Changes in v3: None
Changes in v2: None
Changes in v1: None

 sound/soc/soc-generic-dmaengine-pcm.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

Comments

Vinod Koul Oct. 15, 2015, 4:05 a.m. UTC | #1
On Thu, Oct 15, 2015 at 09:36:38AM +0800, Shawn Lin wrote:
> +int snd_dmaengine_pcm_get_caps(struct device *dev, struct dma_slave_caps *caps)
> +{
> +	struct snd_soc_platform *platform;
> +	struct dmaengine_pcm *pcm;
> +	int ret = -ENODEV;
> +
> +	platform = snd_soc_lookup_platform(dev);
> +	if (!platform)
> +		return ret;
> +
> +	pcm = soc_platform_to_pcm(platform);
> +
> +	if (pcm->chan)
> +		ret = dma_get_slave_caps(pcm->chan[0], caps);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_get_caps);

I don't see the need of this wrapper if you are not going to use this inside
common code.. Why not read this in driver, anyway you setting taht up in
next patch
Shawn Lin Oct. 15, 2015, 6:50 a.m. UTC | #2
On 2015/10/15 12:05, Vinod Koul wrote:
> On Thu, Oct 15, 2015 at 09:36:38AM +0800, Shawn Lin wrote:
>> +int snd_dmaengine_pcm_get_caps(struct device *dev, struct dma_slave_caps *caps)
>> +{
>> +	struct snd_soc_platform *platform;
>> +	struct dmaengine_pcm *pcm;
>> +	int ret = -ENODEV;
>> +
>> +	platform = snd_soc_lookup_platform(dev);
>> +	if (!platform)
>> +		return ret;
>> +
>> +	pcm = soc_platform_to_pcm(platform);
>> +
>> +	if (pcm->chan)
>> +		ret = dma_get_slave_caps(pcm->chan[0], caps);
>> +
>> +	return ret;
>> +}
>> +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_get_caps);
>
> I don't see the need of this wrapper if you are not going to use this inside
> common code.. Why not read this in driver, anyway you setting taht up in
> next patch

okay, I will read it in driver directly.

Thanks.

>
diff mbox

Patch

diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c
index 6fd1906..225c933 100644
--- a/sound/soc/soc-generic-dmaengine-pcm.c
+++ b/sound/soc/soc-generic-dmaengine-pcm.c
@@ -466,4 +466,28 @@  void snd_dmaengine_pcm_unregister(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_unregister);
 
+
+/**
+ * snd_dmaengine_pcm_get_caps - Get slave dma caps based PCM device
+ * @dev: Parent device the PCM was register with
+ */
+int snd_dmaengine_pcm_get_caps(struct device *dev, struct dma_slave_caps *caps)
+{
+	struct snd_soc_platform *platform;
+	struct dmaengine_pcm *pcm;
+	int ret = -ENODEV;
+
+	platform = snd_soc_lookup_platform(dev);
+	if (!platform)
+		return ret;
+
+	pcm = soc_platform_to_pcm(platform);
+
+	if (pcm->chan)
+		ret = dma_get_slave_caps(pcm->chan[0], caps);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_get_caps);
+
 MODULE_LICENSE("GPL");