1*0e8011faSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0+ 2*0e8011faSEmmanuel Vadot/* 3*0e8011faSEmmanuel Vadot * Copyright (C) 2024 Josua Mayer <josua@solid-run.com> 4*0e8011faSEmmanuel Vadot * 5*0e8011faSEmmanuel Vadot * DTS for common base of SolidRun CN9130 Clearfog Base and Pro. 6*0e8011faSEmmanuel Vadot * 7*0e8011faSEmmanuel Vadot */ 8*0e8011faSEmmanuel Vadot 9*0e8011faSEmmanuel Vadot/ { 10*0e8011faSEmmanuel Vadot aliases { 11*0e8011faSEmmanuel Vadot /* label nics same order as armada 388 clearfog */ 12*0e8011faSEmmanuel Vadot ethernet0 = &cp0_eth2; 13*0e8011faSEmmanuel Vadot ethernet1 = &cp0_eth1; 14*0e8011faSEmmanuel Vadot ethernet2 = &cp0_eth0; 15*0e8011faSEmmanuel Vadot i2c1 = &cp0_i2c1; 16*0e8011faSEmmanuel Vadot mmc1 = &cp0_sdhci0; 17*0e8011faSEmmanuel Vadot }; 18*0e8011faSEmmanuel Vadot 19*0e8011faSEmmanuel Vadot reg_usb3_vbus0: regulator-usb3-vbus0 { 20*0e8011faSEmmanuel Vadot compatible = "regulator-fixed"; 21*0e8011faSEmmanuel Vadot regulator-name = "vbus0"; 22*0e8011faSEmmanuel Vadot regulator-min-microvolt = <5000000>; 23*0e8011faSEmmanuel Vadot regulator-max-microvolt = <5000000>; 24*0e8011faSEmmanuel Vadot gpios = <&expander0 6 GPIO_ACTIVE_LOW>; 25*0e8011faSEmmanuel Vadot }; 26*0e8011faSEmmanuel Vadot 27*0e8011faSEmmanuel Vadot sfp: sfp { 28*0e8011faSEmmanuel Vadot compatible = "sff,sfp"; 29*0e8011faSEmmanuel Vadot i2c-bus = <&cp0_i2c1>; 30*0e8011faSEmmanuel Vadot los-gpios = <&expander0 12 GPIO_ACTIVE_HIGH>; 31*0e8011faSEmmanuel Vadot mod-def0-gpios = <&expander0 15 GPIO_ACTIVE_LOW>; 32*0e8011faSEmmanuel Vadot tx-disable-gpios = <&expander0 14 GPIO_ACTIVE_HIGH>; 33*0e8011faSEmmanuel Vadot tx-fault-gpios = <&expander0 13 GPIO_ACTIVE_HIGH>; 34*0e8011faSEmmanuel Vadot maximum-power-milliwatt = <2000>; 35*0e8011faSEmmanuel Vadot }; 36*0e8011faSEmmanuel Vadot}; 37*0e8011faSEmmanuel Vadot 38*0e8011faSEmmanuel Vadot/* SRDS #2 - SFP+ 10GE */ 39*0e8011faSEmmanuel Vadot&cp0_eth0 { 40*0e8011faSEmmanuel Vadot managed = "in-band-status"; 41*0e8011faSEmmanuel Vadot phys = <&cp0_comphy2 0>; 42*0e8011faSEmmanuel Vadot phy-mode = "10gbase-r"; 43*0e8011faSEmmanuel Vadot sfp = <&sfp>; 44*0e8011faSEmmanuel Vadot status = "okay"; 45*0e8011faSEmmanuel Vadot}; 46*0e8011faSEmmanuel Vadot 47*0e8011faSEmmanuel Vadot&cp0_i2c0 { 48*0e8011faSEmmanuel Vadot expander0: gpio-expander@20 { 49*0e8011faSEmmanuel Vadot compatible = "nxp,pca9555"; 50*0e8011faSEmmanuel Vadot reg = <0x20>; 51*0e8011faSEmmanuel Vadot gpio-controller; 52*0e8011faSEmmanuel Vadot #gpio-cells = <2>; 53*0e8011faSEmmanuel Vadot pinctrl-0 = <&expander0_pins>; 54*0e8011faSEmmanuel Vadot pinctrl-names = "default"; 55*0e8011faSEmmanuel Vadot interrupt-parent = <&cp0_gpio1>; 56*0e8011faSEmmanuel Vadot interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 57*0e8011faSEmmanuel Vadot 58*0e8011faSEmmanuel Vadot /* CON3 */ 59*0e8011faSEmmanuel Vadot pcie2-0-clkreq-hog { 60*0e8011faSEmmanuel Vadot gpio-hog; 61*0e8011faSEmmanuel Vadot gpios = <0 GPIO_ACTIVE_LOW>; 62*0e8011faSEmmanuel Vadot input; 63*0e8011faSEmmanuel Vadot line-name = "pcie2.0-clkreq"; 64*0e8011faSEmmanuel Vadot }; 65*0e8011faSEmmanuel Vadot 66*0e8011faSEmmanuel Vadot /* CON3 */ 67*0e8011faSEmmanuel Vadot pcie2-0-w-disable-hog { 68*0e8011faSEmmanuel Vadot gpio-hog; 69*0e8011faSEmmanuel Vadot gpios = <3 GPIO_ACTIVE_LOW>; 70*0e8011faSEmmanuel Vadot output-low; 71*0e8011faSEmmanuel Vadot line-name = "pcie2.0-w-disable"; 72*0e8011faSEmmanuel Vadot }; 73*0e8011faSEmmanuel Vadot 74*0e8011faSEmmanuel Vadot usb3-ilimit-hog { 75*0e8011faSEmmanuel Vadot gpio-hog; 76*0e8011faSEmmanuel Vadot gpios = <5 GPIO_ACTIVE_LOW>; 77*0e8011faSEmmanuel Vadot input; 78*0e8011faSEmmanuel Vadot line-name = "usb3-current-limit"; 79*0e8011faSEmmanuel Vadot }; 80*0e8011faSEmmanuel Vadot 81*0e8011faSEmmanuel Vadot m2-devslp-hog { 82*0e8011faSEmmanuel Vadot gpio-hog; 83*0e8011faSEmmanuel Vadot gpios = <11 GPIO_ACTIVE_HIGH>; 84*0e8011faSEmmanuel Vadot output-low; 85*0e8011faSEmmanuel Vadot line-name = "m.2 devslp"; 86*0e8011faSEmmanuel Vadot }; 87*0e8011faSEmmanuel Vadot }; 88*0e8011faSEmmanuel Vadot 89*0e8011faSEmmanuel Vadot /* The MCP3021 supports standard and fast modes */ 90*0e8011faSEmmanuel Vadot adc@4c { 91*0e8011faSEmmanuel Vadot compatible = "microchip,mcp3021"; 92*0e8011faSEmmanuel Vadot reg = <0x4c>; 93*0e8011faSEmmanuel Vadot }; 94*0e8011faSEmmanuel Vadot 95*0e8011faSEmmanuel Vadot carrier_eeprom: eeprom@52 { 96*0e8011faSEmmanuel Vadot compatible = "atmel,24c02"; 97*0e8011faSEmmanuel Vadot reg = <0x52>; 98*0e8011faSEmmanuel Vadot pagesize = <8>; 99*0e8011faSEmmanuel Vadot }; 100*0e8011faSEmmanuel Vadot}; 101*0e8011faSEmmanuel Vadot 102*0e8011faSEmmanuel Vadot&cp0_i2c1 { 103*0e8011faSEmmanuel Vadot /* 104*0e8011faSEmmanuel Vadot * Routed to SFP, M.2, mikrobus, and miniPCIe 105*0e8011faSEmmanuel Vadot * SFP limits this to 100kHz, and requires an AT24C01A/02/04 with 106*0e8011faSEmmanuel Vadot * address pins tied low, which takes addresses 0x50 and 0x51. 107*0e8011faSEmmanuel Vadot * Mikrobus doesn't specify beyond an I2C bus being present. 108*0e8011faSEmmanuel Vadot * PCIe uses ARP to assign addresses, or 0x63-0x64. 109*0e8011faSEmmanuel Vadot */ 110*0e8011faSEmmanuel Vadot clock-frequency = <100000>; 111*0e8011faSEmmanuel Vadot pinctrl-0 = <&cp0_i2c1_pins>; 112*0e8011faSEmmanuel Vadot pinctrl-names = "default"; 113*0e8011faSEmmanuel Vadot status = "okay"; 114*0e8011faSEmmanuel Vadot}; 115*0e8011faSEmmanuel Vadot 116*0e8011faSEmmanuel Vadot/* SRDS #5 - miniPCIe (CON3) */ 117*0e8011faSEmmanuel Vadot&cp0_pcie2 { 118*0e8011faSEmmanuel Vadot num-lanes = <1>; 119*0e8011faSEmmanuel Vadot phys = <&cp0_comphy5 2>; 120*0e8011faSEmmanuel Vadot /* dw-pcie inverts internally */ 121*0e8011faSEmmanuel Vadot reset-gpios = <&expander0 1 GPIO_ACTIVE_HIGH>; 122*0e8011faSEmmanuel Vadot status = "okay"; 123*0e8011faSEmmanuel Vadot}; 124*0e8011faSEmmanuel Vadot 125*0e8011faSEmmanuel Vadot&cp0_pinctrl { 126*0e8011faSEmmanuel Vadot cp0_i2c1_pins: cp0-i2c1-pins { 127*0e8011faSEmmanuel Vadot marvell,pins = "mpp35", "mpp36"; 128*0e8011faSEmmanuel Vadot marvell,function = "i2c1"; 129*0e8011faSEmmanuel Vadot }; 130*0e8011faSEmmanuel Vadot 131*0e8011faSEmmanuel Vadot cp0_mmc0_pins: cp0-mmc0-pins { 132*0e8011faSEmmanuel Vadot marvell,pins = "mpp43", "mpp56", "mpp57", "mpp58", 133*0e8011faSEmmanuel Vadot "mpp59", "mpp60", "mpp61"; 134*0e8011faSEmmanuel Vadot marvell,function = "sdio"; 135*0e8011faSEmmanuel Vadot }; 136*0e8011faSEmmanuel Vadot 137*0e8011faSEmmanuel Vadot mikro_spi_pins: cp0-spi1-cs1-pins { 138*0e8011faSEmmanuel Vadot marvell,pins = "mpp12"; 139*0e8011faSEmmanuel Vadot marvell,function = "spi1"; 140*0e8011faSEmmanuel Vadot }; 141*0e8011faSEmmanuel Vadot 142*0e8011faSEmmanuel Vadot mikro_uart_pins: cp0-uart-pins { 143*0e8011faSEmmanuel Vadot marvell,pins = "mpp2", "mpp3"; 144*0e8011faSEmmanuel Vadot marvell,function = "uart1"; 145*0e8011faSEmmanuel Vadot }; 146*0e8011faSEmmanuel Vadot 147*0e8011faSEmmanuel Vadot expander0_pins: cp0-expander0-pins { 148*0e8011faSEmmanuel Vadot marvell,pins = "mpp4"; 149*0e8011faSEmmanuel Vadot marvell,function = "gpio"; 150*0e8011faSEmmanuel Vadot }; 151*0e8011faSEmmanuel Vadot}; 152*0e8011faSEmmanuel Vadot 153*0e8011faSEmmanuel Vadot/* SRDS #0 - SATA on M.2 connector */ 154*0e8011faSEmmanuel Vadot&cp0_sata0 { 155*0e8011faSEmmanuel Vadot phys = <&cp0_comphy0 1>; 156*0e8011faSEmmanuel Vadot status = "okay"; 157*0e8011faSEmmanuel Vadot 158*0e8011faSEmmanuel Vadot /* only port 1 is available */ 159*0e8011faSEmmanuel Vadot /delete-node/ sata-port@0; 160*0e8011faSEmmanuel Vadot}; 161*0e8011faSEmmanuel Vadot 162*0e8011faSEmmanuel Vadot/* microSD */ 163*0e8011faSEmmanuel Vadot&cp0_sdhci0 { 164*0e8011faSEmmanuel Vadot pinctrl-0 = <&cp0_mmc0_pins>; 165*0e8011faSEmmanuel Vadot pinctrl-names = "default"; 166*0e8011faSEmmanuel Vadot bus-width = <4>; 167*0e8011faSEmmanuel Vadot no-1-8-v; 168*0e8011faSEmmanuel Vadot status = "okay"; 169*0e8011faSEmmanuel Vadot}; 170*0e8011faSEmmanuel Vadot 171*0e8011faSEmmanuel Vadot&cp0_spi1 { 172*0e8011faSEmmanuel Vadot /* CS1 for mikrobus */ 173*0e8011faSEmmanuel Vadot pinctrl-0 = <&cp0_spi1_pins &mikro_spi_pins>; 174*0e8011faSEmmanuel Vadot}; 175*0e8011faSEmmanuel Vadot 176*0e8011faSEmmanuel Vadot/* 177*0e8011faSEmmanuel Vadot * SRDS #1 - USB-3.0 Host on Type-A connector 178*0e8011faSEmmanuel Vadot * USB-2.0 Host on mPCI-e connector (CON3) 179*0e8011faSEmmanuel Vadot */ 180*0e8011faSEmmanuel Vadot&cp0_usb3_0 { 181*0e8011faSEmmanuel Vadot phys = <&cp0_comphy1 0>, <&cp0_utmi0>; 182*0e8011faSEmmanuel Vadot phy-names = "comphy", "utmi"; 183*0e8011faSEmmanuel Vadot vbus-supply = <®_usb3_vbus0>; 184*0e8011faSEmmanuel Vadot dr_mode = "host"; 185*0e8011faSEmmanuel Vadot status = "okay"; 186*0e8011faSEmmanuel Vadot}; 187*0e8011faSEmmanuel Vadot 188*0e8011faSEmmanuel Vadot&cp0_utmi { 189*0e8011faSEmmanuel Vadot status = "okay"; 190*0e8011faSEmmanuel Vadot}; 191*0e8011faSEmmanuel Vadot 192*0e8011faSEmmanuel Vadot/* mikrobus uart */ 193*0e8011faSEmmanuel Vadot&cp0_uart0 { 194*0e8011faSEmmanuel Vadot pinctrl-0 = <&mikro_uart_pins>; 195*0e8011faSEmmanuel Vadot pinctrl-names = "default"; 196*0e8011faSEmmanuel Vadot status = "okay"; 197*0e8011faSEmmanuel Vadot}; 198