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

Sebastian Reichel sebastian.reichel at collabora.com
Tue Sep 3 20:21:32 CEST 2024


Hi,

On Tue, Sep 03, 2024 at 03:42:51PM GMT, Sören Moch wrote:
> 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.

I found two regressions in the code introduced in PATCHv3. After
fixing them I got the Ravpower Powerbank working again. I will send
PATCHv5 directly after this mail. By quickly going through your log,
I think you also run into the polarity issue.

-- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240903/e00a9ea0/attachment.sig>


More information about the U-Boot mailing list