[PATCH 01/11] usb: tcpm: fix inverted poll condition in tcpm_pd_transmit()

Marek Vasut marek.vasut at mailbox.org
Wed Jun 17 13:15:14 CEST 2026


On 6/17/26 9:41 AM, Neil Armstrong wrote:
> On 6/17/26 10:23, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan at nxp.com>
>>
>> The read_poll_timeout() macro breaks out of its loop when the condition
>> evaluates to true. The current code uses "!tx_complete" as the
>> condition, which means it exits immediately when tx_complete is false
>> (i.e., transmission has NOT completed yet), rather than waiting for
>> completion.
>>
>> Fix the condition to "tx_complete" so that the poll loop waits until
>> the TCPC signals transmission success/failure/discard before
>> proceeding.
>>
>> Without this fix, tcpm_pd_transmit() returns before the TCPC has
>> finished transmitting, causing the PD state machine to proceed with
>> stale tx_status values.
>>
>> Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework")
>> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>> ---
>>   drivers/usb/tcpm/tcpm.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
>> index 3061b466d7c..d6c0be82333 100644
>> --- a/drivers/usb/tcpm/tcpm.c
>> +++ b/drivers/usb/tcpm/tcpm.c
>> @@ -207,7 +207,7 @@ static int tcpm_pd_transmit(struct udevice *dev,
>>        */
>>       timeout_us *= 5;
>>       ret = read_poll_timeout(tcpm_transmit_helper, tx_complete,
>> -                !tx_complete, false, timeout_us, dev);
>> +                tx_complete, false, timeout_us, dev);
>>       if (ret < 0) {
>>           dev_err(dev, "TCPM: PD transmit data failed: %d\n", ret);
>>           return ret;
>>
> 
> I just figured out the similar patch sent last year was never applied:
> https://lore.kernel.org/all/20250526-topic-tcpm-tx-poll-cond- 
> v1-1-38a81560ffff at linaro.org/
> 
> Whichever patch is applied it fine for me:
> Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
Is this a fix for current release ? Can you send it separately ?


More information about the U-Boot mailing list