1*8c6d469fSLeonard Göhrs// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) 2*8c6d469fSLeonard Göhrs/* 3*8c6d469fSLeonard Göhrs * Copyright (C) 2024 Leonard Göhrs, Pengutronix 4*8c6d469fSLeonard Göhrs */ 5*8c6d469fSLeonard Göhrs 6*8c6d469fSLeonard Göhrs/dts-v1/; 7*8c6d469fSLeonard Göhrs 8*8c6d469fSLeonard Göhrs#include "stm32mp153c-lxa-fairytux2.dtsi" 9*8c6d469fSLeonard Göhrs 10*8c6d469fSLeonard Göhrs/ { 11*8c6d469fSLeonard Göhrs model = "Linux Automation GmbH FairyTux 2 Gen 1"; 12*8c6d469fSLeonard Göhrs compatible = "lxa,stm32mp153c-fairytux2-gen1", "oct,stm32mp153x-osd32", "st,stm32mp153"; 13*8c6d469fSLeonard Göhrs 14*8c6d469fSLeonard Göhrs gpio-keys { 15*8c6d469fSLeonard Göhrs compatible = "gpio-keys"; 16*8c6d469fSLeonard Göhrs 17*8c6d469fSLeonard Göhrs button-left { 18*8c6d469fSLeonard Göhrs label = "USER_BTN1"; 19*8c6d469fSLeonard Göhrs linux,code = <KEY_ESC>; 20*8c6d469fSLeonard Göhrs gpios = <&gpioi 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 21*8c6d469fSLeonard Göhrs }; 22*8c6d469fSLeonard Göhrs 23*8c6d469fSLeonard Göhrs button-right { 24*8c6d469fSLeonard Göhrs label = "USER_BTN2"; 25*8c6d469fSLeonard Göhrs linux,code = <KEY_HOME>; 26*8c6d469fSLeonard Göhrs gpios = <&gpioe 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 27*8c6d469fSLeonard Göhrs }; 28*8c6d469fSLeonard Göhrs }; 29*8c6d469fSLeonard Göhrs}; 30*8c6d469fSLeonard Göhrs 31*8c6d469fSLeonard Göhrs&gpiof { 32*8c6d469fSLeonard Göhrs gpio-line-names = "GPIO1", "GPIO2", "", "", "", /* 0 */ 33*8c6d469fSLeonard Göhrs "", "", "", "", "", /* 5 */ 34*8c6d469fSLeonard Göhrs "", "", "", "", "", /* 10 */ 35*8c6d469fSLeonard Göhrs ""; /* 15 */ 36*8c6d469fSLeonard Göhrs}; 37*8c6d469fSLeonard Göhrs 38*8c6d469fSLeonard Göhrs&gpioh { 39*8c6d469fSLeonard Göhrs gpio-line-names = "", "", "", "", "LCD_RESET", /* 0 */ 40*8c6d469fSLeonard Göhrs "", "", "", "", "", /* 5 */ 41*8c6d469fSLeonard Göhrs "", "", "", "GPIO3", "", /* 10 */ 42*8c6d469fSLeonard Göhrs ""; /* 15 */ 43*8c6d469fSLeonard Göhrs}; 44*8c6d469fSLeonard Göhrs 45*8c6d469fSLeonard Göhrs&gpioi { 46*8c6d469fSLeonard Göhrs gpio-line-names = "", "", "", "", "", /* 0 */ 47*8c6d469fSLeonard Göhrs "", "", "", "ETH_", "", /* 5 */ 48*8c6d469fSLeonard Göhrs "", "USER_BTN1"; /* 10 */ 49*8c6d469fSLeonard Göhrs}; 50*8c6d469fSLeonard Göhrs 51*8c6d469fSLeonard Göhrs&i2c1 { 52*8c6d469fSLeonard Göhrs pinctrl-names = "default", "sleep"; 53*8c6d469fSLeonard Göhrs pinctrl-0 = <&i2c1_pins_b>; 54*8c6d469fSLeonard Göhrs pinctrl-1 = <&i2c1_sleep_pins_b>; 55*8c6d469fSLeonard Göhrs status = "okay"; 56*8c6d469fSLeonard Göhrs 57*8c6d469fSLeonard Göhrs io_board_gpio: gpio@20 { 58*8c6d469fSLeonard Göhrs compatible = "ti,tca6408"; 59*8c6d469fSLeonard Göhrs reg = <0x20>; 60*8c6d469fSLeonard Göhrs gpio-controller; 61*8c6d469fSLeonard Göhrs #gpio-cells = <2>; 62*8c6d469fSLeonard Göhrs vcc-supply = <&v3v3_hdmi>; 63*8c6d469fSLeonard Göhrs gpio-line-names = "LED1_GA_YK", "LED2_GA_YK", "LED1_GK_YA", "LED2_GK_YA", 64*8c6d469fSLeonard Göhrs "RS485_EN", "RS485_120R", "", "CAN_120R"; 65*8c6d469fSLeonard Göhrs }; 66*8c6d469fSLeonard Göhrs}; 67*8c6d469fSLeonard Göhrs 68*8c6d469fSLeonard Göhrs&led_controller_io { 69*8c6d469fSLeonard Göhrs /* 70*8c6d469fSLeonard Göhrs * led-2 and led-3 are internally connected antiparallel to one 71*8c6d469fSLeonard Göhrs * another inside the ethernet jack like this: 72*8c6d469fSLeonard Göhrs * GPIO1 ---+---|led-2|>--+--- GPIO3 73*8c6d469fSLeonard Göhrs * +--<|led-3|---+ 74*8c6d469fSLeonard Göhrs * E.g. only one of the LEDs can be illuminated at a time while 75*8c6d469fSLeonard Göhrs * the other output must be driven low. 76*8c6d469fSLeonard Göhrs * This should likely be implemented using a multi color LED 77*8c6d469fSLeonard Göhrs * driver for antiparallel LEDs. 78*8c6d469fSLeonard Göhrs */ 79*8c6d469fSLeonard Göhrs led-2 { 80*8c6d469fSLeonard Göhrs color = <LED_COLOR_ID_GREEN>; 81*8c6d469fSLeonard Göhrs function = LED_FUNCTION_ACTIVITY; 82*8c6d469fSLeonard Göhrs gpios = <&io_board_gpio 1 GPIO_ACTIVE_HIGH>; 83*8c6d469fSLeonard Göhrs }; 84*8c6d469fSLeonard Göhrs 85*8c6d469fSLeonard Göhrs led-3 { 86*8c6d469fSLeonard Göhrs color = <LED_COLOR_ID_ORANGE>; 87*8c6d469fSLeonard Göhrs function = LED_FUNCTION_ACTIVITY; 88*8c6d469fSLeonard Göhrs gpios = <&io_board_gpio 3 GPIO_ACTIVE_HIGH>; 89*8c6d469fSLeonard Göhrs }; 90*8c6d469fSLeonard Göhrs}; 91*8c6d469fSLeonard Göhrs 92*8c6d469fSLeonard Göhrs&usart3 { 93*8c6d469fSLeonard Göhrs /* 94*8c6d469fSLeonard Göhrs * On Gen 1 FairyTux 2 only RTS can be used and not CTS as well, 95*8c6d469fSLeonard Göhrs * Because pins PD11 (CTS) and PI11 (USER_BTN1) share the same 96*8c6d469fSLeonard Göhrs * interrupt and only one of them can be used at a time. 97*8c6d469fSLeonard Göhrs */ 98*8c6d469fSLeonard Göhrs rts-gpios = <&gpiod 12 GPIO_ACTIVE_LOW>; 99*8c6d469fSLeonard Göhrs}; 100*8c6d469fSLeonard Göhrs 101*8c6d469fSLeonard Göhrs&usbotg_hs { 102*8c6d469fSLeonard Göhrs dr_mode = "peripheral"; 103*8c6d469fSLeonard Göhrs}; 104