usb: pd: Reland VDO definitions of PD2.0

Reland VDO definitions of PD Revision 2.0 as they are still used in
PD2.0 products.

Fixes: 0e1d6f55a1 ("usb: pd: Update VDO definitions")
Signed-off-by: Kyle Tso <kyletso@google.com>
Link: https://lore.kernel.org/r/20210204005036.1555294-1-kyletso@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Kyle Tso 2021-02-04 08:50:36 +08:00 коммит произвёл Greg Kroah-Hartman
Родитель d021e0694d
Коммит 2a1673f0f1
1 изменённых файлов: 66 добавлений и 3 удалений

Просмотреть файл

@ -110,6 +110,10 @@
* <20:16> :: Reserved, Shall be set to zero * <20:16> :: Reserved, Shall be set to zero
* <15:0> :: USB-IF assigned VID for this cable vendor * <15:0> :: USB-IF assigned VID for this cable vendor
*/ */
/* PD Rev2.0 definition */
#define IDH_PTYPE_UNDEF 0
/* SOP Product Type (UFP) */ /* SOP Product Type (UFP) */
#define IDH_PTYPE_NOT_UFP 0 #define IDH_PTYPE_NOT_UFP 0
#define IDH_PTYPE_HUB 1 #define IDH_PTYPE_HUB 1
@ -248,7 +252,25 @@
| ((pnum) & 0x1f)) | ((pnum) & 0x1f))
/* /*
* Passive Cable VDO * Cable VDO (for both Passive and Active Cable VDO in PD Rev2.0)
* ---------
* <31:28> :: Cable HW version
* <27:24> :: Cable FW version
* <23:20> :: Reserved, Shall be set to zero
* <19:18> :: type-C to Type-A/B/C/Captive (00b == A, 01 == B, 10 == C, 11 == Captive)
* <17> :: Reserved, Shall be set to zero
* <16:13> :: cable latency (0001 == <10ns(~1m length))
* <12:11> :: cable termination type (11b == both ends active VCONN req)
* <10> :: SSTX1 Directionality support (0b == fixed, 1b == cfgable)
* <9> :: SSTX2 Directionality support
* <8> :: SSRX1 Directionality support
* <7> :: SSRX2 Directionality support
* <6:5> :: Vbus current handling capability (01b == 3A, 10b == 5A)
* <4> :: Vbus through cable (0b == no, 1b == yes)
* <3> :: SOP" controller present? (0b == no, 1b == yes)
* <2:0> :: USB SS Signaling support
*
* Passive Cable VDO (PD Rev3.0+)
* --------- * ---------
* <31:28> :: Cable HW version * <31:28> :: Cable HW version
* <27:24> :: Cable FW version * <27:24> :: Cable FW version
@ -264,7 +286,7 @@
* <4:3> :: Reserved, Shall be set to zero * <4:3> :: Reserved, Shall be set to zero
* <2:0> :: USB highest speed * <2:0> :: USB highest speed
* *
* Active Cable VDO 1 * Active Cable VDO 1 (PD Rev3.0+)
* --------- * ---------
* <31:28> :: Cable HW version * <31:28> :: Cable HW version
* <27:24> :: Cable FW version * <27:24> :: Cable FW version
@ -286,7 +308,9 @@
#define CABLE_VDO_VER1_0 0 #define CABLE_VDO_VER1_0 0
#define CABLE_VDO_VER1_3 3 #define CABLE_VDO_VER1_3 3
/* Connector Type */ /* Connector Type (_ATYPE and _BTYPE are for PD Rev2.0 only) */
#define CABLE_ATYPE 0
#define CABLE_BTYPE 1
#define CABLE_CTYPE 2 #define CABLE_CTYPE 2
#define CABLE_CAPTIVE 3 #define CABLE_CAPTIVE 3
@ -323,12 +347,22 @@
#define CABLE_CURR_3A 1 #define CABLE_CURR_3A 1
#define CABLE_CURR_5A 2 #define CABLE_CURR_5A 2
/* USB SuperSpeed Signaling Support (PD Rev2.0) */
#define CABLE_USBSS_U2_ONLY 0
#define CABLE_USBSS_U31_GEN1 1
#define CABLE_USBSS_U31_GEN2 2
/* USB Highest Speed */ /* USB Highest Speed */
#define CABLE_USB2_ONLY 0 #define CABLE_USB2_ONLY 0
#define CABLE_USB32_GEN1 1 #define CABLE_USB32_GEN1 1
#define CABLE_USB32_4_GEN2 2 #define CABLE_USB32_4_GEN2 2
#define CABLE_USB4_GEN3 3 #define CABLE_USB4_GEN3 3
#define VDO_CABLE(hw, fw, cbl, lat, term, tx1d, tx2d, rx1d, rx2d, cur, vps, sopp, usbss) \
(((hw) & 0x7) << 28 | ((fw) & 0x7) << 24 | ((cbl) & 0x3) << 18 \
| ((lat) & 0x7) << 13 | ((term) & 0x3) << 11 | (tx1d) << 10 \
| (tx2d) << 9 | (rx1d) << 8 | (rx2d) << 7 | ((cur) & 0x3) << 5 \
| (vps) << 4 | (sopp) << 3 | ((usbss) & 0x7))
#define VDO_PCABLE(hw, fw, ver, conn, lat, term, vbm, cur, spd) \ #define VDO_PCABLE(hw, fw, ver, conn, lat, term, vbm, cur, spd) \
(((hw) & 0xf) << 28 | ((fw) & 0xf) << 24 | ((ver) & 0x7) << 21 \ (((hw) & 0xf) << 28 | ((fw) & 0xf) << 24 | ((ver) & 0x7) << 21 \
| ((conn) & 0x3) << 18 | ((lat) & 0xf) << 13 | ((term) & 0x3) << 11 \ | ((conn) & 0x3) << 18 | ((lat) & 0xf) << 13 | ((term) & 0x3) << 11 \
@ -395,6 +429,35 @@
| ((hops) & 0x3) << 6 | (u2) << 5 | (u32) << 4 | (lane) << 3 \ | ((hops) & 0x3) << 6 | (u2) << 5 | (u32) << 4 | (lane) << 3 \
| (iso) << 2 | (gen)) | (iso) << 2 | (gen))
/*
* AMA VDO (PD Rev2.0)
* ---------
* <31:28> :: Cable HW version
* <27:24> :: Cable FW version
* <23:12> :: Reserved, Shall be set to zero
* <11> :: SSTX1 Directionality support (0b == fixed, 1b == cfgable)
* <10> :: SSTX2 Directionality support
* <9> :: SSRX1 Directionality support
* <8> :: SSRX2 Directionality support
* <7:5> :: Vconn power
* <4> :: Vconn power required
* <3> :: Vbus power required
* <2:0> :: USB SS Signaling support
*/
#define VDO_AMA(hw, fw, tx1d, tx2d, rx1d, rx2d, vcpwr, vcr, vbr, usbss) \
(((hw) & 0x7) << 28 | ((fw) & 0x7) << 24 \
| (tx1d) << 11 | (tx2d) << 10 | (rx1d) << 9 | (rx2d) << 8 \
| ((vcpwr) & 0x7) << 5 | (vcr) << 4 | (vbr) << 3 \
| ((usbss) & 0x7))
#define PD_VDO_AMA_VCONN_REQ(vdo) (((vdo) >> 4) & 1)
#define PD_VDO_AMA_VBUS_REQ(vdo) (((vdo) >> 3) & 1)
#define AMA_USBSS_U2_ONLY 0
#define AMA_USBSS_U31_GEN1 1
#define AMA_USBSS_U31_GEN2 2
#define AMA_USBSS_BBONLY 3
/* /*
* VPD VDO * VPD VDO
* --------- * ---------