| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | |
| # Copyright 2019 BayLibre, SAS | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/net/stm32-dwmac.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: STMicroelectronics STM32 / MCU DWMAC glue layer controller | |
| maintainers: | |
| - Alexandre Torgue <alexandre.torgue@foss.st.com> | |
| - Christophe Roullier <christophe.roullier@foss.st.com> | |
| description: | |
| This file documents platform glue layer for stmmac. | |
| # We need a select here so we don't match all nodes with 'snps,dwmac' | |
| select: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - st,stm32-dwmac | |
| - st,stm32mp1-dwmac | |
| - st,stm32mp13-dwmac | |
| - st,stm32mp25-dwmac | |
| required: | |
| - compatible | |
| properties: | |
| compatible: | |
| oneOf: | |
| - items: | |
| - enum: | |
| - st,stm32mp25-dwmac | |
| - const: snps,dwmac-5.20 | |
| - items: | |
| - enum: | |
| - st,stm32mp1-dwmac | |
| - st,stm32mp13-dwmac | |
| - const: snps,dwmac-4.20a | |
| - items: | |
| - enum: | |
| - st,stm32-dwmac | |
| - const: snps,dwmac-4.10a | |
| - items: | |
| - enum: | |
| - st,stm32-dwmac | |
| - const: snps,dwmac-3.50a | |
| reg: true | |
| reg-names: | |
| items: | |
| - const: stmmaceth | |
| interrupts: | |
| minItems: 1 | |
| maxItems: 2 | |
| interrupt-names: | |
| minItems: 1 | |
| items: | |
| - const: macirq | |
| - const: eth_wake_irq | |
| clocks: | |
| minItems: 3 | |
| items: | |
| - description: GMAC main clock | |
| - description: MAC TX clock | |
| - description: MAC RX clock | |
| - description: For MPU family, used for power mode | |
| - description: For MPU family, used for PHY without quartz | |
| - description: PTP clock | |
| clock-names: | |
| minItems: 3 | |
| maxItems: 6 | |
| contains: | |
| enum: | |
| - stmmaceth | |
| - mac-clk-tx | |
| - mac-clk-rx | |
| - ethstp | |
| - eth-ck | |
| - ptp_ref | |
| st,syscon: | |
| $ref: /schemas/types.yaml#/definitions/phandle-array | |
| items: | |
| - minItems: 2 | |
| items: | |
| - description: phandle to the syscon node which encompases the glue register | |
| - description: offset of the control register | |
| - description: field to set mask in register | |
| description: | |
| Should be phandle/offset pair. The phandle to the syscon node which | |
| encompases the glue register, the offset of the control register and | |
| the mask to set bitfield in control register | |
| st,ext-phyclk: | |
| description: | |
| set this property in RMII mode when you have PHY without crystal 50MHz and want to | |
| select RCC clock instead of ETH_REF_CLK. OR in RGMII mode when you want to select | |
| RCC clock instead of ETH_CLK125. | |
| type: boolean | |
| st,eth-clk-sel: | |
| description: | |
| set this property in RGMII PHY when you want to select RCC clock instead of ETH_CLK125. | |
| type: boolean | |
| st,eth-ref-clk-sel: | |
| description: | |
| set this property in RMII mode when you have PHY without crystal 50MHz and want to | |
| select RCC clock instead of ETH_REF_CLK. | |
| type: boolean | |
| access-controllers: | |
| minItems: 1 | |
| maxItems: 2 | |
| required: | |
| - compatible | |
| - clocks | |
| - clock-names | |
| - st,syscon | |
| unevaluatedProperties: false | |
| allOf: | |
| - $ref: snps,dwmac.yaml# | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - st,stm32-dwmac | |
| - st,stm32mp1-dwmac | |
| - st,stm32mp25-dwmac | |
| then: | |
| properties: | |
| st,syscon: | |
| items: | |
| minItems: 2 | |
| maxItems: 2 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - st,stm32mp13-dwmac | |
| then: | |
| properties: | |
| st,syscon: | |
| items: | |
| minItems: 3 | |
| maxItems: 3 | |
| examples: | |
| - | | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> | |
| #include <dt-bindings/clock/stm32mp1-clks.h> | |
| //Example 1 | |
| ethernet0: ethernet@5800a000 { | |
| compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a"; | |
| reg = <0x5800a000 0x2000>; | |
| reg-names = "stmmaceth"; | |
| interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | |
| interrupt-names = "macirq"; | |
| clock-names = "stmmaceth", | |
| "mac-clk-tx", | |
| "mac-clk-rx", | |
| "ethstp", | |
| "eth-ck"; | |
| clocks = <&rcc ETHMAC>, | |
| <&rcc ETHTX>, | |
| <&rcc ETHRX>, | |
| <&rcc ETHSTP>, | |
| <&rcc ETHCK_K>; | |
| st,syscon = <&syscfg 0x4>; | |
| snps,pbl = <2>; | |
| snps,axi-config = <&stmmac_axi_config_0>; | |
| snps,tso; | |
| phy-mode = "rgmii"; | |
| }; | |
| - | | |
| //Example 2 (MCU example) | |
| ethernet1: ethernet@40028000 { | |
| compatible = "st,stm32-dwmac", "snps,dwmac-3.50a"; | |
| reg = <0x40028000 0x8000>; | |
| reg-names = "stmmaceth"; | |
| interrupts = <0 61 0>, <0 62 0>; | |
| interrupt-names = "macirq", "eth_wake_irq"; | |
| clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; | |
| clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>; | |
| st,syscon = <&syscfg 0x4>; | |
| snps,pbl = <8>; | |
| snps,mixed-burst; | |
| phy-mode = "mii"; | |
| }; | |
| - | | |
| //Example 3 | |
| ethernet2: ethernet@40027000 { | |
| compatible = "st,stm32-dwmac", "snps,dwmac-4.10a"; | |
| reg = <0x40028000 0x8000>; | |
| reg-names = "stmmaceth"; | |
| interrupts = <61>; | |
| interrupt-names = "macirq"; | |
| clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; | |
| clocks = <&rcc 62>, <&rcc 61>, <&rcc 60>; | |
| st,syscon = <&syscfg 0x4>; | |
| snps,pbl = <8>; | |
| phy-mode = "mii"; | |
| }; |