Tool/software:
We are migrating a design from SDK 6 (Linux v4.10) to SDK 9. We didn't have any major issues so far, but when I enable the UART 6 in the DTB the kernel fails to load. It gets stuck on "Starting kernel ..." message in U-Boot.
If I set the uart6 status to "disabled", then it boots.
I am using the U-Boot from SDK 6 and booting via TFTP. I know the HW and the Pinmux are OK because booting with SDK 6 kernel works, and U-Boot sets the pinmux. My console UART is UART1, so I should be seeing the boot messages.
I suspect something is broken in the clocking, because UART6 uses CD_IPU and the other UARTs I use are on CD_L4_PER1. However, I don't undertand why it fails to enable such clock.
Any suggestion on how to debug this? It's hard because as soon as I enable the UART, I no longer see anything so printk()-based debug is not an option.
This is the DTS I am using, the kernel is compiled with no modifications on the default SDK:
// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (C) 2016 Texas Instruments Incorporated - https://www.ti.com/ */ #include "dra71x.dtsi" #include "dra7-mmc-iodelay.dtsi" #include "dra72x-mmc-iodelay.dtsi" #include "am5718.dtsi" #include "dra7-ipu-dsp-common.dtsi" #include <dt-bindings/gpio/gpio.h> / { compatible = "ti,dra718-evm", "ti,dra718", "ti,dra722", "ti,dra72", "ti,dra7"; model = "TI DRA718 EVM"; memory { device_type = "memory"; reg = <0x0 0x80000000 0x0 0x40000000>; /* 1GB */ }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ipu2_memory_region: ipu2-memory@95800000 { compatible = "shared-dma-pool"; reg = <0x0 0x95800000 0x0 0x3800000>; reusable; status = "okay"; }; dsp1_memory_region: dsp1-memory@99000000 { compatible = "shared-dma-pool"; reg = <0x0 0x99000000 0x0 0x4000000>; reusable; status = "okay"; }; ipu1_memory_region: ipu1-memory@9d000000 { compatible = "shared-dma-pool"; reg = <0x0 0x9d000000 0x0 0x2000000>; reusable; status = "okay"; }; }; vpo_sd_1v8_3v3: gpio-regulator-TPS74801 { compatible = "regulator-gpio"; regulator-name = "vddshv8"; regulator-okmin-microvolt = <1800000>; regulator-max-microvolt = <3000000>; regulator-boot-on; vin-supply = <&evm_5v0>; gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>; states = <1800000 0x0 3000000 0x1>; }; evm_1v8_sw: fixedregulator-evm_1v8 { compatible = "regulator-fixed"; regulator-name = "evm_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&lp8732_buck0_reg>; regulator-always-on; regulator-boot-on; }; poweroff: gpio-poweroff { compatible = "gpio-poweroff"; gpios = <&gpio7 30 GPIO_ACTIVE_HIGH>; input; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* CMEM For di-platform FW (dsp1, ipu1 and A15) */ cmem_block_mem_0: cmem_block_mem@93000000 { reg = <0x0 0x93000000 0x0 0x2000000>; no-map; status = "okay"; }; /* CMEM for Bridge PRUSS1 ADC */ pru1-memory@9fec0000 { reg = <0x0 0x950c0000 0x0 0x40000>; no-map; status = "okay"; }; }; cmem { compatible = "ti,cmem"; #address-cells = <1>; #size-cells = <0>; #pool-size-cells = <2>; status = "okay"; cmem_block_0: cmem_block@0 { reg = <0>; memory-region = <&cmem_block_mem_0>; cmem-buf-pools = <0x1 0x0 0x2000000>; }; }; }; &i2c1 { status = "okay"; clock-frequency = <400000>; lp8733: lp8733@60 { compatible = "ti,lp8733"; reg = <0x60>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&evm_5v0>; ldo1-in-supply =<&evm_5v0>; lp8733_regulators: regulators { lp8733_buck0_reg: buck0 { /* FB_B0 -> LP8733-BUCK1 - VPO_S1_AVS - VDD_CORE_AVS (core, mpu, gpu) */ regulator-name = "lp8733-buck0"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-always-on; regulator-boot-on; }; lp8733_buck1_reg: buck1 { /* FB_B1 -> LP8733-BUCK2 - VPO_S2_AVS - VDD_DSP_AVS (DSP/eve/iva) */ regulator-name = "lp8733-buck1"; regulator-min-microvolt = <850000>; regulator-max-microvolt = <1250000>; regulator-boot-on; regulator-always-on; }; lp8733_ldo0_reg: ldo0 { /* LDO0 -> LP8733-LDO1 - VPO_L1_3V3 - VDDSHV8 (optional) */ regulator-name = "lp8733-ldo0"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; regulator-always-on; }; lp8733_ldo1_reg: ldo1 { /* LDO1 -> LP8733-LDO2 - VPO_L2_3V3 - VDDA_USB3V3 */ regulator-name = "lp8733-ldo1"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; }; }; lp8732: lp8732@61 { compatible = "ti,lp8732"; reg = <0x61>; buck0-in-supply =<&vsys_3v3>; buck1-in-supply =<&vsys_3v3>; ldo0-in-supply =<&vsys_3v3>; ldo1-in-supply =<&vsys_3v3>; lp8732_regulators: regulators { lp8732_buck0_reg: buck0 { /* FB_B0 -> LP8732-BUCK1 - VPO_S3_1V8 - VDDS_1V8 */ regulator-name = "lp8732-buck0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; lp8732_buck1_reg: buck1 { /* FB_B1 -> LP8732-BUCK2 - VPO_S4_DDR - VDD_DDR_1V35 */ regulator-name = "lp8732-buck1"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo0_reg: ldo0 { /* LDO0 -> LP8732-LDO1 - VPO_L3_1V8 - VDA_1V8_PLL */ regulator-name = "lp8732-ldo0"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; }; lp8732_ldo1_reg: ldo1 { /* LDO1 -> LP8732-LDO2 - VPO_L4_1V8 - VDA_1V8_PHY */ regulator-name = "lp8732-ldo1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; }; }; }; }; &uart1 { status = "okay"; overrun-throttle-ms = <500>; }; &uart3 { status = "okay"; overrun-throttle-ms = <500>; }; #if 1 /* FIXME: doesn't boot, probably needs a clock? */ &uart6 { status = "okay"; //overrun-throttle-ms = <500>; }; #endif