1*8674f059SQuentin Schulz// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*8674f059SQuentin Schulz/* 3*8674f059SQuentin Schulz * Copyright (c) 2025 Cherry Embedded Solutions GmbH 4*8674f059SQuentin Schulz * 5*8674f059SQuentin Schulz * Device Tree Overlay for the Ethernet Switch adapter for the Mezzanine 6*8674f059SQuentin Schulz * connector on RK3588 Jaguar 7*8674f059SQuentin Schulz * (manual: https://embedded.cherry.de/jaguar-ethernet-switch-user-manual/) 8*8674f059SQuentin Schulz * 9*8674f059SQuentin Schulz * This adapter has a KSZ9896 Ethernet Switch with 4 1GbE Ethernet connectors, 10*8674f059SQuentin Schulz * two user controllable LEDs, and an M12 12-pin connector which exposes the 11*8674f059SQuentin Schulz * following signals: 12*8674f059SQuentin Schulz * - RS232/RS485 (max 250Kbps/500Kbps, RX pin1, TX pin2) 13*8674f059SQuentin Schulz * - two digital inputs (pin4 routed to GPIO3_C5 on SoC, pin5 to GPIO4_B4) 14*8674f059SQuentin Schulz * - two digital outputs (pin7 routed to GPIO3_D3 on SoC, pin8 to GPIO3_D1) 15*8674f059SQuentin Schulz * - two analog inputs (pin10 to channel1 of ADS1015, pin11 to channel2) 16*8674f059SQuentin Schulz * 17*8674f059SQuentin Schulz * RK3588 Jaguar can be powered entirely through the adapter via the M8 3-pin 18*8674f059SQuentin Schulz * connector (12-24V). 19*8674f059SQuentin Schulz */ 20*8674f059SQuentin Schulz 21*8674f059SQuentin Schulz/dts-v1/; 22*8674f059SQuentin Schulz/plugin/; 23*8674f059SQuentin Schulz 24*8674f059SQuentin Schulz#include <dt-bindings/clock/rockchip,rk3588-cru.h> 25*8674f059SQuentin Schulz#include <dt-bindings/gpio/gpio.h> 26*8674f059SQuentin Schulz#include <dt-bindings/interrupt-controller/irq.h> 27*8674f059SQuentin Schulz#include <dt-bindings/leds/common.h> 28*8674f059SQuentin Schulz#include <dt-bindings/pinctrl/rockchip.h> 29*8674f059SQuentin Schulz 30*8674f059SQuentin Schulz&{/} { 31*8674f059SQuentin Schulz aliases { 32*8674f059SQuentin Schulz ethernet1 = "/ethernet@fe1c0000"; 33*8674f059SQuentin Schulz }; 34*8674f059SQuentin Schulz 35*8674f059SQuentin Schulz mezzanine-leds { 36*8674f059SQuentin Schulz compatible = "gpio-leds"; 37*8674f059SQuentin Schulz pinctrl-names = "default"; 38*8674f059SQuentin Schulz pinctrl-0 = <&led_usr1_pin &led_usr2_pin>; 39*8674f059SQuentin Schulz 40*8674f059SQuentin Schulz led-1 { 41*8674f059SQuentin Schulz gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>; 42*8674f059SQuentin Schulz label = "USR1"; 43*8674f059SQuentin Schulz }; 44*8674f059SQuentin Schulz 45*8674f059SQuentin Schulz led-2 { 46*8674f059SQuentin Schulz gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>; 47*8674f059SQuentin Schulz label = "USR2"; 48*8674f059SQuentin Schulz }; 49*8674f059SQuentin Schulz }; 50*8674f059SQuentin Schulz}; 51*8674f059SQuentin Schulz 52*8674f059SQuentin Schulz&gmac1 { 53*8674f059SQuentin Schulz clock_in_out = "output"; 54*8674f059SQuentin Schulz phy-mode = "rgmii-id"; 55*8674f059SQuentin Schulz pinctrl-names = "default"; 56*8674f059SQuentin Schulz pinctrl-0 = <&gmac1_rx_bus2 57*8674f059SQuentin Schulz &gmac1_tx_bus2 58*8674f059SQuentin Schulz &gmac1_rgmii_clk 59*8674f059SQuentin Schulz &gmac1_rgmii_bus 60*8674f059SQuentin Schulz ð1_pins>; 61*8674f059SQuentin Schulz rx_delay = <0x0>; 62*8674f059SQuentin Schulz tx_delay = <0x0>; 63*8674f059SQuentin Schulz status = "okay"; 64*8674f059SQuentin Schulz 65*8674f059SQuentin Schulz fixed-link { 66*8674f059SQuentin Schulz speed = <1000>; 67*8674f059SQuentin Schulz full-duplex; 68*8674f059SQuentin Schulz }; 69*8674f059SQuentin Schulz}; 70*8674f059SQuentin Schulz 71*8674f059SQuentin Schulz&i2c1 { 72*8674f059SQuentin Schulz #address-cells = <1>; 73*8674f059SQuentin Schulz /* 74*8674f059SQuentin Schulz * ADS1015 can handle high-speed (HS) mode (up to 3.4MHz) on I2C bus, 75*8674f059SQuentin Schulz * but SoC can handle only up to 400kHz. 76*8674f059SQuentin Schulz */ 77*8674f059SQuentin Schulz clock-frequency = <400000>; 78*8674f059SQuentin Schulz #size-cells = <0>; 79*8674f059SQuentin Schulz status = "okay"; 80*8674f059SQuentin Schulz 81*8674f059SQuentin Schulz adc@48 { 82*8674f059SQuentin Schulz compatible = "ti,ads1015"; 83*8674f059SQuentin Schulz reg = <0x48>; 84*8674f059SQuentin Schulz #address-cells = <1>; 85*8674f059SQuentin Schulz interrupt-parent = <&gpio3>; 86*8674f059SQuentin Schulz interrupts = <RK_PC7 IRQ_TYPE_EDGE_FALLING>; 87*8674f059SQuentin Schulz pinctrl-0 = <&adc_alert>; 88*8674f059SQuentin Schulz pinctrl-names = "default"; 89*8674f059SQuentin Schulz #io-channel-cells = <1>; 90*8674f059SQuentin Schulz #size-cells = <0>; 91*8674f059SQuentin Schulz 92*8674f059SQuentin Schulz channel@1 { 93*8674f059SQuentin Schulz reg = <5>; /* Single-ended between AIN1 and GND */ 94*8674f059SQuentin Schulz ti,datarate = <0>; 95*8674f059SQuentin Schulz ti,gain = <5>; 96*8674f059SQuentin Schulz }; 97*8674f059SQuentin Schulz 98*8674f059SQuentin Schulz channel@2 { 99*8674f059SQuentin Schulz reg = <6>; /* Single-ended between AIN2 and GND */ 100*8674f059SQuentin Schulz ti,datarate = <0>; 101*8674f059SQuentin Schulz ti,gain = <5>; 102*8674f059SQuentin Schulz }; 103*8674f059SQuentin Schulz }; 104*8674f059SQuentin Schulz 105*8674f059SQuentin Schulz switch@5f { 106*8674f059SQuentin Schulz compatible = "microchip,ksz9896"; 107*8674f059SQuentin Schulz reg = <0x5f>; 108*8674f059SQuentin Schulz interrupt-parent = <&gpio3>; 109*8674f059SQuentin Schulz interrupts = <RK_PB7 IRQ_TYPE_EDGE_FALLING>; /* ETH_INTRP_N */ 110*8674f059SQuentin Schulz pinctrl-0 = <ð_reset_n ð_intrp_n>; 111*8674f059SQuentin Schulz pinctrl-names = "default"; 112*8674f059SQuentin Schulz reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_LOW>; /* ETH_RESET */ 113*8674f059SQuentin Schulz microchip,synclko-disable; /* CLKO_25_125 only routed to TP1 */ 114*8674f059SQuentin Schulz 115*8674f059SQuentin Schulz ethernet-ports { 116*8674f059SQuentin Schulz #address-cells = <1>; 117*8674f059SQuentin Schulz #size-cells = <0>; 118*8674f059SQuentin Schulz 119*8674f059SQuentin Schulz lan1: port@0 { 120*8674f059SQuentin Schulz reg = <0>; 121*8674f059SQuentin Schulz label = "ETH1"; 122*8674f059SQuentin Schulz }; 123*8674f059SQuentin Schulz 124*8674f059SQuentin Schulz lan2: port@1 { 125*8674f059SQuentin Schulz reg = <1>; 126*8674f059SQuentin Schulz label = "ETH2"; 127*8674f059SQuentin Schulz }; 128*8674f059SQuentin Schulz 129*8674f059SQuentin Schulz lan3: port@2 { 130*8674f059SQuentin Schulz reg = <2>; 131*8674f059SQuentin Schulz label = "ETH3"; 132*8674f059SQuentin Schulz }; 133*8674f059SQuentin Schulz 134*8674f059SQuentin Schulz lan4: port@3 { 135*8674f059SQuentin Schulz reg = <3>; 136*8674f059SQuentin Schulz label = "ETH4"; 137*8674f059SQuentin Schulz }; 138*8674f059SQuentin Schulz 139*8674f059SQuentin Schulz port@5 { 140*8674f059SQuentin Schulz reg = <5>; 141*8674f059SQuentin Schulz ethernet = <&gmac1>; 142*8674f059SQuentin Schulz label = "CPU"; 143*8674f059SQuentin Schulz phy-mode = "rgmii-id"; 144*8674f059SQuentin Schulz rx-internal-delay-ps = <2000>; 145*8674f059SQuentin Schulz tx-internal-delay-ps = <2000>; 146*8674f059SQuentin Schulz 147*8674f059SQuentin Schulz fixed-link { 148*8674f059SQuentin Schulz speed = <1000>; 149*8674f059SQuentin Schulz full-duplex; 150*8674f059SQuentin Schulz }; 151*8674f059SQuentin Schulz }; 152*8674f059SQuentin Schulz }; 153*8674f059SQuentin Schulz }; 154*8674f059SQuentin Schulz}; 155*8674f059SQuentin Schulz 156*8674f059SQuentin Schulz&pinctrl { 157*8674f059SQuentin Schulz adc { 158*8674f059SQuentin Schulz adc_alert: adc-alert-irq { 159*8674f059SQuentin Schulz rockchip,pins = 160*8674f059SQuentin Schulz <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>; 161*8674f059SQuentin Schulz }; 162*8674f059SQuentin Schulz }; 163*8674f059SQuentin Schulz 164*8674f059SQuentin Schulz ethernet { 165*8674f059SQuentin Schulz eth_intrp_n: eth-intrp-n { 166*8674f059SQuentin Schulz rockchip,pins = 167*8674f059SQuentin Schulz <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; 168*8674f059SQuentin Schulz }; 169*8674f059SQuentin Schulz 170*8674f059SQuentin Schulz eth_reset_n: eth-reset-n { 171*8674f059SQuentin Schulz rockchip,pins = 172*8674f059SQuentin Schulz <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; 173*8674f059SQuentin Schulz }; 174*8674f059SQuentin Schulz }; 175*8674f059SQuentin Schulz 176*8674f059SQuentin Schulz leds { 177*8674f059SQuentin Schulz led_usr1_pin: led-usr1-pin { 178*8674f059SQuentin Schulz rockchip,pins = 179*8674f059SQuentin Schulz <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>; 180*8674f059SQuentin Schulz }; 181*8674f059SQuentin Schulz 182*8674f059SQuentin Schulz led_usr2_pin: led-usr2-pin { 183*8674f059SQuentin Schulz rockchip,pins = 184*8674f059SQuentin Schulz <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>; 185*8674f059SQuentin Schulz }; 186*8674f059SQuentin Schulz }; 187*8674f059SQuentin Schulz}; 188*8674f059SQuentin Schulz 189*8674f059SQuentin Schulz&uart9 { 190*8674f059SQuentin Schulz /* GPIO3_D0/EN_RS485_MODE for switching between RS232 and RS485 */ 191*8674f059SQuentin Schulz pinctrl-0 = <&uart9m2_xfer &uart9m2_rtsn>; 192*8674f059SQuentin Schulz pinctrl-names = "default"; 193*8674f059SQuentin Schulz linux,rs485-enabled-at-boot-time; 194*8674f059SQuentin Schulz status = "okay"; 195*8674f059SQuentin Schulz}; 196