diff mbox

[2/6] ASoC: rsrc-card: add convert channels support

Message ID 874mcx734l.wl%kuninori.morimoto.gx@renesas.com (mailing list archive)
State Accepted
Delegated to: Geert Uytterhoeven
Headers show

Commit Message

Kuninori Morimoto Feb. 25, 2016, 5:51 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Renesas sound device has CTU (= Channel Transfer Unit), and
sound card needs its support.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 .../bindings/sound/renesas,rsrc-card.txt           |  1 +
 sound/soc/sh/rcar/rsrc-card.c                      | 22 ++++++++++++++++------
 2 files changed, 17 insertions(+), 6 deletions(-)

Comments

Rob Herring (Arm) March 2, 2016, 5:39 p.m. UTC | #1
On Thu, Feb 25, 2016 at 05:51:44AM +0000, Kuninori Morimoto wrote:
> 
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> 
> Renesas sound device has CTU (= Channel Transfer Unit), and
> sound card needs its support.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  .../bindings/sound/renesas,rsrc-card.txt           |  1 +
>  sound/soc/sh/rcar/rsrc-card.c                      | 22 ++++++++++++++++------
>  2 files changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt b/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
> index 2b2caa2..5abebf7 100644
> --- a/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
> +++ b/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
> @@ -30,6 +30,7 @@ Optional subnode properties:
>  - frame-inversion			: bool property. Add this if the
>  					  dai-link uses frame clock inversion.
>  - convert-rate				: platform specified sampling rate convert
> +- convert-channels			: platform specified channel size convert

This needs a better description (as did convert-rate). What is the type?
What are valid values?

>  - audio-prefix				: see audio-routing
>  - audio-routing				: A list of the connections between audio components.
>  					  Each entry is a pair of strings, the first being the connection's sink,
Kuninori Morimoto March 3, 2016, 8:15 a.m. UTC | #2
Hi Mark, Rob

thank you for your review

> >  - convert-rate				: platform specified sampling rate convert
> > +- convert-channels			: platform specified channel size convert
> 
> This needs a better description (as did convert-rate). What is the type?
> What are valid values?

OK, I will fixit

Mark, can I send additional patch ?
or is v2 patch better ?
Mark Brown March 5, 2016, 4:24 a.m. UTC | #3
On Thu, Mar 03, 2016 at 08:15:19AM +0000, Kuninori Morimoto wrote:

> Mark, can I send additional patch ?
> or is v2 patch better ?

An incremental patch is fine.
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt b/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
index 2b2caa2..5abebf7 100644
--- a/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
+++ b/Documentation/devicetree/bindings/sound/renesas,rsrc-card.txt
@@ -30,6 +30,7 @@  Optional subnode properties:
 - frame-inversion			: bool property. Add this if the
 					  dai-link uses frame clock inversion.
 - convert-rate				: platform specified sampling rate convert
+- convert-channels			: platform specified channel size convert
 - audio-prefix				: see audio-routing
 - audio-routing				: A list of the connections between audio components.
 					  Each entry is a pair of strings, the first being the connection's sink,
diff --git a/sound/soc/sh/rcar/rsrc-card.c b/sound/soc/sh/rcar/rsrc-card.c
index 8a357fd..ecf5d47 100644
--- a/sound/soc/sh/rcar/rsrc-card.c
+++ b/sound/soc/sh/rcar/rsrc-card.c
@@ -66,6 +66,7 @@  struct rsrc_card_priv {
 	struct snd_soc_dai_link *dai_link;
 	int dai_num;
 	u32 convert_rate;
+	u32 convert_channels;
 };
 
 #define rsrc_priv_to_dev(priv) ((priv)->snd_card.dev)
@@ -145,11 +146,16 @@  static int rsrc_card_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
 	struct rsrc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);
 	struct snd_interval *rate = hw_param_interval(params,
 						      SNDRV_PCM_HW_PARAM_RATE);
+	struct snd_interval *channels = hw_param_interval(params,
+						SNDRV_PCM_HW_PARAM_CHANNELS);
 
-	if (!priv->convert_rate)
-		return 0;
+	if (priv->convert_rate)
+		rate->min =
+		rate->max = priv->convert_rate;
 
-	rate->min = rate->max = priv->convert_rate;
+	if (priv->convert_channels)
+		channels->min =
+		channels->max = priv->convert_channels;
 
 	return 0;
 }
@@ -437,9 +443,13 @@  static int rsrc_card_parse_of(struct device_node *node,
 	/* sampling rate convert */
 	of_property_read_u32(node, "convert-rate", &priv->convert_rate);
 
-	dev_dbg(dev, "New rsrc-audio-card: %s (%d)\n",
-		priv->snd_card.name ? priv->snd_card.name : "",
-		priv->convert_rate);
+	/* channels transfer */
+	of_property_read_u32(node, "convert-channels", &priv->convert_channels);
+
+	dev_dbg(dev, "New rsrc-audio-card: %s\n",
+		priv->snd_card.name ? priv->snd_card.name : "");
+	dev_dbg(dev, "SRC : convert_rate     %d\n", priv->convert_rate);
+	dev_dbg(dev, "CTU : convert_channels %d\n", priv->convert_channels);
 
 	ret = rsrc_card_dai_link_of(node, priv);
 	if (ret < 0)