[PATCH v4 0/6] FUSB302 USB-C controller support

Sören Moch smoch at web.de
Tue Sep 3 15:42:51 CEST 2024


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 at 22: set pd RX off
> fusb302 usb-typec at 22: vconn is already off
> fusb302 usb-typec at 22: TCPM: set polarity = 0
> fusb302 usb-typec at 22: pd header : sink, device
> fusb302 usb-typec at 22: TCPM: state change INVALID_STATE -> SNK_UNATTACHED
> fusb302 usb-typec at 22: TCPM: Start toggling
> fusb302 usb-typec at 22: TCPM: state change SNK_UNATTACHED -> TOGGLING
> fusb302 usb-typec at 22: get cc1 = open, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING,
> polarity 0, disconnected]
> fusb302 usb-typec at 22: IRQ: 0x80, a: 0x00, b: 0x00, status0: 0x83
> fusb302 usb-typec at 22: IRQ: VBUS_OK, vbus=On
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x40, b: 0x00, status0: 0x82
> fusb302 usb-typec at 22: IRQ: TOGDONE
> fusb302 usb-typec at 22: get cc1 = rp-1.5, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 0 -> 4, CC2: 0 -> 0 [state TOGGLING,
> polarity 0, connected]
> fusb302 usb-typec at 22: TCPM: state change TOGGLING -> SNK_ATTACH_WAIT
> fusb302 usb-typec at 22: TCPM: pending state change SNK_ATTACH_WAIT ->
> SNK_DEBOUNCED @ 200 ms [rev1]
> fusb302 usb-typec at 22: detected cc1=rp-1.5, cc2=open
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0xc2
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0xd1
> fusb302 usb-typec at 22: cc1: rp-1.5 -> rp-def
> fusb302 usb-typec at 22: get cc1 = rp-def, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 4 -> 3, CC2: 0 -> 0 [state
> SNK_ATTACH_WAIT, polarity 0, connected]
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: cc1: rp-def -> rp-1.5
> fusb302 usb-typec at 22: get cc1 = rp-1.5, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 3 -> 4, CC2: 0 -> 0 [state
> SNK_ATTACH_WAIT, polarity 0, connected]
> fusb302 usb-typec at 22: TCPM: state change SNK_ATTACH_WAIT ->
> SNK_DEBOUNCED [delayed 200 ms]
> fusb302 usb-typec at 22: TCPM: state change SNK_DEBOUNCED -> SNK_ATTACHED
> fusb302 usb-typec at 22: TCPM: set polarity = 0
> fusb302 usb-typec at 22: pd header : sink, device
> fusb302 usb-typec at 22: TCPM: state change SNK_ATTACHED -> SNK_STARTUP
> fusb302 usb-typec at 22: TCPM: state change SNK_STARTUP -> SNK_DISCOVERY
> fusb302 usb-typec at 22: TCPM: set vbus = 0 charge = 1
> fusb302 usb-typec at 22: TCPM: state change SNK_DISCOVERY ->
> SNK_WAIT_CAPABILITIES
> fusb302 usb-typec at 22: set pd RX on
> fusb302 usb-typec at 22: TCPM: pending state change SNK_WAIT_CAPABILITIES
> -> SOFT_RESET_SEND @ 310 ms [rev3]
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0x17a1 len=4)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0x17a1 [1]
> fusb302 usb-typec at 22: TCPM: state change SNK_WAIT_CAPABILITIES ->
> SNK_NEGOTIATE_CAPABILITIES
> fusb302 usb-typec at 22: TCPM: cc=0 cc1=4 cc2=0 vbus=0 vconn=sink polarity=0
> fusb302 usb-typec at 22: TCPM: PD TX, header: 0x1082
> fusb302 usb-typec at 22: Send PD message (header=0x1082 len=4)
> fusb302 usb-typec at 22: IRQ: 0x41, a: 0x04, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD tx success
> fusb302 usb-typec at 22: Received PD message (header=0x161 len=0)
> fusb302 usb-typec at 22: TCPM: PD TX complete, status: 0
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0x9a3 len=0)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0x9a3 [1]
> fusb302 usb-typec at 22: TCPM: state change SNK_NEGOTIATE_CAPABILITIES ->
> SNK_TRANSITION_SINK
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x93
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0xba6 len=0)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0xba6 [1]
> fusb302 usb-typec at 22: TCPM: state change SNK_TRANSITION_SINK -> SNK_READY
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0x1daf len=4)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0x1daf [1]
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: 0x41, a: 0x00, b: 0x01, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0x1faf len=4)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0x1faf [1]
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x93
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x93
> fusb302 usb-typec at 22: cc1: rp-1.5 -> rp-3.0
> fusb302 usb-typec at 22: get cc1 = rp-3.0, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 4 -> 5, CC2: 0 -> 0 [state SNK_READY,
> polarity 0, connected]
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: cc1: rp-3.0 -> rp-1.5
> fusb302 usb-typec at 22: get cc1 = rp-1.5, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 5 -> 4, CC2: 0 -> 0 [state SNK_READY,
> polarity 0, connected]
> fusb302 usb-typec at 22: IRQ: 0x51, a: 0x00, b: 0x01, status0: 0x92
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x92
> fusb302 usb-typec at 22: IRQ: PD sent good CRC
> fusb302 usb-typec at 22: Received PD message (header=0x11af len=4)
> fusb302 usb-typec at 22: TCPM: PD RX, header: 0x11af [1]
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x93
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x93
> fusb302 usb-typec at 22: cc1: rp-1.5 -> rp-3.0
> fusb302 usb-typec at 22: get cc1 = rp-3.0, cc2 = open
> fusb302 usb-typec at 22: TCPM: CC1: 4 -> 5, CC2: 0 -> 0 [state SNK_READY,
> polarity 0, connected]
> fusb302 usb-typec at 22: TCPM: PD transmit data failed: -110
> fusb302 usb-typec at 22: TCPM: state change SNK_READY ->
> SNK_WAIT_CAPABILITIES
> fusb302 usb-typec at 22: set pd RX on
> fusb302 usb-typec at 22: TCPM: pending state change SNK_WAIT_CAPABILITIES
> -> HARD_RESET_SEND @ 310 ms [rev3]
> fusb302 usb-typec at 22: TCPM: state change SNK_WAIT_CAPABILITIES ->
> HARD_RESET_SEND [delayed 310 ms]
> fusb302 usb-typec at 22: TCPM: PD TX, type: 0x5
> fusb302 usb-typec at 22: IRQ: 0x41, a: 0x08, b: 0x00, status0: 0x93
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 22: BC_LVL handler, status0 = 0x93
> fusb302 usb-typec at 22: IRQ: PD hardreset sent
> fusb302 usb-typec at 22: TCPM: PD TX complete, status: 0
> fusb302 usb-typec at 22: IRQ: 0x01, a: 0x00, b: 0x00, status0: 0x83
> fusb302 usb-typec at 22: IRQ: BC_LVL, handler pending
> fusb302 usb-typec at 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



More information about the U-Boot mailing list