linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers
@ 2022-09-08 16:11 Nícolas F. R. A. Prado
  2022-09-08 16:11 ` [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Akihiko Odaki, Chunxu Li, Dan Carpenter, Jaroslav Kysela,
	Jiaxin Yu, Krzysztof Kozlowski, Liam Girdwood, Miaoqian Lin,
	Rikard Falkeborn, Rob Herring, Takashi Iwai, Tzung-Bi Shih,
	alsa-devel, devicetree, linux-arm-kernel, linux-kernel,
	linux-mediatek


The i2s ports on MediaTek SoCs only support a single data lane. In order
to achieve full-duplex operation thus two i2s ports, one for input and
one for output, need to be used together and sharing a single clock from
one of the ports.

This clock sharing setting was previously read by the sound platform
driver from the devicetree, but given that the input/output pairing is
closely related to which codecs are connected to which ports, the
machine sound driver can infer and set it, so that no DT property is
required.

At this point only mt8183-kukui was using the DT property, but given
that this property was never documented, and that the API introduced in
this series makes it obsolete, the undocumented DT property can safely
be removed.

This series adds a function to allow setting the i2s shared clocks,
makes use of it in the machine drivers as required, and removes the no
longer required DT properties and support for them in the drivers, for
all of mt8192, mt8183 and mt8186.


Nícolas F. R. A. Prado (10):
  ASoC: mediatek: mt8192: Allow setting shared clocks from machine
    driver
  ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
  ASoC: mediatek: mt8192: Remove clock share parsing from DT
  ASoC: mediatek: mt8183: Allow setting shared clocks from machine
    driver
  ASoC: mediatek: mt8183: Configure shared clocks
  ASoC: mediatek: mt8183: Remove clock share parsing from DT
  arm64: dts: mediatek: kukui: Remove i2s-share properties
  ASoC: mediatek: mt8186: Allow setting shared clocks from machine
    driver
  ASoC: mediatek: mt8186: Configure shared clocks
  ASoC: mediatek: mt8186: Remove clock share parsing from DT

 .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |  5 --
 sound/soc/mediatek/mt8183/mt8183-afe-common.h |  3 ++
 .../mediatek/mt8183/mt8183-da7219-max98357.c  | 33 +++++++++++++
 sound/soc/mediatek/mt8183/mt8183-dai-i2s.c    | 45 ++++++++---------
 .../mt8183/mt8183-mt6358-ts3a227-max98357.c   | 33 +++++++++++++
 sound/soc/mediatek/mt8186/mt8186-afe-common.h |  3 ++
 sound/soc/mediatek/mt8186/mt8186-dai-i2s.c    | 44 ++++++++---------
 .../mt8186/mt8186-mt6366-da7219-max98357.c    | 18 +++++++
 .../mt8186/mt8186-mt6366-rt1019-rt5682s.c     | 18 +++++++
 sound/soc/mediatek/mt8192/mt8192-afe-common.h |  3 ++
 sound/soc/mediatek/mt8192/mt8192-dai-i2s.c    | 49 ++++++++-----------
 .../mt8192/mt8192-mt6359-rt1015-rt5682.c      |  9 ++++
 12 files changed, 180 insertions(+), 83 deletions(-)

-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8 Nícolas F. R. A. Prado
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Add a new function to configure the shared clock between two i2s ports,
and export it. This will allow the clock sharing to be set from the
machine driver instead of the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---

 sound/soc/mediatek/mt8192/mt8192-afe-common.h |  3 +++
 sound/soc/mediatek/mt8192/mt8192-dai-i2s.c    | 26 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/sound/soc/mediatek/mt8192/mt8192-afe-common.h b/sound/soc/mediatek/mt8192/mt8192-afe-common.h
index d55eff46cc7f..ad461dcb6ee1 100644
--- a/sound/soc/mediatek/mt8192/mt8192-afe-common.h
+++ b/sound/soc/mediatek/mt8192/mt8192-afe-common.h
@@ -159,6 +159,9 @@ int mt8192_dai_src_register(struct mtk_base_afe *afe);
 int mt8192_dai_pcm_register(struct mtk_base_afe *afe);
 int mt8192_dai_tdm_register(struct mtk_base_afe *afe);
 
+int mt8192_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name);
+
 unsigned int mt8192_general_rate_transform(struct device *dev,
 					   unsigned int rate);
 unsigned int mt8192_rate_transform(struct device *dev,
diff --git a/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c b/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
index 5b29340f9516..630ed7261fc3 100644
--- a/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
+++ b/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
@@ -2057,6 +2057,32 @@ static int mt8192_dai_i2s_get_share(struct mtk_base_afe *afe)
 	return 0;
 }
 
+/**
+ * mt8192_dai_i2s_set_share() - Set up I2S ports to share a single clock.
+ * @afe: Pointer to &struct mtk_base_afe
+ * @main_i2s_name: The name of the I2S port that will provide the clock
+ * @secondary_i2s_name: The name of the I2S port that will use this clock
+ */
+int mt8192_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name)
+{
+	struct mtk_afe_i2s_priv *secondary_i2s_priv;
+	int main_i2s_id;
+
+	secondary_i2s_priv = get_i2s_priv_by_name(afe, secondary_i2s_name);
+	if (!secondary_i2s_priv)
+		return -EINVAL;
+
+	main_i2s_id = get_i2s_id_by_name(afe, main_i2s_name);
+	if (main_i2s_id < 0)
+		return main_i2s_id;
+
+	secondary_i2s_priv->share_i2s_id = main_i2s_id;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(mt8192_dai_i2s_set_share);
+
 static int mt8192_dai_i2s_set_priv(struct mtk_base_afe *afe)
 {
 	int i;
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
  2022-09-08 16:11 ` [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT Nícolas F. R. A. Prado
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Akihiko Odaki, Jaroslav Kysela, Jiaxin Yu, Liam Girdwood,
	Miaoqian Lin, Takashi Iwai, Tzung-Bi Shih, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Both i2s8 and i2s9 are connected to the rt5682 codec and should share
the same clock to work in a full-duplex manner. Set the clock sharing
during the initialization for rt5682.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
index d0f9d66627b1..044d6ab71f0a 100644
--- a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
+++ b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c
@@ -311,12 +311,21 @@ static int mt8192_mt6359_init(struct snd_soc_pcm_runtime *rtd)
 
 static int mt8192_rt5682_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
 	struct snd_soc_component *cmpnt_codec =
 		asoc_rtd_to_codec(rtd, 0)->component;
 	struct mt8192_mt6359_priv *priv = snd_soc_card_get_drvdata(rtd->card);
 	struct snd_soc_jack *jack = &priv->headset_jack;
 	int ret;
 
+	ret = mt8192_dai_i2s_set_share(afe, "I2S8", "I2S9");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+
 	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
 				    SND_JACK_BTN_1 | SND_JACK_BTN_2 |
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
  2022-09-08 16:11 ` [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
  2022-09-08 16:11 ` [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8 Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Now that the clock sharing for i2s ports can be configured from the
sound machine driver, remove the logic that was used to parse the
properties from the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8192/mt8192-dai-i2s.c | 35 ----------------------
 1 file changed, 35 deletions(-)

diff --git a/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c b/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
index 630ed7261fc3..ea516d63d94d 100644
--- a/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
+++ b/sound/soc/mediatek/mt8192/mt8192-dai-i2s.c
@@ -45,7 +45,6 @@ struct mtk_afe_i2s_priv {
 	int rate; /* for determine which apll to use */
 	int low_jitter_en;
 
-	const char *share_property_name;
 	int share_i2s_id;
 
 	int mclk_id;
@@ -1984,79 +1983,50 @@ static const struct mtk_afe_i2s_priv mt8192_i2s_priv[DAI_I2S_NUM] = {
 	[DAI_I2S0] = {
 		.id = MT8192_DAI_I2S_0,
 		.mclk_id = MT8192_I2S0_MCK,
-		.share_property_name = "i2s0-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S1] = {
 		.id = MT8192_DAI_I2S_1,
 		.mclk_id = MT8192_I2S1_MCK,
-		.share_property_name = "i2s1-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S2] = {
 		.id = MT8192_DAI_I2S_2,
 		.mclk_id = MT8192_I2S2_MCK,
-		.share_property_name = "i2s2-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S3] = {
 		.id = MT8192_DAI_I2S_3,
 		.mclk_id = MT8192_I2S3_MCK,
-		.share_property_name = "i2s3-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S5] = {
 		.id = MT8192_DAI_I2S_5,
 		.mclk_id = MT8192_I2S5_MCK,
-		.share_property_name = "i2s5-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S6] = {
 		.id = MT8192_DAI_I2S_6,
 		.mclk_id = MT8192_I2S6_MCK,
-		.share_property_name = "i2s6-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S7] = {
 		.id = MT8192_DAI_I2S_7,
 		.mclk_id = MT8192_I2S7_MCK,
-		.share_property_name = "i2s7-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S8] = {
 		.id = MT8192_DAI_I2S_8,
 		.mclk_id = MT8192_I2S8_MCK,
-		.share_property_name = "i2s8-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S9] = {
 		.id = MT8192_DAI_I2S_9,
 		.mclk_id = MT8192_I2S9_MCK,
-		.share_property_name = "i2s9-share",
 		.share_i2s_id = -1,
 	},
 };
 
-static int mt8192_dai_i2s_get_share(struct mtk_base_afe *afe)
-{
-	struct mt8192_afe_private *afe_priv = afe->platform_priv;
-	const struct device_node *of_node = afe->dev->of_node;
-	const char *of_str;
-	const char *property_name;
-	struct mtk_afe_i2s_priv *i2s_priv;
-	int i;
-
-	for (i = 0; i < DAI_I2S_NUM; i++) {
-		i2s_priv = afe_priv->dai_priv[mt8192_i2s_priv[i].id];
-		property_name = mt8192_i2s_priv[i].share_property_name;
-		if (of_property_read_string(of_node, property_name, &of_str))
-			continue;
-		i2s_priv->share_i2s_id = get_i2s_id_by_name(afe, of_str);
-	}
-
-	return 0;
-}
-
 /**
  * mt8192_dai_i2s_set_share() - Set up I2S ports to share a single clock.
  * @afe: Pointer to &struct mtk_base_afe
@@ -2127,10 +2097,5 @@ int mt8192_dai_i2s_register(struct mtk_base_afe *afe)
 	if (ret)
 		return ret;
 
-	/* parse share i2s */
-	ret = mt8192_dai_i2s_get_share(afe);
-	if (ret)
-		return ret;
-
 	return 0;
 }
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (2 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks Nícolas F. R. A. Prado
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Add a new function to configure the shared clock between two i2s ports,
and export it. This will allow the clock sharing to be set from the
machine driver instead of the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8183/mt8183-afe-common.h |  3 +++
 sound/soc/mediatek/mt8183/mt8183-dai-i2s.c    | 26 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-common.h b/sound/soc/mediatek/mt8183/mt8183-afe-common.h
index b220e7a7db7e..40ab48c1566c 100644
--- a/sound/soc/mediatek/mt8183/mt8183-afe-common.h
+++ b/sound/soc/mediatek/mt8183/mt8183-afe-common.h
@@ -99,6 +99,9 @@ unsigned int mt8183_general_rate_transform(struct device *dev,
 unsigned int mt8183_rate_transform(struct device *dev,
 				   unsigned int rate, int aud_blk);
 
+int mt8183_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name);
+
 /* dai register */
 int mt8183_dai_adda_register(struct mtk_base_afe *afe);
 int mt8183_dai_pcm_register(struct mtk_base_afe *afe);
diff --git a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
index 138591d71ebd..8902ff608d26 100644
--- a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
+++ b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
@@ -1026,6 +1026,32 @@ static int mt8183_dai_i2s_get_share(struct mtk_base_afe *afe)
 	return 0;
 }
 
+/**
+ * mt8183_dai_i2s_set_share() - Set up I2S ports to share a single clock.
+ * @afe: Pointer to &struct mtk_base_afe
+ * @main_i2s_name: The name of the I2S port that will provide the clock
+ * @secondary_i2s_name: The name of the I2S port that will use this clock
+ */
+int mt8183_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name)
+{
+	struct mtk_afe_i2s_priv *secondary_i2s_priv;
+	int main_i2s_id;
+
+	secondary_i2s_priv = get_i2s_priv_by_name(afe, secondary_i2s_name);
+	if (!secondary_i2s_priv)
+		return -EINVAL;
+
+	main_i2s_id = get_i2s_id_by_name(afe, main_i2s_name);
+	if (main_i2s_id < 0)
+		return main_i2s_id;
+
+	secondary_i2s_priv->share_i2s_id = main_i2s_id;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(mt8183_dai_i2s_set_share);
+
 static int mt8183_dai_i2s_set_priv(struct mtk_base_afe *afe)
 {
 	struct mt8183_afe_private *afe_priv = afe->platform_priv;
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (3 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT Nícolas F. R. A. Prado
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Akihiko Odaki, Jaroslav Kysela, Jiaxin Yu, Liam Girdwood,
	Miaoqian Lin, Rikard Falkeborn, Takashi Iwai, Tzung-Bi Shih,
	alsa-devel, linux-arm-kernel, linux-kernel, linux-mediatek

i2s0 and i2s5 are paired input/output connected to the same codec and
should share the same clock. Likewise for i2s2 and i2s3. Set the clock
sharing for each pair during the DAI initialization.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 .../mediatek/mt8183/mt8183-da7219-max98357.c  | 33 +++++++++++++++++++
 .../mt8183/mt8183-mt6358-ts3a227-max98357.c   | 33 +++++++++++++++++++
 2 files changed, 66 insertions(+)

diff --git a/sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c b/sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c
index b33cc9a73ed1..9f22d3939818 100644
--- a/sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c
+++ b/sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c
@@ -17,6 +17,7 @@
 #include "../../codecs/da7219-aad.h"
 #include "../../codecs/da7219.h"
 #include "../../codecs/rt1015.h"
+#include "../common/mtk-afe-platform-driver.h"
 #include "mt8183-afe-common.h"
 
 #define DA7219_CODEC_DAI "da7219-hifi"
@@ -372,6 +373,36 @@ static int mt8183_da7219_max98357_hdmi_init(struct snd_soc_pcm_runtime *rtd)
 					  &priv->hdmi_jack, NULL);
 }
 
+static int mt8183_bt_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
+	int ret;
+
+	ret = mt8183_dai_i2s_set_share(afe, "I2S5", "I2S0");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+	return 0;
+}
+
+static int mt8183_da7219_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
+	int ret;
+
+	ret = mt8183_dai_i2s_set_share(afe, "I2S2", "I2S3");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+	return 0;
+}
+
 static struct snd_soc_dai_link mt8183_da7219_dai_links[] = {
 	/* FE */
 	{
@@ -500,6 +531,7 @@ static struct snd_soc_dai_link mt8183_da7219_dai_links[] = {
 		.ignore_suspend = 1,
 		.be_hw_params_fixup = mt8183_i2s_hw_params_fixup,
 		.ops = &mt8183_da7219_i2s_ops,
+		.init = &mt8183_da7219_init,
 		SND_SOC_DAILINK_REG(i2s2),
 	},
 	{
@@ -515,6 +547,7 @@ static struct snd_soc_dai_link mt8183_da7219_dai_links[] = {
 		.ignore_suspend = 1,
 		.be_hw_params_fixup = mt8183_i2s_hw_params_fixup,
 		.ops = &mt8183_mt6358_i2s_ops,
+		.init = &mt8183_bt_init,
 		SND_SOC_DAILINK_REG(i2s5),
 	},
 	{
diff --git a/sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c b/sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c
index ab157db78335..a86085223677 100644
--- a/sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c
+++ b/sound/soc/mediatek/mt8183/mt8183-mt6358-ts3a227-max98357.c
@@ -15,6 +15,7 @@
 
 #include "../../codecs/rt1015.h"
 #include "../../codecs/ts3a227e.h"
+#include "../common/mtk-afe-platform-driver.h"
 #include "mt8183-afe-common.h"
 
 #define RT1015_CODEC_DAI "rt1015-aif"
@@ -391,6 +392,36 @@ mt8183_mt6358_ts3a227_max98357_hdmi_init(struct snd_soc_pcm_runtime *rtd)
 					  &priv->hdmi_jack, NULL);
 }
 
+static int mt8183_bt_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
+	int ret;
+
+	ret = mt8183_dai_i2s_set_share(afe, "I2S5", "I2S0");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+	return 0;
+}
+
+static int mt8183_i2s2_init(struct snd_soc_pcm_runtime *rtd)
+{
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
+	int ret;
+
+	ret = mt8183_dai_i2s_set_share(afe, "I2S2", "I2S3");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+	return 0;
+}
+
 static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = {
 	/* FE */
 	{
@@ -527,6 +558,7 @@ static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = {
 		.ignore_suspend = 1,
 		.be_hw_params_fixup = mt8183_i2s_hw_params_fixup,
 		.ops = &mt8183_mt6358_i2s_ops,
+		.init = &mt8183_i2s2_init,
 		SND_SOC_DAILINK_REG(i2s2),
 	},
 	{
@@ -541,6 +573,7 @@ static struct snd_soc_dai_link mt8183_mt6358_ts3a227_dai_links[] = {
 		.dpcm_playback = 1,
 		.ignore_suspend = 1,
 		.ops = &mt8183_mt6358_i2s_ops,
+		.init = &mt8183_bt_init,
 		SND_SOC_DAILINK_REG(i2s5),
 	},
 	{
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (4 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties Nícolas F. R. A. Prado
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Now that the clock sharing for i2s ports can be configured from the
sound machine driver, remove the logic that was used to parse the
properties from the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8183/mt8183-dai-i2s.c | 31 ----------------------
 1 file changed, 31 deletions(-)

diff --git a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
index 8902ff608d26..6a9ace4180d3 100644
--- a/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
+++ b/sound/soc/mediatek/mt8183/mt8183-dai-i2s.c
@@ -43,7 +43,6 @@ struct mtk_afe_i2s_priv {
 	int rate; /* for determine which apll to use */
 	int low_jitter_en;
 
-	const char *share_property_name;
 	int share_i2s_id;
 
 	int mclk_id;
@@ -977,55 +976,30 @@ static const struct mtk_afe_i2s_priv mt8183_i2s_priv[DAI_I2S_NUM] = {
 	[DAI_I2S0] = {
 		.id = MT8183_DAI_I2S_0,
 		.mclk_id = MT8183_I2S0_MCK,
-		.share_property_name = "i2s0-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S1] = {
 		.id = MT8183_DAI_I2S_1,
 		.mclk_id = MT8183_I2S1_MCK,
-		.share_property_name = "i2s1-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S2] = {
 		.id = MT8183_DAI_I2S_2,
 		.mclk_id = MT8183_I2S2_MCK,
-		.share_property_name = "i2s2-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S3] = {
 		.id = MT8183_DAI_I2S_3,
 		.mclk_id = MT8183_I2S3_MCK,
-		.share_property_name = "i2s3-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S5] = {
 		.id = MT8183_DAI_I2S_5,
 		.mclk_id = MT8183_I2S5_MCK,
-		.share_property_name = "i2s5-share",
 		.share_i2s_id = -1,
 	},
 };
 
-static int mt8183_dai_i2s_get_share(struct mtk_base_afe *afe)
-{
-	struct mt8183_afe_private *afe_priv = afe->platform_priv;
-	const struct device_node *of_node = afe->dev->of_node;
-	const char *of_str;
-	const char *property_name;
-	struct mtk_afe_i2s_priv *i2s_priv;
-	int i;
-
-	for (i = 0; i < DAI_I2S_NUM; i++) {
-		i2s_priv = afe_priv->dai_priv[mt8183_i2s_priv[i].id];
-		property_name = mt8183_i2s_priv[i].share_property_name;
-		if (of_property_read_string(of_node, property_name, &of_str))
-			continue;
-		i2s_priv->share_i2s_id = get_i2s_id_by_name(afe, of_str);
-	}
-
-	return 0;
-}
-
 /**
  * mt8183_dai_i2s_set_share() - Set up I2S ports to share a single clock.
  * @afe: Pointer to &struct mtk_base_afe
@@ -1100,10 +1074,5 @@ int mt8183_dai_i2s_register(struct mtk_base_afe *afe)
 	if (ret)
 		return ret;
 
-	/* parse share i2s */
-	ret = mt8183_dai_i2s_get_share(afe);
-	if (ret)
-		return ret;
-
 	return 0;
 }
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (5 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-11-08 12:43   ` Matthias Brugger
  2022-09-08 16:11 ` [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
                   ` (4 subsequent siblings)
  11 siblings, 2 replies; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Krzysztof Kozlowski, Rob Herring, devicetree, linux-arm-kernel,
	linux-kernel, linux-mediatek

The i2sN-share properties were never documented in the dt-binding and
thus shouldn't be used. Now that the ASoC machine drivers are setting
the I2S clock sharing internally, these properties are no longer needed,
so remove them.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
index b4b86bb1f1a7..42191b3025a9 100644
--- a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
@@ -221,11 +221,6 @@ tboard_thermistor2: thermal-sensor2 {
 	};
 };
 
-&afe {
-	i2s3-share = "I2S2";
-	i2s0-share = "I2S5";
-};
-
 &auxadc {
 	status = "okay";
 };
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (6 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks Nícolas F. R. A. Prado
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Chunxu Li, Dan Carpenter, Jaroslav Kysela, Jiaxin Yu,
	Liam Girdwood, Takashi Iwai, alsa-devel, linux-arm-kernel,
	linux-kernel, linux-mediatek

Add a new function to configure the shared clock between two i2s ports,
and export it. This will allow the clock sharing to be set from the
machine driver instead of the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8186/mt8186-afe-common.h |  3 +++
 sound/soc/mediatek/mt8186/mt8186-dai-i2s.c    | 26 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/sound/soc/mediatek/mt8186/mt8186-afe-common.h b/sound/soc/mediatek/mt8186/mt8186-afe-common.h
index b8f03e1b7e49..d59258520995 100644
--- a/sound/soc/mediatek/mt8186/mt8186-afe-common.h
+++ b/sound/soc/mediatek/mt8186/mt8186-afe-common.h
@@ -189,6 +189,9 @@ unsigned int mt8186_rate_transform(struct device *dev,
 unsigned int mt8186_tdm_relatch_rate_transform(struct device *dev,
 					       unsigned int rate);
 
+int mt8186_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name);
+
 int mt8186_dai_set_priv(struct mtk_base_afe *afe, int id,
 			int priv_size, const void *priv_data);
 
diff --git a/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c b/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
index e553a555d168..7e8cad682c83 100644
--- a/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
+++ b/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
@@ -1184,6 +1184,32 @@ static int mt8186_dai_i2s_get_share(struct mtk_base_afe *afe)
 	return 0;
 }
 
+/**
+ * mt8186_dai_i2s_set_share() - Set up I2S ports to share a single clock.
+ * @afe: Pointer to &struct mtk_base_afe
+ * @main_i2s_name: The name of the I2S port that will provide the clock
+ * @secondary_i2s_name: The name of the I2S port that will use this clock
+ */
+int mt8186_dai_i2s_set_share(struct mtk_base_afe *afe, const char *main_i2s_name,
+			     const char *secondary_i2s_name)
+{
+	struct mtk_afe_i2s_priv *secondary_i2s_priv;
+	int main_i2s_id;
+
+	secondary_i2s_priv = get_i2s_priv_by_name(afe, secondary_i2s_name);
+	if (!secondary_i2s_priv)
+		return -EINVAL;
+
+	main_i2s_id = get_i2s_id_by_name(afe, main_i2s_name);
+	if (main_i2s_id < 0)
+		return main_i2s_id;
+
+	secondary_i2s_priv->share_i2s_id = main_i2s_id;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(mt8186_dai_i2s_set_share);
+
 static int mt8186_dai_i2s_set_priv(struct mtk_base_afe *afe)
 {
 	int i;
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (7 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-08 16:11 ` [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT Nícolas F. R. A. Prado
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Jaroslav Kysela, Jiaxin Yu, Liam Girdwood, Takashi Iwai,
	alsa-devel, chunxu.li, linux-arm-kernel, linux-kernel,
	linux-mediatek

i2s0 and i2s1 are paired input/output connected to the same codec and
should share the same clock. Likewise for i2s2 and i2s3. Set the clock
sharing for each pair during the codec's initialization.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 .../mt8186/mt8186-mt6366-da7219-max98357.c     | 18 ++++++++++++++++++
 .../mt8186/mt8186-mt6366-rt1019-rt5682s.c      | 18 ++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c b/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
index 17a15bec41da..6f93f9dd4623 100644
--- a/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
+++ b/sound/soc/mediatek/mt8186/mt8186-mt6366-da7219-max98357.c
@@ -54,6 +54,9 @@ static struct snd_soc_codec_conf mt8186_mt6366_da7219_max98357_codec_conf[] = {
 
 static int mt8186_da7219_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
 	struct mtk_soc_card_data *soc_card_data =
 		snd_soc_card_get_drvdata(rtd->card);
 	struct mt8186_mt6366_da7219_max98357_priv *priv = soc_card_data->mach_priv;
@@ -62,6 +65,12 @@ static int mt8186_da7219_init(struct snd_soc_pcm_runtime *rtd)
 		asoc_rtd_to_codec(rtd, 0)->component;
 	int ret;
 
+	ret = mt8186_dai_i2s_set_share(afe, "I2S1", "I2S0");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+
 	/* Enable Headset and 4 Buttons Jack detection */
 	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
@@ -160,6 +169,9 @@ static const struct snd_soc_ops mt8186_da7219_i2s_ops = {
 
 static int mt8186_mt6366_da7219_max98357_hdmi_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
 	struct snd_soc_component *cmpnt_codec =
 		asoc_rtd_to_codec(rtd, 0)->component;
 	struct mtk_soc_card_data *soc_card_data =
@@ -167,6 +179,12 @@ static int mt8186_mt6366_da7219_max98357_hdmi_init(struct snd_soc_pcm_runtime *r
 	struct mt8186_mt6366_da7219_max98357_priv *priv = soc_card_data->mach_priv;
 	int ret;
 
+	ret = mt8186_dai_i2s_set_share(afe, "I2S3", "I2S2");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+
 	ret = snd_soc_card_jack_new(rtd->card, "HDMI Jack", SND_JACK_LINEOUT, &priv->hdmi_jack);
 	if (ret) {
 		dev_err(rtd->dev, "HDMI Jack creation failed: %d\n", ret);
diff --git a/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c b/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
index 393d179d61de..247f20f594d9 100644
--- a/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
+++ b/sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
@@ -58,6 +58,9 @@ static struct snd_soc_codec_conf mt8186_mt6366_rt1019_rt5682s_codec_conf[] = {
 
 static int mt8186_rt5682s_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
 	struct mtk_soc_card_data *soc_card_data =
 		snd_soc_card_get_drvdata(rtd->card);
 	struct mt8186_mt6366_rt1019_rt5682s_priv *priv = soc_card_data->mach_priv;
@@ -66,6 +69,12 @@ static int mt8186_rt5682s_init(struct snd_soc_pcm_runtime *rtd)
 		asoc_rtd_to_codec(rtd, 0)->component;
 	int ret;
 
+	ret = mt8186_dai_i2s_set_share(afe, "I2S1", "I2S0");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+
 	ret = snd_soc_card_jack_new(rtd->card, "Headset Jack",
 				    SND_JACK_HEADSET | SND_JACK_BTN_0 |
 				    SND_JACK_BTN_1 | SND_JACK_BTN_2 |
@@ -136,6 +145,9 @@ static const struct snd_soc_ops mt8186_rt5682s_i2s_ops = {
 
 static int mt8186_mt6366_rt1019_rt5682s_hdmi_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_component *cmpnt_afe =
+		snd_soc_rtdcom_lookup(rtd, AFE_PCM_NAME);
+	struct mtk_base_afe *afe = snd_soc_component_get_drvdata(cmpnt_afe);
 	struct snd_soc_component *cmpnt_codec =
 		asoc_rtd_to_codec(rtd, 0)->component;
 	struct mtk_soc_card_data *soc_card_data =
@@ -143,6 +155,12 @@ static int mt8186_mt6366_rt1019_rt5682s_hdmi_init(struct snd_soc_pcm_runtime *rt
 	struct mt8186_mt6366_rt1019_rt5682s_priv *priv = soc_card_data->mach_priv;
 	int ret;
 
+	ret = mt8186_dai_i2s_set_share(afe, "I2S3", "I2S2");
+	if (ret) {
+		dev_err(rtd->dev, "Failed to set up shared clocks\n");
+		return ret;
+	}
+
 	ret = snd_soc_card_jack_new(rtd->card, "HDMI Jack", SND_JACK_LINEOUT, &priv->hdmi_jack);
 	if (ret) {
 		dev_err(rtd->dev, "HDMI Jack creation failed: %d\n", ret);
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (8 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks Nícolas F. R. A. Prado
@ 2022-09-08 16:11 ` Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-09-09 22:45 ` [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Mark Brown
  2022-09-13 16:12 ` Mark Brown
  11 siblings, 1 reply; 26+ messages in thread
From: Nícolas F. R. A. Prado @ 2022-09-08 16:11 UTC (permalink / raw)
  To: Mark Brown, Matthias Brugger
  Cc: kernel, AngeloGioacchino Del Regno, Nícolas F. R. A. Prado,
	Chunxu Li, Dan Carpenter, Jaroslav Kysela, Jiaxin Yu,
	Liam Girdwood, Takashi Iwai, alsa-devel, linux-arm-kernel,
	linux-kernel, linux-mediatek

Now that the clock sharing for i2s ports can be configured from the
sound machine driver, remove the logic that was used to parse the
properties from the devicetree.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
---

 sound/soc/mediatek/mt8186/mt8186-dai-i2s.c | 30 ----------------------
 1 file changed, 30 deletions(-)

diff --git a/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c b/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
index 7e8cad682c83..f07181be4370 100644
--- a/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
+++ b/sound/soc/mediatek/mt8186/mt8186-dai-i2s.c
@@ -44,7 +44,6 @@ struct mtk_afe_i2s_priv {
 	int low_jitter_en;
 	int master; /* only i2s0 has slave mode*/
 
-	const char *share_property_name;
 	int share_i2s_id;
 
 	int mclk_id;
@@ -1140,50 +1139,26 @@ static const struct mtk_afe_i2s_priv mt8186_i2s_priv[DAI_I2S_NUM] = {
 	[DAI_I2S0] = {
 		.id = MT8186_DAI_I2S_0,
 		.mclk_id = MT8186_I2S0_MCK,
-		.share_property_name = "i2s0-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S1] = {
 		.id = MT8186_DAI_I2S_1,
 		.mclk_id = MT8186_I2S1_MCK,
-		.share_property_name = "i2s1-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S2] = {
 		.id = MT8186_DAI_I2S_2,
 		.mclk_id = MT8186_I2S2_MCK,
-		.share_property_name = "i2s2-share",
 		.share_i2s_id = -1,
 	},
 	[DAI_I2S3] = {
 		.id = MT8186_DAI_I2S_3,
 		/*  clock gate naming is hf_faud_i2s4_m_ck*/
 		.mclk_id = MT8186_I2S4_MCK,
-		.share_property_name = "i2s3-share",
 		.share_i2s_id = -1,
 	}
 };
 
-static int mt8186_dai_i2s_get_share(struct mtk_base_afe *afe)
-{
-	struct mt8186_afe_private *afe_priv = afe->platform_priv;
-	const struct device_node *of_node = afe->dev->of_node;
-	const char *of_str;
-	const char *property_name;
-	struct mtk_afe_i2s_priv *i2s_priv;
-	int i;
-
-	for (i = 0; i < DAI_I2S_NUM; i++) {
-		i2s_priv = afe_priv->dai_priv[mt8186_i2s_priv[i].id];
-		property_name = mt8186_i2s_priv[i].share_property_name;
-		if (of_property_read_string(of_node, property_name, &of_str))
-			continue;
-		i2s_priv->share_i2s_id = get_i2s_id_by_name(afe, of_str);
-	}
-
-	return 0;
-}
-
 /**
  * mt8186_dai_i2s_set_share() - Set up I2S ports to share a single clock.
  * @afe: Pointer to &struct mtk_base_afe
@@ -1252,10 +1227,5 @@ int mt8186_dai_i2s_register(struct mtk_base_afe *afe)
 	if (ret)
 		return ret;
 
-	/* parse share i2s */
-	ret = mt8186_dai_i2s_get_share(afe);
-	if (ret)
-		return ret;
-
 	return 0;
 }
-- 
2.37.3


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT
  2022-09-08 16:11 ` [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Chunxu Li, Dan Carpenter, Jaroslav Kysela, Jiaxin Yu,
	Liam Girdwood, Takashi Iwai, alsa-devel, linux-arm-kernel,
	linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Now that the clock sharing for i2s ports can be configured from the
> sound machine driver, remove the logic that was used to parse the
> properties from the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks
  2022-09-08 16:11 ` [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Jaroslav Kysela, Jiaxin Yu, Liam Girdwood, Takashi Iwai,
	alsa-devel, chunxu.li, linux-arm-kernel, linux-kernel,
	linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> i2s0 and i2s1 are paired input/output connected to the same codec and
> should share the same clock. Likewise for i2s2 and i2s3. Set the clock
> sharing for each pair during the codec's initialization.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver
  2022-09-08 16:11 ` [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Add a new function to configure the shared clock between two i2s ports,
> and export it. This will allow the clock sharing to be set from the
> machine driver instead of the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

[For MT8192 Asurada]
Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
  2022-09-08 16:11 ` [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  2022-11-08 12:43   ` Matthias Brugger
  1 sibling, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Krzysztof Kozlowski, Rob Herring, devicetree,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> The i2sN-share properties were never documented in the dt-binding and
> thus shouldn't be used. Now that the ASoC machine drivers are setting
> the I2S clock sharing internally, these properties are no longer needed,
> so remove them.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver
  2022-09-08 16:11 ` [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Chunxu Li, Dan Carpenter, Jaroslav Kysela, Jiaxin Yu,
	Liam Girdwood, Takashi Iwai, alsa-devel, linux-arm-kernel,
	linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Add a new function to configure the shared clock between two i2s ports,
> and export it. This will allow the clock sharing to be set from the
> machine driver instead of the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver
  2022-09-08 16:11 ` [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Add a new function to configure the shared clock between two i2s ports,
> and export it. This will allow the clock sharing to be set from the
> machine driver instead of the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT
  2022-09-08 16:11 ` [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Now that the clock sharing for i2s ports can be configured from the
> sound machine driver, remove the logic that was used to parse the
> properties from the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>


Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

[For MT8192 Asurada]
Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT
  2022-09-08 16:11 ` [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Jaroslav Kysela, Liam Girdwood, Takashi Iwai, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Now that the clock sharing for i2s ports can be configured from the
> sound machine driver, remove the logic that was used to parse the
> properties from the devicetree.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks
  2022-09-08 16:11 ` [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Akihiko Odaki, Jaroslav Kysela, Jiaxin Yu, Liam Girdwood,
	Miaoqian Lin, Rikard Falkeborn, Takashi Iwai, Tzung-Bi Shih,
	alsa-devel, linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> i2s0 and i2s5 are paired input/output connected to the same codec and
> should share the same clock. Likewise for i2s2 and i2s3. Set the clock
> sharing for each pair during the DAI initialization.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
  2022-09-08 16:11 ` [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8 Nícolas F. R. A. Prado
@ 2022-09-09  7:34   ` AngeloGioacchino Del Regno
  0 siblings, 0 replies; 26+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-09-09  7:34 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown, Matthias Brugger
  Cc: kernel, Akihiko Odaki, Jaroslav Kysela, Jiaxin Yu, Liam Girdwood,
	Miaoqian Lin, Takashi Iwai, Tzung-Bi Shih, alsa-devel,
	linux-arm-kernel, linux-kernel, linux-mediatek

Il 08/09/22 18:11, Nícolas F. R. A. Prado ha scritto:
> Both i2s8 and i2s9 are connected to the rt5682 codec and should share
> the same clock to work in a full-duplex manner. Set the clock sharing
> during the initialization for rt5682.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>


Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

[For MT8192 Asurada]
Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (9 preceding siblings ...)
  2022-09-08 16:11 ` [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT Nícolas F. R. A. Prado
@ 2022-09-09 22:45 ` Mark Brown
  2022-09-13 15:56   ` Matthias Brugger
  2022-09-13 16:12 ` Mark Brown
  11 siblings, 1 reply; 26+ messages in thread
From: Mark Brown @ 2022-09-09 22:45 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Matthias Brugger
  Cc: Rob Herring, Chunxu Li, Akihiko Odaki, Jiaxin Yu, kernel,
	AngeloGioacchino Del Regno, Tzung-Bi Shih, linux-kernel,
	Krzysztof Kozlowski, devicetree, Dan Carpenter, linux-arm-kernel,
	alsa-devel, Jaroslav Kysela, Takashi Iwai, linux-mediatek,
	Rikard Falkeborn, Liam Girdwood, Miaoqian Lin

On Thu, 8 Sep 2022 12:11:44 -0400, Nícolas F. R. A. Prado wrote:
> The i2s ports on MediaTek SoCs only support a single data lane. In order
> to achieve full-duplex operation thus two i2s ports, one for input and
> one for output, need to be used together and sharing a single clock from
> one of the ports.
> 
> This clock sharing setting was previously read by the sound platform
> driver from the devicetree, but given that the input/output pairing is
> closely related to which codecs are connected to which ports, the
> machine sound driver can infer and set it, so that no DT property is
> required.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver
        commit: 8ae4fcfd5b11b5c33154732fcad99ad0f5843ce2
[02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
        commit: 3ffb9fa3963964a730c34f48e502ac0625efc145
[03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT
        commit: 9ccd51ce396a46d9d4d0c87aa6a82dd26a2f281a
[04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver
        commit: fea84890e5c1fb65ae8e25b2f9b86363af1f45f2
[05/10] ASoC: mediatek: mt8183: Configure shared clocks
        commit: 4583392a135cc30409f5a6ceebb8374e550b03e0
[06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT
        commit: cbebe67859a0e8d51e578fdd9f927f8ef2504ba4
[07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
        commit: b3821f7839c2ec322926d16557aff29f4be1f4dc
[08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver
        commit: 4132a778e806f77c2bd01a9a34b07edc9dd99d76
[09/10] ASoC: mediatek: mt8186: Configure shared clocks
        commit: 9986bdaee4776c5d595933cace9d54c6bc084e91
[10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT
        commit: 62da80c6a124dd68b12c4d2197ecc74b79823571

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers
  2022-09-09 22:45 ` [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Mark Brown
@ 2022-09-13 15:56   ` Matthias Brugger
  2022-09-13 16:07     ` Mark Brown
  0 siblings, 1 reply; 26+ messages in thread
From: Matthias Brugger @ 2022-09-13 15:56 UTC (permalink / raw)
  To: Mark Brown, Nícolas F. R. A. Prado
  Cc: Rob Herring, Chunxu Li, Akihiko Odaki, Jiaxin Yu, kernel,
	AngeloGioacchino Del Regno, Tzung-Bi Shih, linux-kernel,
	Krzysztof Kozlowski, devicetree, Dan Carpenter, linux-arm-kernel,
	alsa-devel, Jaroslav Kysela, Takashi Iwai, linux-mediatek,
	Rikard Falkeborn, Liam Girdwood, Miaoqian Lin



On 10/09/2022 00:45, Mark Brown wrote:
> On Thu, 8 Sep 2022 12:11:44 -0400, Nícolas F. R. A. Prado wrote:
>> The i2s ports on MediaTek SoCs only support a single data lane. In order
>> to achieve full-duplex operation thus two i2s ports, one for input and
>> one for output, need to be used together and sharing a single clock from
>> one of the ports.
>>
>> This clock sharing setting was previously read by the sound platform
>> driver from the devicetree, but given that the input/output pairing is
>> closely related to which codecs are connected to which ports, the
>> machine sound driver can infer and set it, so that no DT property is
>> required.
>>
>> [...]
> 
> Applied to
> 
>     https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
> 
> Thanks!
> 
> [01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver
>          commit: 8ae4fcfd5b11b5c33154732fcad99ad0f5843ce2
> [02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
>          commit: 3ffb9fa3963964a730c34f48e502ac0625efc145
> [03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT
>          commit: 9ccd51ce396a46d9d4d0c87aa6a82dd26a2f281a
> [04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver
>          commit: fea84890e5c1fb65ae8e25b2f9b86363af1f45f2
> [05/10] ASoC: mediatek: mt8183: Configure shared clocks
>          commit: 4583392a135cc30409f5a6ceebb8374e550b03e0
> [06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT
>          commit: cbebe67859a0e8d51e578fdd9f927f8ef2504ba4
> [07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
>          commit: b3821f7839c2ec322926d16557aff29f4be1f4dc

DTS should go through my branch. We can see if there are any merge conflicts in 
linux-next and fix them somehow or you drop the patch and I take it through my 
tree. As you like.

Regards,
Matthias

> [08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver
>          commit: 4132a778e806f77c2bd01a9a34b07edc9dd99d76
> [09/10] ASoC: mediatek: mt8186: Configure shared clocks
>          commit: 9986bdaee4776c5d595933cace9d54c6bc084e91
> [10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT
>          commit: 62da80c6a124dd68b12c4d2197ecc74b79823571
> 
> All being well this means that it will be integrated into the linux-next
> tree (usually sometime in the next 24 hours) and sent to Linus during
> the next merge window (or sooner if it is a bug fix), however if
> problems are discovered then the patch may be dropped or reverted.
> 
> You may get further e-mails resulting from automated or manual testing
> and review of the tree, please engage with people reporting problems and
> send followup patches addressing any issues that are reported if needed.
> 
> If any updates are required or you are submitting further changes they
> should be sent as incremental updates against current git, existing
> patches will not be replaced.
> 
> Please add any relevant lists and maintainers to the CCs when replying
> to this mail.
> 
> Thanks,
> Mark

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers
  2022-09-13 15:56   ` Matthias Brugger
@ 2022-09-13 16:07     ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2022-09-13 16:07 UTC (permalink / raw)
  To: Matthias Brugger
  Cc: Nícolas F. R. A. Prado, Rob Herring, Chunxu Li,
	Akihiko Odaki, Jiaxin Yu, kernel, AngeloGioacchino Del Regno,
	Tzung-Bi Shih, linux-kernel, Krzysztof Kozlowski, devicetree,
	Dan Carpenter, linux-arm-kernel, alsa-devel, Jaroslav Kysela,
	Takashi Iwai, linux-mediatek, Rikard Falkeborn, Liam Girdwood,
	Miaoqian Lin


[-- Attachment #1.1: Type: text/plain, Size: 272 bytes --]

On Tue, Sep 13, 2022 at 05:56:00PM +0200, Matthias Brugger wrote:

> DTS should go through my branch. We can see if there are any merge conflicts
> in linux-next and fix them somehow or you drop the patch and I take it
> through my tree. As you like.

Sorry, dropped now.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers
  2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
                   ` (10 preceding siblings ...)
  2022-09-09 22:45 ` [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Mark Brown
@ 2022-09-13 16:12 ` Mark Brown
  11 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2022-09-13 16:12 UTC (permalink / raw)
  To: Matthias Brugger, Nícolas F. R. A. Prado
  Cc: linux-arm-kernel, Jaroslav Kysela, alsa-devel, Jiaxin Yu,
	Tzung-Bi Shih, Krzysztof Kozlowski, linux-mediatek, Rob Herring,
	Takashi Iwai, Dan Carpenter, devicetree, kernel, Chunxu Li,
	Akihiko Odaki, linux-kernel, AngeloGioacchino Del Regno,
	Miaoqian Lin, Rikard Falkeborn, Liam Girdwood

On Thu, 8 Sep 2022 12:11:44 -0400, Nícolas F. R. A. Prado wrote:
> The i2s ports on MediaTek SoCs only support a single data lane. In order
> to achieve full-duplex operation thus two i2s ports, one for input and
> one for output, need to be used together and sharing a single clock from
> one of the ports.
> 
> This clock sharing setting was previously read by the sound platform
> driver from the devicetree, but given that the input/output pairing is
> closely related to which codecs are connected to which ports, the
> machine sound driver can infer and set it, so that no DT property is
> required.
> 
> [...]

Applied to

   broonie/sound.git for-next

Thanks!

[01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver
        commit: 8ae4fcfd5b11b5c33154732fcad99ad0f5843ce2
[02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8
        commit: 3ffb9fa3963964a730c34f48e502ac0625efc145
[03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT
        commit: 9ccd51ce396a46d9d4d0c87aa6a82dd26a2f281a
[04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver
        commit: fea84890e5c1fb65ae8e25b2f9b86363af1f45f2
[05/10] ASoC: mediatek: mt8183: Configure shared clocks
        commit: 4583392a135cc30409f5a6ceebb8374e550b03e0
[06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT
        commit: cbebe67859a0e8d51e578fdd9f927f8ef2504ba4
[07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
        commit: b3821f7839c2ec322926d16557aff29f4be1f4dc
[08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver
        commit: 4132a778e806f77c2bd01a9a34b07edc9dd99d76
[09/10] ASoC: mediatek: mt8186: Configure shared clocks
        commit: 9986bdaee4776c5d595933cace9d54c6bc084e91
[10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT
        commit: 62da80c6a124dd68b12c4d2197ecc74b79823571

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties
  2022-09-08 16:11 ` [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties Nícolas F. R. A. Prado
  2022-09-09  7:34   ` AngeloGioacchino Del Regno
@ 2022-11-08 12:43   ` Matthias Brugger
  1 sibling, 0 replies; 26+ messages in thread
From: Matthias Brugger @ 2022-11-08 12:43 UTC (permalink / raw)
  To: Nícolas F. R. A. Prado, Mark Brown
  Cc: kernel, AngeloGioacchino Del Regno, Krzysztof Kozlowski,
	Rob Herring, devicetree, linux-arm-kernel, linux-kernel,
	linux-mediatek



On 08/09/2022 18:11, Nícolas F. R. A. Prado wrote:
> The i2sN-share properties were never documented in the dt-binding and
> thus shouldn't be used. Now that the ASoC machine drivers are setting
> the I2S clock sharing internally, these properties are no longer needed,
> so remove them.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Applied, thanks!

> ---
> 
>   arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 5 -----
>   1 file changed, 5 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
> index b4b86bb1f1a7..42191b3025a9 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
> @@ -221,11 +221,6 @@ tboard_thermistor2: thermal-sensor2 {
>   	};
>   };
>   
> -&afe {
> -	i2s3-share = "I2S2";
> -	i2s0-share = "I2S5";
> -};
> -
>   &auxadc {
>   	status = "okay";
>   };

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2022-11-08 12:44 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08 16:11 [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Nícolas F. R. A. Prado
2022-09-08 16:11 ` [PATCH 01/10] ASoC: mediatek: mt8192: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 02/10] ASoC: mediatek: mt8192-mt6359: Make i2s9 share the clock from i2s8 Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 03/10] ASoC: mediatek: mt8192: Remove clock share parsing from DT Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 04/10] ASoC: mediatek: mt8183: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 05/10] ASoC: mediatek: mt8183: Configure shared clocks Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 06/10] ASoC: mediatek: mt8183: Remove clock share parsing from DT Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 07/10] arm64: dts: mediatek: kukui: Remove i2s-share properties Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-11-08 12:43   ` Matthias Brugger
2022-09-08 16:11 ` [PATCH 08/10] ASoC: mediatek: mt8186: Allow setting shared clocks from machine driver Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 09/10] ASoC: mediatek: mt8186: Configure shared clocks Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-08 16:11 ` [PATCH 10/10] ASoC: mediatek: mt8186: Remove clock share parsing from DT Nícolas F. R. A. Prado
2022-09-09  7:34   ` AngeloGioacchino Del Regno
2022-09-09 22:45 ` [PATCH 00/10] ASoC: mediatek: Set i2s clock sharing from machine drivers Mark Brown
2022-09-13 15:56   ` Matthias Brugger
2022-09-13 16:07     ` Mark Brown
2022-09-13 16:12 ` Mark Brown

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