1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2c66ec88fSEmmanuel Vadot# Copyright 2019 BayLibre, SAS 3c66ec88fSEmmanuel Vadot%YAML 1.2 4c66ec88fSEmmanuel Vadot--- 5fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/net/stm32-dwmac.yaml# 6fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 7c66ec88fSEmmanuel Vadot 8c66ec88fSEmmanuel Vadottitle: STMicroelectronics STM32 / MCU DWMAC glue layer controller 9c66ec88fSEmmanuel Vadot 10c66ec88fSEmmanuel Vadotmaintainers: 118cc087a1SEmmanuel Vadot - Alexandre Torgue <alexandre.torgue@foss.st.com> 128cc087a1SEmmanuel Vadot - Christophe Roullier <christophe.roullier@foss.st.com> 13c66ec88fSEmmanuel Vadot 14c66ec88fSEmmanuel Vadotdescription: 15c66ec88fSEmmanuel Vadot This file documents platform glue layer for stmmac. 16c66ec88fSEmmanuel Vadot 17c66ec88fSEmmanuel Vadot# We need a select here so we don't match all nodes with 'snps,dwmac' 18c66ec88fSEmmanuel Vadotselect: 19c66ec88fSEmmanuel Vadot properties: 20c66ec88fSEmmanuel Vadot compatible: 21c66ec88fSEmmanuel Vadot contains: 22c66ec88fSEmmanuel Vadot enum: 23c66ec88fSEmmanuel Vadot - st,stm32-dwmac 24c66ec88fSEmmanuel Vadot - st,stm32mp1-dwmac 25*0e8011faSEmmanuel Vadot - st,stm32mp13-dwmac 26*0e8011faSEmmanuel Vadot - st,stm32mp25-dwmac 27c66ec88fSEmmanuel Vadot required: 28c66ec88fSEmmanuel Vadot - compatible 29c66ec88fSEmmanuel Vadot 30c66ec88fSEmmanuel Vadotproperties: 31c66ec88fSEmmanuel Vadot compatible: 32c66ec88fSEmmanuel Vadot oneOf: 33c66ec88fSEmmanuel Vadot - items: 34c66ec88fSEmmanuel Vadot - enum: 35*0e8011faSEmmanuel Vadot - st,stm32mp25-dwmac 36*0e8011faSEmmanuel Vadot - const: snps,dwmac-5.20 37*0e8011faSEmmanuel Vadot - items: 38*0e8011faSEmmanuel Vadot - enum: 39c66ec88fSEmmanuel Vadot - st,stm32mp1-dwmac 40*0e8011faSEmmanuel Vadot - st,stm32mp13-dwmac 41c66ec88fSEmmanuel Vadot - const: snps,dwmac-4.20a 42c66ec88fSEmmanuel Vadot - items: 43c66ec88fSEmmanuel Vadot - enum: 44c66ec88fSEmmanuel Vadot - st,stm32-dwmac 45c66ec88fSEmmanuel Vadot - const: snps,dwmac-4.10a 46c66ec88fSEmmanuel Vadot - items: 47c66ec88fSEmmanuel Vadot - enum: 48c66ec88fSEmmanuel Vadot - st,stm32-dwmac 49c66ec88fSEmmanuel Vadot - const: snps,dwmac-3.50a 50c66ec88fSEmmanuel Vadot 51e67e8565SEmmanuel Vadot reg: true 52e67e8565SEmmanuel Vadot 53e67e8565SEmmanuel Vadot reg-names: 54e67e8565SEmmanuel Vadot items: 55e67e8565SEmmanuel Vadot - const: stmmaceth 56e67e8565SEmmanuel Vadot 57c66ec88fSEmmanuel Vadot clocks: 58c66ec88fSEmmanuel Vadot minItems: 3 59c66ec88fSEmmanuel Vadot items: 60c66ec88fSEmmanuel Vadot - description: GMAC main clock 61c66ec88fSEmmanuel Vadot - description: MAC TX clock 62c66ec88fSEmmanuel Vadot - description: MAC RX clock 63c66ec88fSEmmanuel Vadot - description: For MPU family, used for power mode 64c66ec88fSEmmanuel Vadot - description: For MPU family, used for PHY without quartz 655956d97fSEmmanuel Vadot - description: PTP clock 66c66ec88fSEmmanuel Vadot 67c66ec88fSEmmanuel Vadot clock-names: 68c66ec88fSEmmanuel Vadot minItems: 3 695956d97fSEmmanuel Vadot maxItems: 6 70c66ec88fSEmmanuel Vadot contains: 71c66ec88fSEmmanuel Vadot enum: 72c66ec88fSEmmanuel Vadot - stmmaceth 73c66ec88fSEmmanuel Vadot - mac-clk-tx 74c66ec88fSEmmanuel Vadot - mac-clk-rx 75c66ec88fSEmmanuel Vadot - ethstp 76c66ec88fSEmmanuel Vadot - eth-ck 775956d97fSEmmanuel Vadot - ptp_ref 78c66ec88fSEmmanuel Vadot 79c66ec88fSEmmanuel Vadot st,syscon: 80fac71e4eSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle-array 81c9ccf3a3SEmmanuel Vadot items: 82*0e8011faSEmmanuel Vadot - minItems: 2 83*0e8011faSEmmanuel Vadot items: 84c9ccf3a3SEmmanuel Vadot - description: phandle to the syscon node which encompases the glue register 85c9ccf3a3SEmmanuel Vadot - description: offset of the control register 86*0e8011faSEmmanuel Vadot - description: field to set mask in register 87c66ec88fSEmmanuel Vadot description: 88c66ec88fSEmmanuel Vadot Should be phandle/offset pair. The phandle to the syscon node which 89*0e8011faSEmmanuel Vadot encompases the glue register, the offset of the control register and 90*0e8011faSEmmanuel Vadot the mask to set bitfield in control register 91c66ec88fSEmmanuel Vadot 927d0873ebSEmmanuel Vadot st,ext-phyclk: 937d0873ebSEmmanuel Vadot description: 947d0873ebSEmmanuel Vadot set this property in RMII mode when you have PHY without crystal 50MHz and want to 957d0873ebSEmmanuel Vadot select RCC clock instead of ETH_REF_CLK. OR in RGMII mode when you want to select 967d0873ebSEmmanuel Vadot RCC clock instead of ETH_CLK125. 977d0873ebSEmmanuel Vadot type: boolean 987d0873ebSEmmanuel Vadot 99c66ec88fSEmmanuel Vadot st,eth-clk-sel: 100c66ec88fSEmmanuel Vadot description: 101c66ec88fSEmmanuel Vadot set this property in RGMII PHY when you want to select RCC clock instead of ETH_CLK125. 102c66ec88fSEmmanuel Vadot type: boolean 103c66ec88fSEmmanuel Vadot 104c66ec88fSEmmanuel Vadot st,eth-ref-clk-sel: 105c66ec88fSEmmanuel Vadot description: 106c66ec88fSEmmanuel Vadot set this property in RMII mode when you have PHY without crystal 50MHz and want to 107c66ec88fSEmmanuel Vadot select RCC clock instead of ETH_REF_CLK. 108c66ec88fSEmmanuel Vadot type: boolean 109c66ec88fSEmmanuel Vadot 1107d0873ebSEmmanuel Vadot access-controllers: 1117d0873ebSEmmanuel Vadot minItems: 1 1127d0873ebSEmmanuel Vadot maxItems: 2 1137d0873ebSEmmanuel Vadot 114c66ec88fSEmmanuel Vadotrequired: 115c66ec88fSEmmanuel Vadot - compatible 116c66ec88fSEmmanuel Vadot - clocks 117c66ec88fSEmmanuel Vadot - clock-names 118c66ec88fSEmmanuel Vadot - st,syscon 119c66ec88fSEmmanuel Vadot 1206be33864SEmmanuel VadotunevaluatedProperties: false 1216be33864SEmmanuel Vadot 122*0e8011faSEmmanuel VadotallOf: 123*0e8011faSEmmanuel Vadot - $ref: snps,dwmac.yaml# 124*0e8011faSEmmanuel Vadot - if: 125*0e8011faSEmmanuel Vadot properties: 126*0e8011faSEmmanuel Vadot compatible: 127*0e8011faSEmmanuel Vadot contains: 128*0e8011faSEmmanuel Vadot enum: 129*0e8011faSEmmanuel Vadot - st,stm32-dwmac 130*0e8011faSEmmanuel Vadot - st,stm32mp1-dwmac 131*0e8011faSEmmanuel Vadot - st,stm32mp25-dwmac 132*0e8011faSEmmanuel Vadot then: 133*0e8011faSEmmanuel Vadot properties: 134*0e8011faSEmmanuel Vadot st,syscon: 135*0e8011faSEmmanuel Vadot items: 136*0e8011faSEmmanuel Vadot minItems: 2 137*0e8011faSEmmanuel Vadot maxItems: 2 138*0e8011faSEmmanuel Vadot 139*0e8011faSEmmanuel Vadot - if: 140*0e8011faSEmmanuel Vadot properties: 141*0e8011faSEmmanuel Vadot compatible: 142*0e8011faSEmmanuel Vadot contains: 143*0e8011faSEmmanuel Vadot enum: 144*0e8011faSEmmanuel Vadot - st,stm32mp13-dwmac 145*0e8011faSEmmanuel Vadot then: 146*0e8011faSEmmanuel Vadot properties: 147*0e8011faSEmmanuel Vadot st,syscon: 148*0e8011faSEmmanuel Vadot items: 149*0e8011faSEmmanuel Vadot minItems: 3 150*0e8011faSEmmanuel Vadot maxItems: 3 151*0e8011faSEmmanuel Vadot 152c66ec88fSEmmanuel Vadotexamples: 153c66ec88fSEmmanuel Vadot - | 154c66ec88fSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 155c66ec88fSEmmanuel Vadot #include <dt-bindings/clock/stm32mp1-clks.h> 156c66ec88fSEmmanuel Vadot //Example 1 157c66ec88fSEmmanuel Vadot ethernet0: ethernet@5800a000 { 158c66ec88fSEmmanuel Vadot compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a"; 159c66ec88fSEmmanuel Vadot reg = <0x5800a000 0x2000>; 160c66ec88fSEmmanuel Vadot reg-names = "stmmaceth"; 161e67e8565SEmmanuel Vadot interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 162c66ec88fSEmmanuel Vadot interrupt-names = "macirq"; 163c66ec88fSEmmanuel Vadot clock-names = "stmmaceth", 164c66ec88fSEmmanuel Vadot "mac-clk-tx", 165c66ec88fSEmmanuel Vadot "mac-clk-rx", 166c66ec88fSEmmanuel Vadot "ethstp", 167c66ec88fSEmmanuel Vadot "eth-ck"; 168c66ec88fSEmmanuel Vadot clocks = <&rcc ETHMAC>, 169c66ec88fSEmmanuel Vadot <&rcc ETHTX>, 170c66ec88fSEmmanuel Vadot <&rcc ETHRX>, 171c66ec88fSEmmanuel Vadot <&rcc ETHSTP>, 172c66ec88fSEmmanuel Vadot <&rcc ETHCK_K>; 173c66ec88fSEmmanuel Vadot st,syscon = <&syscfg 0x4>; 174c66ec88fSEmmanuel Vadot snps,pbl = <2>; 175c66ec88fSEmmanuel Vadot snps,axi-config = <&stmmac_axi_config_0>; 176c66ec88fSEmmanuel Vadot snps,tso; 177c66ec88fSEmmanuel Vadot phy-mode = "rgmii"; 178c66ec88fSEmmanuel Vadot }; 179c66ec88fSEmmanuel Vadot 180e67e8565SEmmanuel Vadot - | 181c66ec88fSEmmanuel Vadot //Example 2 (MCU example) 182c66ec88fSEmmanuel Vadot ethernet1: ethernet@40028000 { 183c66ec88fSEmmanuel Vadot compatible = "st,stm32-dwmac", "snps,dwmac-3.50a"; 184c66ec88fSEmmanuel Vadot reg = <0x40028000 0x8000>; 185c66ec88fSEmmanuel Vadot reg-names = "stmmaceth"; 186c66ec88fSEmmanuel Vadot interrupts = <0 61 0>, <0 62 0>; 187c66ec88fSEmmanuel Vadot interrupt-names = "macirq", "eth_wake_irq"; 188c66ec88fSEmmanuel Vadot clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; 189c66ec88fSEmmanuel Vadot clocks = <&rcc 0 25>, <&rcc 0 26>, <&rcc 0 27>; 190c66ec88fSEmmanuel Vadot st,syscon = <&syscfg 0x4>; 191c66ec88fSEmmanuel Vadot snps,pbl = <8>; 192c66ec88fSEmmanuel Vadot snps,mixed-burst; 193c66ec88fSEmmanuel Vadot phy-mode = "mii"; 194c66ec88fSEmmanuel Vadot }; 195c66ec88fSEmmanuel Vadot 196e67e8565SEmmanuel Vadot - | 197c66ec88fSEmmanuel Vadot //Example 3 198c66ec88fSEmmanuel Vadot ethernet2: ethernet@40027000 { 199c66ec88fSEmmanuel Vadot compatible = "st,stm32-dwmac", "snps,dwmac-4.10a"; 200c66ec88fSEmmanuel Vadot reg = <0x40028000 0x8000>; 201c66ec88fSEmmanuel Vadot reg-names = "stmmaceth"; 202c66ec88fSEmmanuel Vadot interrupts = <61>; 203c66ec88fSEmmanuel Vadot interrupt-names = "macirq"; 204c66ec88fSEmmanuel Vadot clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx"; 205c66ec88fSEmmanuel Vadot clocks = <&rcc 62>, <&rcc 61>, <&rcc 60>; 206c66ec88fSEmmanuel Vadot st,syscon = <&syscfg 0x4>; 207c66ec88fSEmmanuel Vadot snps,pbl = <8>; 208c66ec88fSEmmanuel Vadot phy-mode = "mii"; 209c66ec88fSEmmanuel Vadot }; 210