Part Number: AM3352
Hi TI Experts,
Kernel Version: 6.12.49
Previous Working Version: 4.19
I am migrating a custom board from Kernel 4.19 to 6.12.49. When attempting to enable UART5 in the Device Tree (DTS), the boot process hangs indefinitely at the message Starting kernel....
If I set the status of UART5 to "disabled", the kernel boots normally using UART0 as the console. I have stripped the DTS down to the bare essentials (UART0, SD Card, and UART5), but the conflict persists.
Current DTS Configuration:
I am using the following node definition (simplified):
DTS attached below:
/dts-v1/;
#include "am33xx.dtsi"
/ {
model = "AM335x-P1-512";
compatible = "ti,am335x-company-product-nxt", "ti,am33xx";
cpus {
cpu@0 {
cpu0-supply = <&vdd_mpu_supply>;
};
};
memory@80000000 {
device_type = "memory";
reg = <0x80000000 0x20000000>; /* 512MB */
};
chosen {
stdout-path = &uart0;
};
vmmcsd_fixed: fixedregulator-sd {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
};
vdd_mpu_supply: fixedregulator-mpu {
compatible = "regulator-fixed";
regulator-name = "vdd_mpu_supply";
regulator-min-microvolt = <912500>;
regulator-max-microvolt = <1351500>;
regulator-boot-on;
};
};
&am33xx_pinmux {
uart0_pins: pinmux_uart0_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_UART0_RXD, PIN_INPUT_PULLUP, MUX_MODE0) /* uart0_rxd.uart0_rxd */
AM33XX_PADCONF(AM335X_PIN_UART0_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};
mmc1_pins_default: pinmux_mmc1_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */
AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_clk.mmc0_clk */
AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0) /* mmc0_cmd.mmc0_cmd */
AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_INPUT, MUX_MODE7) /* mcasp0_aclkx.gpio3_14 */
>;
};
uart5_pins: pinmux_uart5_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_INPUT_PULLUP, MUX_MODE4 ) /* () uart5_rxd */
AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT_PULLDOWN, MUX_MODE4 ) /* () uart5_txd */
>;
};
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
status = "okay";
};
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
status = "okay";
};
&mmc1 {
status = "okay";
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <4>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&mmc1_pins_default>;
cd-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
};
Observations & Debugging Done:
-
4.19 Behavior: The same hardware and pinmux configuration work perfectly.
-
6.12 Behavior: The hang occurs very early. No panic or oops is printed to the console.
Questions:
-
Are there known regressions or changes in the System Firmware (SYSFW/TISCI) requirements for UART5 between these kernel versions?
-
Does Kernel 6.12 require specific
power-domainsorclocksproperties that were previously handled implicitly in 4.19? -
Is there a specific debug flag I should enable to see if this is a data abort during the UART5
probefunction?
Regards.
-