Devicetree
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Introduces MDSYNC support for CS35L45
@ 2026-08-21 22:41 Ricardo Rivera-Matos
  2026-08-21 22:41 ` [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties Ricardo Rivera-Matos
  2026-08-21 22:41 ` [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus Ricardo Rivera-Matos
  0 siblings, 2 replies; 8+ messages in thread
From: Ricardo Rivera-Matos @ 2026-08-21 22:41 UTC (permalink / raw)
  To: David Rhodes, Richard Fitzgerald, Liam Girdwood, Mark Brown,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela,
	Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel,
	Ricardo Rivera-Matos

The CS35L45 has SYNC pin that can be used as a multi
device synchronization (MDSYNC) bus. This pin can send
various message types between Cirrus devices.

This patch series adds support for long and short DSP
messages between CS35L45 devices. 

Each device on the SYNC bus must have a unique transmitter
identifier per message type as the bus arbitrates message
priority via this identifier. These identifiers are set by
the introduced devicetree properties. The priority 
assignment is intended to be a static system integration
decision.

The relevant receiver controls are introduced as mixer
controls so they are exposed at runtime to be configured
for the appropriate use cases.

Changes since v3:
 - return 0 when controls are unchanged
 - adds locking to cs35l45_sync_en_put
 - Enable -> Switch

Changes since v2:
 - snd_soc_kcontrol_component -> snd_kcontrol_chip
 - only register sync controls if GPIO mux selects SYNC
 - return 1 on cs35l45_sync_en_put success
 - drop | in dt property description

Changes since v1:
 - Fixed property parsing namespace issue

Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
---
Ricardo Rivera-Matos (2):
      ASoC: dt-bindings: cs35l45: Adds SYNC properties
      ASoC: cs35l45: Adds support for SYNC bus

 .../devicetree/bindings/sound/cirrus,cs35l45.yaml  |  27 ++++++
 sound/soc/codecs/cs35l45-tables.c                  |   4 +
 sound/soc/codecs/cs35l45.c                         | 101 ++++++++++++++++++++-
 sound/soc/codecs/cs35l45.h                         |  23 +++++
 4 files changed, 151 insertions(+), 4 deletions(-)
---
base-commit: 2792cc1b80b7674cc0751b34a964aad76630c1fa
change-id: 20260821-sound-for-next-cs35l45-sync-v4-c2664a7bd536

Best regards,
-- 
Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>


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

* [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties
  2026-08-21 22:41 [PATCH v4 0/2] Introduces MDSYNC support for CS35L45 Ricardo Rivera-Matos
@ 2026-08-21 22:41 ` Ricardo Rivera-Matos
  2026-08-27 12:31   ` Krzysztof Kozlowski
  2026-08-21 22:41 ` [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus Ricardo Rivera-Matos
  1 sibling, 1 reply; 8+ messages in thread
From: Ricardo Rivera-Matos @ 2026-08-21 22:41 UTC (permalink / raw)
  To: David Rhodes, Richard Fitzgerald, Liam Girdwood, Mark Brown,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela,
	Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel,
	Ricardo Rivera-Matos

Introduces support for the multidevice synchronization (SYNC)
bus. The properties introduced allow for the configuration
of the device's transmitter IDs.

Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
---
 .../devicetree/bindings/sound/cirrus,cs35l45.yaml  | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
index 70f6c62aedca..20d758dc442f 100644
--- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
@@ -53,6 +53,29 @@ properties:
     maximum: 3
     default: 2
 
+  sync:
+    description:
+      Multidevice synchronization (SYNC) bus configuration
+    type: object
+    additionalProperties: false
+    properties:
+      cirrus,sync-lsw-txid:
+        description:
+          Transmitter ID to use for long software (LSW) data packets
+          on the SYNC bus.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 7
+        default: 0
+      cirrus,sync-sw-txid:
+        description:
+          Transmitter ID to use for short software (SW) data packets
+          on the SYNC bus.
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 0
+        maximum: 7
+        default: 0
+
 patternProperties:
   "^cirrus,gpio-ctrl[1-3]$":
     description:
@@ -155,5 +178,9 @@ examples:
              gpio-ctrl = <0x1>;
              gpio-dir = <0x1>;
           };
+          sync {
+             cirrus,sync-lsw-txid = <0x1>;
+             cirrus,sync-sw-txid = <0x1>;
+          };
         };
     };

-- 
2.43.0


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

* [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus
  2026-08-21 22:41 [PATCH v4 0/2] Introduces MDSYNC support for CS35L45 Ricardo Rivera-Matos
  2026-08-21 22:41 ` [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties Ricardo Rivera-Matos
@ 2026-08-21 22:41 ` Ricardo Rivera-Matos
  2026-08-21 22:49   ` sashiko-bot
  1 sibling, 1 reply; 8+ messages in thread
From: Ricardo Rivera-Matos @ 2026-08-21 22:41 UTC (permalink / raw)
  To: David Rhodes, Richard Fitzgerald, Liam Girdwood, Mark Brown,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jaroslav Kysela,
	Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel,
	Ricardo Rivera-Matos

Adds support for the multidevice synchronization (SYNC) bus.
The SYNC bus is an opaque one wire bus that is shared between
Cirrus devices. Initial support only includes software (SW)
data packets.

Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
---
 sound/soc/codecs/cs35l45-tables.c |   4 ++
 sound/soc/codecs/cs35l45.c        | 101 ++++++++++++++++++++++++++++++++++++--
 sound/soc/codecs/cs35l45.h        |  23 +++++++++
 3 files changed, 124 insertions(+), 4 deletions(-)

diff --git a/sound/soc/codecs/cs35l45-tables.c b/sound/soc/codecs/cs35l45-tables.c
index 764dbaa35042..57982b8ae645 100644
--- a/sound/soc/codecs/cs35l45-tables.c
+++ b/sound/soc/codecs/cs35l45-tables.c
@@ -51,6 +51,8 @@ static const struct reg_default cs35l45_defaults[] = {
 	{ CS35L45_WKI2C_CTL,			0x00000030 },
 	{ CS35L45_REFCLK_INPUT,			0x00000510 },
 	{ CS35L45_GLOBAL_SAMPLE_RATE,		0x00000003 },
+	{ CS35L45_SYNC_TX_RX_ENABLES,		0x00000200 },
+	{ CS35L45_SYNC_SW_TX_ID,		0x00000000 },
 	{ CS35L45_ASP_ENABLES1,			0x00000000 },
 	{ CS35L45_ASP_CONTROL1,			0x00000028 },
 	{ CS35L45_ASP_CONTROL2,			0x18180200 },
@@ -134,6 +136,8 @@ static bool cs35l45_readable_reg(struct device *dev, unsigned int reg)
 	case CS35L45_PWRMGT_STS:
 	case CS35L45_REFCLK_INPUT:
 	case CS35L45_GLOBAL_SAMPLE_RATE:
+	case CS35L45_SYNC_TX_RX_ENABLES:
+	case CS35L45_SYNC_SW_TX_ID:
 	case CS35L45_ASP_ENABLES1:
 	case CS35L45_ASP_CONTROL1:
 	case CS35L45_ASP_CONTROL2:
diff --git a/sound/soc/codecs/cs35l45.c b/sound/soc/codecs/cs35l45.c
index a032bb23b4ac..2d6360bc555b 100644
--- a/sound/soc/codecs/cs35l45.c
+++ b/sound/soc/codecs/cs35l45.c
@@ -6,6 +6,7 @@
 //
 // Author: James Schulman <james.schulman@cirrus.com>
 
+#include <linux/bitfield.h>
 #include <linux/gpio/consumer.h>
 #include <linux/module.h>
 #include <linux/pm_runtime.h>
@@ -195,6 +196,46 @@ static int cs35l45_activate_ctl(struct snd_soc_component *component,
 	return 0;
 }
 
+static int cs35l45_sync_en_get(struct snd_kcontrol *kcontrol,
+				      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+	struct cs35l45_private *cs35l45 =
+			snd_soc_component_get_drvdata(component);
+
+	ucontrol->value.integer.value[0] = cs35l45->sync_en;
+
+	return 0;
+}
+
+static int cs35l45_sync_en_put(struct snd_kcontrol *kcontrol,
+				      struct snd_ctl_elem_value *ucontrol)
+{
+	struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+	struct cs35l45_private *cs35l45 =
+			snd_soc_component_get_drvdata(component);
+	struct snd_soc_dapm_context *dapm =
+			snd_soc_component_to_dapm(component);
+
+	snd_soc_dapm_mutex_lock(dapm);
+
+	if (ucontrol->value.integer.value[0] == cs35l45->sync_en) {
+		snd_soc_dapm_mutex_unlock(dapm);
+		return 0;
+	}
+
+	if ((bool)ucontrol->value.integer.value[0])
+		regmap_set_bits(cs35l45->regmap, CS35L45_BLOCK_ENABLES2, CS35L45_SYNC_EN_MASK);
+	else
+		regmap_clear_bits(cs35l45->regmap, CS35L45_BLOCK_ENABLES2, CS35L45_SYNC_EN_MASK);
+
+	cs35l45->sync_en = ucontrol->value.integer.value[0];
+
+	snd_soc_dapm_mutex_unlock(dapm);
+
+	return 1;
+}
+
 static int cs35l45_amplifier_mode_get(struct snd_kcontrol *kcontrol,
 				      struct snd_ctl_elem_value *ucontrol)
 {
@@ -591,6 +632,18 @@ static SOC_ENUM_SINGLE_DECL(amplifier_mode_enum, SND_SOC_NOPM, 0,
 static DECLARE_TLV_DB_SCALE(amp_gain_tlv, 1000, 300, 0);
 static const DECLARE_TLV_DB_SCALE(cs35l45_dig_pcm_vol_tlv, -10225, 25, true);
 
+static const struct snd_kcontrol_new cs35l45_sync_controls[] = {
+	SOC_SINGLE_BOOL_EXT("SYNC Switch", 0, cs35l45_sync_en_get, cs35l45_sync_en_put),
+	SOC_SINGLE("SYNC LSW RX Switch", CS35L45_SYNC_TX_RX_ENABLES,
+			CS35L45_SYNC_LSW_RX_EN_SHIFT, 1, 0),
+	SOC_SINGLE("SYNC LSW TX Switch", CS35L45_SYNC_TX_RX_ENABLES,
+			CS35L45_SYNC_LSW_TX_EN_SHIFT, 1, 0),
+	SOC_SINGLE("SYNC SW RX Switch", CS35L45_SYNC_TX_RX_ENABLES,
+			CS35L45_SYNC_SW_RX_EN_SHIFT, 1, 0),
+	SOC_SINGLE("SYNC SW TX Switch", CS35L45_SYNC_TX_RX_ENABLES,
+			CS35L45_SYNC_SW_TX_EN_SHIFT, 1, 0),
+};
+
 static const struct snd_kcontrol_new cs35l45_controls[] = {
 	SOC_ENUM_EXT("Amplifier Mode", amplifier_mode_enum,
 		     cs35l45_amplifier_mode_get, cs35l45_amplifier_mode_put),
@@ -880,6 +933,19 @@ static struct snd_soc_dai_driver cs35l45_dai[] = {
 static int cs35l45_component_probe(struct snd_soc_component *component)
 {
 	struct cs35l45_private *cs35l45 = snd_soc_component_get_drvdata(component);
+	int ret;
+
+	ret = snd_soc_add_component_controls(component, cs35l45_controls,
+					     ARRAY_SIZE(cs35l45_controls));
+	if (ret < 0)
+		return ret;
+
+	if (cs35l45->sync_pin_set) {
+		ret = snd_soc_add_component_controls(component, cs35l45_sync_controls,
+						     ARRAY_SIZE(cs35l45_sync_controls));
+		if (ret < 0)
+			return ret;
+	}
 
 	return wm_adsp2_component_probe(&cs35l45->dsp, component);
 }
@@ -901,9 +967,6 @@ static const struct snd_soc_component_driver cs35l45_component = {
 	.dapm_routes = cs35l45_dapm_routes,
 	.num_dapm_routes = ARRAY_SIZE(cs35l45_dapm_routes),
 
-	.controls = cs35l45_controls,
-	.num_controls = ARRAY_SIZE(cs35l45_controls),
-
 	.name = "cs35l45",
 
 	.endianness = 1,
@@ -1064,6 +1127,25 @@ static int cs35l45_sys_resume(struct device *dev)
 	return 0;
 }
 
+static int cs35l45_apply_sync_property_config(struct cs35l45_private *cs35l45,
+					      struct device_node *child)
+{
+	unsigned int val;
+	int ret;
+
+	ret = of_property_read_u32(child, "cirrus,sync-lsw-txid", &val);
+	if (!ret)
+		regmap_update_bits(cs35l45->regmap, CS35L45_SYNC_SW_TX_ID,
+				   CS35L45_SYNC_LSW_TXID_MASK, val << CS35L45_SYNC_LSW_TXID_SHIFT);
+
+	ret = of_property_read_u32(child, "cirrus,sync-sw-txid", &val);
+	if (!ret)
+		regmap_update_bits(cs35l45->regmap, CS35L45_SYNC_SW_TX_ID,
+				   CS35L45_SYNC_SW_TXID_MASK, val);
+
+	return 0;
+}
+
 static int cs35l45_apply_property_config(struct cs35l45_private *cs35l45)
 {
 	struct device_node *node = cs35l45->dev->of_node;
@@ -1110,10 +1192,13 @@ static int cs35l45_apply_property_config(struct cs35l45_private *cs35l45)
 					   val << CS35L45_GPIO_POL_SHIFT);
 
 		ret = of_property_read_u32(child, "gpio-ctrl", &val);
-		if (!ret)
+		if (!ret) {
+			if ((i == 0) && (val == CS35L45_GP1_CTRL_MDSYNC))
+				cs35l45->sync_pin_set = true;
 			regmap_update_bits(cs35l45->regmap, pad_regs[i],
 					   CS35L45_GPIO_CTRL_MASK,
 					   val << CS35L45_GPIO_CTRL_SHIFT);
+		}
 
 		ret = of_property_read_u32(child, "gpio-invert", &val);
 		if (!ret) {
@@ -1134,6 +1219,14 @@ static int cs35l45_apply_property_config(struct cs35l45_private *cs35l45)
 				   val << CS35L45_ASP_DOUT_HIZ_CTRL_SHIFT);
 	}
 
+	if (cs35l45->sync_pin_set) {
+		child = of_get_child_by_name(node, "sync");
+		if (child)
+			cs35l45_apply_sync_property_config(cs35l45, child);
+
+		of_node_put(child);
+	}
+
 	return 0;
 }
 
diff --git a/sound/soc/codecs/cs35l45.h b/sound/soc/codecs/cs35l45.h
index 7a790d2acac7..f8a4713ae92f 100644
--- a/sound/soc/codecs/cs35l45.h
+++ b/sound/soc/codecs/cs35l45.h
@@ -35,6 +35,8 @@
 #define CS35L45_PWRMGT_STS			0x0000290C
 #define CS35L45_REFCLK_INPUT			0x00002C04
 #define CS35L45_GLOBAL_SAMPLE_RATE		0x00002C0C
+#define CS35L45_SYNC_TX_RX_ENABLES		0x00003400
+#define CS35L45_SYNC_SW_TX_ID			0x00003408
 #define CS35L45_BOOST_CCM_CFG			0x00003808
 #define CS35L45_BOOST_DCM_CFG			0x0000380C
 #define CS35L45_BOOST_OV_CFG			0x0000382C
@@ -183,6 +185,8 @@
 #define CS35L45_ASP_EN_SHIFT			27
 #define CS35L45_AMP_DRE_EN_SHIFT		20
 #define CS35L45_AMP_DRE_EN_MASK		BIT(20)
+#define CS35L45_SYNC_EN_SHIFT			8
+#define CS35L45_SYNC_EN_MASK			BIT(8)
 #define CS35L45_MEM_RDY_SHIFT			1
 #define CS35L45_MEM_RDY_MASK			BIT(1)
 
@@ -220,6 +224,22 @@
 #define CS35L45_44P100_KHZ			0x0B
 #define CS35L45_88P200_KHZ			0x0C
 
+/* SYNC_TX_RX_ENABLES */
+#define CS35L45_SYNC_LSW_RX_EN_SHIFT		19
+#define CS35L45_SYNC_LSW_RX_EN_MASK		BIT(19)
+#define CS35L45_SYNC_LSW_TX_EN_SHIFT		18
+#define CS35L45_SYNC_LSW_TX_EN_MASK		BIT(18)
+#define CS35L45_SYNC_SW_RX_EN_SHIFT		17
+#define CS35L45_SYNC_SW_RX_EN_MASK		BIT(17)
+#define CS35L45_SYNC_SW_TX_EN_SHIFT		16
+#define CS35L45_SYNC_SW_TX_EN_MASK		BIT(16)
+
+/* SYNC_SW_TX_ID */
+#define CS35L45_SYNC_LSW_TXID_SHIFT		8
+#define CS35L45_SYNC_LSW_TXID_MASK		GENMASK(10, 8)
+#define CS35L45_SYNC_SW_TXID_SHIFT		0
+#define CS35L45_SYNC_SW_TXID_MASK		GENMASK(2, 0)
+
 /* ASP_ENABLES_1 */
 #define CS35L45_ASP_RX2_EN_SHIFT		17
 #define CS35L45_ASP_RX1_EN_SHIFT		16
@@ -320,6 +340,7 @@
 #define CS35L45_GPIO_CTRL_MASK			GENMASK(22, 20)
 #define CS35L45_GPIO_INVERT_SHIFT		19
 #define CS35L45_GPIO_INVERT_MASK		BIT(19)
+#define CS35L45_GP1_CTRL_MDSYNC		0x2
 
 /* CS35L45_IRQ1_EINT_1 */
 #define CS35L45_BST_UVP_ERR_SHIFT		7
@@ -493,6 +514,8 @@ struct cs35l45_private {
 	struct regulator *vdd_a;
 	bool initialized;
 	bool sysclk_set;
+	bool sync_en;
+	bool sync_pin_set;
 	u8 slot_width;
 	u8 slot_count;
 	int amplifier_mode;

-- 
2.43.0


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

* Re: [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus
  2026-08-21 22:41 ` [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus Ricardo Rivera-Matos
@ 2026-08-21 22:49   ` sashiko-bot
  0 siblings, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-08-21 22:49 UTC (permalink / raw)
  To: Ricardo Rivera-Matos; +Cc: conor+dt, robh, devicetree

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Spurious ALSA event generation in `cs35l45_sync_en_put` due to unnormalized boolean comparison.
--

--- Patch [2]: [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus ---
commit 7447f2ac68a757cce556917899f132a9bfc50231
Author: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>

ASoC: cs35l45: Adds support for SYNC bus

Adds support for the multidevice synchronization (SYNC) bus. Initial support
only includes software (SW) data packets.

> diff --git a/sound/soc/codecs/cs35l45.c b/sound/soc/codecs/cs35l45.c
> index a032bb23b4ac7..2d6360bc555b3 100644
> --- a/sound/soc/codecs/cs35l45.c
> +++ b/sound/soc/codecs/cs35l45.c
[ ... ]
> @@ -195,6 +196,46 @@ static int cs35l45_activate_ctl(struct snd_soc_component *component,
>  	return 0;
>  }
[ ... ]
> +static int cs35l45_sync_en_put(struct snd_kcontrol *kcontrol,
> +				      struct snd_ctl_elem_value *ucontrol)
> +{
> +	struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
> +	struct cs35l45_private *cs35l45 =
> +			snd_soc_component_get_drvdata(component);
> +	struct snd_soc_dapm_context *dapm =
> +			snd_soc_component_to_dapm(component);
> +
> +	snd_soc_dapm_mutex_lock(dapm);
> +
> +	if (ucontrol->value.integer.value[0] == cs35l45->sync_en) {

[Severity: Medium]
Will this comparison cause spurious ALSA events if userspace writes a non-zero,
non-one value? 

Since cs35l45->sync_en is a bool, if userspace writes a value like 2, the
comparison (2 == 1) evaluates to false. This bypasses the short-circuit check.

> +		snd_soc_dapm_mutex_unlock(dapm);
> +		return 0;
> +	}
> +
> +	if ((bool)ucontrol->value.integer.value[0])
> +		regmap_set_bits(cs35l45->regmap, CS35L45_BLOCK_ENABLES2, CS35L45_SYNC_EN_MASK);
> +	else
> +		regmap_clear_bits(cs35l45->regmap, CS35L45_BLOCK_ENABLES2, CS35L45_SYNC_EN_MASK);
> +
> +	cs35l45->sync_en = ucontrol->value.integer.value[0];

When the unnormalized value is later assigned to the bool, it normalizes to 1. 
The function then returns 1, incorrectly generating a state change notification
even though the logical state didn't change.

Should the input value be normalized to a boolean before comparing and
assigning?

> +
> +	snd_soc_dapm_mutex_unlock(dapm);
> +
> +	return 1;
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260821-sound-for-next-cs35l45-sync-v4-v4-0-20d3a07c3b8d@opensource.cirrus.com?part=2

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

* Re: [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties
  2026-08-21 22:41 ` [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties Ricardo Rivera-Matos
@ 2026-08-27 12:31   ` Krzysztof Kozlowski
  2026-08-27 20:07     ` Ricardo Rivera-Matos
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-08-27 12:31 UTC (permalink / raw)
  To: Ricardo Rivera-Matos, David Rhodes, Richard Fitzgerald,
	Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jaroslav Kysela, Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel

On 22/08/2026 00:41, Ricardo Rivera-Matos wrote:
> Introduces support for the multidevice synchronization (SYNC)
> bus. The properties introduced allow for the configuration
> of the device's transmitter IDs.
> 
> Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
> ---
>  .../devicetree/bindings/sound/cirrus,cs35l45.yaml  | 27 ++++++++++++++++++++++
>  1 file changed, 27 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
> index 70f6c62aedca..20d758dc442f 100644
> --- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
> +++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
> @@ -53,6 +53,29 @@ properties:
>      maximum: 3
>      default: 2
>  
> +  sync:

Same comment. You did not respond to Sashiko report because "it
contradicts itself" is pointless. It did not... unless you meant
irrelevant part about example. But that is just irrelevant to the binding.

Best regards,
Krzysztof

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

* Re: [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties
  2026-08-27 12:31   ` Krzysztof Kozlowski
@ 2026-08-27 20:07     ` Ricardo Rivera-Matos
  2026-08-27 21:26       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Ricardo Rivera-Matos @ 2026-08-27 20:07 UTC (permalink / raw)
  To: Krzysztof Kozlowski, David Rhodes, Richard Fitzgerald,
	Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jaroslav Kysela, Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel



On 8/27/26 7:31 AM, Krzysztof Kozlowski wrote:
> On 22/08/2026 00:41, Ricardo Rivera-Matos wrote:
>> Introduces support for the multidevice synchronization (SYNC)
>> bus. The properties introduced allow for the configuration
>> of the device's transmitter IDs.
>>
>> Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
>> ---
>>   .../devicetree/bindings/sound/cirrus,cs35l45.yaml  | 27 ++++++++++++++++++++++
>>   1 file changed, 27 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>> index 70f6c62aedca..20d758dc442f 100644
>> --- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>> +++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>> @@ -53,6 +53,29 @@ properties:
>>       maximum: 3
>>       default: 2
>>   
>> +  sync:
> 
> Same comment. You did not respond to Sashiko report because "it
> contradicts itself" is pointless. It did not... unless you meant
> irrelevant part about example. But that is just irrelevant to the binding.

I will explain the contradiction again. Pay close attention to the word bus.

Sashiko says "This commit introduces support for the multidevice 
synchronization (SYNC) bus".

Sashiko and I agree, it is a bus.

Sashiko then complains "Is it necessary to use a child node here just to 
group configuration properties? In Device Tree design, child nodes 
usually represent distinct hardware components, sub-devices, buses, or 
standardized structural elements rather than serving as logical folders 
to group related configuration properties."

I am confused, do buses merit a child node or not? This is a 
contradiction without additional context. Do certain kinds of buses get 
child nodes and others do not?

Sashiko is an automated review tool that is being ambiguous. I need a 
human maintainer decision made here. Does a bus merit a child node, yes 
or no?

> 
> Best regards,
> Krzysztof

Ricardo


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

* Re: [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties
  2026-08-27 20:07     ` Ricardo Rivera-Matos
@ 2026-08-27 21:26       ` Krzysztof Kozlowski
  2026-08-27 21:57         ` Ricardo Rivera-Matos
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-08-27 21:26 UTC (permalink / raw)
  To: Ricardo Rivera-Matos, David Rhodes, Richard Fitzgerald,
	Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jaroslav Kysela, Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel

On 27/08/2026 22:07, Ricardo Rivera-Matos wrote:
> 
> 
> On 8/27/26 7:31 AM, Krzysztof Kozlowski wrote:
>> On 22/08/2026 00:41, Ricardo Rivera-Matos wrote:
>>> Introduces support for the multidevice synchronization (SYNC)
>>> bus. The properties introduced allow for the configuration
>>> of the device's transmitter IDs.
>>>
>>> Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
>>> ---
>>>   .../devicetree/bindings/sound/cirrus,cs35l45.yaml  | 27 ++++++++++++++++++++++
>>>   1 file changed, 27 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>> index 70f6c62aedca..20d758dc442f 100644
>>> --- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>> +++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>> @@ -53,6 +53,29 @@ properties:
>>>       maximum: 3
>>>       default: 2
>>>   
>>> +  sync:
>>
>> Same comment. You did not respond to Sashiko report because "it
>> contradicts itself" is pointless. It did not... unless you meant
>> irrelevant part about example. But that is just irrelevant to the binding.
> 
> I will explain the contradiction again. Pay close attention to the word bus.
> 
> Sashiko says "This commit introduces support for the multidevice 
> synchronization (SYNC) bus".
> 
> Sashiko and I agree, it is a bus.
> 
> Sashiko then complains "Is it necessary to use a child node here just to 
> group configuration properties? In Device Tree design, child nodes 
> usually represent distinct hardware components, sub-devices, buses, or 
> standardized structural elements rather than serving as logical folders 
> to group related configuration properties."
> 
> I am confused, do buses merit a child node or not? This is a 
> contradiction without additional context. Do certain kinds of buses get 
> child nodes and others do not?
> 
> Sashiko is an automated review tool that is being ambiguous. I need a 
> human maintainer decision made here. Does a bus merit a child node, yes 
> or no?
> 

I understand now your judgment.

Skipping then whatever Sashiko invented, I do not see there a bus
represented by that "sync" node. Bus in DT comes with children, thus
sync would have children. Or your DEVICE is a bus, then sync would be a
child of that bus.

But your description clearly says it is not a bus. It is a "bus
configuration". Configuration is not a bus and configuration does not
receive separate device nodes.

Best regards,
Krzysztof

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

* Re: [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties
  2026-08-27 21:26       ` Krzysztof Kozlowski
@ 2026-08-27 21:57         ` Ricardo Rivera-Matos
  0 siblings, 0 replies; 8+ messages in thread
From: Ricardo Rivera-Matos @ 2026-08-27 21:57 UTC (permalink / raw)
  To: Krzysztof Kozlowski, David Rhodes, Richard Fitzgerald,
	Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Jaroslav Kysela, Takashi Iwai
  Cc: linux-sound, patches, devicetree, linux-kernel



On 8/27/26 4:26 PM, Krzysztof Kozlowski wrote:
> On 27/08/2026 22:07, Ricardo Rivera-Matos wrote:
>>
>>
>> On 8/27/26 7:31 AM, Krzysztof Kozlowski wrote:
>>> On 22/08/2026 00:41, Ricardo Rivera-Matos wrote:
>>>> Introduces support for the multidevice synchronization (SYNC)
>>>> bus. The properties introduced allow for the configuration
>>>> of the device's transmitter IDs.
>>>>
>>>> Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
>>>> ---
>>>>    .../devicetree/bindings/sound/cirrus,cs35l45.yaml  | 27 ++++++++++++++++++++++
>>>>    1 file changed, 27 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>>> index 70f6c62aedca..20d758dc442f 100644
>>>> --- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>>> +++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml
>>>> @@ -53,6 +53,29 @@ properties:
>>>>        maximum: 3
>>>>        default: 2
>>>>    
>>>> +  sync:
>>>
>>> Same comment. You did not respond to Sashiko report because "it
>>> contradicts itself" is pointless. It did not... unless you meant
>>> irrelevant part about example. But that is just irrelevant to the binding.
>>
>> I will explain the contradiction again. Pay close attention to the word bus.
>>
>> Sashiko says "This commit introduces support for the multidevice
>> synchronization (SYNC) bus".
>>
>> Sashiko and I agree, it is a bus.
>>
>> Sashiko then complains "Is it necessary to use a child node here just to
>> group configuration properties? In Device Tree design, child nodes
>> usually represent distinct hardware components, sub-devices, buses, or
>> standardized structural elements rather than serving as logical folders
>> to group related configuration properties."
>>
>> I am confused, do buses merit a child node or not? This is a
>> contradiction without additional context. Do certain kinds of buses get
>> child nodes and others do not?
>>
>> Sashiko is an automated review tool that is being ambiguous. I need a
>> human maintainer decision made here. Does a bus merit a child node, yes
>> or no?
>>
> 
> I understand now your judgment.
> 
> Skipping then whatever Sashiko invented, I do not see there a bus
> represented by that "sync" node. Bus in DT comes with children, thus
> sync would have children. Or your DEVICE is a bus, then sync would be a
> child of that bus.
> 
> But your description clearly says it is not a bus. It is a "bus
> configuration". Configuration is not a bus and configuration does not
> receive separate device nodes.

Ack, will fix in v5. Thank you for taking the time to clarify.

> 
> Best regards,
> Krzysztof

Ricardo

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

end of thread, other threads:[~2026-08-27 21:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21 22:41 [PATCH v4 0/2] Introduces MDSYNC support for CS35L45 Ricardo Rivera-Matos
2026-08-21 22:41 ` [PATCH v4 1/2] ASoC: dt-bindings: cs35l45: Adds SYNC properties Ricardo Rivera-Matos
2026-08-27 12:31   ` Krzysztof Kozlowski
2026-08-27 20:07     ` Ricardo Rivera-Matos
2026-08-27 21:26       ` Krzysztof Kozlowski
2026-08-27 21:57         ` Ricardo Rivera-Matos
2026-08-21 22:41 ` [PATCH v4 2/2] ASoC: cs35l45: Adds support for SYNC bus Ricardo Rivera-Matos
2026-08-21 22:49   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox