* [PATCH v3 1/4] arm64: dts: lx2160a: describe the SerDes block #2
2023-06-19 9:00 [PATCH v3 0/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board Josua Mayer
@ 2023-06-19 9:00 ` Josua Mayer
2023-06-19 9:00 ` [PATCH v3 2/4] dt-bindings: net: dpaa2 mac: add phys property Josua Mayer
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Josua Mayer @ 2023-06-19 9:00 UTC (permalink / raw)
To: devicetree, linux-kernel, linux-arm-kernel
Cc: Josua Mayer, Shawn Guo, Li Yang, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Add description for the LX2160A second SerDes block.
It is functionally identical to the first one already added in:
3cbe93a "arch: arm64: dts: lx2160a: describe the SerDes block #1"
Signed-off-by: Josua Mayer <josua@solid-run.com>
---
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
index ea6a94b57aeb..2e68c05181dd 100644
--- a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
@@ -626,6 +626,12 @@ serdes_1: phy@1ea0000 {
#phy-cells = <1>;
};
+ serdes_2: phy@1eb0000 {
+ compatible = "fsl,lynx-28g";
+ reg = <0x0 0x1eb0000 0x0 0x1e30>;
+ #phy-cells = <1>;
+ };
+
crypto: crypto@8000000 {
compatible = "fsl,sec-v5.0", "fsl,sec-v4.0";
fsl,sec-era = <10>;
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 2/4] dt-bindings: net: dpaa2 mac: add phys property
2023-06-19 9:00 [PATCH v3 0/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board Josua Mayer
2023-06-19 9:00 ` [PATCH v3 1/4] arm64: dts: lx2160a: describe the SerDes block #2 Josua Mayer
@ 2023-06-19 9:00 ` Josua Mayer
2023-06-19 9:00 ` [PATCH v3 3/4] dt-bindings: arm: Add SolidRun LX2162A SoM & Clearfog Board Josua Mayer
2023-06-19 9:00 ` [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 " Josua Mayer
3 siblings, 0 replies; 8+ messages in thread
From: Josua Mayer @ 2023-06-19 9:00 UTC (permalink / raw)
To: devicetree, linux-kernel, linux-arm-kernel
Cc: Josua Mayer, Krzysztof Kozlowski, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Ioana Ciornei
dpaa2 mac supports runtime configuration of network protocols on a
generic phy object specified via the "phys" property.
It is currently used with the SerDes28G driver to switch SerDes
protocol between SGMII and USXGMII at runtime.
Support was introduced with:
f978fe8 "dpaa2-mac: configure the SerDes phy on a protocol change"
Add bindings description for the missing "phys" property, to fix dtc_chk
errors present in various layerscape based dts:
'phys' does not match any of the regexes: 'pinctrl-[0-9]+'
Signed-off-by: Josua Mayer <josua@solid-run.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
V1 -> V2: this patch is newly added to patch-set
Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml b/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml
index a1b71b35319e..a40c7a84af2a 100644
--- a/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml
+++ b/Documentation/devicetree/bindings/net/fsl,qoriq-mc-dpmac.yaml
@@ -24,6 +24,10 @@ properties:
maxItems: 1
description: The DPMAC number
+ phys:
+ maxItems: 1
+ description: Generic PHY for SerDes runtime configuration.
+
phy-handle: true
phy-connection-type: true
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 3/4] dt-bindings: arm: Add SolidRun LX2162A SoM & Clearfog Board
2023-06-19 9:00 [PATCH v3 0/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board Josua Mayer
2023-06-19 9:00 ` [PATCH v3 1/4] arm64: dts: lx2160a: describe the SerDes block #2 Josua Mayer
2023-06-19 9:00 ` [PATCH v3 2/4] dt-bindings: net: dpaa2 mac: add phys property Josua Mayer
@ 2023-06-19 9:00 ` Josua Mayer
2023-06-19 9:00 ` [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 " Josua Mayer
3 siblings, 0 replies; 8+ messages in thread
From: Josua Mayer @ 2023-06-19 9:00 UTC (permalink / raw)
To: devicetree, linux-kernel, linux-arm-kernel
Cc: Josua Mayer, Krzysztof Kozlowski, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Shawn Guo, Marek Vasut,
Fabio Estevam, Stefan Wahren, Marcel Ziswiler, Frieder Schrempf,
Philippe Schenker, Li Yang
SolidRun now have 2 product lines around NXP Layerscape SoC:
- LX2160A COM Express 7
- LX2162A System on Module
LX2162 is a smaller package and reduced feature set to LX2160A;
LX2162 SoM is also a smaller form factor and reduced feature set to CEX.
Since both product lines are physically incompatible,
the existing group "SolidRun LX2160A based Boards" has been renamed to
include "CEX" in its name, meaning products based on LX2160A COM Express
Module, following this pattern:
"solidrun,<board>", "solidrun,lx2160a-cex", "fsl,lx2160a"
Add DT compatible for both SolidRun LX2162A SoM, and LX2162 Clearfog
boards to a new group based on LX2162A SoM, following this pattern:
"solidrun,<board>", "solidrun,lx2162a-som", "fsl,lx2160a"
Signed-off-by: Josua Mayer <josua@solid-run.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
V1 -> V2: fixed to not break existing boards
V1 -> V2: explained new board / som DT binding in commit message
Documentation/devicetree/bindings/arm/fsl.yaml | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
index 15d411084065..51911a89ebb4 100644
--- a/Documentation/devicetree/bindings/arm/fsl.yaml
+++ b/Documentation/devicetree/bindings/arm/fsl.yaml
@@ -1370,7 +1370,7 @@ properties:
- fsl,lx2162a-qds
- const: fsl,lx2160a
- - description: SolidRun LX2160A based Boards
+ - description: SolidRun LX2160A CEX-7 based Boards
items:
- enum:
- solidrun,clearfog-cx
@@ -1378,6 +1378,13 @@ properties:
- const: solidrun,lx2160a-cex7
- const: fsl,lx2160a
+ - description: SolidRun LX2162A SoM based Boards
+ items:
+ - enum:
+ - solidrun,lx2162a-clearfog
+ - const: solidrun,lx2162a-som
+ - const: fsl,lx2160a
+
- description: S32G2 based Boards
items:
- enum:
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board
2023-06-19 9:00 [PATCH v3 0/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board Josua Mayer
` (2 preceding siblings ...)
2023-06-19 9:00 ` [PATCH v3 3/4] dt-bindings: arm: Add SolidRun LX2162A SoM & Clearfog Board Josua Mayer
@ 2023-06-19 9:00 ` Josua Mayer
2023-07-18 2:46 ` Shawn Guo
3 siblings, 1 reply; 8+ messages in thread
From: Josua Mayer @ 2023-06-19 9:00 UTC (permalink / raw)
To: devicetree, linux-kernel, linux-arm-kernel
Cc: Josua Mayer, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, NXP Linux Team, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Li Yang
Add support for the SolidRun LX2162A System on Module (SoM), and the
Clearfog evaluation board.
The SoM has few software-controllable features:
- AR8035 Ethernet PHY
- eMMC
- SPI Flash
- fan controller
- various eeproms
The Clearfog evaluation board provides:
- microSD connector
- USB-A
- 2x 10Gbps SFP+
- 2x 25Gbps SFP+ with a retimer
- 8x 2.5Gbps RJ45
- 2x mPCI (assembly option / disables 2xRJ45)
The 8x RJ45 ports are connected with an 8-port PHY: Marvell 88E2580
supporting up to 5Gbps, while SoC and magnetics are limited to 2.5Gbps.
However 2500 speed is untested due to documentation and drivier
limitations. To avoid confusion the phy nodes have been explicitly
limited to 1000 for now.
The PCI nodes are disabled, but explicitly added to mark that this board
can have pci.
It is expected that the bootloader will patch the status property
"okay" and disable 2x RJ45 ports, according to active serdes configuration.
Signed-off-by: Josua Mayer <josua@solid-run.com>
---
V1 -> V2: reordered "compatible" and "reg" properties
V1 -> V2: replaced chip-specific DT node names with generic ones
V1 -> V2: removed dead code from fspi node
V2 -> V3: dropped deprecated address-cells, address-size props from flash node
arch/arm64/boot/dts/freescale/Makefile | 1 +
.../dts/freescale/fsl-lx2162a-clearfog.dts | 371 ++++++++++++++++++
.../dts/freescale/fsl-lx2162a-sr-som.dtsi | 73 ++++
3 files changed, 445 insertions(+)
create mode 100644 arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
create mode 100644 arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index ef7d17aef58f..b4fb5044d1c7 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -34,6 +34,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-qds.dtb
+dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-clearfog.dtb
fsl-ls1028a-qds-13bb-dtbs := fsl-ls1028a-qds.dtb fsl-ls1028a-qds-13bb.dtbo
fsl-ls1028a-qds-65bb-dtbs := fsl-ls1028a-qds.dtb fsl-ls1028a-qds-65bb.dtbo
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts b/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
new file mode 100644
index 000000000000..57d8c93bfc57
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
@@ -0,0 +1,371 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Device Tree file for LX2162A Clearfog
+//
+// Copyright 2023 Josua Mayer <josua@solid-run.com>
+
+/dts-v1/;
+
+#include "fsl-lx2160a.dtsi"
+#include "fsl-lx2162a-sr-som.dtsi"
+
+/ {
+ model = "SolidRun LX2162A Clearfog";
+ compatible = "solidrun,lx2162a-clearfog", "solidrun,lx2162a-som", "fsl,lx2160a";
+
+ aliases {
+ crypto = &crypto;
+ i2c0 = &i2c0;
+ i2c1 = &i2c2;
+ i2c2 = &i2c4;
+ i2c3 = &sfp_i2c0;
+ i2c4 = &sfp_i2c1;
+ i2c5 = &sfp_i2c2;
+ i2c6 = &sfp_i2c3;
+ i2c7 = &mpcie1_i2c;
+ i2c8 = &mpcie0_i2c;
+ i2c9 = &pcieclk_i2c;
+ mmc0 = &esdhc0;
+ mmc1 = &esdhc1;
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_sfp_at: led-sfp-at {
+ gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; /* PROC_IRQ5 */
+ default-state = "off";
+ };
+ led_sfp_ab: led-sfp-ab {
+ gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; /* PROC_IRQ11 */
+ default-state = "off";
+ };
+ led_sfp_bt: led-sfp-bt {
+ gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>; /* EVT1_B */
+ default-state = "off";
+ };
+ led_sfp_bb: led-sfp-bb {
+ gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>; /* EVT2_B */
+ default-state = "off";
+ };
+ };
+
+ sfp_at: sfp-at {
+ compatible = "sff,sfp";
+ i2c-bus = <&sfp_i2c0>;
+ mod-def0-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>; /* EVT4_B */
+ maximum-power-milliwatt = <2000>;
+ };
+
+ sfp_ab: sfp-ab {
+ compatible = "sff,sfp";
+ i2c-bus = <&sfp_i2c1>;
+ mod-def0-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; /* PROC_IRQ1 */
+ maximum-power-milliwatt = <2000>;
+ };
+
+ sfp_bt: sfp-bt {
+ compatible = "sff,sfp";
+ i2c-bus = <&sfp_i2c2>;
+ mod-def0-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; /* PROC_IRQ10 */
+ maximum-power-milliwatt = <2000>;
+ };
+
+ sfp_bb: sfp-bb {
+ compatible = "sff,sfp";
+ i2c-bus = <&sfp_i2c3>;
+ mod-def0-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; /* EVT3_B */
+ maximum-power-milliwatt = <2000>;
+ };
+};
+
+&i2c2 {
+ status = "okay";
+
+ /* retimer@18 */
+
+ i2c-mux@70 {
+ compatible = "nxp,pca9546";
+ reg = <0x70>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ i2c-mux-idle-disconnect;
+
+ sfp_i2c0: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ };
+
+ sfp_i2c1: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+
+ sfp_i2c2: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+ };
+
+ sfp_i2c3: i2c@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+ };
+ };
+
+ i2c-mux@71 {
+ compatible = "nxp,pca9546";
+ reg = <0x71>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ i2c-mux-idle-disconnect;
+
+ mpcie1_i2c: i2c@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ };
+
+ mpcie0_i2c: i2c@1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
+ };
+
+ pcieclk_i2c: i2c@2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
+
+ /* clock-controller@6b */
+ };
+ };
+};
+
+&dpmac3 {
+ sfp = <&sfp_at>;
+ managed = "in-band-status";
+ phys = <&serdes_1 7>;
+};
+
+&dpmac4 {
+ sfp = <&sfp_ab>;
+ managed = "in-band-status";
+ phys = <&serdes_1 6>;
+};
+
+&dpmac5 {
+ sfp = <&sfp_bt>;
+ managed = "in-band-status";
+ phys = <&serdes_1 5>;
+};
+
+&dpmac6 {
+ sfp = <&sfp_bb>;
+ managed = "in-band-status";
+ phys = <&serdes_1 4>;
+};
+
+&dpmac11 {
+ status = "okay";
+ phys = <&serdes_2 0>;
+ phy-handle = <ðernet_phy2>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac12 {
+ status = "okay";
+ phys = <&serdes_2 1>;
+ phy-handle = <ðernet_phy0>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac13 {
+ status = "okay";
+ phys = <&serdes_2 6>;
+ phy-handle = <ðernet_phy5>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac14 {
+ status = "okay";
+ phys = <&serdes_2 7>;
+ phy-handle = <ðernet_phy7>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac15 {
+ status = "okay";
+ phys = <&serdes_2 4>;
+ phy-handle = <ðernet_phy3>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac16 {
+ status = "okay";
+ phys = <&serdes_2 5>;
+ phy-handle = <ðernet_phy1>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac17 {
+ /* override connection to on-SoM phy */
+ /delete-property/ phy-handle;
+ /delete-property/ phy-connection-type;
+
+ status = "okay";
+ phys = <&serdes_2 2>;
+ phy-handle = <ðernet_phy4>;
+ phy-connection-type = "sgmii";
+};
+
+&dpmac18 {
+ status = "okay";
+ phys = <&serdes_2 3>;
+ phy-handle = <ðernet_phy6>;
+ phy-connection-type = "sgmii";
+};
+
+&emdio1 {
+ /*
+ * SoM has a phy at address 1 connected to SoC Ethernet Controller 1.
+ * It competes for WRIOP MAC17, and no connector has been wired.
+ */
+ /delete-node/ ethernet-phy@1;
+
+ ethernet_phy0: ethernet-phy@8 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <8>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy1: ethernet-phy@9 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <9>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy2: ethernet-phy@10 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <10>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy3: ethernet-phy@11 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <11>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy4: ethernet-phy@12 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <12>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy5: ethernet-phy@13 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <13>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy6: ethernet-phy@14 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <14>;
+ max-speed = <1000>;
+ };
+
+ ethernet_phy7: ethernet-phy@15 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <15>;
+ max-speed = <1000>;
+ };
+};
+
+&esdhc0 {
+ status = "okay";
+ sd-uhs-sdr104;
+ sd-uhs-sdr50;
+ sd-uhs-sdr25;
+ sd-uhs-sdr12;
+};
+
+&pcie3 {
+ status = "disabled";
+};
+
+&pcie4 {
+ status = "disabled";
+};
+
+&pcs_mdio3 {
+ status = "okay";
+};
+
+&pcs_mdio4 {
+ status = "okay";
+};
+
+&pcs_mdio5 {
+ status = "okay";
+};
+
+&pcs_mdio6 {
+ status = "okay";
+};
+
+&pcs_mdio11 {
+ status = "okay";
+};
+
+&pcs_mdio12 {
+ status = "okay";
+};
+
+&pcs_mdio13 {
+ status = "okay";
+};
+
+&pcs_mdio14 {
+ status = "okay";
+};
+
+&pcs_mdio15 {
+ status = "okay";
+};
+
+&pcs_mdio16 {
+ status = "okay";
+};
+
+&pcs_mdio17 {
+ status = "okay";
+};
+
+&pcs_mdio18 {
+ status = "okay";
+};
+
+&serdes_1 {
+ status = "okay";
+};
+
+&serdes_2 {
+ status = "okay";
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&usb0 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
new file mode 100644
index 000000000000..ac3f9bc60265
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Device Tree file for LX2162A-SOM
+//
+// Copyright 2021 Rabeeh Khoury <rabeeh@solid-run.com>
+// Copyright 2023 Josua Mayer <josua@solid-run.com>
+
+&crypto {
+ status = "okay";
+};
+
+&dpmac17 {
+ phy-handle = <ðernet_phy0>;
+ phy-connection-type = "rgmii-id";
+};
+
+&emdio1 {
+ status = "okay";
+
+ ethernet_phy0: ethernet-phy@1 {
+ reg = <1>;
+ };
+};
+
+&esdhc1 {
+ status = "okay";
+ bus-width = <8>;
+ mmc-hs200-1_8v;
+ mmc-hs400-1_8v;
+};
+
+&fspi {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ m25p,fast-read;
+ spi-max-frequency = <50000000>;
+ /* The following setting enables 1-1-8 (CMD-ADDR-DATA) mode */
+ spi-rx-bus-width = <8>;
+ spi-tx-bus-width = <1>;
+ };
+};
+
+&i2c0 {
+ status = "okay";
+
+ fan-controller@18 {
+ compatible = "ti,amc6821";
+ reg = <0x18>;
+ };
+
+ ddr_spd: eeprom@51 {
+ compatible = "st,24c02", "atmel,24c02";
+ reg = <0x51>;
+ read-only;
+ };
+
+ config_eeprom: eeprom@57 {
+ compatible = "st,24c02", "atmel,24c02";
+ reg = <0x57>;
+ };
+};
+
+&i2c4 {
+ status = "okay";
+
+ variable_eeprom: eeprom@54 {
+ compatible = "st,24c2048", "atmel,24c2048";
+ reg = <0x54>;
+ };
+};
--
2.35.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board
2023-06-19 9:00 ` [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 " Josua Mayer
@ 2023-07-18 2:46 ` Shawn Guo
2023-07-23 10:37 ` Josua Mayer
0 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2023-07-18 2:46 UTC (permalink / raw)
To: Josua Mayer
Cc: devicetree, linux-kernel, linux-arm-kernel, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Li Yang
On Mon, Jun 19, 2023 at 12:00:26PM +0300, Josua Mayer wrote:
> Add support for the SolidRun LX2162A System on Module (SoM), and the
> Clearfog evaluation board.
>
> The SoM has few software-controllable features:
> - AR8035 Ethernet PHY
> - eMMC
> - SPI Flash
> - fan controller
> - various eeproms
>
> The Clearfog evaluation board provides:
> - microSD connector
> - USB-A
> - 2x 10Gbps SFP+
> - 2x 25Gbps SFP+ with a retimer
> - 8x 2.5Gbps RJ45
> - 2x mPCI (assembly option / disables 2xRJ45)
>
> The 8x RJ45 ports are connected with an 8-port PHY: Marvell 88E2580
> supporting up to 5Gbps, while SoC and magnetics are limited to 2.5Gbps.
>
> However 2500 speed is untested due to documentation and drivier
> limitations. To avoid confusion the phy nodes have been explicitly
> limited to 1000 for now.
>
> The PCI nodes are disabled, but explicitly added to mark that this board
> can have pci.
> It is expected that the bootloader will patch the status property
> "okay" and disable 2x RJ45 ports, according to active serdes configuration.
>
> Signed-off-by: Josua Mayer <josua@solid-run.com>
> ---
> V1 -> V2: reordered "compatible" and "reg" properties
> V1 -> V2: replaced chip-specific DT node names with generic ones
> V1 -> V2: removed dead code from fspi node
> V2 -> V3: dropped deprecated address-cells, address-size props from flash node
>
> arch/arm64/boot/dts/freescale/Makefile | 1 +
> .../dts/freescale/fsl-lx2162a-clearfog.dts | 371 ++++++++++++++++++
> .../dts/freescale/fsl-lx2162a-sr-som.dtsi | 73 ++++
> 3 files changed, 445 insertions(+)
> create mode 100644 arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
> create mode 100644 arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index ef7d17aef58f..b4fb5044d1c7 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -34,6 +34,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
> dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
> dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-rdb.dtb
> dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-qds.dtb
> +dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2162a-clearfog.dtb
>
> fsl-ls1028a-qds-13bb-dtbs := fsl-ls1028a-qds.dtb fsl-ls1028a-qds-13bb.dtbo
> fsl-ls1028a-qds-65bb-dtbs := fsl-ls1028a-qds.dtb fsl-ls1028a-qds-65bb.dtbo
> diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts b/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
> new file mode 100644
> index 000000000000..57d8c93bfc57
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts
> @@ -0,0 +1,371 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Device Tree file for LX2162A Clearfog
> +//
> +// Copyright 2023 Josua Mayer <josua@solid-run.com>
> +
> +/dts-v1/;
> +
> +#include "fsl-lx2160a.dtsi"
> +#include "fsl-lx2162a-sr-som.dtsi"
> +
> +/ {
> + model = "SolidRun LX2162A Clearfog";
> + compatible = "solidrun,lx2162a-clearfog", "solidrun,lx2162a-som", "fsl,lx2160a";
> +
> + aliases {
> + crypto = &crypto;
> + i2c0 = &i2c0;
> + i2c1 = &i2c2;
> + i2c2 = &i2c4;
> + i2c3 = &sfp_i2c0;
> + i2c4 = &sfp_i2c1;
> + i2c5 = &sfp_i2c2;
> + i2c6 = &sfp_i2c3;
> + i2c7 = &mpcie1_i2c;
> + i2c8 = &mpcie0_i2c;
> + i2c9 = &pcieclk_i2c;
> + mmc0 = &esdhc0;
> + mmc1 = &esdhc1;
> + serial0 = &uart0;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + led_sfp_at: led-sfp-at {
> + gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; /* PROC_IRQ5 */
> + default-state = "off";
> + };
> + led_sfp_ab: led-sfp-ab {
> + gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>; /* PROC_IRQ11 */
> + default-state = "off";
> + };
> + led_sfp_bt: led-sfp-bt {
> + gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>; /* EVT1_B */
> + default-state = "off";
> + };
> + led_sfp_bb: led-sfp-bb {
> + gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>; /* EVT2_B */
> + default-state = "off";
> + };
> + };
> +
> + sfp_at: sfp-at {
> + compatible = "sff,sfp";
> + i2c-bus = <&sfp_i2c0>;
> + mod-def0-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>; /* EVT4_B */
> + maximum-power-milliwatt = <2000>;
> + };
> +
> + sfp_ab: sfp-ab {
> + compatible = "sff,sfp";
> + i2c-bus = <&sfp_i2c1>;
> + mod-def0-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; /* PROC_IRQ1 */
> + maximum-power-milliwatt = <2000>;
> + };
> +
> + sfp_bt: sfp-bt {
> + compatible = "sff,sfp";
> + i2c-bus = <&sfp_i2c2>;
> + mod-def0-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; /* PROC_IRQ10 */
> + maximum-power-milliwatt = <2000>;
> + };
> +
> + sfp_bb: sfp-bb {
> + compatible = "sff,sfp";
> + i2c-bus = <&sfp_i2c3>;
> + mod-def0-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; /* EVT3_B */
> + maximum-power-milliwatt = <2000>;
> + };
> +};
> +
> +&i2c2 {
> + status = "okay";
> +
> + /* retimer@18 */
> +
> + i2c-mux@70 {
> + compatible = "nxp,pca9546";
> + reg = <0x70>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + i2c-mux-idle-disconnect;
> +
> + sfp_i2c0: i2c@0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0>;
> + };
> +
> + sfp_i2c1: i2c@1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <1>;
> + };
> +
> + sfp_i2c2: i2c@2 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <2>;
> + };
> +
> + sfp_i2c3: i2c@3 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <3>;
> + };
> + };
> +
> + i2c-mux@71 {
> + compatible = "nxp,pca9546";
> + reg = <0x71>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + i2c-mux-idle-disconnect;
> +
> + mpcie1_i2c: i2c@0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <0>;
> + };
> +
> + mpcie0_i2c: i2c@1 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <1>;
> + };
> +
> + pcieclk_i2c: i2c@2 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + reg = <2>;
> +
> + /* clock-controller@6b */
> + };
> + };
> +};
> +
> +&dpmac3 {
> + sfp = <&sfp_at>;
> + managed = "in-band-status";
> + phys = <&serdes_1 7>;
> +};
> +
> +&dpmac4 {
> + sfp = <&sfp_ab>;
> + managed = "in-band-status";
> + phys = <&serdes_1 6>;
> +};
> +
> +&dpmac5 {
> + sfp = <&sfp_bt>;
> + managed = "in-band-status";
> + phys = <&serdes_1 5>;
> +};
> +
> +&dpmac6 {
> + sfp = <&sfp_bb>;
> + managed = "in-band-status";
> + phys = <&serdes_1 4>;
> +};
> +
> +&dpmac11 {
> + status = "okay";
We generally end property list with 'status'.
Shawn
> + phys = <&serdes_2 0>;
> + phy-handle = <ðernet_phy2>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac12 {
> + status = "okay";
> + phys = <&serdes_2 1>;
> + phy-handle = <ðernet_phy0>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac13 {
> + status = "okay";
> + phys = <&serdes_2 6>;
> + phy-handle = <ðernet_phy5>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac14 {
> + status = "okay";
> + phys = <&serdes_2 7>;
> + phy-handle = <ðernet_phy7>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac15 {
> + status = "okay";
> + phys = <&serdes_2 4>;
> + phy-handle = <ðernet_phy3>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac16 {
> + status = "okay";
> + phys = <&serdes_2 5>;
> + phy-handle = <ðernet_phy1>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac17 {
> + /* override connection to on-SoM phy */
> + /delete-property/ phy-handle;
> + /delete-property/ phy-connection-type;
> +
> + status = "okay";
> + phys = <&serdes_2 2>;
> + phy-handle = <ðernet_phy4>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&dpmac18 {
> + status = "okay";
> + phys = <&serdes_2 3>;
> + phy-handle = <ðernet_phy6>;
> + phy-connection-type = "sgmii";
> +};
> +
> +&emdio1 {
> + /*
> + * SoM has a phy at address 1 connected to SoC Ethernet Controller 1.
> + * It competes for WRIOP MAC17, and no connector has been wired.
> + */
> + /delete-node/ ethernet-phy@1;
> +
> + ethernet_phy0: ethernet-phy@8 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <8>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy1: ethernet-phy@9 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <9>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy2: ethernet-phy@10 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <10>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy3: ethernet-phy@11 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <11>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy4: ethernet-phy@12 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <12>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy5: ethernet-phy@13 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <13>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy6: ethernet-phy@14 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <14>;
> + max-speed = <1000>;
> + };
> +
> + ethernet_phy7: ethernet-phy@15 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <15>;
> + max-speed = <1000>;
> + };
> +};
> +
> +&esdhc0 {
> + status = "okay";
> + sd-uhs-sdr104;
> + sd-uhs-sdr50;
> + sd-uhs-sdr25;
> + sd-uhs-sdr12;
> +};
> +
> +&pcie3 {
> + status = "disabled";
> +};
> +
> +&pcie4 {
> + status = "disabled";
> +};
> +
> +&pcs_mdio3 {
> + status = "okay";
> +};
> +
> +&pcs_mdio4 {
> + status = "okay";
> +};
> +
> +&pcs_mdio5 {
> + status = "okay";
> +};
> +
> +&pcs_mdio6 {
> + status = "okay";
> +};
> +
> +&pcs_mdio11 {
> + status = "okay";
> +};
> +
> +&pcs_mdio12 {
> + status = "okay";
> +};
> +
> +&pcs_mdio13 {
> + status = "okay";
> +};
> +
> +&pcs_mdio14 {
> + status = "okay";
> +};
> +
> +&pcs_mdio15 {
> + status = "okay";
> +};
> +
> +&pcs_mdio16 {
> + status = "okay";
> +};
> +
> +&pcs_mdio17 {
> + status = "okay";
> +};
> +
> +&pcs_mdio18 {
> + status = "okay";
> +};
> +
> +&serdes_1 {
> + status = "okay";
> +};
> +
> +&serdes_2 {
> + status = "okay";
> +};
> +
> +&uart0 {
> + status = "okay";
> +};
> +
> +&usb0 {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
> new file mode 100644
> index 000000000000..ac3f9bc60265
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi
> @@ -0,0 +1,73 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +//
> +// Device Tree file for LX2162A-SOM
> +//
> +// Copyright 2021 Rabeeh Khoury <rabeeh@solid-run.com>
> +// Copyright 2023 Josua Mayer <josua@solid-run.com>
> +
> +&crypto {
> + status = "okay";
> +};
> +
> +&dpmac17 {
> + phy-handle = <ðernet_phy0>;
> + phy-connection-type = "rgmii-id";
> +};
> +
> +&emdio1 {
> + status = "okay";
> +
> + ethernet_phy0: ethernet-phy@1 {
> + reg = <1>;
> + };
> +};
> +
> +&esdhc1 {
> + status = "okay";
> + bus-width = <8>;
> + mmc-hs200-1_8v;
> + mmc-hs400-1_8v;
> +};
> +
> +&fspi {
> + status = "okay";
> +
> + flash@0 {
> + compatible = "jedec,spi-nor";
> + reg = <0>;
> + m25p,fast-read;
> + spi-max-frequency = <50000000>;
> + /* The following setting enables 1-1-8 (CMD-ADDR-DATA) mode */
> + spi-rx-bus-width = <8>;
> + spi-tx-bus-width = <1>;
> + };
> +};
> +
> +&i2c0 {
> + status = "okay";
> +
> + fan-controller@18 {
> + compatible = "ti,amc6821";
> + reg = <0x18>;
> + };
> +
> + ddr_spd: eeprom@51 {
> + compatible = "st,24c02", "atmel,24c02";
> + reg = <0x51>;
> + read-only;
> + };
> +
> + config_eeprom: eeprom@57 {
> + compatible = "st,24c02", "atmel,24c02";
> + reg = <0x57>;
> + };
> +};
> +
> +&i2c4 {
> + status = "okay";
> +
> + variable_eeprom: eeprom@54 {
> + compatible = "st,24c2048", "atmel,24c2048";
> + reg = <0x54>;
> + };
> +};
> --
> 2.35.3
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board
2023-07-18 2:46 ` Shawn Guo
@ 2023-07-23 10:37 ` Josua Mayer
2023-07-30 3:01 ` Shawn Guo
0 siblings, 1 reply; 8+ messages in thread
From: Josua Mayer @ 2023-07-23 10:37 UTC (permalink / raw)
To: Shawn Guo
Cc: devicetree, linux-kernel, linux-arm-kernel, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Li Yang
Hi Shawn,
Thank you for reviewing.
Note I have added a general question inline below.
Am 18.07.23 um 04:46 schrieb Shawn Guo:
> On Mon, Jun 19, 2023 at 12:00:26PM +0300, Josua Mayer wrote:
>> Add support for the SolidRun LX2162A System on Module (SoM), and the
>> Clearfog evaluation board.
>> +&dpmac11 {
>> + status = "okay";
> We generally end property list with 'status'.
Okay, I will change the order for v4.
>
> Shawn
>
>> + phys = <&serdes_2 0>;
>> + phy-handle = <ðernet_phy2>;
>> + phy-connection-type = "sgmii";
>> +};
>> +
>> +&emdio1 {
>> + /*
>> + * SoM has a phy at address 1 connected to SoC Ethernet Controller 1.
>> + * It competes for WRIOP MAC17, and no connector has been wired.
>> + */
>> + /delete-node/ ethernet-phy@1;
Perhaps somebody can help here on what is best practice:
As outlined in the comment the SoM includes an ethernet phy at address
1, which is not used at all by the Clearfog carrier.
What is the best practice for unused but available components?
The phy can still communicate on mdio - just it will never receive rgmii
signals from ether cpu or carrier.
I am leaning towards just keeping it with status okay, if only for the
prospect that a smart driver might put it in a power-saving mode.
>> +
>> + ethernet_phy0: ethernet-phy@8 {
>> + compatible = "ethernet-phy-ieee802.3-c45";
>> + reg = <8>;
>> + max-speed = <1000>;
>> + };
>> +
- Josua Mayer
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3 4/4] arm64: dts: freescale: Add support for LX2162 SoM & Clearfog Board
2023-07-23 10:37 ` Josua Mayer
@ 2023-07-30 3:01 ` Shawn Guo
0 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2023-07-30 3:01 UTC (permalink / raw)
To: Josua Mayer
Cc: devicetree, linux-kernel, linux-arm-kernel, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Li Yang
On Sun, Jul 23, 2023 at 12:37:38PM +0200, Josua Mayer wrote:
> Hi Shawn,
>
> Thank you for reviewing.
>
> Note I have added a general question inline below.
>
> Am 18.07.23 um 04:46 schrieb Shawn Guo:
> > On Mon, Jun 19, 2023 at 12:00:26PM +0300, Josua Mayer wrote:
> > > Add support for the SolidRun LX2162A System on Module (SoM), and the
> > > Clearfog evaluation board.
>
> > > +&dpmac11 {
> > > + status = "okay";
> > We generally end property list with 'status'.
> Okay, I will change the order for v4.
> >
> > Shawn
> >
> > > + phys = <&serdes_2 0>;
> > > + phy-handle = <ðernet_phy2>;
> > > + phy-connection-type = "sgmii";
> > > +};
> > > +
> > > +&emdio1 {
> > > + /*
> > > + * SoM has a phy at address 1 connected to SoC Ethernet Controller 1.
> > > + * It competes for WRIOP MAC17, and no connector has been wired.
> > > + */
> > > + /delete-node/ ethernet-phy@1;
> Perhaps somebody can help here on what is best practice:
> As outlined in the comment the SoM includes an ethernet phy at address 1,
> which is not used at all by the Clearfog carrier.
>
> What is the best practice for unused but available components?
If you are saying the connector is not wired on Clearfog, it might make
more sense to give it a disabled status in clearfog dts, IMO.
Shawn
>
> The phy can still communicate on mdio - just it will never receive rgmii
> signals from ether cpu or carrier.
> I am leaning towards just keeping it with status okay, if only for the
> prospect that a smart driver might put it in a power-saving mode.
>
> > > +
> > > + ethernet_phy0: ethernet-phy@8 {
> > > + compatible = "ethernet-phy-ieee802.3-c45";
> > > + reg = <8>;
> > > + max-speed = <1000>;
> > > + };
> > > +
^ permalink raw reply [flat|nested] 8+ messages in thread