
On 03.09.24 13:00, Soeren Moch wrote:
Hi Sebastian,
On 31.08.24 15:36, Soeren Moch wrote: [...]
Unfortunately I see the same problem as in v3: boot loop when powering the board from my notebook (ThinkPad X1 Nano running Ubuntu 24.04.1 LTS), see boot log below.
Patch version v2 is still running totally fine in the exact same setup (patch series on top of u-boot 2024.07, same board, same cabling).
Unfortunately I currently have no access to the miniPC (Zotac ZBOX CI620) I used as additional test platform before.
The boot log is unfortunately not very helpful. If you provide an additional patch enabling more debug output, I'm happy to retest with that (v2 and/or v4).
Here additional debug messages for the not working case (LOG_DEBUG enabled):
U-Boot 2024.07-00006-g65a73892d9-dirty (Sep 03 2024 - 12:22:42 +0200)
Model: Radxa ROCK 5 Model B DRAM: 8 GiB fusb302 usb-typec@22: set pd RX off fusb302 usb-typec@22: vconn is already off fusb302 usb-typec@22: TCPM: set polarity = 0 fusb302 usb-typec@22: pd header : sink, device fusb302 usb-typec@22: TCPM: state change INVALID_STATE -> SNK_UNATTACHED fusb302 usb-typec@22: TCPM: Start toggling fusb302 usb-typec@22: TCPM: state change SNK_UNATTACHED -> TOGGLING fusb302 usb-typec@22: get cc1 = open, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected] fusb302 usb-typec@22: IRQ: 0x80, a: 0x00, b: 0x00, status0: 0x83 fusb302 usb-typec@22: IRQ: VBUS_OK, vbus=On fusb302 usb-typec@22: IRQ: 0x01, a: 0x40, b: 0x00, status0: 0x82 fusb302 usb-typec@22: IRQ: TOGDONE fusb302 usb-typec@22: get cc1 = rp-1.5, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 0 -> 4, CC2: 0 -> 0 [state TOGGLING, polarity 0, connected] fusb302 usb-typec@22: TCPM: state change TOGGLING -> SNK_ATTACH_WAIT fusb302 usb-typec@22: TCPM: pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 200 ms [rev1] fusb302 usb-typec@22: detected cc1=rp-1.5, cc2=open fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0xc2 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0xd1 fusb302 usb-typec@22: cc1: rp-1.5 -> rp-def fusb302 usb-typec@22: get cc1 = rp-def, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 4 -> 3, CC2: 0 -> 0 [state SNK_ATTACH_WAIT, polarity 0, connected] fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: cc1: rp-def -> rp-1.5 fusb302 usb-typec@22: get cc1 = rp-1.5, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 3 -> 4, CC2: 0 -> 0 [state SNK_ATTACH_WAIT, polarity 0, connected] fusb302 usb-typec@22: TCPM: state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 200 ms] fusb302 usb-typec@22: TCPM: state change SNK_DEBOUNCED -> SNK_ATTACHED fusb302 usb-typec@22: TCPM: set polarity = 0 fusb302 usb-typec@22: pd header : sink, device fusb302 usb-typec@22: TCPM: state change SNK_ATTACHED -> SNK_STARTUP fusb302 usb-typec@22: TCPM: state change SNK_STARTUP -> SNK_DISCOVERY fusb302 usb-typec@22: TCPM: set vbus = 0 charge = 1 fusb302 usb-typec@22: TCPM: state change SNK_DISCOVERY -> SNK_WAIT_CAPABILITIES fusb302 usb-typec@22: set pd RX on fusb302 usb-typec@22: TCPM: pending state change SNK_WAIT_CAPABILITIES -> SOFT_RESET_SEND @ 310 ms [rev3] fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0x17a1 len=4) fusb302 usb-typec@22: TCPM: PD RX, header: 0x17a1 [1] fusb302 usb-typec@22: TCPM: state change SNK_WAIT_CAPABILITIES -> SNK_NEGOTIATE_CAPABILITIES fusb302 usb-typec@22: TCPM: cc=0 cc1=4 cc2=0 vbus=0 vconn=sink polarity=0 fusb302 usb-typec@22: TCPM: PD TX, header: 0x1082 fusb302 usb-typec@22: Send PD message (header=0x1082 len=4) fusb302 usb-typec@22: IRQ: 0x41, a: 0x04, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD tx success fusb302 usb-typec@22: Received PD message (header=0x161 len=0) fusb302 usb-typec@22: TCPM: PD TX complete, status: 0 fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0x9a3 len=0) fusb302 usb-typec@22: TCPM: PD RX, header: 0x9a3 [1] fusb302 usb-typec@22: TCPM: state change SNK_NEGOTIATE_CAPABILITIES -> SNK_TRANSITION_SINK fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0xba6 len=0) fusb302 usb-typec@22: TCPM: PD RX, header: 0xba6 [1] fusb302 usb-typec@22: TCPM: state change SNK_TRANSITION_SINK -> SNK_READY fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0x1daf len=4) fusb302 usb-typec@22: TCPM: PD RX, header: 0x1daf [1] fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: 0x41, a: 0x00, b: 0x01, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0x1faf len=4) fusb302 usb-typec@22: TCPM: PD RX, header: 0x1faf [1] fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x93 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x93 fusb302 usb-typec@22: cc1: rp-1.5 -> rp-3.0 fusb302 usb-typec@22: get cc1 = rp-3.0, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 4 -> 5, CC2: 0 -> 0 [state SNK_READY, polarity 0, connected] fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: cc1: rp-3.0 -> rp-1.5 fusb302 usb-typec@22: get cc1 = rp-1.5, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 5 -> 4, CC2: 0 -> 0 [state SNK_READY, polarity 0, connected] fusb302 usb-typec@22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x92 fusb302 usb-typec@22: IRQ: PD sent good CRC fusb302 usb-typec@22: Received PD message (header=0x11af len=4) fusb302 usb-typec@22: TCPM: PD RX, header: 0x11af [1] fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x93 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x93 fusb302 usb-typec@22: cc1: rp-1.5 -> rp-3.0 fusb302 usb-typec@22: get cc1 = rp-3.0, cc2 = open fusb302 usb-typec@22: TCPM: CC1: 4 -> 5, CC2: 0 -> 0 [state SNK_READY, polarity 0, connected] fusb302 usb-typec@22: TCPM: PD transmit data failed: -110 fusb302 usb-typec@22: TCPM: state change SNK_READY -> SNK_WAIT_CAPABILITIES fusb302 usb-typec@22: set pd RX on fusb302 usb-typec@22: TCPM: pending state change SNK_WAIT_CAPABILITIES -> HARD_RESET_SEND @ 310 ms [rev3] fusb302 usb-typec@22: TCPM: state change SNK_WAIT_CAPABILITIES -> HARD_RESET_SEND [delayed 310 ms] fusb302 usb-typec@22: TCPM: PD TX, type: 0x5 fusb302 usb-typec@22: IRQ: 0x41, a: 0x08, b: 0x00, status0: 0x93 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x93 fusb302 usb-typec@22: IRQ: PD hardreset sent fusb302 usb-typec@22: TCPM: PD TX complete, status: 0 fusb302 usb-typec@22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x83 fusb302 usb-typec@22: IRQ: BC_LVL, handler pending fusb302 usb-typec@22: BC_LVL handler, status0 = 0x83
<Reset>
We already reached SNK_READY state, so everything should be fine and finished. But additional communication seams to cause a HARD_RESET sent by us, leading to a boot loop.
Seems to me we are not prepared for communication with port partners capable of source and sink power roles. Just a guess, though.
Regards, Soeren