The correct SVDM version we should use is the lowest common version between the port partners (plug) as stated in the PD3 Spec 6.4.4.2.3. It is determined in the Discovery Identity command so cache it and set the value to the version field of the VDM header in every later SVDM. Like the previous patch "usb: typec: tcpm: Create legacy PDOs for PD2 connection" (https://lore.kernel.org/linux-usb/20210115163311.391332-1-kyletso@xxxxxxxxxx/) The field is changed before sending it out of the port. I know this is not a good idea but at least it works. The other two patches are about to get the VDO from fwnode so as to give more flexibility. Kyle Tso (3): usb: typec: Determine common SVDM Versions dt-bindings: connector: Add SVDM VDO properties usb: typec: tcpm: Get Sink VDO from fwnode drivers/usb/typec/altmodes/displayport.c | 6 ++- drivers/usb/typec/class.c | 8 ++-- drivers/usb/typec/tcpm/tcpm.c | 56 ++++++++++++++++++++---- drivers/usb/typec/ucsi/displayport.c | 12 +++-- include/dt-bindings/usb/pd.h | 53 +++++++++++++++++++++- include/linux/usb/pd_vdo.h | 40 ++++++++++++----- 6 files changed, 147 insertions(+), 28 deletions(-) -- 2.30.0.280.ga3ce27912f-goog