This may help with any future pinmuix issues
I have had so many iterations of trying to get UART’s working and in my excitement to publish my results I messed up. Their maybe other pin configurations but these are the ones I have got working. Here is my final version of what I currently have working:
Linux BeagleBone 5.10.168-ti-arm64-r103 #1bullseye SMP Fri May 12
/opt/source/dtb-5.10-ti/src/arm64/k3-j721e-beagleboneai64-bone-buses.dtsi
BONE_PIN(P8_37, uart, P8_37A(PIN_OUTPUT, 3) P8_37B(PIN_INPUT, 7)) /* uart5_txd */
BONE_PIN(P8_38, uart, P8_38A(PIN_INPUT, 7) P8_38B(PIN_INPUT, 3)) /* uart5_rxd */
BONE_PIN(P9_24, uart, P9_24A(PIN_OUTPUT, 3) P9_24B(PIN_INPUT, 7)) /* uart2_txd */
BONE_PIN(P9_26, uart, P9_26A(PIN_INPUT, 3) P9_26B(PIN_INPUT, 7)) /* uart2_rxd */
BONE_PIN(P9_27, uart, P9_27A(PIN_OUTPUT, 8) P9_27B(PIN_INPUT, 7)) /* uart3_txd */
BONE_PIN(P9_12, uart, P9_12(PIN_INPUT, 8)) /* uart3_rxd */
bone_uart_0: &main_uart0 {
/* TODO: also has option as "bone/uart/4" */
symlink = "bone/uart/0";
power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
};
bone_uart_1: &main_uart2 {
/* tested with sudo agetty 115200 ttyS4 */
pinctrl-names = "default";
pinctrl-0 = <
&P9_24_uart_pin /* uart2_txd */
&P9_26_uart_pin /* uart2_rxd */
>;
symlink = "bone/uart/1";
status = "disabled";
};
bone_uart_3: &main_uart3 {
pinctrl-names = "default";
pinctrl-0 = <
&P9_27_uart_pin /* uart3_txd */
&P9_12_uart_pin /* uart3_rxd *.
>;
symlink = "bone/uart/3";
status = "disabled";
};
bone_uart_5: &main_uart5 {
pinctrl-names = "default";
pinctrl-0 = <uart
&P8_37_uart_pin /* uart5_txd */
&P8_38_uart_pin /* uart5_rxd */
>;
symlink = "bone/uart/5";
status = "disabled";
};
/opt/source/dtb-5.10-ti/src/arm64/overlays/MY-UARTS.dts
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2022 BeagleBoard.org - https://beagleboard.org/
*
* https://elinux.org/Beagleboard:BeagleBone_cape_interface_spec#UART
*/
/dts-v1/;
/plugin/;
/*
* Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
*/
&{/chosen} {
overlays {
MY-UARTS.kernel = __TIMESTAMP__;
};
};
&bone_uart_1 { /* tested with sudo agetty 115200 ttyS4 */
status = "okay";
};
&bone_uart_3 { /* tested with sudo agetty 115200 ttyS5 */
status = "okay";
};
&bone_uart_5 {
/* tested with sudo agetty 115200 ttyS7 */
status = "okay";
};
The link doesn’t work for me.
Strange, must have messed up the pasting.
Scroll down to the bottom to get the latest file, or you can use the google link in the first post
I don’t know if you’ll understand the picture, but here it is.
I currently have four UARTs, one I2C, and a CAN port enabled.
The UART ports I am using are 2,3,5,8.
How can you verify that these enabled ports are working?
@aparnacnair
You can check it by enabling it in the ‘device tree’ and typing
tree /dev/bone
command after booting.
Thank You!!!