* [PATCH v2 0/15] Patches to update for rockchip i2s
@ 2021-08-24 9:16 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 0/15] Patches to update for rockchip i2s
@ 2021-08-24 9:16 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* [PATCH v2 0/15] Patches to update for rockchip i2s
@ 2021-08-24 9:16 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:16 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 01/15] ASoC: rockchip: i2s: Add support for set bclk ratio
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 02/15] ASoC: rockchip: i2s: Fixup clk div error
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 03/15] ASoC: rockchip: i2s: Improve dma data transfer efficiency
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 04/15] ASoC: rockchip: i2s: Fix regmap_ops hang
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 05/15] ASoC: rockchip: i2s: Fix concurrency between tx/rx
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 06/15] ASoC: rockchip: i2s: Reset the controller if soft reset failed
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 08/15] ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko
Cc: Sugar Zhang, linux-rockchip, alsa-devel, Xiaotan Luo, devicetree
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] 63+ messages in thread
* [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 09/15] ASoC: rockchip: i2s: Add property to specify play/cap capability
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
- '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] 63+ messages in thread
* [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:17 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
@ 2021-08-24 9:17 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:17 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:18 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 11/15] ASoC: rockchip: i2s: Add compatible for more SoCs
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:18 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:18 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:18 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:18 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 13/15] ASoC: rockchip: i2s: Add support for frame inversion
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:18 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:18 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 14/15] ASoC: rockchip: i2s: Add support for TRCM property
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:18 UTC (permalink / raw)
To: broonie, heiko
Cc: Sugar Zhang, linux-rockchip, alsa-devel, Xing Zheng, devicetree
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] 63+ messages in thread
* [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
2021-08-24 9:16 ` Sugar Zhang
(?)
@ 2021-08-24 9:18 ` Sugar Zhang
-1 siblings, 0 replies; 63+ 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
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply related [flat|nested] 63+ messages in thread
* [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
@ 2021-08-24 9:18 ` Sugar Zhang
0 siblings, 0 replies; 63+ messages in thread
From: Sugar Zhang @ 2021-08-24 9:18 UTC (permalink / raw)
To: broonie, heiko; +Cc: Sugar Zhang, linux-rockchip, alsa-devel, devicetree
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] 63+ messages in thread
* Re: [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
2021-08-24 9:17 ` Sugar Zhang
(?)
@ 2021-08-24 17:01 ` Rob Herring
-1 siblings, 0 replies; 63+ 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>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
@ 2021-08-24 17:01 ` Rob Herring
0 siblings, 0 replies; 63+ messages in thread
From: Rob Herring @ 2021-08-24 17:01 UTC (permalink / raw)
To: Sugar Zhang; +Cc: devicetree, alsa-devel, broonie, heiko, 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] 63+ messages in thread
* Re: [PATCH v2 07/15] ASoC: dt-bindings: rockchip: Document reset property for i2s
@ 2021-08-24 17:01 ` Rob Herring
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
2021-08-24 9:17 ` Sugar Zhang
(?)
@ 2021-08-24 17:06 ` Rob Herring
-1 siblings, 0 replies; 63+ 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/
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
@ 2021-08-24 17:06 ` Rob Herring
0 siblings, 0 replies; 63+ messages in thread
From: Rob Herring @ 2021-08-24 17:06 UTC (permalink / raw)
To: Sugar Zhang; +Cc: linux-rockchip, alsa-devel, broonie, heiko, devicetree
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] 63+ messages in thread
* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture
@ 2021-08-24 17:06 ` Rob Herring
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* Re: [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
2021-08-24 9:18 ` Sugar Zhang
(?)
@ 2021-08-24 17:07 ` Rob Herring
-1 siblings, 0 replies; 63+ 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>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
@ 2021-08-24 17:07 ` Rob Herring
0 siblings, 0 replies; 63+ messages in thread
From: Rob Herring @ 2021-08-24 17:07 UTC (permalink / raw)
To: Sugar Zhang; +Cc: devicetree, alsa-devel, broonie, heiko, 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] 63+ messages in thread
* Re: [PATCH v2 12/15] ASoC: dt-bindings: rockchip: Add compatible strings for more SoCs
@ 2021-08-24 17:07 ` Rob Herring
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* Re: [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
2021-08-24 9:18 ` Sugar Zhang
(?)
@ 2021-08-24 17:08 ` Rob Herring
-1 siblings, 0 replies; 63+ 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>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
@ 2021-08-24 17:08 ` Rob Herring
0 siblings, 0 replies; 63+ 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] 63+ messages in thread
* Re: [PATCH v2 15/15] ASoC: dt-bindings: rockchip: i2s: Document property TRCM
@ 2021-08-24 17:08 ` Rob Herring
0 siblings, 0 replies; 63+ messages in thread
From: Rob Herring @ 2021-08-24 17:08 UTC (permalink / raw)
To: Sugar Zhang; +Cc: devicetree, alsa-devel, broonie, heiko, linux-rockchip
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] 63+ 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
-1 siblings, 0 replies; 63+ 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] 63+ messages in thread
* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture【请注意,邮件由robherring2@gmail.com代发】
@ 2021-08-25 9:30 ` sugar zhang
0 siblings, 0 replies; 63+ 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.
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
^ permalink raw reply [flat|nested] 63+ messages in thread
* Re: [PATCH v2 10/15] ASoC: dt-bindings: rockchip: i2s: Document property for playback/capture【请注意,邮件由robherring2@gmail.com代发】
@ 2021-08-25 9:30 ` sugar zhang
0 siblings, 0 replies; 63+ messages in thread
From: sugar zhang @ 2021-08-25 9:30 UTC (permalink / raw)
To: Rob Herring; +Cc: linux-rockchip, alsa-devel, broonie, heiko, devicetree
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] 63+ messages in thread
end of thread, other threads:[~2021-08-25 9:32 UTC | newest]
Thread overview: 63+ 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:16 ` Sugar Zhang
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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` Sugar Zhang
2021-08-24 9:17 ` Sugar Zhang
2021-08-24 17:01 ` Rob Herring
2021-08-24 17:01 ` Rob Herring
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 ` 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
2021-08-24 9:17 ` 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
2021-08-24 9:17 ` Sugar Zhang
2021-08-24 9:17 ` Sugar Zhang
2021-08-24 17:06 ` Rob Herring
2021-08-24 17:06 ` Rob Herring
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-25 9:30 ` sugar zhang
2021-08-25 9:30 ` 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 ` 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
2021-08-24 9:18 ` Sugar Zhang
2021-08-24 9:18 ` Sugar Zhang
2021-08-24 17:07 ` Rob Herring
2021-08-24 17:07 ` Rob Herring
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 ` 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 ` 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
2021-08-24 9:18 ` Sugar Zhang
2021-08-24 9:18 ` Sugar Zhang
2021-08-24 17:08 ` Rob Herring
2021-08-24 17:08 ` Rob Herring
2021-08-24 17:08 ` Rob Herring
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.