devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/15] Patches to update for rockchip i2s
@ 2021-08-24  9:16 Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio Sugar Zhang
                   ` (14 more replies)
  0 siblings, 15 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:16 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

These patches fixup or update for rockchip i2s.

Changes in v2:
- split property trcm into single 'trcm-sync-tx-only' and
  'trcm-sync-rx-only' suggested by Nicolas.
- split property trcm into single 'trcm-sync-tx-only' and
  'trcm-sync-rx-only' suggested by Nicolas.
- drop change-id

Sugar Zhang (13):
  ASoC: rockchip: i2s: Add support for set bclk ratio
  ASoC: rockchip: i2s: Fixup clk div error
  ASoC: rockchip: i2s: Improve dma data transfer efficiency
  ASoC: rockchip: i2s: Fix regmap_ops hang
  ASoC: rockchip: i2s: Fix concurrency between tx/rx
  ASoC: rockchip: i2s: Reset the controller if soft reset failed
  ASoC: dt-bindings: rockchip: Document reset property for i2s
  ASoC: rockchip: i2s: Add property to specify play/cap capability
  ASoC: dt-bindings: rockchip: i2s: Document property for
    playback/capture
  ASoC: rockchip: i2s: Add compatible for more SoCs
  ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
  ASoC: rockchip: i2s: Add support for frame inversion
  ASoC: dt-bindings: rockchip: i2s: Document property TRCM

Xiaotan Luo (1):
  ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B

Xing Zheng (1):
  ASoC: rockchip: i2s: Add support for TRCM property

 .../devicetree/bindings/sound/rockchip-i2s.yaml    |  29 ++++
 sound/soc/rockchip/rockchip_i2s.c                  | 161 +++++++++++++++++----
 sound/soc/rockchip/rockchip_i2s.h                  |  10 +-
 3 files changed, 164 insertions(+), 36 deletions(-)

-- 
2.7.4




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error Sugar Zhang
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch adds support for set bclk ratio from machine driver.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index c7dc350..c9d5c52 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -49,6 +49,7 @@ struct rk_i2s_dev {
 	bool rx_start;
 	bool is_master_mode;
 	const struct rk_i2s_pins *pins;
+	unsigned int bclk_ratio;
 };
 
 static int i2s_runtime_suspend(struct device *dev)
@@ -278,7 +279,7 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
 
 	if (i2s->is_master_mode) {
 		mclk_rate = clk_get_rate(i2s->mclk);
-		bclk_rate = 2 * 32 * params_rate(params);
+		bclk_rate = i2s->bclk_ratio * params_rate(params);
 		if (bclk_rate == 0 || mclk_rate % bclk_rate)
 			return -EINVAL;
 
@@ -413,6 +414,16 @@ static int rockchip_i2s_trigger(struct snd_pcm_substream *substream,
 	return ret;
 }
 
+static int rockchip_i2s_set_bclk_ratio(struct snd_soc_dai *dai,
+				       unsigned int ratio)
+{
+	struct rk_i2s_dev *i2s = to_info(dai);
+
+	i2s->bclk_ratio = ratio;
+
+	return 0;
+}
+
 static int rockchip_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id,
 				   unsigned int freq, int dir)
 {
@@ -441,6 +452,7 @@ static int rockchip_i2s_dai_probe(struct snd_soc_dai *dai)
 
 static const struct snd_soc_dai_ops rockchip_i2s_dai_ops = {
 	.hw_params = rockchip_i2s_hw_params,
+	.set_bclk_ratio	= rockchip_i2s_set_bclk_ratio,
 	.set_sysclk = rockchip_i2s_set_sysclk,
 	.set_fmt = rockchip_i2s_set_fmt,
 	.trigger = rockchip_i2s_trigger,
@@ -638,6 +650,8 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 	i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
 	i2s->capture_dma_data.maxburst = 4;
 
+	i2s->bclk_ratio = 64;
+
 	dev_set_drvdata(&pdev->dev, i2s);
 
 	pm_runtime_enable(&pdev->dev);
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency Sugar Zhang
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

MCLK maybe not precise as required because of PLL,
but which still can be used and no side effect. so,
using DIV_ROUND_CLOSEST instead div.

e.g.

set mclk to 11289600 Hz, but get 11289598 Hz.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index c9d5c52..05fce2c 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -280,10 +280,10 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
 	if (i2s->is_master_mode) {
 		mclk_rate = clk_get_rate(i2s->mclk);
 		bclk_rate = i2s->bclk_ratio * params_rate(params);
-		if (bclk_rate == 0 || mclk_rate % bclk_rate)
+		if (!bclk_rate)
 			return -EINVAL;
 
-		div_bclk = mclk_rate / bclk_rate;
+		div_bclk = DIV_ROUND_CLOSEST(mclk_rate, bclk_rate);
 		div_lrck = bclk_rate / params_rate(params);
 		regmap_update_bits(i2s->regmap, I2S_CKR,
 				   I2S_CKR_MDIV_MASK,
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang Sugar Zhang
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch changes dma data burst from 4 to 8 to improve
data transfer efficiency.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 05fce2c..2e0047d 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -644,11 +644,11 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 
 	i2s->playback_dma_data.addr = res->start + I2S_TXDR;
 	i2s->playback_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
-	i2s->playback_dma_data.maxburst = 4;
+	i2s->playback_dma_data.maxburst = 8;
 
 	i2s->capture_dma_data.addr = res->start + I2S_RXDR;
 	i2s->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
-	i2s->capture_dma_data.maxburst = 4;
+	i2s->capture_dma_data.maxburst = 8;
 
 	i2s->bclk_ratio = 64;
 
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (2 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx Sugar Zhang
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

API 'set_fmt' maybe called when PD is off, in the situation,
any register access will hang the system. so, enable PD
before r/w register.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 2e0047d..90877e8 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -187,7 +187,9 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 {
 	struct rk_i2s_dev *i2s = to_info(cpu_dai);
 	unsigned int mask = 0, val = 0;
+	int ret = 0;
 
+	pm_runtime_get_sync(cpu_dai->dev);
 	mask = I2S_CKR_MSS_MASK;
 	switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
 	case SND_SOC_DAIFMT_CBS_CFS:
@@ -200,7 +202,8 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 		i2s->is_master_mode = false;
 		break;
 	default:
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_pm_put;
 	}
 
 	regmap_update_bits(i2s->regmap, I2S_CKR, mask, val);
@@ -214,7 +217,8 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 		val = I2S_CKR_CKP_POS;
 		break;
 	default:
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_pm_put;
 	}
 
 	regmap_update_bits(i2s->regmap, I2S_CKR, mask, val);
@@ -237,7 +241,8 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 		val = I2S_TXCR_TFS_PCM | I2S_TXCR_PBM_MODE(1);
 		break;
 	default:
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_pm_put;
 	}
 
 	regmap_update_bits(i2s->regmap, I2S_TXCR, mask, val);
@@ -260,12 +265,16 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 		val = I2S_RXCR_TFS_PCM | I2S_RXCR_PBM_MODE(1);
 		break;
 	default:
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_pm_put;
 	}
 
 	regmap_update_bits(i2s->regmap, I2S_RXCR, mask, val);
 
-	return 0;
+err_pm_put:
+	pm_runtime_put(cpu_dai->dev);
+
+	return ret;
 }
 
 static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (3 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed Sugar Zhang
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch adds lock to fix comcurrency between tx/rx
to fix 'rockchip-i2s ff070000.i2s; fail to clear'

Considering the situation;

       tx stream              rx stream
           |                      |
           |                   disable
         enable                   |
           |                    reset

After this patch:

         lock
           |
       tx stream
           |
         enable
           |
        unlock
       --------               ---------
                                lock
                                  |
                              rx stream
                                  |
                               disable
                                  |
                                reset
                                  |
                               unlock

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 90877e8..0ba728f 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -15,6 +15,7 @@
 #include <linux/clk.h>
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
+#include <linux/spinlock.h>
 #include <sound/pcm_params.h>
 #include <sound/dmaengine_pcm.h>
 
@@ -52,6 +53,9 @@ struct rk_i2s_dev {
 	unsigned int bclk_ratio;
 };
 
+/* tx/rx ctrl lock */
+static DEFINE_SPINLOCK(lock);
+
 static int i2s_runtime_suspend(struct device *dev)
 {
 	struct rk_i2s_dev *i2s = dev_get_drvdata(dev);
@@ -93,6 +97,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
 	unsigned int val = 0;
 	int retry = 10;
 
+	spin_lock(&lock);
 	if (on) {
 		regmap_update_bits(i2s->regmap, I2S_DMACR,
 				   I2S_DMACR_TDE_ENABLE, I2S_DMACR_TDE_ENABLE);
@@ -133,6 +138,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
 			}
 		}
 	}
+	spin_unlock(&lock);
 }
 
 static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
@@ -140,6 +146,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
 	unsigned int val = 0;
 	int retry = 10;
 
+	spin_lock(&lock);
 	if (on) {
 		regmap_update_bits(i2s->regmap, I2S_DMACR,
 				   I2S_DMACR_RDE_ENABLE, I2S_DMACR_RDE_ENABLE);
@@ -180,6 +187,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
 			}
 		}
 	}
+	spin_unlock(&lock);
 }
 
 static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (4 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s Sugar Zhang
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch brings i2s back to normal by resetting i2s m/h
when the soft reset failed.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 0ba728f..78321ee 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -15,6 +15,7 @@
 #include <linux/clk.h>
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
+#include <linux/reset.h>
 #include <linux/spinlock.h>
 #include <sound/pcm_params.h>
 #include <sound/dmaengine_pcm.h>
@@ -40,6 +41,8 @@ struct rk_i2s_dev {
 
 	struct regmap *regmap;
 	struct regmap *grf;
+	struct reset_control *reset_m;
+	struct reset_control *reset_h;
 
 /*
  * Used to indicate the tx/rx status.
@@ -92,6 +95,20 @@ static inline struct rk_i2s_dev *to_info(struct snd_soc_dai *dai)
 	return snd_soc_dai_get_drvdata(dai);
 }
 
+static void rockchip_i2s_reset(struct rk_i2s_dev *i2s)
+{
+	dev_warn(i2s->dev, "Reset controller.\n");
+
+	reset_control_assert(i2s->reset_m);
+	reset_control_assert(i2s->reset_h);
+	udelay(1);
+	reset_control_deassert(i2s->reset_m);
+	reset_control_deassert(i2s->reset_h);
+
+	regcache_mark_dirty(i2s->regmap);
+	regcache_sync(i2s->regmap);
+}
+
 static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
 {
 	unsigned int val = 0;
@@ -132,7 +149,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
 				regmap_read(i2s->regmap, I2S_CLR, &val);
 				retry--;
 				if (!retry) {
-					dev_warn(i2s->dev, "fail to clear\n");
+					rockchip_i2s_reset(i2s);
 					break;
 				}
 			}
@@ -181,7 +198,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
 				regmap_read(i2s->regmap, I2S_CLR, &val);
 				retry--;
 				if (!retry) {
-					dev_warn(i2s->dev, "fail to clear\n");
+					rockchip_i2s_reset(i2s);
 					break;
 				}
 			}
@@ -629,6 +646,14 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 		i2s->pins = of_id->data;
 	}
 
+	i2s->reset_m = devm_reset_control_get_optional(&pdev->dev, "reset-m");
+	if (IS_ERR(i2s->reset_m))
+		return PTR_ERR(i2s->reset_m);
+
+	i2s->reset_h = devm_reset_control_get_optional(&pdev->dev, "reset-h");
+	if (IS_ERR(i2s->reset_h))
+		return PTR_ERR(i2s->reset_h);
+
 	/* try to prepare related clocks */
 	i2s->hclk = devm_clk_get(&pdev->dev, "i2s_hclk");
 	if (IS_ERR(i2s->hclk)) {
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (5 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24 17:01   ` Rob Herring
  2021-08-24  9:17 ` [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B Sugar Zhang
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch documents reset property for i2s.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
index 245895b..9f9cc48 100644
--- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
+++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
@@ -61,6 +61,14 @@ properties:
   power-domains:
     maxItems: 1
 
+  reset-names:
+    items:
+      - const: reset-m
+      - const: reset-h
+
+  resets:
+    maxItems: 2
+
   rockchip,capture-channels:
     $ref: /schemas/types.yaml#/definitions/uint32
     default: 2
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (6 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability Sugar Zhang
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko
  Cc: linux-rockchip, devicetree, alsa-devel, Xiaotan Luo, Sugar Zhang

From: Xiaotan Luo <lxt@rock-chips.com>

- DSP_A: PCM delay 1 bit mode, L data MSB after FRM LRC
- DSP_B: PCM no delay mode, L data MSB during FRM LRC

Signed-off-by: Xiaotan Luo <lxt@rock-chips.com>
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 78321ee..15e2690 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -259,12 +259,12 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 	case SND_SOC_DAIFMT_I2S:
 		val = I2S_TXCR_IBM_NORMAL;
 		break;
-	case SND_SOC_DAIFMT_DSP_A: /* PCM no delay mode */
-		val = I2S_TXCR_TFS_PCM;
-		break;
-	case SND_SOC_DAIFMT_DSP_B: /* PCM delay 1 mode */
+	case SND_SOC_DAIFMT_DSP_A: /* PCM delay 1 bit mode */
 		val = I2S_TXCR_TFS_PCM | I2S_TXCR_PBM_MODE(1);
 		break;
+	case SND_SOC_DAIFMT_DSP_B: /* PCM no delay mode */
+		val = I2S_TXCR_TFS_PCM;
+		break;
 	default:
 		ret = -EINVAL;
 		goto err_pm_put;
@@ -283,12 +283,12 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 	case SND_SOC_DAIFMT_I2S:
 		val = I2S_RXCR_IBM_NORMAL;
 		break;
-	case SND_SOC_DAIFMT_DSP_A: /* PCM no delay mode */
-		val = I2S_RXCR_TFS_PCM;
-		break;
-	case SND_SOC_DAIFMT_DSP_B: /* PCM delay 1 mode */
+	case SND_SOC_DAIFMT_DSP_A: /* PCM delay 1 bit mode */
 		val = I2S_RXCR_TFS_PCM | I2S_RXCR_PBM_MODE(1);
 		break;
+	case SND_SOC_DAIFMT_DSP_B: /* PCM no delay mode */
+		val = I2S_RXCR_TFS_PCM;
+		break;
 	default:
 		ret = -EINVAL;
 		goto err_pm_put;
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (7 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24  9:17 ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture Sugar Zhang
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

- 'rockchip,playback-only': support playback only.
- 'rockchip,capture-only': support capture only.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 15e2690..90580dc 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -720,6 +720,11 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 			soc_dai->capture.channels_max = val;
 	}
 
+	if (of_property_read_bool(node, "rockchip,playback-only"))
+		soc_dai->capture.channels_min = 0;
+	else if (of_property_read_bool(node, "rockchip,capture-only"))
+		soc_dai->playback.channels_min = 0;
+
 	ret = devm_snd_soc_register_component(&pdev->dev,
 					      &rockchip_i2s_component,
 					      soc_dai, 1);
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (8 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability Sugar Zhang
@ 2021-08-24  9:17 ` Sugar Zhang
  2021-08-24 17:06   ` Rob Herring
  2021-08-24  9:18 ` [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs Sugar Zhang
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:17 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch documents property for playback-only and capture-only.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
index 9f9cc48..005b6e6 100644
--- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
+++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
@@ -81,6 +81,16 @@ properties:
     description:
       Max playback channels, if not set, 8 channels default.
 
+  rockchip,capture-only:
+    type: boolean
+    description:
+      Specify that the controller has capture only capability.
+
+  rockchip,playback-only:
+    type: boolean
+    description:
+      Specify that the controller has playback only capability.
+
   rockchip,grf:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (9 preceding siblings ...)
  2021-08-24  9:17 ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture Sugar Zhang
@ 2021-08-24  9:18 ` Sugar Zhang
  2021-08-24  9:18 ` [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings " Sugar Zhang
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:18 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch adds more compatible strings for SoCs.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 90580dc..8898ba4 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -613,10 +613,20 @@ static const struct rk_i2s_pins rk3399_i2s_pins = {
 };
 
 static const struct of_device_id rockchip_i2s_match[] __maybe_unused = {
+	{ .compatible = "rockchip,px30-i2s", },
+	{ .compatible = "rockchip,rk1808-i2s", },
+	{ .compatible = "rockchip,rk3036-i2s", },
 	{ .compatible = "rockchip,rk3066-i2s", },
+	{ .compatible = "rockchip,rk3128-i2s", },
 	{ .compatible = "rockchip,rk3188-i2s", },
+	{ .compatible = "rockchip,rk3228-i2s", },
 	{ .compatible = "rockchip,rk3288-i2s", },
+	{ .compatible = "rockchip,rk3308-i2s", },
+	{ .compatible = "rockchip,rk3328-i2s", },
+	{ .compatible = "rockchip,rk3366-i2s", },
+	{ .compatible = "rockchip,rk3368-i2s", },
 	{ .compatible = "rockchip,rk3399-i2s", .data = &rk3399_i2s_pins },
+	{ .compatible = "rockchip,rv1126-i2s", },
 	{},
 };
 
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (10 preceding siblings ...)
  2021-08-24  9:18 ` [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs Sugar Zhang
@ 2021-08-24  9:18 ` Sugar Zhang
  2021-08-24 17:07   ` Rob Herring
  2021-08-24  9:18 ` [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion Sugar Zhang
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:18 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch adds compatible strings for more SoCs.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
index 005b6e6..11e911a 100644
--- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
+++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
@@ -20,7 +20,9 @@ properties:
       - items:
           - enum:
               - rockchip,px30-i2s
+              - rockchip,rk1808-i2s
               - rockchip,rk3036-i2s
+              - rockchip,rk3128-i2s
               - rockchip,rk3188-i2s
               - rockchip,rk3228-i2s
               - rockchip,rk3288-i2s
@@ -29,6 +31,7 @@ properties:
               - rockchip,rk3366-i2s
               - rockchip,rk3368-i2s
               - rockchip,rk3399-i2s
+              - rockchip,rv1126-i2s
           - const: rockchip,rk3066-i2s
 
   reg:
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (11 preceding siblings ...)
  2021-08-24  9:18 ` [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings " Sugar Zhang
@ 2021-08-24  9:18 ` Sugar Zhang
  2021-08-24  9:18 ` [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property Sugar Zhang
  2021-08-24  9:18 ` [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM Sugar Zhang
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:18 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch adds support for frame inversion.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2: None

 sound/soc/rockchip/rockchip_i2s.c | 20 +++++++++++++++++---
 sound/soc/rockchip/rockchip_i2s.h | 10 ++++++----
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 8898ba4..84884ce 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -233,13 +233,27 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
 
 	regmap_update_bits(i2s->regmap, I2S_CKR, mask, val);
 
-	mask = I2S_CKR_CKP_MASK;
+	mask = I2S_CKR_CKP_MASK | I2S_CKR_TLP_MASK | I2S_CKR_RLP_MASK;
 	switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
 	case SND_SOC_DAIFMT_NB_NF:
-		val = I2S_CKR_CKP_NEG;
+		val = I2S_CKR_CKP_NORMAL |
+		      I2S_CKR_TLP_NORMAL |
+		      I2S_CKR_RLP_NORMAL;
+		break;
+	case SND_SOC_DAIFMT_NB_IF:
+		val = I2S_CKR_CKP_NORMAL |
+		      I2S_CKR_TLP_INVERTED |
+		      I2S_CKR_RLP_INVERTED;
 		break;
 	case SND_SOC_DAIFMT_IB_NF:
-		val = I2S_CKR_CKP_POS;
+		val = I2S_CKR_CKP_INVERTED |
+		      I2S_CKR_TLP_NORMAL |
+		      I2S_CKR_RLP_NORMAL;
+		break;
+	case SND_SOC_DAIFMT_IB_IF:
+		val = I2S_CKR_CKP_INVERTED |
+		      I2S_CKR_TLP_INVERTED |
+		      I2S_CKR_RLP_INVERTED;
 		break;
 	default:
 		ret = -EINVAL;
diff --git a/sound/soc/rockchip/rockchip_i2s.h b/sound/soc/rockchip/rockchip_i2s.h
index fcaae24..251851b 100644
--- a/sound/soc/rockchip/rockchip_i2s.h
+++ b/sound/soc/rockchip/rockchip_i2s.h
@@ -88,15 +88,17 @@
 #define I2S_CKR_MSS_SLAVE	(1 << I2S_CKR_MSS_SHIFT)
 #define I2S_CKR_MSS_MASK	(1 << I2S_CKR_MSS_SHIFT)
 #define I2S_CKR_CKP_SHIFT	26
-#define I2S_CKR_CKP_NEG		(0 << I2S_CKR_CKP_SHIFT)
-#define I2S_CKR_CKP_POS		(1 << I2S_CKR_CKP_SHIFT)
+#define I2S_CKR_CKP_NORMAL	(0 << I2S_CKR_CKP_SHIFT)
+#define I2S_CKR_CKP_INVERTED	(1 << I2S_CKR_CKP_SHIFT)
 #define I2S_CKR_CKP_MASK	(1 << I2S_CKR_CKP_SHIFT)
 #define I2S_CKR_RLP_SHIFT	25
 #define I2S_CKR_RLP_NORMAL	(0 << I2S_CKR_RLP_SHIFT)
-#define I2S_CKR_RLP_OPPSITE	(1 << I2S_CKR_RLP_SHIFT)
+#define I2S_CKR_RLP_INVERTED	(1 << I2S_CKR_RLP_SHIFT)
+#define I2S_CKR_RLP_MASK	(1 << I2S_CKR_RLP_SHIFT)
 #define I2S_CKR_TLP_SHIFT	24
 #define I2S_CKR_TLP_NORMAL	(0 << I2S_CKR_TLP_SHIFT)
-#define I2S_CKR_TLP_OPPSITE	(1 << I2S_CKR_TLP_SHIFT)
+#define I2S_CKR_TLP_INVERTED	(1 << I2S_CKR_TLP_SHIFT)
+#define I2S_CKR_TLP_MASK	(1 << I2S_CKR_TLP_SHIFT)
 #define I2S_CKR_MDIV_SHIFT	16
 #define I2S_CKR_MDIV(x)		((x - 1) << I2S_CKR_MDIV_SHIFT)
 #define I2S_CKR_MDIV_MASK	(0xff << I2S_CKR_MDIV_SHIFT)
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (12 preceding siblings ...)
  2021-08-24  9:18 ` [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion Sugar Zhang
@ 2021-08-24  9:18 ` Sugar Zhang
  2021-08-24  9:18 ` [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM Sugar Zhang
  14 siblings, 0 replies; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:18 UTC (permalink / raw)
  To: broonie, heiko
  Cc: linux-rockchip, devicetree, alsa-devel, Xing Zheng, Sugar Zhang

From: Xing Zheng <zhengxing@rock-chips.com>

If there is only one lrck (tx or rx) by hardware, we need to
use 'rockchip,trcm-sync-tx-only/rx-only' to specify which lrck
can be used.

Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2:
- split property trcm into single 'trcm-sync-tx-only' and
  'trcm-sync-rx-only' suggested by Nicolas.

 sound/soc/rockchip/rockchip_i2s.c | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 84884ce..cd9e069 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -25,6 +25,10 @@
 
 #define DRV_NAME "rockchip-i2s"
 
+#define TRCM_TXRX	0
+#define TRCM_TX		1
+#define TRCM_RX		2
+
 struct rk_i2s_pins {
 	u32 reg_offset;
 	u32 shift;
@@ -321,7 +325,6 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
 				  struct snd_soc_dai *dai)
 {
 	struct rk_i2s_dev *i2s = to_info(dai);
-	struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
 	unsigned int val = 0;
 	unsigned int mclk_rate, bclk_rate, div_bclk, div_lrck;
 
@@ -421,13 +424,6 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
 	regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK,
 			   I2S_DMACR_RDL(16));
 
-	val = I2S_CKR_TRCM_TXRX;
-	if (dai->driver->symmetric_rate && rtd->dai_link->symmetric_rate)
-		val = I2S_CKR_TRCM_TXONLY;
-
-	regmap_update_bits(i2s->regmap, I2S_CKR,
-			   I2S_CKR_TRCM_MASK,
-			   val);
 	return 0;
 }
 
@@ -531,7 +527,6 @@ static struct snd_soc_dai_driver rockchip_i2s_dai = {
 			    SNDRV_PCM_FMTBIT_S32_LE),
 	},
 	.ops = &rockchip_i2s_dai_ops,
-	.symmetric_rate = 1,
 };
 
 static const struct snd_soc_component_driver rockchip_i2s_component = {
@@ -652,6 +647,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 	struct snd_soc_dai_driver *soc_dai;
 	struct resource *res;
 	void __iomem *regs;
+	unsigned int clk_trcm;
 	int ret;
 	int val;
 
@@ -749,6 +745,22 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
 	else if (of_property_read_bool(node, "rockchip,capture-only"))
 		soc_dai->playback.channels_min = 0;
 
+	clk_trcm = TRCM_TXRX;
+	if (of_property_read_bool(node, "rockchip,trcm-sync-tx-only"))
+		clk_trcm = TRCM_TX;
+	if (of_property_read_bool(node, "rockchip,trcm-sync-rx-only")) {
+		if (clk_trcm) {
+			dev_err(i2s->dev, "invalid trcm-sync configuration\n");
+			return -EINVAL;
+		}
+		clk_trcm = TRCM_RX;
+	}
+	if (clk_trcm != TRCM_TXRX)
+		soc_dai->symmetric_rate = 1;
+
+	regmap_update_bits(i2s->regmap, I2S_CKR,
+			   I2S_CKR_TRCM_MASK, I2S_CKR_TRCM(clk_trcm));
+
 	ret = devm_snd_soc_register_component(&pdev->dev,
 					      &rockchip_i2s_component,
 					      soc_dai, 1);
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
  2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
                   ` (13 preceding siblings ...)
  2021-08-24  9:18 ` [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property Sugar Zhang
@ 2021-08-24  9:18 ` Sugar Zhang
  2021-08-24 17:08   ` Rob Herring
  14 siblings, 1 reply; 21+ messages in thread
From: Sugar Zhang @ 2021-08-24  9:18 UTC (permalink / raw)
  To: broonie, heiko; +Cc: linux-rockchip, devicetree, alsa-devel, Sugar Zhang

This patch documents property 'rockchip,trcm-sync-tx-only/rx-only'
which is used to specify the lrck.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
---

Changes in v2:
- split property trcm into single 'trcm-sync-tx-only' and
  'trcm-sync-rx-only' suggested by Nicolas.
- drop change-id

 Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
index 11e911a..20f3237 100644
--- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
+++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
@@ -101,6 +101,14 @@ properties:
       Required property for controllers which support multi channel
       playback/capture.
 
+  rockchip,trcm-sync-tx-only:
+    type: boolean
+    description: Use TX LRCK for both TX and RX.
+
+  rockchip,trcm-sync-rx-only:
+    type: boolean
+    description: Use RX LRCK for both TX and RX.
+
   "#sound-dai-cells":
     const: 0
 
-- 
2.7.4




^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
  2021-08-24  9:17 ` [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s Sugar Zhang
@ 2021-08-24 17:01   ` Rob Herring
  0 siblings, 0 replies; 21+ messages in thread
From: Rob Herring @ 2021-08-24 17:01 UTC (permalink / raw)
  To: Sugar Zhang; +Cc: alsa-devel, broonie, heiko, devicetree, linux-rockchip

On Tue, 24 Aug 2021 17:17:54 +0800, Sugar Zhang wrote:
> This patch documents reset property for i2s.
> 
> Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
> ---
> 
> Changes in v2: None
> 
>  Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
  2021-08-24  9:17 ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture Sugar Zhang
@ 2021-08-24 17:06   ` Rob Herring
  2021-08-25  9:30     ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture【请注意,邮件由robherring2@gmail.com代发】 sugar zhang
  0 siblings, 1 reply; 21+ messages in thread
From: Rob Herring @ 2021-08-24 17:06 UTC (permalink / raw)
  To: Sugar Zhang; +Cc: broonie, heiko, linux-rockchip, devicetree, alsa-devel

On Tue, Aug 24, 2021 at 05:17:57PM +0800, Sugar Zhang wrote:
> This patch documents property for playback-only and capture-only.
> 
> Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
> ---
> 
> Changes in v2: None
> 
>  Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
> index 9f9cc48..005b6e6 100644
> --- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
> +++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
> @@ -81,6 +81,16 @@ properties:
>      description:
>        Max playback channels, if not set, 8 channels default.
>  
> +  rockchip,capture-only:
> +    type: boolean
> +    description:
> +      Specify that the controller has capture only capability.
> +
> +  rockchip,playback-only:
> +    type: boolean
> +    description:
> +      Specify that the controller has playback only capability.

In the Rockchip TDM-I2S binding[1], these were dropped. Perhaps comment 
there why they are needed.

Rob

[1] https://lore.kernel.org/lkml/20210820182731.29370-1-frattaroli.nicolas@gmail.com/

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
  2021-08-24  9:18 ` [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings " Sugar Zhang
@ 2021-08-24 17:07   ` Rob Herring
  0 siblings, 0 replies; 21+ messages in thread
From: Rob Herring @ 2021-08-24 17:07 UTC (permalink / raw)
  To: Sugar Zhang; +Cc: heiko, alsa-devel, devicetree, broonie, linux-rockchip

On Tue, 24 Aug 2021 17:18:51 +0800, Sugar Zhang wrote:
> This patch adds compatible strings for more SoCs.
> 
> Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
> ---
> 
> Changes in v2: None
> 
>  Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 3 +++
>  1 file changed, 3 insertions(+)
> 

Acked-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
  2021-08-24  9:18 ` [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM Sugar Zhang
@ 2021-08-24 17:08   ` Rob Herring
  0 siblings, 0 replies; 21+ messages in thread
From: Rob Herring @ 2021-08-24 17:08 UTC (permalink / raw)
  To: Sugar Zhang; +Cc: broonie, heiko, devicetree, linux-rockchip, alsa-devel

On Tue, 24 Aug 2021 17:18:54 +0800, Sugar Zhang wrote:
> This patch documents property 'rockchip,trcm-sync-tx-only/rx-only'
> which is used to specify the lrck.
> 
> Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
> ---
> 
> Changes in v2:
> - split property trcm into single 'trcm-sync-tx-only' and
>   'trcm-sync-rx-only' suggested by Nicolas.
> - drop change-id
> 
>  Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture【请注意,邮件由robherring2@gmail.com代发】
  2021-08-24 17:06   ` Rob Herring
@ 2021-08-25  9:30     ` sugar zhang
  0 siblings, 0 replies; 21+ messages in thread
From: sugar zhang @ 2021-08-25  9:30 UTC (permalink / raw)
  To: Rob Herring; +Cc: broonie, heiko, linux-rockchip, devicetree, alsa-devel

Hi Rob,

On 2021/8/25 1:06, Rob Herring wrote:
> On Tue, Aug 24, 2021 at 05:17:57PM +0800, Sugar Zhang wrote:
>> This patch documents property for playback-only and capture-only.
>>
>> Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
>> ---
>>
>> Changes in v2: None
>>
>>   Documentation/devicetree/bindings/sound/rockchip-i2s.yaml | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
>> index 9f9cc48..005b6e6 100644
>> --- a/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
>> +++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.yaml
>> @@ -81,6 +81,16 @@ properties:
>>       description:
>>         Max playback channels, if not set, 8 channels default.
>>   
>> +  rockchip,capture-only:
>> +    type: boolean
>> +    description:
>> +      Specify that the controller has capture only capability.
>> +
>> +  rockchip,playback-only:
>> +    type: boolean
>> +    description:
>> +      Specify that the controller has playback only capability.
> In the Rockchip TDM-I2S binding[1], these were dropped. Perhaps comment
> there why they are needed.

It was used to specify the controller capatiblity, some controller has 
capture or playback only.

maybe we can implement it by judge property 'dma-names'.  such as:

of_property_for_each_string(np, "dma-names", dma_names, name)

if (!strcmp(name, "tx"))

     has capture capability...

if (!strcmp(name, "rx"))

     has capture capability...

will do in v3.

>
> Rob
>
> [1] https://lore.kernel.org/lkml/20210820182731.29370-1-frattaroli.nicolas@gmail.com/
>
>
>
-- 
Best Regards!
张学广/Sugar
瑞芯微电子股份有限公司
Rockchip Electronics Co., Ltd.




^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2021-08-25  9:30 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-24  9:16 [PATCH v2 0/15] Patches to update for rockchip i2s Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s Sugar Zhang
2021-08-24 17:01   ` Rob Herring
2021-08-24  9:17 ` [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability Sugar Zhang
2021-08-24  9:17 ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture Sugar Zhang
2021-08-24 17:06   ` Rob Herring
2021-08-25  9:30     ` [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture【请注意,邮件由robherring2@gmail.com代发】 sugar zhang
2021-08-24  9:18 ` [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs Sugar Zhang
2021-08-24  9:18 ` [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings " Sugar Zhang
2021-08-24 17:07   ` Rob Herring
2021-08-24  9:18 ` [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion Sugar Zhang
2021-08-24  9:18 ` [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property Sugar Zhang
2021-08-24  9:18 ` [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM Sugar Zhang
2021-08-24 17:08   ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).