]> asedeno.scripts.mit.edu Git - linux.git/commit
usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps
authorHans de Goede <hdegoede@redhat.com>
Sat, 16 Mar 2019 15:57:12 +0000 (16:57 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Mar 2019 13:57:31 +0000 (14:57 +0100)
commit976daf9d1199932df80e7b04546d1a1bd4ed5ece
tree7397ada35aa98305a922f4fdf0b0403e1f7a29a0
parent40fc165304f0faaae78b761f8ee30b5d216b1850
usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps

PD 2.0 sinks are supposed to accept src-capabilities with a 3.0 header and
simply ignore any src PDOs which the sink does not understand such as PPS
but some 2.0 sinks instead ignore the entire PD_DATA_SOURCE_CAP message,
causing contract negotiation to fail.

This commit fixes such sinks not working by re-trying the contract
negotiation with PD-2.0 source-caps messages if we don't have a contract
after PD_N_HARD_RESET_COUNT hard-reset attempts.

The problem fixed by this commit was noticed with a Type-C to VGA dongle.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpm.c