--- arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts.orig 2025-03-21 17:18:56.000000000 -0700 +++ arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts 2025-03-27 20:42:24.529917638 -0700 @@ -34,9 +34,10 @@ mmc1 = &sdhci1; mmc2 = &sdhci2; rtc0 = &rtc; - serial0 = &main_uart5; - serial1 = &main_uart6; - serial2 = &main_uart0; + serial0 = &main_uart0; + serial1 = &main_uart1; + serial5 = &main_uart5; + serial6 = &main_uart6; usb0 = &usb0; usb1 = &usb1; }; @@ -166,50 +167,34 @@ led-0 { bootph-all; gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; - function = LED_FUNCTION_HEARTBEAT; default-state = "off"; }; led-1 { bootph-all; gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "disk-activity"; - function = LED_FUNCTION_DISK_ACTIVITY; - default-state = "keep"; + default-state = "off"; }; led-2 { bootph-all; gpios = <&main_gpio0 5 GPIO_ACTIVE_HIGH>; - function = LED_FUNCTION_CPU; + default-state = "off"; }; led-3 { bootph-all; gpios = <&main_gpio0 6 GPIO_ACTIVE_HIGH>; - function = LED_FUNCTION_LAN; + default-state = "off"; }; led-4 { bootph-all; gpios = <&main_gpio0 9 GPIO_ACTIVE_HIGH>; - function = LED_FUNCTION_WLAN; - }; - }; - - gpio_keys: gpio-keys { - compatible = "gpio-keys"; - autorepeat; - pinctrl-names = "default"; - pinctrl-0 = <&usr_button_pins_default>; - - usr: button-usr { - label = "User Key"; - linux,code = ; - gpios = <&main_gpio0 18 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + function = LED_FUNCTION_HEARTBEAT; + default-state = "off"; }; - }; hdmi0: connector-hdmi { @@ -543,6 +528,112 @@ AM62X_MCU_IOPAD(0x0084, PIN_OUTPUT, 0) /* (A12) WKUP_CLKOUT0 */ >; }; + + // Configure all mikroBUS pins as GPIO. Invoked by mikrobus-gpio.dtbo. + + mikrobus_gpio: mikrobus-gpio { + pinctrl-single,pins = < + AM62X_IOPAD(0x01a0, PIN_INPUT, 7) /* (E18) AN */ + AM62X_IOPAD(0x01a8, PIN_INPUT, 7) /* (D20) RST */ + AM62X_IOPAD(0x01ac, PIN_INPUT, 7) /* (E19) CS */ + AM62X_IOPAD(0x01b0, PIN_INPUT, 7) /* (A20) SCK */ + AM62X_IOPAD(0x0194, PIN_INPUT, 7) /* (B19) MISO */ + AM62X_IOPAD(0x0198, PIN_INPUT, 7) /* (A19) MOSI */ + AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) PWM */ + AM62X_IOPAD(0x019c, PIN_INPUT, 7) /* (B18) INT */ + AM62X_IOPAD(0x01d8, PIN_INPUT, 7) /* (C15) RX */ + AM62X_IOPAD(0x01dc, PIN_INPUT, 7) /* (E15) TX */ + AM62X_IOPAD(0x01d0, PIN_INPUT, 7) /* (A15) SCL */ + AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (B15) SDA */ + >; + }; + + // Configure mikroBUS I2C pins as GPIO. Invoked by mikrobus-i2c-gpio.dtbo. + + mikrobus_i2c_gpio_pins: mikrobus-i2c-gpio-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01d0, PIN_INPUT, 7) /* (A15) SCL */ + AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (B15) SDA */ + >; + }; + + // Configure mikroBUS PWM pins as GPIO. Invoked by mikrobus-pwm-gpio.dtbo. + + mikrobus_pwm_gpio_pins: mikrobus-pwm-gpio-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) PWM */ + >; + }; + + // Configure mikroBUS SPI pins as GPIO. Invoked by mikrobus-spi-gpio.dtbo. + + mikrobus_spi_gpio_pins: mikrobus-spi-gpio-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01ac, PIN_INPUT, 7) /* (E19) CS */ + AM62X_IOPAD(0x01b0, PIN_INPUT, 7) /* (A20) SCK */ + AM62X_IOPAD(0x0194, PIN_INPUT, 7) /* (B19) MISO */ + AM62X_IOPAD(0x0198, PIN_INPUT, 7) /* (A19) MOSI */ + >; + }; + + // Configure mikroBUS UART pins as GPIO. Invoked by mikrobus-uart-gpio.dtbo. + + mikrobus_uart_gpio_pins: mikrobus-uart-gpio-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01d8, PIN_INPUT, 7) /* (C15) RX */ + AM62X_IOPAD(0x01dc, PIN_INPUT, 7) /* (E15) TX */ + >; + }; + + // Configure Grove socket as GPIO. Invoked by grove-gpio.dtbo. + + grove_gpio_pins: grove-gpio-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01e8, PIN_INPUT, 7) /* (B17) D0 */ + AM62X_IOPAD(0x01ec, PIN_INPUT, 7) /* (A17) D1 */ + >; + }; + + // Configure Grove socket as UART. Invoked by grove-serial.dtbo. + + grove_uart_pins: grove-uart-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01e8, PIN_INPUT, 1) /* (B17) RXD */ + AM62X_IOPAD(0x01ec, PIN_OUTPUT, 1) /* (A17) TXD */ + >; + }; + + // Configure Grove socket as motor driver. Invoked by grove-motor1.dtbo. + // Type 1 Motor Driver: PWM on D0 and DIR on D1. + + grove_motor_pins1: grove-motor-pins1 { + pinctrl-single,pins = < + AM62X_IOPAD(0x01e8, PIN_INPUT, 8) /* (B17) PWM */ + AM62X_IOPAD(0x01ec, PIN_INPUT, 7) /* (A17) DIR */ + >; + }; + + // Configure Grove socket as motor driver. Invoked by grove-motor2.dtbo. + // Type 2 Motor Driver: CW PWM on D0 and CCW PWM on D1. + // Example: Toshiba TB6612FNG + + grove_motor_pins2: grove-motor-pins2 { + pinctrl-single,pins = < + AM62X_IOPAD(0x01e8, PIN_INPUT, 8) /* (B17) PWM CW */ + AM62X_IOPAD(0x01ec, PIN_INPUT, 8) /* (A17) PWM CCW */ + >; + }; + + // Configure Grove socket as motor driver. Invoked by grove-motor3.dtbo. + // Type 3 Motor Driver: DIR on D0 and PWM on D1. + // Example: Cytron MD13S + + grove_motor_pins3: grove-motor-pins3 { + pinctrl-single,pins = < + AM62X_IOPAD(0x01e8, PIN_INPUT, 7) /* (B17) DIR */ + AM62X_IOPAD(0x01ec, PIN_INPUT, 8) /* (A17) PWM */ + >; + }; }; &a53_opp_table { @@ -795,6 +886,12 @@ pinctrl-names = "default"; pinctrl-0 = <&mikrobus_spi_pins_default>; status = "okay"; + + spidev@0 { + compatible = "rohm,dh2228fv"; + status = "okay"; + reg = <0>; + }; }; &sdhci0 { @@ -852,8 +949,9 @@ }; &main_uart1 { - /* Main UART1 is used by TIFS firmware */ - status = "reserved"; + pinctrl-names = "default"; + pinctrl-0 = <&grove_uart_pins>; + status = "disabled"; }; &main_uart5 { @@ -915,3 +1013,7 @@ pinctrl-names = "default"; pinctrl-0 = <&mikrobus_pwm_pins_default>; }; + +&epwm2 { + status = "disabled"; +};