Netdev List
 help / color / mirror / Atom feed
* [PATCH 0/2] dpll: zl3073x: add Microchip ZL30643 support
@ 2026-07-23 23:09 Vincent Jardin via B4 Relay
  2026-07-23 23:09 ` [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible Vincent Jardin via B4 Relay
  2026-07-23 23:09 ` [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support Vincent Jardin via B4 Relay
  0 siblings, 2 replies; 8+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-07-23 23:09 UTC (permalink / raw)
  To: Ivan Vecera, Prathosh Satish, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Vadim Fedorenko, Arkadiusz Kubalewski, Jiri Pirko
  Cc: netdev, devicetree, linux-kernel, Vincent Jardin

The Microchip ZL30643 (chip ID 0x0E3B) is a 3 DPLL channel member
of the ZL3073x family.

Patch 1 adds the binding.
Patch 2 registers the chip in the driver: the chip-info table and the
I2C, SPI and OF device-ID match tables.

It was tested on an LX2160A board with a ZL30733 and a ZL30643, both
are probed and they expose their DPLL channels.

Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
Vincent Jardin (2):
      dt-bindings: dpll: zl3073x: add ZL30643 compatible
      dpll: zl3073x: add ZL30643 chip support

 Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml | 1 +
 drivers/dpll/zl3073x/core.c                                   | 1 +
 drivers/dpll/zl3073x/i2c.c                                    | 2 ++
 drivers/dpll/zl3073x/spi.c                                    | 2 ++
 4 files changed, 6 insertions(+)
---
base-commit: 248951ddc14de84de3910f9b13f51491a8cd91df
change-id: 20260724-for-upstream-zl30643-8b23267b974f

Best regards,
-- 
Vincent Jardin <vjardin@free.fr>



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

* [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible
  2026-07-23 23:09 [PATCH 0/2] dpll: zl3073x: add Microchip ZL30643 support Vincent Jardin via B4 Relay
@ 2026-07-23 23:09 ` Vincent Jardin via B4 Relay
  2026-07-24 16:46   ` Conor Dooley
  2026-07-23 23:09 ` [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support Vincent Jardin via B4 Relay
  1 sibling, 1 reply; 8+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-07-23 23:09 UTC (permalink / raw)
  To: Ivan Vecera, Prathosh Satish, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Vadim Fedorenko, Arkadiusz Kubalewski, Jiri Pirko
  Cc: netdev, devicetree, linux-kernel, Vincent Jardin

From: Vincent Jardin <vjardin@free.fr>

The Microchip ZL30643 (chip ID 0x0E3B) is a 3 DPLL channel member
of the ZL3073x family. Add its compatible string to the binding enum.

Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
 Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml b/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
index fa5a8f8e390c..13ea55c2c146 100644
--- a/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
+++ b/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
@@ -18,6 +18,7 @@ description:
 properties:
   compatible:
     enum:
+      - microchip,zl30643
       - microchip,zl30731
       - microchip,zl30732
       - microchip,zl30733

-- 
2.43.0



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

* [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support
  2026-07-23 23:09 [PATCH 0/2] dpll: zl3073x: add Microchip ZL30643 support Vincent Jardin via B4 Relay
  2026-07-23 23:09 ` [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible Vincent Jardin via B4 Relay
@ 2026-07-23 23:09 ` Vincent Jardin via B4 Relay
  2026-07-27  8:36   ` Ivan Vecera
  1 sibling, 1 reply; 8+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-07-23 23:09 UTC (permalink / raw)
  To: Ivan Vecera, Prathosh Satish, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Vadim Fedorenko, Arkadiusz Kubalewski, Jiri Pirko
  Cc: netdev, devicetree, linux-kernel, Vincent Jardin

From: Vincent Jardin <vjardin@free.fr>

Register the Microchip ZL30643 (chip ID 0x0E3B), it is a 3 DPLL channel
of the ZL3073x family.

Once register, for instance, we get:

  devlink dev param set spi/spi0.0 name clock_id value 3733 cmode driverinit
  devlink dev reload spi/spi0.0
  devlink dev param set spi/spi2.1 name clock_id value 3643 cmode driverinit
  devlink dev reload spi/spi2.1

  dpll device show | grep clock-id
    clock-id: 3733
    clock-id: 3733
    clock-id: 3733
    clock-id: 3643
    clock-id: 3643
    clock-id: 3643

Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
 drivers/dpll/zl3073x/core.c | 1 +
 drivers/dpll/zl3073x/i2c.c  | 2 ++
 drivers/dpll/zl3073x/spi.c  | 2 ++
 3 files changed, 5 insertions(+)

diff --git a/drivers/dpll/zl3073x/core.c b/drivers/dpll/zl3073x/core.c
index 8e6416a4741d..4d07f69efb44 100644
--- a/drivers/dpll/zl3073x/core.c
+++ b/drivers/dpll/zl3073x/core.c
@@ -25,6 +25,7 @@
 
 static const struct zl3073x_chip_info zl3073x_chip_ids[] = {
 	ZL_CHIP_INFO(0x0E30, 2, ZL3073X_FLAG_REF_PHASE_COMP_32),
+	ZL_CHIP_INFO(0x0E3B, 3, ZL3073X_FLAG_REF_PHASE_COMP_32),
 	ZL_CHIP_INFO(0x0E93, 1, ZL3073X_FLAG_REF_PHASE_COMP_32),
 	ZL_CHIP_INFO(0x0E94, 2, ZL3073X_FLAG_REF_PHASE_COMP_32),
 	ZL_CHIP_INFO(0x0E95, 3, ZL3073X_FLAG_REF_PHASE_COMP_32),
diff --git a/drivers/dpll/zl3073x/i2c.c b/drivers/dpll/zl3073x/i2c.c
index 4a23340e29d0..f12c6306a85b 100644
--- a/drivers/dpll/zl3073x/i2c.c
+++ b/drivers/dpll/zl3073x/i2c.c
@@ -26,6 +26,7 @@ static int zl3073x_i2c_probe(struct i2c_client *client)
 }
 
 static const struct i2c_device_id zl3073x_i2c_id[] = {
+	{ .name = "zl30643" },
 	{ .name = "zl30731" },
 	{ .name = "zl30732" },
 	{ .name = "zl30733" },
@@ -36,6 +37,7 @@ static const struct i2c_device_id zl3073x_i2c_id[] = {
 MODULE_DEVICE_TABLE(i2c, zl3073x_i2c_id);
 
 static const struct of_device_id zl3073x_i2c_of_match[] = {
+	{ .compatible = "microchip,zl30643" },
 	{ .compatible = "microchip,zl30731" },
 	{ .compatible = "microchip,zl30732" },
 	{ .compatible = "microchip,zl30733" },
diff --git a/drivers/dpll/zl3073x/spi.c b/drivers/dpll/zl3073x/spi.c
index f024f42b78d0..d56c8d8ecc28 100644
--- a/drivers/dpll/zl3073x/spi.c
+++ b/drivers/dpll/zl3073x/spi.c
@@ -26,6 +26,7 @@ static int zl3073x_spi_probe(struct spi_device *spi)
 }
 
 static const struct spi_device_id zl3073x_spi_id[] = {
+	{ "zl30643" },
 	{ "zl30731" },
 	{ "zl30732" },
 	{ "zl30733" },
@@ -36,6 +37,7 @@ static const struct spi_device_id zl3073x_spi_id[] = {
 MODULE_DEVICE_TABLE(spi, zl3073x_spi_id);
 
 static const struct of_device_id zl3073x_spi_of_match[] = {
+	{ .compatible = "microchip,zl30643" },
 	{ .compatible = "microchip,zl30731" },
 	{ .compatible = "microchip,zl30732" },
 	{ .compatible = "microchip,zl30733" },

-- 
2.43.0



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

* Re: [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible
  2026-07-23 23:09 ` [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible Vincent Jardin via B4 Relay
@ 2026-07-24 16:46   ` Conor Dooley
  2026-07-30 17:01     ` Vincent Jardin
  0 siblings, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2026-07-24 16:46 UTC (permalink / raw)
  To: vjardin
  Cc: Ivan Vecera, Prathosh Satish, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Vadim Fedorenko, Arkadiusz Kubalewski, Jiri Pirko,
	netdev, devicetree, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1086 bytes --]

On Fri, Jul 24, 2026 at 01:09:12AM +0200, Vincent Jardin via B4 Relay wrote:
> From: Vincent Jardin <vjardin@free.fr>
> 
> The Microchip ZL30643 (chip ID 0x0E3B) is a 3 DPLL channel member
> of the ZL3073x family. Add its compatible string to the binding enum.
> 
> Signed-off-by: Vincent Jardin <vjardin@free.fr>

What about this device makes it incomaptible with existing ones?

Cheers,
Conor.

> ---
>  Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml b/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
> index fa5a8f8e390c..13ea55c2c146 100644
> --- a/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
> +++ b/Documentation/devicetree/bindings/dpll/microchip,zl30731.yaml
> @@ -18,6 +18,7 @@ description:
>  properties:
>    compatible:
>      enum:
> +      - microchip,zl30643
>        - microchip,zl30731
>        - microchip,zl30732
>        - microchip,zl30733
> 
> -- 
> 2.43.0
> 
> 

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

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

* Re: [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support
  2026-07-23 23:09 ` [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support Vincent Jardin via B4 Relay
@ 2026-07-27  8:36   ` Ivan Vecera
  2026-07-30 17:08     ` Vincent Jardin
  0 siblings, 1 reply; 8+ messages in thread
From: Ivan Vecera @ 2026-07-27  8:36 UTC (permalink / raw)
  To: vjardin, Vincent Jardin via B4 Relay, Prathosh Satish,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Vadim Fedorenko,
	Arkadiusz Kubalewski, Jiri Pirko
  Cc: netdev, devicetree, linux-kernel, Vincent Jardin



24. července 2026 1:09:13 SELČ, Vincent Jardin via B4 Relay <devnull+vjardin.free.fr@kernel.org> napsal:
>From: Vincent Jardin <vjardin@free.fr>
>
>Register the Microchip ZL30643 (chip ID 0x0E3B), it is a 3 DPLL channel
>of the ZL3073x family.
>
>Once register, for instance, we get:
>
>  devlink dev param set spi/spi0.0 name clock_id value 3733 cmode driverinit
>  devlink dev reload spi/spi0.0
>  devlink dev param set spi/spi2.1 name clock_id value 3643 cmode driverinit
>  devlink dev reload spi/spi2.1
>
>  dpll device show | grep clock-id
>    clock-id: 3733
>    clock-id: 3733
>    clock-id: 3733
>    clock-id: 3643
>    clock-id: 3643
>    clock-id: 3643
>
>Signed-off-by: Vincent Jardin <vjardin@free.fr>
>---
> drivers/dpll/zl3073x/core.c | 1 +
> drivers/dpll/zl3073x/i2c.c  | 2 ++
> drivers/dpll/zl3073x/spi.c  | 2 ++
> 3 files changed, 5 insertions(+)
>

Hi Vincent,
I'm not sure that all driver's functionality is supported by ZL3064x. Did you test everything?

I need to check datasheets for this chip models, maybe some device flags will be needed.

Thanks
Ivan

>diff --git a/drivers/dpll/zl3073x/core.c b/drivers/dpll/zl3073x/core.c
>index 8e6416a4741d..4d07f69efb44 100644
>--- a/drivers/dpll/zl3073x/core.c
>+++ b/drivers/dpll/zl3073x/core.c
>@@ -25,6 +25,7 @@
> 
> static const struct zl3073x_chip_info zl3073x_chip_ids[] = {
> 	ZL_CHIP_INFO(0x0E30, 2, ZL3073X_FLAG_REF_PHASE_COMP_32),
>+	ZL_CHIP_INFO(0x0E3B, 3, ZL3073X_FLAG_REF_PHASE_COMP_32),
> 	ZL_CHIP_INFO(0x0E93, 1, ZL3073X_FLAG_REF_PHASE_COMP_32),
> 	ZL_CHIP_INFO(0x0E94, 2, ZL3073X_FLAG_REF_PHASE_COMP_32),
> 	ZL_CHIP_INFO(0x0E95, 3, ZL3073X_FLAG_REF_PHASE_COMP_32),
>diff --git a/drivers/dpll/zl3073x/i2c.c b/drivers/dpll/zl3073x/i2c.c
>index 4a23340e29d0..f12c6306a85b 100644
>--- a/drivers/dpll/zl3073x/i2c.c
>+++ b/drivers/dpll/zl3073x/i2c.c
>@@ -26,6 +26,7 @@ static int zl3073x_i2c_probe(struct i2c_client *client)
> }
> 
> static const struct i2c_device_id zl3073x_i2c_id[] = {
>+	{ .name = "zl30643" },
> 	{ .name = "zl30731" },
> 	{ .name = "zl30732" },
> 	{ .name = "zl30733" },
>@@ -36,6 +37,7 @@ static const struct i2c_device_id zl3073x_i2c_id[] = {
> MODULE_DEVICE_TABLE(i2c, zl3073x_i2c_id);
> 
> static const struct of_device_id zl3073x_i2c_of_match[] = {
>+	{ .compatible = "microchip,zl30643" },
> 	{ .compatible = "microchip,zl30731" },
> 	{ .compatible = "microchip,zl30732" },
> 	{ .compatible = "microchip,zl30733" },
>diff --git a/drivers/dpll/zl3073x/spi.c b/drivers/dpll/zl3073x/spi.c
>index f024f42b78d0..d56c8d8ecc28 100644
>--- a/drivers/dpll/zl3073x/spi.c
>+++ b/drivers/dpll/zl3073x/spi.c
>@@ -26,6 +26,7 @@ static int zl3073x_spi_probe(struct spi_device *spi)
> }
> 
> static const struct spi_device_id zl3073x_spi_id[] = {
>+	{ "zl30643" },
> 	{ "zl30731" },
> 	{ "zl30732" },
> 	{ "zl30733" },
>@@ -36,6 +37,7 @@ static const struct spi_device_id zl3073x_spi_id[] = {
> MODULE_DEVICE_TABLE(spi, zl3073x_spi_id);
> 
> static const struct of_device_id zl3073x_spi_of_match[] = {
>+	{ .compatible = "microchip,zl30643" },
> 	{ .compatible = "microchip,zl30731" },
> 	{ .compatible = "microchip,zl30732" },
> 	{ .compatible = "microchip,zl30733" },
>


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

* Re: [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible
  2026-07-24 16:46   ` Conor Dooley
@ 2026-07-30 17:01     ` Vincent Jardin
  0 siblings, 0 replies; 8+ messages in thread
From: Vincent Jardin @ 2026-07-30 17:01 UTC (permalink / raw)
  To: Conor Dooley
  Cc: Ivan Vecera, Prathosh Satish, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Vadim Fedorenko, Arkadiusz Kubalewski, Jiri Pirko,
	netdev, devicetree, linux-kernel

Ho Conor,

Le 24/07/26 17:46, Conor Dooley a écrit :
> On Fri, Jul 24, 2026 at 01:09:12AM +0200, Vincent Jardin via B4 Relay wrote:
> > From: Vincent Jardin <vjardin@free.fr>
> > 
> > The Microchip ZL30643 (chip ID 0x0E3B) is a 3 DPLL channel member
> > of the ZL3073x family. Add its compatible string to the binding enum.
> > 
> > Signed-off-by: Vincent Jardin <vjardin@free.fr>
> 
> What about this device makes it incomaptible with existing ones?

Nothing makes it incompatible at the programming level: it is
register-compatible with the existing parts. I compared both
datasheets of the zl3064x and zl3073x.

They are the same registers for both families
(zl3064x for line cards, zl3073x for central system/CPU).

The register descriptions are identical, both use the same chip-ID encoding
 base,
 A-series +0x1000
 B-series +0x2000
 7x7 package +0x8000

zl30643 for 0x0E3B is the 3-channel part, i.e. register-equivalent to
zl30733 = 0x0E95.

Nevertheless, I'll switch to a fallback compatible instead of a bare new
enum entry:

    compatible = "microchip,zl30643", "microchip,zl30733";

Thanks,
  Vincent

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

* Re: [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support
  2026-07-27  8:36   ` Ivan Vecera
@ 2026-07-30 17:08     ` Vincent Jardin
  2026-08-03 11:51       ` Ivan Vecera
  0 siblings, 1 reply; 8+ messages in thread
From: Vincent Jardin @ 2026-07-30 17:08 UTC (permalink / raw)
  To: Ivan Vecera
  Cc: Vincent Jardin via B4 Relay, Prathosh Satish, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Vadim Fedorenko,
	Arkadiusz Kubalewski, Jiri Pirko, netdev, devicetree,
	linux-kernel

Hi Ivan,

> Hi Vincent,
> I'm not sure that all driver's functionality is supported by ZL3064x. Did you test everything?
> 
> I need to check datasheets for this chip models, maybe some device flags will be needed.

I checked both datasheets. They are the same registers:

  - the register descriptions are verbatim identical

  - same chip-ID encoding (base / A +0x1000 / B +0x2000 / 7x7 +0x8000)

So ZL_CHIP_INFO(0x0E3B, 3, ZL3073X_FLAG_REF_PHASE_COMP_32) is correct
and no new device flag is needed: the ref-phase mechanism the flag
governs is identical between the families.

The only differences seem to be non-register related: line card vs
central system and the min input-frequency spec (1 kHz vs 0.5 Hz).

I tested with:

  devlink dev param set spi/spi0.0 name clock_id value 3733 cmode driverinit
  devlink dev reload spi/spi0.0

  devlink dev param set spi/spi2.1 name clock_id value 3643 cmode driverinit
  devlink dev reload spi/spi2.1

  dpll device show | grep clock-id
    clock-id: 3733
    clock-id: 3733
    clock-id: 3733
    clock-id: 3643
    clock-id: 3643
    clock-id: 3643

Best regards,
  Vincent

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

* Re: [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support
  2026-07-30 17:08     ` Vincent Jardin
@ 2026-08-03 11:51       ` Ivan Vecera
  0 siblings, 0 replies; 8+ messages in thread
From: Ivan Vecera @ 2026-08-03 11:51 UTC (permalink / raw)
  To: Vincent Jardin
  Cc: Vincent Jardin via B4 Relay, Prathosh Satish, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Vadim Fedorenko,
	Arkadiusz Kubalewski, Jiri Pirko, netdev, devicetree,
	linux-kernel

On 7/30/26 7:08 PM, Vincent Jardin wrote:
> Hi Ivan,
> 
>> Hi Vincent,
>> I'm not sure that all driver's functionality is supported by ZL3064x. Did you test everything?
>>
>> I need to check datasheets for this chip models, maybe some device flags will be needed.
> 
> I checked both datasheets. They are the same registers:
> 
>    - the register descriptions are verbatim identical
> 
>    - same chip-ID encoding (base / A +0x1000 / B +0x2000 / 7x7 +0x8000)
> 
> So ZL_CHIP_INFO(0x0E3B, 3, ZL3073X_FLAG_REF_PHASE_COMP_32) is correct
> and no new device flag is needed: the ref-phase mechanism the flag
> governs is identical between the families.
> 
> The only differences seem to be non-register related: line card vs
> central system and the min input-frequency spec (1 kHz vs 0.5 Hz).

Hi Vincent,

Yes, minimal reference frequency for zl3064x is 1000Hz and also
supported bandwidth range is different (not relevant now).

So, we need to
- add new field into zl3073x_chip_info that will describe minimal input
   reference frequency
- add a check into zl3073x_pin_check_freq()

Let me know if you want to do it yourself or if I should do it (I would
send it along with your two patches).

Thanks,
Ivan


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

end of thread, other threads:[~2026-08-03 11:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-23 23:09 [PATCH 0/2] dpll: zl3073x: add Microchip ZL30643 support Vincent Jardin via B4 Relay
2026-07-23 23:09 ` [PATCH 1/2] dt-bindings: dpll: zl3073x: add ZL30643 compatible Vincent Jardin via B4 Relay
2026-07-24 16:46   ` Conor Dooley
2026-07-30 17:01     ` Vincent Jardin
2026-07-23 23:09 ` [PATCH 2/2] dpll: zl3073x: add ZL30643 chip support Vincent Jardin via B4 Relay
2026-07-27  8:36   ` Ivan Vecera
2026-07-30 17:08     ` Vincent Jardin
2026-08-03 11:51       ` Ivan Vecera

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