1*4c0c97b9SWasim Nazir// SPDX-License-Identifier: BSD-3-Clause 2*4c0c97b9SWasim Nazir/* 3*4c0c97b9SWasim Nazir * Copyright (c) 2023, Linaro Limited 4*4c0c97b9SWasim Nazir */ 5*4c0c97b9SWasim Nazir 6*4c0c97b9SWasim Nazir/* 7*4c0c97b9SWasim Nazir * Ethernet card for Lemans based Ride r3 boards. 8*4c0c97b9SWasim Nazir * It supports 2x 2.5G - HSGMII (Marvell hsgmii) phy for Main domain 9*4c0c97b9SWasim Nazir */ 10*4c0c97b9SWasim Nazir 11*4c0c97b9SWasim Nazir#include <dt-bindings/gpio/gpio.h> 12*4c0c97b9SWasim Nazir#include <dt-bindings/interrupt-controller/arm-gic.h> 13*4c0c97b9SWasim Nazir 14*4c0c97b9SWasim Nazir/ { 15*4c0c97b9SWasim Nazir aliases { 16*4c0c97b9SWasim Nazir ethernet0 = ðernet0; 17*4c0c97b9SWasim Nazir ethernet1 = ðernet1; 18*4c0c97b9SWasim Nazir }; 19*4c0c97b9SWasim Nazir}; 20*4c0c97b9SWasim Nazir 21*4c0c97b9SWasim Nazir&tlmm { 22*4c0c97b9SWasim Nazir ethernet0_default: ethernet0-default-state { 23*4c0c97b9SWasim Nazir ethernet0_mdc: ethernet0-mdc-pins { 24*4c0c97b9SWasim Nazir pins = "gpio8"; 25*4c0c97b9SWasim Nazir function = "emac0_mdc"; 26*4c0c97b9SWasim Nazir drive-strength = <16>; 27*4c0c97b9SWasim Nazir bias-pull-up; 28*4c0c97b9SWasim Nazir }; 29*4c0c97b9SWasim Nazir 30*4c0c97b9SWasim Nazir ethernet0_mdio: ethernet0-mdio-pins { 31*4c0c97b9SWasim Nazir pins = "gpio9"; 32*4c0c97b9SWasim Nazir function = "emac0_mdio"; 33*4c0c97b9SWasim Nazir drive-strength = <16>; 34*4c0c97b9SWasim Nazir bias-pull-up; 35*4c0c97b9SWasim Nazir }; 36*4c0c97b9SWasim Nazir }; 37*4c0c97b9SWasim Nazir}; 38*4c0c97b9SWasim Nazir 39*4c0c97b9SWasim Nazirðernet0 { 40*4c0c97b9SWasim Nazir phy-handle = <&hsgmii_phy0>; 41*4c0c97b9SWasim Nazir phy-mode = "2500base-x"; 42*4c0c97b9SWasim Nazir 43*4c0c97b9SWasim Nazir pinctrl-0 = <ðernet0_default>; 44*4c0c97b9SWasim Nazir pinctrl-names = "default"; 45*4c0c97b9SWasim Nazir 46*4c0c97b9SWasim Nazir snps,mtl-rx-config = <&mtl_rx_setup>; 47*4c0c97b9SWasim Nazir snps,mtl-tx-config = <&mtl_tx_setup>; 48*4c0c97b9SWasim Nazir snps,ps-speed = <1000>; 49*4c0c97b9SWasim Nazir 50*4c0c97b9SWasim Nazir status = "okay"; 51*4c0c97b9SWasim Nazir 52*4c0c97b9SWasim Nazir mdio { 53*4c0c97b9SWasim Nazir compatible = "snps,dwmac-mdio"; 54*4c0c97b9SWasim Nazir #address-cells = <1>; 55*4c0c97b9SWasim Nazir #size-cells = <0>; 56*4c0c97b9SWasim Nazir 57*4c0c97b9SWasim Nazir hsgmii_phy0: phy@8 { 58*4c0c97b9SWasim Nazir compatible = "ethernet-phy-id31c3.1c33"; 59*4c0c97b9SWasim Nazir reg = <0x8>; 60*4c0c97b9SWasim Nazir device_type = "ethernet-phy"; 61*4c0c97b9SWasim Nazir interrupts-extended = <&tlmm 7 IRQ_TYPE_EDGE_FALLING>; 62*4c0c97b9SWasim Nazir reset-gpios = <&pmm8654au_2_gpios 8 GPIO_ACTIVE_LOW>; 63*4c0c97b9SWasim Nazir reset-assert-us = <11000>; 64*4c0c97b9SWasim Nazir reset-deassert-us = <70000>; 65*4c0c97b9SWasim Nazir }; 66*4c0c97b9SWasim Nazir 67*4c0c97b9SWasim Nazir hsgmii_phy1: phy@0 { 68*4c0c97b9SWasim Nazir compatible = "ethernet-phy-id31c3.1c33"; 69*4c0c97b9SWasim Nazir reg = <0x0>; 70*4c0c97b9SWasim Nazir device_type = "ethernet-phy"; 71*4c0c97b9SWasim Nazir interrupts-extended = <&tlmm 26 IRQ_TYPE_EDGE_FALLING>; 72*4c0c97b9SWasim Nazir reset-gpios = <&pmm8654au_2_gpios 9 GPIO_ACTIVE_LOW>; 73*4c0c97b9SWasim Nazir reset-assert-us = <11000>; 74*4c0c97b9SWasim Nazir reset-deassert-us = <70000>; 75*4c0c97b9SWasim Nazir }; 76*4c0c97b9SWasim Nazir }; 77*4c0c97b9SWasim Nazir 78*4c0c97b9SWasim Nazir mtl_rx_setup: rx-queues-config { 79*4c0c97b9SWasim Nazir snps,rx-queues-to-use = <4>; 80*4c0c97b9SWasim Nazir snps,rx-sched-sp; 81*4c0c97b9SWasim Nazir 82*4c0c97b9SWasim Nazir queue0 { 83*4c0c97b9SWasim Nazir snps,dcb-algorithm; 84*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x0>; 85*4c0c97b9SWasim Nazir snps,route-up; 86*4c0c97b9SWasim Nazir snps,priority = <0x1>; 87*4c0c97b9SWasim Nazir }; 88*4c0c97b9SWasim Nazir 89*4c0c97b9SWasim Nazir queue1 { 90*4c0c97b9SWasim Nazir snps,dcb-algorithm; 91*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x1>; 92*4c0c97b9SWasim Nazir snps,route-ptp; 93*4c0c97b9SWasim Nazir }; 94*4c0c97b9SWasim Nazir 95*4c0c97b9SWasim Nazir queue2 { 96*4c0c97b9SWasim Nazir snps,avb-algorithm; 97*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x2>; 98*4c0c97b9SWasim Nazir snps,route-avcp; 99*4c0c97b9SWasim Nazir }; 100*4c0c97b9SWasim Nazir 101*4c0c97b9SWasim Nazir queue3 { 102*4c0c97b9SWasim Nazir snps,avb-algorithm; 103*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x3>; 104*4c0c97b9SWasim Nazir snps,priority = <0xc>; 105*4c0c97b9SWasim Nazir }; 106*4c0c97b9SWasim Nazir }; 107*4c0c97b9SWasim Nazir 108*4c0c97b9SWasim Nazir mtl_tx_setup: tx-queues-config { 109*4c0c97b9SWasim Nazir snps,tx-queues-to-use = <4>; 110*4c0c97b9SWasim Nazir 111*4c0c97b9SWasim Nazir queue0 { 112*4c0c97b9SWasim Nazir snps,dcb-algorithm; 113*4c0c97b9SWasim Nazir }; 114*4c0c97b9SWasim Nazir 115*4c0c97b9SWasim Nazir queue1 { 116*4c0c97b9SWasim Nazir snps,dcb-algorithm; 117*4c0c97b9SWasim Nazir }; 118*4c0c97b9SWasim Nazir 119*4c0c97b9SWasim Nazir queue2 { 120*4c0c97b9SWasim Nazir snps,avb-algorithm; 121*4c0c97b9SWasim Nazir snps,send_slope = <0x1000>; 122*4c0c97b9SWasim Nazir snps,idle_slope = <0x1000>; 123*4c0c97b9SWasim Nazir snps,high_credit = <0x3e800>; 124*4c0c97b9SWasim Nazir snps,low_credit = <0xffc18000>; 125*4c0c97b9SWasim Nazir }; 126*4c0c97b9SWasim Nazir 127*4c0c97b9SWasim Nazir queue3 { 128*4c0c97b9SWasim Nazir snps,avb-algorithm; 129*4c0c97b9SWasim Nazir snps,send_slope = <0x1000>; 130*4c0c97b9SWasim Nazir snps,idle_slope = <0x1000>; 131*4c0c97b9SWasim Nazir snps,high_credit = <0x3e800>; 132*4c0c97b9SWasim Nazir snps,low_credit = <0xffc18000>; 133*4c0c97b9SWasim Nazir }; 134*4c0c97b9SWasim Nazir }; 135*4c0c97b9SWasim Nazir}; 136*4c0c97b9SWasim Nazir 137*4c0c97b9SWasim Nazirðernet1 { 138*4c0c97b9SWasim Nazir phy-handle = <&hsgmii_phy1>; 139*4c0c97b9SWasim Nazir phy-mode = "2500base-x"; 140*4c0c97b9SWasim Nazir 141*4c0c97b9SWasim Nazir snps,mtl-rx-config = <&mtl_rx_setup1>; 142*4c0c97b9SWasim Nazir snps,mtl-tx-config = <&mtl_tx_setup1>; 143*4c0c97b9SWasim Nazir snps,ps-speed = <1000>; 144*4c0c97b9SWasim Nazir 145*4c0c97b9SWasim Nazir status = "okay"; 146*4c0c97b9SWasim Nazir 147*4c0c97b9SWasim Nazir mtl_rx_setup1: rx-queues-config { 148*4c0c97b9SWasim Nazir snps,rx-queues-to-use = <4>; 149*4c0c97b9SWasim Nazir snps,rx-sched-sp; 150*4c0c97b9SWasim Nazir 151*4c0c97b9SWasim Nazir queue0 { 152*4c0c97b9SWasim Nazir snps,dcb-algorithm; 153*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x0>; 154*4c0c97b9SWasim Nazir snps,route-up; 155*4c0c97b9SWasim Nazir snps,priority = <0x1>; 156*4c0c97b9SWasim Nazir }; 157*4c0c97b9SWasim Nazir 158*4c0c97b9SWasim Nazir queue1 { 159*4c0c97b9SWasim Nazir snps,dcb-algorithm; 160*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x1>; 161*4c0c97b9SWasim Nazir snps,route-ptp; 162*4c0c97b9SWasim Nazir }; 163*4c0c97b9SWasim Nazir 164*4c0c97b9SWasim Nazir queue2 { 165*4c0c97b9SWasim Nazir snps,avb-algorithm; 166*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x2>; 167*4c0c97b9SWasim Nazir snps,route-avcp; 168*4c0c97b9SWasim Nazir }; 169*4c0c97b9SWasim Nazir 170*4c0c97b9SWasim Nazir queue3 { 171*4c0c97b9SWasim Nazir snps,avb-algorithm; 172*4c0c97b9SWasim Nazir snps,map-to-dma-channel = <0x3>; 173*4c0c97b9SWasim Nazir snps,priority = <0xc>; 174*4c0c97b9SWasim Nazir }; 175*4c0c97b9SWasim Nazir }; 176*4c0c97b9SWasim Nazir 177*4c0c97b9SWasim Nazir mtl_tx_setup1: tx-queues-config { 178*4c0c97b9SWasim Nazir snps,tx-queues-to-use = <4>; 179*4c0c97b9SWasim Nazir 180*4c0c97b9SWasim Nazir queue0 { 181*4c0c97b9SWasim Nazir snps,dcb-algorithm; 182*4c0c97b9SWasim Nazir }; 183*4c0c97b9SWasim Nazir 184*4c0c97b9SWasim Nazir queue1 { 185*4c0c97b9SWasim Nazir snps,dcb-algorithm; 186*4c0c97b9SWasim Nazir }; 187*4c0c97b9SWasim Nazir 188*4c0c97b9SWasim Nazir queue2 { 189*4c0c97b9SWasim Nazir snps,avb-algorithm; 190*4c0c97b9SWasim Nazir snps,send_slope = <0x1000>; 191*4c0c97b9SWasim Nazir snps,idle_slope = <0x1000>; 192*4c0c97b9SWasim Nazir snps,high_credit = <0x3e800>; 193*4c0c97b9SWasim Nazir snps,low_credit = <0xffc18000>; 194*4c0c97b9SWasim Nazir }; 195*4c0c97b9SWasim Nazir 196*4c0c97b9SWasim Nazir queue3 { 197*4c0c97b9SWasim Nazir snps,avb-algorithm; 198*4c0c97b9SWasim Nazir snps,send_slope = <0x1000>; 199*4c0c97b9SWasim Nazir snps,idle_slope = <0x1000>; 200*4c0c97b9SWasim Nazir snps,high_credit = <0x3e800>; 201*4c0c97b9SWasim Nazir snps,low_credit = <0xffc18000>; 202*4c0c97b9SWasim Nazir }; 203*4c0c97b9SWasim Nazir }; 204*4c0c97b9SWasim Nazir}; 205*4c0c97b9SWasim Nazir 206