linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] ARM: add support for pcb8309
@ 2022-07-20 19:49 Horatiu Vultur
  2022-07-20 19:49 ` [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board Horatiu Vultur
  2022-07-20 19:49 ` [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309 Horatiu Vultur
  0 siblings, 2 replies; 9+ messages in thread
From: Horatiu Vultur @ 2022-07-20 19:49 UTC (permalink / raw)
  To: devicetree, linux-arm-kernel, linux-kernel
  Cc: robh+dt, krzysztof.kozlowski+dt, nicolas.ferre,
	alexandre.belloni, claudiu.beznea, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier, Horatiu Vultur

Add documentation and add the pcb8309.
It features a LAN9662 SoC with 2 internal copport ports and two SFP cages.

Horatiu Vultur (2):
  dt-bindings: arm: at91: add lan966 pcb8309 board
  ARM: dts: lan966x: add support for pcb8309

 .../devicetree/bindings/arm/atmel-at91.yaml   |   6 +
 arch/arm/boot/dts/Makefile                    |   3 +-
 arch/arm/boot/dts/lan966x-pcb8309.dts         | 189 ++++++++++++++++++
 3 files changed, 197 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/lan966x-pcb8309.dts

-- 
2.33.0


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

* [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board
  2022-07-20 19:49 [PATCH 0/2] ARM: add support for pcb8309 Horatiu Vultur
@ 2022-07-20 19:49 ` Horatiu Vultur
  2022-07-21  6:46   ` Krzysztof Kozlowski
  2022-07-20 19:49 ` [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309 Horatiu Vultur
  1 sibling, 1 reply; 9+ messages in thread
From: Horatiu Vultur @ 2022-07-20 19:49 UTC (permalink / raw)
  To: devicetree, linux-arm-kernel, linux-kernel
  Cc: robh+dt, krzysztof.kozlowski+dt, nicolas.ferre,
	alexandre.belloni, claudiu.beznea, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier, Horatiu Vultur

Add documentation for Microchip LAN9662 PCB8309.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
---
 Documentation/devicetree/bindings/arm/atmel-at91.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.yaml b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
index 4e495e03264b..9dc9ad81193a 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.yaml
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
@@ -169,6 +169,12 @@ properties:
           - const: microchip,lan9662
           - const: microchip,lan966
 
+      - description: Microchip LAN9662 PCB8309 Evaluation Board.
+        items:
+          - const: microchip,lan9662-pcb8309
+          - const: microchip,lan9662
+          - const: microchip,lan966
+
       - description: Microchip LAN9668 PCB8290 Evaluation Board.
         items:
           - const: microchip,lan9668-pcb8290
-- 
2.33.0


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

* [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309
  2022-07-20 19:49 [PATCH 0/2] ARM: add support for pcb8309 Horatiu Vultur
  2022-07-20 19:49 ` [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board Horatiu Vultur
@ 2022-07-20 19:49 ` Horatiu Vultur
  2022-07-21  6:08   ` Kavyasree.Kotagiri
  2022-07-21  7:39   ` Claudiu.Beznea
  1 sibling, 2 replies; 9+ messages in thread
From: Horatiu Vultur @ 2022-07-20 19:49 UTC (permalink / raw)
  To: devicetree, linux-arm-kernel, linux-kernel
  Cc: robh+dt, krzysztof.kozlowski+dt, nicolas.ferre,
	alexandre.belloni, claudiu.beznea, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier, Horatiu Vultur

Add basic support for pcb8309. It is similar with pcb8291 with one big
difference that is having 2 SFP cages. Therefore it has 4 network ports.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
---
 arch/arm/boot/dts/Makefile            |   3 +-
 arch/arm/boot/dts/lan966x-pcb8309.dts | 189 ++++++++++++++++++++++++++
 2 files changed, 191 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/lan966x-pcb8309.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 184899808ee7..6a6166e3a405 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -772,7 +772,8 @@ dtb-$(CONFIG_SOC_IMXRT) += \
 dtb-$(CONFIG_SOC_LAN966) += \
 	lan966x-pcb8291.dtb \
 	lan966x-kontron-kswitch-d10-mmt-6g-2gs.dtb \
-	lan966x-kontron-kswitch-d10-mmt-8g.dtb
+	lan966x-kontron-kswitch-d10-mmt-8g.dtb \
+	lan966x-pcb8309.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
 	ls1021a-iot.dtb \
 	ls1021a-moxa-uc-8410a.dtb \
diff --git a/arch/arm/boot/dts/lan966x-pcb8309.dts b/arch/arm/boot/dts/lan966x-pcb8309.dts
new file mode 100644
index 000000000000..ef441195e8c1
--- /dev/null
+++ b/arch/arm/boot/dts/lan966x-pcb8309.dts
@@ -0,0 +1,189 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * lan966x_pcb8309.dts - Device Tree file for PCB8309
+ */
+/dts-v1/;
+#include "lan966x.dtsi"
+#include "dt-bindings/phy/phy-lan966x-serdes.h"
+
+/ {
+	model = "Microchip EVB - LAN9662";
+	compatible = "microchip,lan9662-pcb8309", "microchip,lan9662", "microchip,lan966";
+
+	aliases {
+		serial0 = &usart3;
+		i2c102 = &i2c102;
+		i2c103 = &i2c103;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	gpio-restart {
+		compatible = "gpio-restart";
+		gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
+		priority = <200>;
+	};
+
+	i2c-mux {
+		compatible = "i2c-mux";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		mux-controls = <&mux>;
+		i2c-parent = <&i2c4>;
+
+		i2c102: i2c-sfp@1 {
+			reg = <1>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		i2c103: i2c-sfp@2 {
+			reg = <2>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+	};
+
+	mux: mux-controller {
+		compatible = "gpio-mux";
+		#mux-control-cells = <0>;
+
+		mux-gpios = <&sgpio_out 11 0 GPIO_ACTIVE_HIGH>, /* p11b0 */
+			    <&sgpio_out 11 1 GPIO_ACTIVE_HIGH>; /* p11b1 */
+	};
+
+	sfp2: sfp2 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c102>;
+		tx-disable-gpios = <&sgpio_out 10 0 GPIO_ACTIVE_LOW>;
+		los-gpios = <&sgpio_in  2 0 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpios = <&sgpio_in  2 1 GPIO_ACTIVE_LOW>;
+		tx-fault-gpios = <&sgpio_in  1 0 GPIO_ACTIVE_HIGH>;
+	};
+
+	sfp3: sfp3 {
+		compatible = "sff,sfp";
+		i2c-bus = <&i2c103>;
+		tx-disable-gpios = <&sgpio_out 10 1 GPIO_ACTIVE_LOW>;
+		los-gpios = <&sgpio_in  3 0 GPIO_ACTIVE_HIGH>;
+		mod-def0-gpios = <&sgpio_in  3 1 GPIO_ACTIVE_LOW>;
+		tx-fault-gpios = <&sgpio_in  1 1 GPIO_ACTIVE_HIGH>;
+	};
+};
+
+&flx3 {
+	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+	status = "okay";
+
+	usart3: serial@200 {
+		pinctrl-0 = <&fc3_b_pins>;
+		pinctrl-names = "default";
+		status = "okay";
+	};
+};
+
+&flx4 {
+	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+	status = "okay";
+};
+
+&gpio {
+	fc3_b_pins: fc3-b-pins {
+		/* RXD, TXD */
+		pins = "GPIO_52", "GPIO_53";
+		function = "fc3_b";
+	};
+
+	fc4_b_pins: fc4-b-pins {
+		/* SCL, SDA */
+		pins = "GPIO_57", "GPIO_58";
+		function = "fc4_b";
+	};
+
+	sgpio_a_pins: sgpio-a-pins {
+		/* SCK, D0, D1, LD */
+		pins = "GPIO_32", "GPIO_33", "GPIO_34", "GPIO_35";
+		function = "sgpio_a";
+	};
+};
+
+&i2c4 {
+	compatible = "microchip,sam9x60-i2c";
+	reg = <0x600 0x200>;
+	interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	clocks = <&nic_clk>;
+	pinctrl-0 = <&fc4_b_pins>;
+	pinctrl-names = "default";
+	i2c-analog-filter;
+	i2c-digital-filter;
+	i2c-digital-filter-width-ns = <35>;
+	i2c-sda-hold-time-ns = <1500>;
+	status = "okay";
+};
+
+&mdio1 {
+	status = "okay";
+};
+
+&phy0 {
+	status = "okay";
+};
+
+&phy1 {
+	status = "okay";
+};
+
+&port0 {
+	status = "okay";
+	phy-handle = <&phy0>;
+	phy-mode = "gmii";
+	phys = <&serdes 0 CU(0)>;
+};
+
+&port1 {
+	status = "okay";
+	phy-handle = <&phy1>;
+	phy-mode = "gmii";
+	phys = <&serdes 1 CU(1)>;
+};
+
+&port2 {
+	status = "okay";
+	sfp = <&sfp2>;
+	managed = "in-band-status";
+	phy-mode = "sgmii";
+	phys = <&serdes 2 SERDES6G(0)>;
+};
+
+&port3 {
+	status = "okay";
+	sfp = <&sfp3>;
+	managed = "in-band-status";
+	phy-mode = "sgmii";
+	phys = <&serdes 3 SERDES6G(1)>;
+};
+
+&serdes {
+	status = "okay";
+};
+
+&sgpio {
+	status = "okay";
+	pinctrl-0 = <&sgpio_a_pins>;
+	pinctrl-names = "default";
+	microchip,sgpio-port-ranges = <0 3>, <8 11>;
+	gpio@0 {
+		ngpios = <64>;
+	};
+	gpio@1 {
+		ngpios = <64>;
+	};
+};
+
+&switch {
+	status = "okay";
+};
-- 
2.33.0


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

* RE: [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309
  2022-07-20 19:49 ` [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309 Horatiu Vultur
@ 2022-07-21  6:08   ` Kavyasree.Kotagiri
  2022-07-22 12:46     ` Horatiu Vultur - M31836
  2022-07-21  7:39   ` Claudiu.Beznea
  1 sibling, 1 reply; 9+ messages in thread
From: Kavyasree.Kotagiri @ 2022-07-21  6:08 UTC (permalink / raw)
  To: Horatiu.Vultur
  Cc: robh+dt, krzysztof.kozlowski+dt, Nicolas.Ferre,
	alexandre.belloni, Claudiu.Beznea, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier, devicetree, linux-arm-kernel,
	linux-kernel

> Add basic support for pcb8309. It is similar with pcb8291 with one big
> difference that is having 2 SFP cages. Therefore it has 4 network ports.
> 
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> ---
>  arch/arm/boot/dts/Makefile            |   3 +-
>  arch/arm/boot/dts/lan966x-pcb8309.dts | 189
> ++++++++++++++++++++++++++
>  2 files changed, 191 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/lan966x-pcb8309.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 184899808ee7..6a6166e3a405 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -772,7 +772,8 @@ dtb-$(CONFIG_SOC_IMXRT) += \
>  dtb-$(CONFIG_SOC_LAN966) += \
>  	lan966x-pcb8291.dtb \
>  	lan966x-kontron-kswitch-d10-mmt-6g-2gs.dtb \
> -	lan966x-kontron-kswitch-d10-mmt-8g.dtb
> +	lan966x-kontron-kswitch-d10-mmt-8g.dtb \
> +	lan966x-pcb8309.dtb
>  dtb-$(CONFIG_SOC_LS1021A) += \
>  	ls1021a-iot.dtb \
>  	ls1021a-moxa-uc-8410a.dtb \
> diff --git a/arch/arm/boot/dts/lan966x-pcb8309.dts
> b/arch/arm/boot/dts/lan966x-pcb8309.dts
> new file mode 100644
> index 000000000000..ef441195e8c1
> --- /dev/null
> +++ b/arch/arm/boot/dts/lan966x-pcb8309.dts
> @@ -0,0 +1,189 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * lan966x_pcb8309.dts - Device Tree file for PCB8309
> + */
> +/dts-v1/;
> +#include "lan966x.dtsi"
> +#include "dt-bindings/phy/phy-lan966x-serdes.h"
> +
> +/ {
> +	model = "Microchip EVB - LAN9662";
> +	compatible = "microchip,lan9662-pcb8309", "microchip,lan9662",
> "microchip,lan966";
> +
> +	aliases {
> +		serial0 = &usart3;
> +		i2c102 = &i2c102;
> +		i2c103 = &i2c103;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +
> +	gpio-restart {
> +		compatible = "gpio-restart";
> +		gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
> +		priority = <200>;
> +	};
> +
> +	i2c-mux {
> +		compatible = "i2c-mux";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		mux-controls = <&mux>;
> +		i2c-parent = <&i2c4>;
> +
> +		i2c102: i2c-sfp@1 {
> +			reg = <1>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;

Why do you need #address-cells and #size-cells here?
> +		};
> +
> +		i2c103: i2c-sfp@2 {
> +			reg = <2>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
Same here
> +		};
> +	};
> +
> +	mux: mux-controller {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +
> +		mux-gpios = <&sgpio_out 11 0 GPIO_ACTIVE_HIGH>, /*
> p11b0 */
> +			    <&sgpio_out 11 1 GPIO_ACTIVE_HIGH>; /* p11b1
> */
> +	};
> +
> +	sfp2: sfp2 {
> +		compatible = "sff,sfp";
> +		i2c-bus = <&i2c102>;
> +		tx-disable-gpios = <&sgpio_out 10 0 GPIO_ACTIVE_LOW>;
> +		los-gpios = <&sgpio_in  2 0 GPIO_ACTIVE_HIGH>;
> +		mod-def0-gpios = <&sgpio_in  2 1 GPIO_ACTIVE_LOW>;
> +		tx-fault-gpios = <&sgpio_in  1 0 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	sfp3: sfp3 {
> +		compatible = "sff,sfp";
> +		i2c-bus = <&i2c103>;
> +		tx-disable-gpios = <&sgpio_out 10 1 GPIO_ACTIVE_LOW>;
> +		los-gpios = <&sgpio_in  3 0 GPIO_ACTIVE_HIGH>;
> +		mod-def0-gpios = <&sgpio_in  3 1 GPIO_ACTIVE_LOW>;
> +		tx-fault-gpios = <&sgpio_in  1 1 GPIO_ACTIVE_HIGH>;
> +	};
> +};
> +
> +&flx3 {
> +	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
> +	status = "okay";
> +
> +	usart3: serial@200 {
> +		pinctrl-0 = <&fc3_b_pins>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +	};
> +};
> +
> +&flx4 {
> +	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
> +	status = "okay";
> +};
> +
> +&gpio {
> +	fc3_b_pins: fc3-b-pins {
> +		/* RXD, TXD */
> +		pins = "GPIO_52", "GPIO_53";
> +		function = "fc3_b";
> +	};
> +
> +	fc4_b_pins: fc4-b-pins {
> +		/* SCL, SDA */
> +		pins = "GPIO_57", "GPIO_58";
> +		function = "fc4_b";
> +	};
> +
> +	sgpio_a_pins: sgpio-a-pins {
> +		/* SCK, D0, D1, LD */
> +		pins = "GPIO_32", "GPIO_33", "GPIO_34", "GPIO_35";
> +		function = "sgpio_a";
> +	};
> +};
> +
> +&i2c4 {
> +	compatible = "microchip,sam9x60-i2c";
> +	reg = <0x600 0x200>;
> +	interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> +	#address-cells = <1>;
> +	#size-cells = <0>;

Same here 

> +	clocks = <&nic_clk>;
> +	pinctrl-0 = <&fc4_b_pins>;
> +	pinctrl-names = "default";
> +	i2c-analog-filter;
> +	i2c-digital-filter;
> +	i2c-digital-filter-width-ns = <35>;
> +	i2c-sda-hold-time-ns = <1500>;
> +	status = "okay";
> +};
> +
> +&mdio1 {
> +	status = "okay";
> +};
> +
> +&phy0 {
> +	status = "okay";
> +};
> +
> +&phy1 {
> +	status = "okay";
> +};
> +
> +&port0 {
> +	status = "okay";
> +	phy-handle = <&phy0>;
> +	phy-mode = "gmii";
> +	phys = <&serdes 0 CU(0)>;
> +};
> +
> +&port1 {
> +	status = "okay";
> +	phy-handle = <&phy1>;
> +	phy-mode = "gmii";
> +	phys = <&serdes 1 CU(1)>;
> +};
> +
> +&port2 {
> +	status = "okay";
> +	sfp = <&sfp2>;
> +	managed = "in-band-status";
> +	phy-mode = "sgmii";
> +	phys = <&serdes 2 SERDES6G(0)>;
> +};
> +
> +&port3 {
> +	status = "okay";
> +	sfp = <&sfp3>;
> +	managed = "in-band-status";
> +	phy-mode = "sgmii";
> +	phys = <&serdes 3 SERDES6G(1)>;
> +};
> +
> +&serdes {
> +	status = "okay";
> +};
> +
> +&sgpio {
> +	status = "okay";
> +	pinctrl-0 = <&sgpio_a_pins>;
> +	pinctrl-names = "default";
> +	microchip,sgpio-port-ranges = <0 3>, <8 11>;
> +	gpio@0 {
> +		ngpios = <64>;
> +	};
> +	gpio@1 {
> +		ngpios = <64>;
> +	};
> +};
> +
> +&switch {
> +	status = "okay";
> +};
> --
> 2.33.0


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

* Re: [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board
  2022-07-20 19:49 ` [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board Horatiu Vultur
@ 2022-07-21  6:46   ` Krzysztof Kozlowski
  2022-07-22 12:52     ` Horatiu Vultur
  0 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Kozlowski @ 2022-07-21  6:46 UTC (permalink / raw)
  To: Horatiu Vultur, devicetree, linux-arm-kernel, linux-kernel
  Cc: robh+dt, krzysztof.kozlowski+dt, nicolas.ferre,
	alexandre.belloni, claudiu.beznea, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier

On 20/07/2022 21:49, Horatiu Vultur wrote:
> Add documentation for Microchip LAN9662 PCB8309.
> 
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> ---
>  Documentation/devicetree/bindings/arm/atmel-at91.yaml | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.yaml b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> index 4e495e03264b..9dc9ad81193a 100644
> --- a/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> +++ b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> @@ -169,6 +169,12 @@ properties:
>            - const: microchip,lan9662
>            - const: microchip,lan966
>  
> +      - description: Microchip LAN9662 PCB8309 Evaluation Board.
> +        items:
> +          - const: microchip,lan9662-pcb8309

This and other lan9662 boards should be just an enum. You grow the file
needlessly... Unless it is clear preference of maintainer. Other boards
follow normal enum approach, so it seems there is no such preference.


Best regards,
Krzysztof

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

* Re: [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309
  2022-07-20 19:49 ` [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309 Horatiu Vultur
  2022-07-21  6:08   ` Kavyasree.Kotagiri
@ 2022-07-21  7:39   ` Claudiu.Beznea
  2022-07-22 12:48     ` Horatiu Vultur - M31836
  1 sibling, 1 reply; 9+ messages in thread
From: Claudiu.Beznea @ 2022-07-21  7:39 UTC (permalink / raw)
  To: Horatiu.Vultur, devicetree, linux-arm-kernel, linux-kernel
  Cc: robh+dt, krzysztof.kozlowski+dt, Nicolas.Ferre,
	alexandre.belloni, arnd, olof, soc, UNGLinuxDriver,
	maxime.chevallier

On 20.07.2022 22:49, Horatiu Vultur wrote:
> Add basic support for pcb8309. It is similar with pcb8291 with one big
> difference that is having 2 SFP cages. Therefore it has 4 network ports.
> 
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> ---
>  arch/arm/boot/dts/Makefile            |   3 +-
>  arch/arm/boot/dts/lan966x-pcb8309.dts | 189 ++++++++++++++++++++++++++
>  2 files changed, 191 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/boot/dts/lan966x-pcb8309.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 184899808ee7..6a6166e3a405 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -772,7 +772,8 @@ dtb-$(CONFIG_SOC_IMXRT) += \
>  dtb-$(CONFIG_SOC_LAN966) += \
>  	lan966x-pcb8291.dtb \
>  	lan966x-kontron-kswitch-d10-mmt-6g-2gs.dtb \
> -	lan966x-kontron-kswitch-d10-mmt-8g.dtb
> +	lan966x-kontron-kswitch-d10-mmt-8g.dtb \
> +	lan966x-pcb8309.dtb
>  dtb-$(CONFIG_SOC_LS1021A) += \
>  	ls1021a-iot.dtb \
>  	ls1021a-moxa-uc-8410a.dtb \
> diff --git a/arch/arm/boot/dts/lan966x-pcb8309.dts b/arch/arm/boot/dts/lan966x-pcb8309.dts
> new file mode 100644
> index 000000000000..ef441195e8c1
> --- /dev/null
> +++ b/arch/arm/boot/dts/lan966x-pcb8309.dts
> @@ -0,0 +1,189 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * lan966x_pcb8309.dts - Device Tree file for PCB8309
> + */
> +/dts-v1/;
> +#include "lan966x.dtsi"
> +#include "dt-bindings/phy/phy-lan966x-serdes.h"
> +
> +/ {
> +	model = "Microchip EVB - LAN9662";
> +	compatible = "microchip,lan9662-pcb8309", "microchip,lan9662", "microchip,lan966";
> +
> +	aliases {
> +		serial0 = &usart3;
> +		i2c102 = &i2c102;
> +		i2c103 = &i2c103;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +
> +	gpio-restart {
> +		compatible = "gpio-restart";
> +		gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
> +		priority = <200>;
> +	};
> +
> +	i2c-mux {
> +		compatible = "i2c-mux";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		mux-controls = <&mux>;
> +		i2c-parent = <&i2c4>;
> +
> +		i2c102: i2c-sfp@1 {
> +			reg = <1>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
> +		i2c103: i2c-sfp@2 {
> +			reg = <2>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +	};
> +
> +	mux: mux-controller {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +
> +		mux-gpios = <&sgpio_out 11 0 GPIO_ACTIVE_HIGH>, /* p11b0 */
> +			    <&sgpio_out 11 1 GPIO_ACTIVE_HIGH>; /* p11b1 */
> +	};
> +
> +	sfp2: sfp2 {
> +		compatible = "sff,sfp";
> +		i2c-bus = <&i2c102>;
> +		tx-disable-gpios = <&sgpio_out 10 0 GPIO_ACTIVE_LOW>;
> +		los-gpios = <&sgpio_in  2 0 GPIO_ACTIVE_HIGH>;
> +		mod-def0-gpios = <&sgpio_in  2 1 GPIO_ACTIVE_LOW>;
> +		tx-fault-gpios = <&sgpio_in  1 0 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	sfp3: sfp3 {
> +		compatible = "sff,sfp";
> +		i2c-bus = <&i2c103>;
> +		tx-disable-gpios = <&sgpio_out 10 1 GPIO_ACTIVE_LOW>;
> +		los-gpios = <&sgpio_in  3 0 GPIO_ACTIVE_HIGH>;
> +		mod-def0-gpios = <&sgpio_in  3 1 GPIO_ACTIVE_LOW>;
> +		tx-fault-gpios = <&sgpio_in  1 1 GPIO_ACTIVE_HIGH>;
> +	};
> +};
> +
> +&flx3 {
> +	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
> +	status = "okay";
> +
> +	usart3: serial@200 {
> +		pinctrl-0 = <&fc3_b_pins>;
> +		pinctrl-names = "default";
> +		status = "okay";
> +	};
> +};
> +
> +&flx4 {
> +	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
> +	status = "okay";

Embed i2c4 node here as you did for usart3 above. It's easy to follow the
connection b/w flx node and it's enabled child.

> +};
> +
> +&gpio {
> +	fc3_b_pins: fc3-b-pins {
> +		/* RXD, TXD */
> +		pins = "GPIO_52", "GPIO_53";
> +		function = "fc3_b";
> +	};
> +
> +	fc4_b_pins: fc4-b-pins {
> +		/* SCL, SDA */
> +		pins = "GPIO_57", "GPIO_58";
> +		function = "fc4_b";
> +	};
> +
> +	sgpio_a_pins: sgpio-a-pins {
> +		/* SCK, D0, D1, LD */
> +		pins = "GPIO_32", "GPIO_33", "GPIO_34", "GPIO_35";
> +		function = "sgpio_a";
> +	};
> +};
> +
> +&i2c4 {
> +	compatible = "microchip,sam9x60-i2c";
> +	reg = <0x600 0x200>;
> +	interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	clocks = <&nic_clk>;
> +	pinctrl-0 = <&fc4_b_pins>;
> +	pinctrl-names = "default";
> +	i2c-analog-filter;
> +	i2c-digital-filter;
> +	i2c-digital-filter-width-ns = <35>;
> +	i2c-sda-hold-time-ns = <1500>;
> +	status = "okay";
> +};
> +
> +&mdio1 {
> +	status = "okay";
> +};
> +
> +&phy0 {
> +	status = "okay";
> +};
> +
> +&phy1 {
> +	status = "okay";
> +};
> +
> +&port0 {
> +	status = "okay";

Keep status at the end of node description for uniformity with the nodes
enabled above. Same for the rest of nodes below.

> +	phy-handle = <&phy0>;
> +	phy-mode = "gmii";
> +	phys = <&serdes 0 CU(0)>;
> +};
> +
> +&port1 {
> +	status = "okay";
> +	phy-handle = <&phy1>;
> +	phy-mode = "gmii";
> +	phys = <&serdes 1 CU(1)>;
> +};
> +
> +&port2 {
> +	status = "okay";
> +	sfp = <&sfp2>;
> +	managed = "in-band-status";
> +	phy-mode = "sgmii";
> +	phys = <&serdes 2 SERDES6G(0)>;
> +};
> +
> +&port3 {
> +	status = "okay";
> +	sfp = <&sfp3>;
> +	managed = "in-band-status";
> +	phy-mode = "sgmii";
> +	phys = <&serdes 3 SERDES6G(1)>;
> +};
> +
> +&serdes {
> +	status = "okay";
> +};
> +
> +&sgpio {
> +	status = "okay";
> +	pinctrl-0 = <&sgpio_a_pins>;
> +	pinctrl-names = "default";
> +	microchip,sgpio-port-ranges = <0 3>, <8 11>;

Except this one. For this would be nice to have status here before
describing childs.

> +	gpio@0 {
> +		ngpios = <64>;
> +	};
> +	gpio@1 {
> +		ngpios = <64>;
> +	};
> +};
> +
> +&switch {
> +	status = "okay";
> +};


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

* Re: [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309
  2022-07-21  6:08   ` Kavyasree.Kotagiri
@ 2022-07-22 12:46     ` Horatiu Vultur - M31836
  0 siblings, 0 replies; 9+ messages in thread
From: Horatiu Vultur - M31836 @ 2022-07-22 12:46 UTC (permalink / raw)
  To: Kavyasree Kotagiri - I30978
  Cc: robh+dt, krzysztof.kozlowski+dt, Nicolas Ferre - M43238,
	alexandre.belloni, Claudiu Beznea - M18063, arnd, olof, soc,
	UNGLinuxDriver, maxime.chevallier, devicetree, linux-arm-kernel,
	linux-kernel

The 07/21/2022 06:08, Kavyasree Kotagiri - I30978 wrote:
> > +	i2c-mux {
> > +		compatible = "i2c-mux";
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		mux-controls = <&mux>;
> > +		i2c-parent = <&i2c4>;
> > +
> > +		i2c102: i2c-sfp@1 {
> > +			reg = <1>;
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> 
> Why do you need #address-cells and #size-cells here?
> > +		};
> > +
> > +		i2c103: i2c-sfp@2 {
> > +			reg = <2>;
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> Same here
> > +		};
> > +	};

They are not needed. I will remove them in the next version.
> > +
> > +	mux: mux-controller {
> > +		compatible = "gpio-mux";
> > +		#mux-control-cells = <0>;
> > +
> > +		mux-gpios = <&sgpio_out 11 0 GPIO_ACTIVE_HIGH>, /*
> > p11b0 */
> > +			    <&sgpio_out 11 1 GPIO_ACTIVE_HIGH>; /* p11b1
> > */
> > +	};

...

> > +&i2c4 {
> > +	compatible = "microchip,sam9x60-i2c";
> > +	reg = <0x600 0x200>;
> > +	interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> 
> Same here 
> 

Also here.

-- 
/Horatiu

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

* Re: [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309
  2022-07-21  7:39   ` Claudiu.Beznea
@ 2022-07-22 12:48     ` Horatiu Vultur - M31836
  0 siblings, 0 replies; 9+ messages in thread
From: Horatiu Vultur - M31836 @ 2022-07-22 12:48 UTC (permalink / raw)
  To: Claudiu Beznea - M18063
  Cc: devicetree, linux-arm-kernel, linux-kernel, robh+dt,
	krzysztof.kozlowski+dt, Nicolas Ferre - M43238,
	alexandre.belloni, arnd, olof, soc, UNGLinuxDriver,
	maxime.chevallier

The 07/21/2022 07:39, Claudiu Beznea - M18063 wrote:
> > +&flx4 {
> > +	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
> > +	status = "okay";
> 
> Embed i2c4 node here as you did for usart3 above. It's easy to follow the
> connection b/w flx node and it's enabled child.

Yes, I will do that.

> 
> > +};
> > +
> > +&gpio {
> > +	fc3_b_pins: fc3-b-pins {
> > +		/* RXD, TXD */
> > +		pins = "GPIO_52", "GPIO_53";
> > +		function = "fc3_b";
> > +	};
> > +
> > +	fc4_b_pins: fc4-b-pins {
> > +		/* SCL, SDA */
> > +		pins = "GPIO_57", "GPIO_58";
> > +		function = "fc4_b";
> > +	};
> > +
> > +	sgpio_a_pins: sgpio-a-pins {
> > +		/* SCK, D0, D1, LD */
> > +		pins = "GPIO_32", "GPIO_33", "GPIO_34", "GPIO_35";
> > +		function = "sgpio_a";
> > +	};
> > +};
> > +
> > +&i2c4 {
> > +	compatible = "microchip,sam9x60-i2c";
> > +	reg = <0x600 0x200>;
> > +	interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> > +	clocks = <&nic_clk>;
> > +	pinctrl-0 = <&fc4_b_pins>;
> > +	pinctrl-names = "default";
> > +	i2c-analog-filter;
> > +	i2c-digital-filter;
> > +	i2c-digital-filter-width-ns = <35>;
> > +	i2c-sda-hold-time-ns = <1500>;
> > +	status = "okay";
> > +};
> > +
> > +&mdio1 {
> > +	status = "okay";
> > +};
> > +
> > +&phy0 {
> > +	status = "okay";
> > +};
> > +
> > +&phy1 {
> > +	status = "okay";
> > +};
> > +
> > +&port0 {
> > +	status = "okay";
> 
> Keep status at the end of node description for uniformity with the nodes
> enabled above. Same for the rest of nodes below.

OK. I will do that in the next version.

> 
> > +	phy-handle = <&phy0>;
> > +	phy-mode = "gmii";
> > +	phys = <&serdes 0 CU(0)>;
> > +};
> > +
> > +&port1 {
> > +	status = "okay";
> > +	phy-handle = <&phy1>;
> > +	phy-mode = "gmii";
> > +	phys = <&serdes 1 CU(1)>;
> > +};
> > +
> > +&port2 {
> > +	status = "okay";
> > +	sfp = <&sfp2>;
> > +	managed = "in-band-status";
> > +	phy-mode = "sgmii";
> > +	phys = <&serdes 2 SERDES6G(0)>;
> > +};
> > +
> > +&port3 {
> > +	status = "okay";
> > +	sfp = <&sfp3>;
> > +	managed = "in-band-status";
> > +	phy-mode = "sgmii";
> > +	phys = <&serdes 3 SERDES6G(1)>;
> > +};
> > +
> > +&serdes {
> > +	status = "okay";
> > +};
> > +
> > +&sgpio {
> > +	status = "okay";
> > +	pinctrl-0 = <&sgpio_a_pins>;
> > +	pinctrl-names = "default";
> > +	microchip,sgpio-port-ranges = <0 3>, <8 11>;
> 
> Except this one. For this would be nice to have status here before
> describing childs.

OK. I will do that in the next version.

> 
> > +	gpio@0 {
> > +		ngpios = <64>;
> > +	};
> > +	gpio@1 {
> > +		ngpios = <64>;
> > +	};
> > +};
> > +
> > +&switch {
> > +	status = "okay";
> > +};
> 

-- 
/Horatiu

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

* Re: [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board
  2022-07-21  6:46   ` Krzysztof Kozlowski
@ 2022-07-22 12:52     ` Horatiu Vultur
  0 siblings, 0 replies; 9+ messages in thread
From: Horatiu Vultur @ 2022-07-22 12:52 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: devicetree, linux-arm-kernel, linux-kernel, robh+dt,
	krzysztof.kozlowski+dt, nicolas.ferre, alexandre.belloni,
	claudiu.beznea, arnd, olof, soc, UNGLinuxDriver,
	maxime.chevallier

The 07/21/2022 08:46, Krzysztof Kozlowski wrote:
> 
> On 20/07/2022 21:49, Horatiu Vultur wrote:
> > Add documentation for Microchip LAN9662 PCB8309.
> >
> > Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> > ---
> >  Documentation/devicetree/bindings/arm/atmel-at91.yaml | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.yaml b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> > index 4e495e03264b..9dc9ad81193a 100644
> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> > @@ -169,6 +169,12 @@ properties:
> >            - const: microchip,lan9662
> >            - const: microchip,lan966
> >
> > +      - description: Microchip LAN9662 PCB8309 Evaluation Board.
> > +        items:
> > +          - const: microchip,lan9662-pcb8309
> 
> This and other lan9662 boards should be just an enum. You grow the file
> needlessly... Unless it is clear preference of maintainer. Other boards
> follow normal enum approach, so it seems there is no such preference.

I can see your point. I will change it in the next version.

> 
> 
> Best regards,
> Krzysztof

-- 
/Horatiu

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

end of thread, other threads:[~2022-07-22 12:48 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-20 19:49 [PATCH 0/2] ARM: add support for pcb8309 Horatiu Vultur
2022-07-20 19:49 ` [PATCH 1/2] dt-bindings: arm: at91: add lan966 pcb8309 board Horatiu Vultur
2022-07-21  6:46   ` Krzysztof Kozlowski
2022-07-22 12:52     ` Horatiu Vultur
2022-07-20 19:49 ` [PATCH 2/2] ARM: dts: lan966x: add support for pcb8309 Horatiu Vultur
2022-07-21  6:08   ` Kavyasree.Kotagiri
2022-07-22 12:46     ` Horatiu Vultur - M31836
2022-07-21  7:39   ` Claudiu.Beznea
2022-07-22 12:48     ` Horatiu Vultur - M31836

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).