1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Device Tree file for the Kontron SMARC-sAL28 board. 4 * 5 * Copyright (C) 2021 Michael Walle <michael@walle.cc> 6 * 7 */ 8 9/dts-v1/; 10#include "fsl-ls1028a.dtsi" 11#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/gpio/gpio.h> 13#include <dt-bindings/input/input.h> 14 15/ { 16 model = "Kontron SMARC-sAL28"; 17 compatible = "kontron,sl28", "fsl,ls1028a"; 18 19 aliases { 20 crypto = &crypto; 21 serial0 = &duart0; 22 serial1 = &duart1; 23 serial2 = &lpuart1; 24 spi0 = &fspi; 25 spi1 = &dspi2; 26 mmc0 = &esdhc1; 27 mmc1 = &esdhc; 28 rtc0 = &rtc; 29 rtc1 = &ftm_alarm0; 30 }; 31 32 buttons0 { 33 compatible = "gpio-keys"; 34 35 power-button { 36 interrupts-extended = <&sl28cpld_intc 37 4 IRQ_TYPE_EDGE_BOTH>; 38 linux,code = <KEY_POWER>; 39 label = "Power"; 40 }; 41 42 sleep-button { 43 interrupts-extended = <&sl28cpld_intc 44 5 IRQ_TYPE_EDGE_BOTH>; 45 linux,code = <KEY_SLEEP>; 46 label = "Sleep"; 47 }; 48 }; 49 50 buttons1 { 51 compatible = "gpio-keys-polled"; 52 poll-interval = <200>; 53 54 lid-switch { 55 linux,input-type = <EV_SW>; 56 linux,code = <SW_LID>; 57 gpios = <&sl28cpld_gpio3 4 GPIO_ACTIVE_LOW>; 58 label = "Lid"; 59 }; 60 }; 61 62 chosen { 63 stdout-path = "serial0:115200n8"; 64 }; 65}; 66 67&can0 { 68 status = "okay"; 69}; 70 71&dspi2 { 72 status = "okay"; 73}; 74 75&duart0 { 76 status = "okay"; 77}; 78 79&duart1 { 80 status = "okay"; 81}; 82 83&enetc_mdio_pf3 { 84 phy0: ethernet-phy@5 { 85 reg = <0x5>; 86 eee-broken-1000t; 87 eee-broken-100tx; 88 }; 89}; 90 91&enetc_port0 { 92 phy-handle = <&phy0>; 93 phy-mode = "sgmii"; 94 managed = "in-band-status"; 95 status = "okay"; 96}; 97 98&esdhc { 99 sd-uhs-sdr104; 100 sd-uhs-sdr50; 101 sd-uhs-sdr25; 102 sd-uhs-sdr12; 103 status = "okay"; 104}; 105 106&esdhc1 { 107 mmc-hs200-1_8v; 108 mmc-hs400-1_8v; 109 bus-width = <8>; 110 status = "okay"; 111}; 112 113&fspi { 114 status = "okay"; 115 116 flash@0 { 117 compatible = "jedec,spi-nor"; 118 m25p,fast-read; 119 spi-max-frequency = <133000000>; 120 reg = <0>; 121 /* The following setting enables 1-1-2 (CMD-ADDR-DATA) mode */ 122 spi-rx-bus-width = <2>; /* 2 SPI Rx lines */ 123 spi-tx-bus-width = <1>; /* 1 SPI Tx line */ 124 125 partitions { 126 compatible = "fixed-partitions"; 127 #address-cells = <1>; 128 #size-cells = <1>; 129 130 partition@0 { 131 reg = <0x000000 0x010000>; 132 label = "rcw"; 133 read-only; 134 }; 135 136 partition@10000 { 137 reg = <0x010000 0x1d0000>; 138 label = "failsafe bootloader"; 139 read-only; 140 }; 141 142 partition@200000 { 143 reg = <0x200000 0x010000>; 144 label = "configuration store"; 145 }; 146 147 partition@210000 { 148 reg = <0x210000 0x1d0000>; 149 label = "bootloader"; 150 }; 151 152 partition@3e0000 { 153 reg = <0x3e0000 0x020000>; 154 label = "bootloader environment"; 155 }; 156 }; 157 }; 158}; 159 160&ftm_alarm0 { 161 status = "okay"; 162}; 163 164&gpio1 { 165 gpio-line-names = 166 "", "", "", "", "", "", "", "", 167 "", "", "", "", "", "", "", "", 168 "", "", "", "", "", "", "TDO", "TCK", 169 "", "", "", "", "", "", "", ""; 170}; 171 172&gpio2 { 173 gpio-line-names = 174 "", "", "", "", "", "", "TMS", "TDI", 175 "", "", "", "", "", "", "", "", 176 "", "", "", "", "", "", "", "", 177 "", "", "", "", "", "", "", ""; 178}; 179 180&i2c0 { 181 status = "okay"; 182 183 rtc: rtc@32 { 184 compatible = "microcrystal,rv8803"; 185 reg = <0x32>; 186 }; 187 188 sl28cpld@4a { 189 compatible = "kontron,sl28cpld"; 190 reg = <0x4a>; 191 #address-cells = <1>; 192 #size-cells = <0>; 193 194 watchdog@4 { 195 compatible = "kontron,sl28cpld-wdt"; 196 reg = <0x4>; 197 kontron,assert-wdt-timeout-pin; 198 }; 199 200 hwmon@b { 201 compatible = "kontron,sl28cpld-fan"; 202 reg = <0xb>; 203 }; 204 205 sl28cpld_pwm0: pwm@c { 206 compatible = "kontron,sl28cpld-pwm"; 207 reg = <0xc>; 208 #pwm-cells = <2>; 209 }; 210 211 sl28cpld_pwm1: pwm@e { 212 compatible = "kontron,sl28cpld-pwm"; 213 reg = <0xe>; 214 #pwm-cells = <2>; 215 }; 216 217 sl28cpld_gpio0: gpio@10 { 218 compatible = "kontron,sl28cpld-gpio"; 219 reg = <0x10>; 220 interrupts-extended = <&gpio2 6 221 IRQ_TYPE_EDGE_FALLING>; 222 223 gpio-controller; 224 #gpio-cells = <2>; 225 gpio-line-names = 226 "GPIO0_CAM0_PWR_N", "GPIO1_CAM1_PWR_N", 227 "GPIO2_CAM0_RST_N", "GPIO3_CAM1_RST_N", 228 "GPIO4_HDA_RST_N", "GPIO5_PWM_OUT", 229 "GPIO6_TACHIN", "GPIO7"; 230 231 interrupt-controller; 232 #interrupt-cells = <2>; 233 }; 234 235 sl28cpld_gpio1: gpio@15 { 236 compatible = "kontron,sl28cpld-gpio"; 237 reg = <0x15>; 238 interrupts-extended = <&gpio2 6 239 IRQ_TYPE_EDGE_FALLING>; 240 241 gpio-controller; 242 #gpio-cells = <2>; 243 gpio-line-names = 244 "GPIO8", "GPIO9", "GPIO10", "GPIO11", 245 "", "", "", ""; 246 247 interrupt-controller; 248 #interrupt-cells = <2>; 249 }; 250 251 sl28cpld_gpio2: gpio@1a { 252 compatible = "kontron,sl28cpld-gpo"; 253 reg = <0x1a>; 254 255 gpio-controller; 256 #gpio-cells = <2>; 257 gpio-line-names = 258 "LCD0 voltage enable", 259 "LCD0 backlight enable", 260 "eMMC reset", "LVDS bridge reset", 261 "LVDS bridge power-down", 262 "SDIO power enable", 263 "", ""; 264 }; 265 266 sl28cpld_gpio3: gpio@1b { 267 compatible = "kontron,sl28cpld-gpi"; 268 reg = <0x1b>; 269 270 gpio-controller; 271 #gpio-cells = <2>; 272 gpio-line-names = 273 "Power button", "Force recovery", "Sleep", 274 "Battery low", "Lid state", "Charging", 275 "Charger present", ""; 276 }; 277 278 sl28cpld_intc: interrupt-controller@1c { 279 compatible = "kontron,sl28cpld-intc"; 280 reg = <0x1c>; 281 interrupts-extended = <&gpio2 6 282 IRQ_TYPE_EDGE_FALLING>; 283 284 interrupt-controller; 285 #interrupt-cells = <2>; 286 }; 287 }; 288 289 eeprom@50 { 290 compatible = "atmel,24c32"; 291 reg = <0x50>; 292 pagesize = <32>; 293 }; 294}; 295 296&i2c3 { 297 status = "okay"; 298}; 299 300&i2c4 { 301 status = "okay"; 302 303 eeprom@50 { 304 compatible = "atmel,24c32"; 305 reg = <0x50>; 306 pagesize = <32>; 307 }; 308}; 309 310&lpuart1 { 311 status = "okay"; 312}; 313 314&mscc_felix_port4 { 315 dsa-tag-protocol = "ocelot-8021q"; 316}; 317 318&mscc_felix_port5 { 319 dsa-tag-protocol = "ocelot-8021q"; 320}; 321 322&usb0 { 323 status = "okay"; 324}; 325 326&usb1 { 327 dr_mode = "host"; 328 status = "okay"; 329}; 330