~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/usb/pd_vdo.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/usb/pd_vdo.h (Architecture m68k) and /include/linux/usb/pd_vdo.h (Architecture alpha)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *      1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /*                                                  2 /*
  3  * Copyright 2015-2017 Google, Inc                  3  * Copyright 2015-2017 Google, Inc
  4  */                                                 4  */
  5                                                     5 
  6 #ifndef __LINUX_USB_PD_VDO_H                        6 #ifndef __LINUX_USB_PD_VDO_H
  7 #define __LINUX_USB_PD_VDO_H                        7 #define __LINUX_USB_PD_VDO_H
  8                                                     8 
  9 #include "pd.h"                                     9 #include "pd.h"
 10 #include <linux/bitfield.h>                        10 #include <linux/bitfield.h>
 11                                                    11 
 12 /*                                                 12 /*
 13  * VDO : Vendor Defined Message Object             13  * VDO : Vendor Defined Message Object
 14  * VDM object is minimum of VDM header + 6 add     14  * VDM object is minimum of VDM header + 6 additional data objects.
 15  */                                                15  */
 16                                                    16 
 17 #define VDO_MAX_OBJECTS         6                  17 #define VDO_MAX_OBJECTS         6
 18 #define VDO_MAX_SIZE            (VDO_MAX_OBJEC     18 #define VDO_MAX_SIZE            (VDO_MAX_OBJECTS + 1)
 19                                                    19 
 20 /*                                                 20 /*
 21  * VDM header                                      21  * VDM header
 22  * ----------                                      22  * ----------
 23  * <31:16>  :: SVID                                23  * <31:16>  :: SVID
 24  * <15>     :: VDM type ( 1b == structured, 0b     24  * <15>     :: VDM type ( 1b == structured, 0b == unstructured )
 25  * <14:13>  :: Structured VDM version              25  * <14:13>  :: Structured VDM version
 26  * <12:11>  :: reserved                            26  * <12:11>  :: reserved
 27  * <10:8>   :: object position (1-7 valid ...      27  * <10:8>   :: object position (1-7 valid ... used for enter/exit mode only)
 28  * <7:6>    :: command type (SVDM only?)           28  * <7:6>    :: command type (SVDM only?)
 29  * <5>      :: reserved (SVDM), command type (     29  * <5>      :: reserved (SVDM), command type (UVDM)
 30  * <4:0>    :: command                             30  * <4:0>    :: command
 31  */                                                31  */
 32 #define VDO(vid, type, ver, custom)                32 #define VDO(vid, type, ver, custom)                     \
 33         (((vid) << 16) |                           33         (((vid) << 16) |                                \
 34          ((type) << 15) |                          34          ((type) << 15) |                               \
 35          ((ver) << 13) |                           35          ((ver) << 13) |                                \
 36          ((custom) & 0x7FFF))                      36          ((custom) & 0x7FFF))
 37                                                    37 
 38 #define VDO_SVDM_TYPE           (1 << 15)          38 #define VDO_SVDM_TYPE           (1 << 15)
 39 #define VDO_SVDM_VERS(x)        ((x) << 13)        39 #define VDO_SVDM_VERS(x)        ((x) << 13)
 40 #define VDO_OPOS(x)             ((x) << 8)         40 #define VDO_OPOS(x)             ((x) << 8)
 41 #define VDO_CMDT(x)             ((x) << 6)         41 #define VDO_CMDT(x)             ((x) << 6)
 42 #define VDO_SVDM_VERS_MASK      VDO_SVDM_VERS(     42 #define VDO_SVDM_VERS_MASK      VDO_SVDM_VERS(0x3)
 43 #define VDO_OPOS_MASK           VDO_OPOS(0x7)      43 #define VDO_OPOS_MASK           VDO_OPOS(0x7)
 44 #define VDO_CMDT_MASK           VDO_CMDT(0x3)      44 #define VDO_CMDT_MASK           VDO_CMDT(0x3)
 45                                                    45 
 46 #define CMDT_INIT               0                  46 #define CMDT_INIT               0
 47 #define CMDT_RSP_ACK            1                  47 #define CMDT_RSP_ACK            1
 48 #define CMDT_RSP_NAK            2                  48 #define CMDT_RSP_NAK            2
 49 #define CMDT_RSP_BUSY           3                  49 #define CMDT_RSP_BUSY           3
 50                                                    50 
 51 /* reserved for SVDM ... for Google UVDM */        51 /* reserved for SVDM ... for Google UVDM */
 52 #define VDO_SRC_INITIATOR       (0 << 5)           52 #define VDO_SRC_INITIATOR       (0 << 5)
 53 #define VDO_SRC_RESPONDER       (1 << 5)           53 #define VDO_SRC_RESPONDER       (1 << 5)
 54                                                    54 
 55 #define CMD_DISCOVER_IDENT      1                  55 #define CMD_DISCOVER_IDENT      1
 56 #define CMD_DISCOVER_SVID       2                  56 #define CMD_DISCOVER_SVID       2
 57 #define CMD_DISCOVER_MODES      3                  57 #define CMD_DISCOVER_MODES      3
 58 #define CMD_ENTER_MODE          4                  58 #define CMD_ENTER_MODE          4
 59 #define CMD_EXIT_MODE           5                  59 #define CMD_EXIT_MODE           5
 60 #define CMD_ATTENTION           6                  60 #define CMD_ATTENTION           6
 61                                                    61 
 62 #define VDO_CMD_VENDOR(x)    (((0x10 + (x)) &      62 #define VDO_CMD_VENDOR(x)    (((0x10 + (x)) & 0x1f))
 63                                                    63 
 64 /* ChromeOS specific commands */                   64 /* ChromeOS specific commands */
 65 #define VDO_CMD_VERSION         VDO_CMD_VENDOR     65 #define VDO_CMD_VERSION         VDO_CMD_VENDOR(0)
 66 #define VDO_CMD_SEND_INFO       VDO_CMD_VENDOR     66 #define VDO_CMD_SEND_INFO       VDO_CMD_VENDOR(1)
 67 #define VDO_CMD_READ_INFO       VDO_CMD_VENDOR     67 #define VDO_CMD_READ_INFO       VDO_CMD_VENDOR(2)
 68 #define VDO_CMD_REBOOT          VDO_CMD_VENDOR     68 #define VDO_CMD_REBOOT          VDO_CMD_VENDOR(5)
 69 #define VDO_CMD_FLASH_ERASE     VDO_CMD_VENDOR     69 #define VDO_CMD_FLASH_ERASE     VDO_CMD_VENDOR(6)
 70 #define VDO_CMD_FLASH_WRITE     VDO_CMD_VENDOR     70 #define VDO_CMD_FLASH_WRITE     VDO_CMD_VENDOR(7)
 71 #define VDO_CMD_ERASE_SIG       VDO_CMD_VENDOR     71 #define VDO_CMD_ERASE_SIG       VDO_CMD_VENDOR(8)
 72 #define VDO_CMD_PING_ENABLE     VDO_CMD_VENDOR     72 #define VDO_CMD_PING_ENABLE     VDO_CMD_VENDOR(10)
 73 #define VDO_CMD_CURRENT         VDO_CMD_VENDOR     73 #define VDO_CMD_CURRENT         VDO_CMD_VENDOR(11)
 74 #define VDO_CMD_FLIP            VDO_CMD_VENDOR     74 #define VDO_CMD_FLIP            VDO_CMD_VENDOR(12)
 75 #define VDO_CMD_GET_LOG         VDO_CMD_VENDOR     75 #define VDO_CMD_GET_LOG         VDO_CMD_VENDOR(13)
 76 #define VDO_CMD_CCD_EN          VDO_CMD_VENDOR     76 #define VDO_CMD_CCD_EN          VDO_CMD_VENDOR(14)
 77                                                    77 
 78 #define PD_VDO_VID(vdo)         ((vdo) >> 16)      78 #define PD_VDO_VID(vdo)         ((vdo) >> 16)
 79 #define PD_VDO_SVDM(vdo)        (((vdo) >> 15)     79 #define PD_VDO_SVDM(vdo)        (((vdo) >> 15) & 1)
 80 #define PD_VDO_SVDM_VER(vdo)    (((vdo) >> 13)     80 #define PD_VDO_SVDM_VER(vdo)    (((vdo) >> 13) & 0x3)
 81 #define PD_VDO_OPOS(vdo)        (((vdo) >> 8)      81 #define PD_VDO_OPOS(vdo)        (((vdo) >> 8) & 0x7)
 82 #define PD_VDO_CMD(vdo)         ((vdo) & 0x1f)     82 #define PD_VDO_CMD(vdo)         ((vdo) & 0x1f)
 83 #define PD_VDO_CMDT(vdo)        (((vdo) >> 6)      83 #define PD_VDO_CMDT(vdo)        (((vdo) >> 6) & 0x3)
 84                                                    84 
 85 /*                                                 85 /*
 86  * SVDM Identity request -> response               86  * SVDM Identity request -> response
 87  *                                                 87  *
 88  * Request is simply properly formatted SVDM h     88  * Request is simply properly formatted SVDM header
 89  *                                                 89  *
 90  * Response is 4 data objects for Power Delive     90  * Response is 4 data objects for Power Delivery 2.0 and Passive Cables for
 91  * Power Delivery 3.0. Active Cables in Power      91  * Power Delivery 3.0. Active Cables in Power Delivery 3.0 have 5 data objects.
 92  * [0] :: SVDM header                              92  * [0] :: SVDM header
 93  * [1] :: Identitiy header                         93  * [1] :: Identitiy header
 94  * [2] :: Cert Stat VDO                            94  * [2] :: Cert Stat VDO
 95  * [3] :: (Product | Cable) VDO                    95  * [3] :: (Product | Cable) VDO
 96  * [4] :: Cable VDO 1                              96  * [4] :: Cable VDO 1
 97  * [4] :: AMA VDO                                  97  * [4] :: AMA VDO
 98  * [5] :: Cable VDO 2                              98  * [5] :: Cable VDO 2
 99  *                                                 99  *
100  */                                               100  */
101 #define VDO_INDEX_HDR           0                 101 #define VDO_INDEX_HDR           0
102 #define VDO_INDEX_IDH           1                 102 #define VDO_INDEX_IDH           1
103 #define VDO_INDEX_CSTAT         2                 103 #define VDO_INDEX_CSTAT         2
104 #define VDO_INDEX_CABLE         3                 104 #define VDO_INDEX_CABLE         3
105 #define VDO_INDEX_PRODUCT       3                 105 #define VDO_INDEX_PRODUCT       3
106 #define VDO_INDEX_AMA           4                 106 #define VDO_INDEX_AMA           4
107 #define VDO_INDEX_CABLE_1       4                 107 #define VDO_INDEX_CABLE_1       4
108 #define VDO_INDEX_CABLE_2       5                 108 #define VDO_INDEX_CABLE_2       5
109                                                   109 
110 /*                                                110 /*
111  * SVDM Identity Header                           111  * SVDM Identity Header
112  * --------------------                           112  * --------------------
113  * <31>     :: data capable as a USB host         113  * <31>     :: data capable as a USB host
114  * <30>     :: data capable as a USB device       114  * <30>     :: data capable as a USB device
115  * <29:27>  :: product type (UFP / Cable / VPD    115  * <29:27>  :: product type (UFP / Cable / VPD)
116  * <26>     :: modal operation supported (1b =    116  * <26>     :: modal operation supported (1b == yes)
117  * <25:23>  :: product type (DFP) (SVDM versio    117  * <25:23>  :: product type (DFP) (SVDM version 2.0+ only; set to zero in version 1.0)
118  * <22:21>  :: connector type (SVDM version 2.    118  * <22:21>  :: connector type (SVDM version 2.0+ only; set to zero in version 1.0)
119  * <20:16>  :: Reserved, Shall be set to zero     119  * <20:16>  :: Reserved, Shall be set to zero
120  * <15:0>   :: USB-IF assigned VID for this ca    120  * <15:0>   :: USB-IF assigned VID for this cable vendor
121  */                                               121  */
122                                                   122 
123 /* PD Rev2.0 definition */                        123 /* PD Rev2.0 definition */
124 #define IDH_PTYPE_UNDEF         0                 124 #define IDH_PTYPE_UNDEF         0
125                                                   125 
126 /* SOP Product Type (UFP) */                      126 /* SOP Product Type (UFP) */
127 #define IDH_PTYPE_NOT_UFP       0                 127 #define IDH_PTYPE_NOT_UFP       0
128 #define IDH_PTYPE_HUB           1                 128 #define IDH_PTYPE_HUB           1
129 #define IDH_PTYPE_PERIPH        2                 129 #define IDH_PTYPE_PERIPH        2
130 #define IDH_PTYPE_PSD           3                 130 #define IDH_PTYPE_PSD           3
131 #define IDH_PTYPE_AMA           5                 131 #define IDH_PTYPE_AMA           5
132                                                   132 
133 /* SOP' Product Type (Cable Plug / VPD) */        133 /* SOP' Product Type (Cable Plug / VPD) */
134 #define IDH_PTYPE_NOT_CABLE     0                 134 #define IDH_PTYPE_NOT_CABLE     0
135 #define IDH_PTYPE_PCABLE        3                 135 #define IDH_PTYPE_PCABLE        3
136 #define IDH_PTYPE_ACABLE        4                 136 #define IDH_PTYPE_ACABLE        4
137 #define IDH_PTYPE_VPD           6                 137 #define IDH_PTYPE_VPD           6
138                                                   138 
139 /* SOP Product Type (DFP) */                      139 /* SOP Product Type (DFP) */
140 #define IDH_PTYPE_NOT_DFP       0                 140 #define IDH_PTYPE_NOT_DFP       0
141 #define IDH_PTYPE_DFP_HUB       1                 141 #define IDH_PTYPE_DFP_HUB       1
142 #define IDH_PTYPE_DFP_HOST      2                 142 #define IDH_PTYPE_DFP_HOST      2
143 #define IDH_PTYPE_DFP_PB        3                 143 #define IDH_PTYPE_DFP_PB        3
144                                                   144 
145 /* ID Header Mask */                              145 /* ID Header Mask */
146 #define IDH_DFP_MASK            GENMASK(25, 23    146 #define IDH_DFP_MASK            GENMASK(25, 23)
147 #define IDH_CONN_MASK           GENMASK(22, 21    147 #define IDH_CONN_MASK           GENMASK(22, 21)
148                                                   148 
149 #define VDO_IDH(usbh, usbd, ufp_cable, is_moda    149 #define VDO_IDH(usbh, usbd, ufp_cable, is_modal, dfp, conn, vid)                \
150         ((usbh) << 31 | (usbd) << 30 | ((ufp_c    150         ((usbh) << 31 | (usbd) << 30 | ((ufp_cable) & 0x7) << 27                \
151          | (is_modal) << 26 | ((dfp) & 0x7) <<    151          | (is_modal) << 26 | ((dfp) & 0x7) << 23 | ((conn) & 0x3) << 21        \
152          | ((vid) & 0xffff))                      152          | ((vid) & 0xffff))
153                                                   153 
154 #define PD_IDH_PTYPE(vdo)       (((vdo) >> 27)    154 #define PD_IDH_PTYPE(vdo)       (((vdo) >> 27) & 0x7)
155 #define PD_IDH_VID(vdo)         ((vdo) & 0xfff    155 #define PD_IDH_VID(vdo)         ((vdo) & 0xffff)
156 #define PD_IDH_MODAL_SUPP(vdo)  ((vdo) & (1 <<    156 #define PD_IDH_MODAL_SUPP(vdo)  ((vdo) & (1 << 26))
157 #define PD_IDH_DFP_PTYPE(vdo)   (((vdo) >> 23)    157 #define PD_IDH_DFP_PTYPE(vdo)   (((vdo) >> 23) & 0x7)
158 #define PD_IDH_CONN_TYPE(vdo)   (((vdo) >> 21)    158 #define PD_IDH_CONN_TYPE(vdo)   (((vdo) >> 21) & 0x3)
159 #define PD_IDH_HOST_SUPP(vdo)  ((vdo) & (1 <<     159 #define PD_IDH_HOST_SUPP(vdo)  ((vdo) & (1 << 31))
160                                                   160 
161 /*                                                161 /*
162  * Cert Stat VDO                                  162  * Cert Stat VDO
163  * -------------                                  163  * -------------
164  * <31:0>  : USB-IF assigned XID for this cabl    164  * <31:0>  : USB-IF assigned XID for this cable
165  */                                               165  */
166 #define PD_CSTAT_XID(vdo)       (vdo)             166 #define PD_CSTAT_XID(vdo)       (vdo)
167 #define VDO_CERT(xid)           ((xid) & 0xfff    167 #define VDO_CERT(xid)           ((xid) & 0xffffffff)
168                                                   168 
169 /*                                                169 /*
170  * Product VDO                                    170  * Product VDO
171  * -----------                                    171  * -----------
172  * <31:16> : USB Product ID                       172  * <31:16> : USB Product ID
173  * <15:0>  : USB bcdDevice                        173  * <15:0>  : USB bcdDevice
174  */                                               174  */
175 #define VDO_PRODUCT(pid, bcd)   (((pid) & 0xff    175 #define VDO_PRODUCT(pid, bcd)   (((pid) & 0xffff) << 16 | ((bcd) & 0xffff))
176 #define PD_PRODUCT_PID(vdo)     (((vdo) >> 16)    176 #define PD_PRODUCT_PID(vdo)     (((vdo) >> 16) & 0xffff)
177                                                   177 
178 /*                                                178 /*
179  * UFP VDO (PD Revision 3.0+ only)                179  * UFP VDO (PD Revision 3.0+ only)
180  * --------                                       180  * --------
181  * <31:29> :: UFP VDO version                     181  * <31:29> :: UFP VDO version
182  * <28>    :: Reserved                            182  * <28>    :: Reserved
183  * <27:24> :: Device capability                   183  * <27:24> :: Device capability
184  * <23:22> :: Connector type (10b == receptacl    184  * <23:22> :: Connector type (10b == receptacle, 11b == captive plug)
185  * <21:11> :: Reserved                            185  * <21:11> :: Reserved
186  * <10:8>  :: Vconn power (AMA only)              186  * <10:8>  :: Vconn power (AMA only)
187  * <7>     :: Vconn required (AMA only, 0b ==     187  * <7>     :: Vconn required (AMA only, 0b == no, 1b == yes)
188  * <6>     :: Vbus required (AMA only, 0b == y    188  * <6>     :: Vbus required (AMA only, 0b == yes, 1b == no)
189  * <5:3>   :: Alternate modes                     189  * <5:3>   :: Alternate modes
190  * <2:0>   :: USB highest speed                   190  * <2:0>   :: USB highest speed
191  */                                               191  */
192 #define PD_VDO_UFP_DEVCAP(vdo)  FIELD_GET(GENM    192 #define PD_VDO_UFP_DEVCAP(vdo)  FIELD_GET(GENMASK(27, 24), vdo)
193                                                   193 
194 /* UFP VDO Version */                             194 /* UFP VDO Version */
195 #define UFP_VDO_VER1_2          2                 195 #define UFP_VDO_VER1_2          2
196                                                   196 
197 /* Device Capability */                           197 /* Device Capability */
198 #define DEV_USB2_CAPABLE        BIT(0)            198 #define DEV_USB2_CAPABLE        BIT(0)
199 #define DEV_USB2_BILLBOARD      BIT(1)            199 #define DEV_USB2_BILLBOARD      BIT(1)
200 #define DEV_USB3_CAPABLE        BIT(2)            200 #define DEV_USB3_CAPABLE        BIT(2)
201 #define DEV_USB4_CAPABLE        BIT(3)            201 #define DEV_USB4_CAPABLE        BIT(3)
202                                                   202 
203 /* Connector Type */                              203 /* Connector Type */
204 #define UFP_RECEPTACLE          2                 204 #define UFP_RECEPTACLE          2
205 #define UFP_CAPTIVE             3                 205 #define UFP_CAPTIVE             3
206                                                   206 
207 /* Vconn Power (AMA only, set to AMA_VCONN_NOT    207 /* Vconn Power (AMA only, set to AMA_VCONN_NOT_REQ if Vconn is not required) */
208 #define AMA_VCONN_PWR_1W        0                 208 #define AMA_VCONN_PWR_1W        0
209 #define AMA_VCONN_PWR_1W5       1                 209 #define AMA_VCONN_PWR_1W5       1
210 #define AMA_VCONN_PWR_2W        2                 210 #define AMA_VCONN_PWR_2W        2
211 #define AMA_VCONN_PWR_3W        3                 211 #define AMA_VCONN_PWR_3W        3
212 #define AMA_VCONN_PWR_4W        4                 212 #define AMA_VCONN_PWR_4W        4
213 #define AMA_VCONN_PWR_5W        5                 213 #define AMA_VCONN_PWR_5W        5
214 #define AMA_VCONN_PWR_6W        6                 214 #define AMA_VCONN_PWR_6W        6
215                                                   215 
216 /* Vconn Required (AMA only) */                   216 /* Vconn Required (AMA only) */
217 #define AMA_VCONN_NOT_REQ       0                 217 #define AMA_VCONN_NOT_REQ       0
218 #define AMA_VCONN_REQ           1                 218 #define AMA_VCONN_REQ           1
219                                                   219 
220 /* Vbus Required (AMA only) */                    220 /* Vbus Required (AMA only) */
221 #define AMA_VBUS_REQ            0                 221 #define AMA_VBUS_REQ            0
222 #define AMA_VBUS_NOT_REQ        1                 222 #define AMA_VBUS_NOT_REQ        1
223                                                   223 
224 /* Alternate Modes */                             224 /* Alternate Modes */
225 #define UFP_ALTMODE_NOT_SUPP    0                 225 #define UFP_ALTMODE_NOT_SUPP    0
226 #define UFP_ALTMODE_TBT3        BIT(0)            226 #define UFP_ALTMODE_TBT3        BIT(0)
227 #define UFP_ALTMODE_RECFG       BIT(1)            227 #define UFP_ALTMODE_RECFG       BIT(1)
228 #define UFP_ALTMODE_NO_RECFG    BIT(2)            228 #define UFP_ALTMODE_NO_RECFG    BIT(2)
229                                                   229 
230 /* USB Highest Speed */                           230 /* USB Highest Speed */
231 #define UFP_USB2_ONLY           0                 231 #define UFP_USB2_ONLY           0
232 #define UFP_USB32_GEN1          1                 232 #define UFP_USB32_GEN1          1
233 #define UFP_USB32_4_GEN2        2                 233 #define UFP_USB32_4_GEN2        2
234 #define UFP_USB4_GEN3           3                 234 #define UFP_USB4_GEN3           3
235                                                   235 
236 #define VDO_UFP(ver, cap, conn, vcpwr, vcr, vb    236 #define VDO_UFP(ver, cap, conn, vcpwr, vcr, vbr, alt, spd)                      \
237         (((ver) & 0x7) << 29 | ((cap) & 0xf) <    237         (((ver) & 0x7) << 29 | ((cap) & 0xf) << 24 | ((conn) & 0x3) << 22       \
238          | ((vcpwr) & 0x7) << 8 | (vcr) << 7 |    238          | ((vcpwr) & 0x7) << 8 | (vcr) << 7 | (vbr) << 6 | ((alt) & 0x7) << 3  \
239          | ((spd) & 0x7))                         239          | ((spd) & 0x7))
240                                                   240 
241 /*                                                241 /*
242  * DFP VDO (PD Revision 3.0+ only)                242  * DFP VDO (PD Revision 3.0+ only)
243  * --------                                       243  * --------
244  * <31:29> :: DFP VDO version                     244  * <31:29> :: DFP VDO version
245  * <28:27> :: Reserved                            245  * <28:27> :: Reserved
246  * <26:24> :: Host capability                     246  * <26:24> :: Host capability
247  * <23:22> :: Connector type (10b == receptacl    247  * <23:22> :: Connector type (10b == receptacle, 11b == captive plug)
248  * <21:5>  :: Reserved                            248  * <21:5>  :: Reserved
249  * <4:0>   :: Port number                         249  * <4:0>   :: Port number
250  */                                               250  */
251 #define PD_VDO_DFP_HOSTCAP(vdo) FIELD_GET(GENM    251 #define PD_VDO_DFP_HOSTCAP(vdo) FIELD_GET(GENMASK(26, 24), vdo)
252                                                   252 
253 #define DFP_VDO_VER1_1          1                 253 #define DFP_VDO_VER1_1          1
254 #define HOST_USB2_CAPABLE       BIT(0)            254 #define HOST_USB2_CAPABLE       BIT(0)
255 #define HOST_USB3_CAPABLE       BIT(1)            255 #define HOST_USB3_CAPABLE       BIT(1)
256 #define HOST_USB4_CAPABLE       BIT(2)            256 #define HOST_USB4_CAPABLE       BIT(2)
257 #define DFP_RECEPTACLE          2                 257 #define DFP_RECEPTACLE          2
258 #define DFP_CAPTIVE             3                 258 #define DFP_CAPTIVE             3
259                                                   259 
260 #define VDO_DFP(ver, cap, conn, pnum)             260 #define VDO_DFP(ver, cap, conn, pnum)                                           \
261         (((ver) & 0x7) << 29 | ((cap) & 0x7) <    261         (((ver) & 0x7) << 29 | ((cap) & 0x7) << 24 | ((conn) & 0x3) << 22       \
262          | ((pnum) & 0x1f))                       262          | ((pnum) & 0x1f))
263                                                   263 
264 /*                                                264 /*
265  * Cable VDO (for both Passive and Active Cabl    265  * Cable VDO (for both Passive and Active Cable VDO in PD Rev2.0)
266  * ---------                                      266  * ---------
267  * <31:28> :: Cable HW version                    267  * <31:28> :: Cable HW version
268  * <27:24> :: Cable FW version                    268  * <27:24> :: Cable FW version
269  * <23:20> :: Reserved, Shall be set to zero      269  * <23:20> :: Reserved, Shall be set to zero
270  * <19:18> :: type-C to Type-A/B/C/Captive (00    270  * <19:18> :: type-C to Type-A/B/C/Captive (00b == A, 01 == B, 10 == C, 11 == Captive)
271  * <17>    :: Reserved, Shall be set to zero      271  * <17>    :: Reserved, Shall be set to zero
272  * <16:13> :: cable latency (0001 == <10ns(~1m    272  * <16:13> :: cable latency (0001 == <10ns(~1m length))
273  * <12:11> :: cable termination type (11b == b    273  * <12:11> :: cable termination type (11b == both ends active VCONN req)
274  * <10>    :: SSTX1 Directionality support (0b    274  * <10>    :: SSTX1 Directionality support (0b == fixed, 1b == cfgable)
275  * <9>     :: SSTX2 Directionality support        275  * <9>     :: SSTX2 Directionality support
276  * <8>     :: SSRX1 Directionality support        276  * <8>     :: SSRX1 Directionality support
277  * <7>     :: SSRX2 Directionality support        277  * <7>     :: SSRX2 Directionality support
278  * <6:5>   :: Vbus current handling capability    278  * <6:5>   :: Vbus current handling capability (01b == 3A, 10b == 5A)
279  * <4>     :: Vbus through cable (0b == no, 1b    279  * <4>     :: Vbus through cable (0b == no, 1b == yes)
280  * <3>     :: SOP" controller present? (0b ==     280  * <3>     :: SOP" controller present? (0b == no, 1b == yes)
281  * <2:0>   :: USB SS Signaling support            281  * <2:0>   :: USB SS Signaling support
282  *                                                282  *
283  * Passive Cable VDO (PD Rev3.0+)                 283  * Passive Cable VDO (PD Rev3.0+)
284  * ---------                                      284  * ---------
285  * <31:28> :: Cable HW version                    285  * <31:28> :: Cable HW version
286  * <27:24> :: Cable FW version                    286  * <27:24> :: Cable FW version
287  * <23:21> :: VDO version                         287  * <23:21> :: VDO version
288  * <20>    :: Reserved, Shall be set to zero      288  * <20>    :: Reserved, Shall be set to zero
289  * <19:18> :: Type-C to Type-C/Captive (10b ==    289  * <19:18> :: Type-C to Type-C/Captive (10b == C, 11b == Captive)
290  * <17>    :: Reserved, Shall be set to zero      290  * <17>    :: Reserved, Shall be set to zero
291  * <16:13> :: cable latency (0001 == <10ns(~1m    291  * <16:13> :: cable latency (0001 == <10ns(~1m length))
292  * <12:11> :: cable termination type (10b == V    292  * <12:11> :: cable termination type (10b == Vconn not req, 01b == Vconn req)
293  * <10:9>  :: Maximum Vbus voltage (00b == 20V    293  * <10:9>  :: Maximum Vbus voltage (00b == 20V, 01b == 30V, 10b == 40V, 11b == 50V)
294  * <8:7>   :: Reserved, Shall be set to zero      294  * <8:7>   :: Reserved, Shall be set to zero
295  * <6:5>   :: Vbus current handling capability    295  * <6:5>   :: Vbus current handling capability (01b == 3A, 10b == 5A)
296  * <4:3>   :: Reserved, Shall be set to zero      296  * <4:3>   :: Reserved, Shall be set to zero
297  * <2:0>   :: USB highest speed                   297  * <2:0>   :: USB highest speed
298  *                                                298  *
299  * Active Cable VDO 1 (PD Rev3.0+)                299  * Active Cable VDO 1 (PD Rev3.0+)
300  * ---------                                      300  * ---------
301  * <31:28> :: Cable HW version                    301  * <31:28> :: Cable HW version
302  * <27:24> :: Cable FW version                    302  * <27:24> :: Cable FW version
303  * <23:21> :: VDO version                         303  * <23:21> :: VDO version
304  * <20>    :: Reserved, Shall be set to zero      304  * <20>    :: Reserved, Shall be set to zero
305  * <19:18> :: Connector type (10b == C, 11b ==    305  * <19:18> :: Connector type (10b == C, 11b == Captive)
306  * <17>    :: Reserved, Shall be set to zero      306  * <17>    :: Reserved, Shall be set to zero
307  * <16:13> :: cable latency (0001 == <10ns(~1m    307  * <16:13> :: cable latency (0001 == <10ns(~1m length))
308  * <12:11> :: cable termination type (10b == o    308  * <12:11> :: cable termination type (10b == one end active, 11b == both ends active VCONN req)
309  * <10:9>  :: Maximum Vbus voltage (00b == 20V    309  * <10:9>  :: Maximum Vbus voltage (00b == 20V, 01b == 30V, 10b == 40V, 11b == 50V)
310  * <8>     :: SBU supported (0b == supported,     310  * <8>     :: SBU supported (0b == supported, 1b == not supported)
311  * <7>     :: SBU type (0b == passive, 1b == a    311  * <7>     :: SBU type (0b == passive, 1b == active)
312  * <6:5>   :: Vbus current handling capability    312  * <6:5>   :: Vbus current handling capability (01b == 3A, 10b == 5A)
313  * <4>     :: Vbus through cable (0b == no, 1b    313  * <4>     :: Vbus through cable (0b == no, 1b == yes)
314  * <3>     :: SOP" controller present? (0b ==     314  * <3>     :: SOP" controller present? (0b == no, 1b == yes)
315  * <2:0>   :: USB highest speed                   315  * <2:0>   :: USB highest speed
316  */                                               316  */
317 /* Cable VDO Version */                           317 /* Cable VDO Version */
318 #define CABLE_VDO_VER1_0        0                 318 #define CABLE_VDO_VER1_0        0
319 #define CABLE_VDO_VER1_3        3                 319 #define CABLE_VDO_VER1_3        3
320                                                   320 
321 /* Connector Type (_ATYPE and _BTYPE are for P    321 /* Connector Type (_ATYPE and _BTYPE are for PD Rev2.0 only) */
322 #define CABLE_ATYPE             0                 322 #define CABLE_ATYPE             0
323 #define CABLE_BTYPE             1                 323 #define CABLE_BTYPE             1
324 #define CABLE_CTYPE             2                 324 #define CABLE_CTYPE             2
325 #define CABLE_CAPTIVE           3                 325 #define CABLE_CAPTIVE           3
326                                                   326 
327 /* Cable Latency */                               327 /* Cable Latency */
328 #define CABLE_LATENCY_1M        1                 328 #define CABLE_LATENCY_1M        1
329 #define CABLE_LATENCY_2M        2                 329 #define CABLE_LATENCY_2M        2
330 #define CABLE_LATENCY_3M        3                 330 #define CABLE_LATENCY_3M        3
331 #define CABLE_LATENCY_4M        4                 331 #define CABLE_LATENCY_4M        4
332 #define CABLE_LATENCY_5M        5                 332 #define CABLE_LATENCY_5M        5
333 #define CABLE_LATENCY_6M        6                 333 #define CABLE_LATENCY_6M        6
334 #define CABLE_LATENCY_7M        7                 334 #define CABLE_LATENCY_7M        7
335 #define CABLE_LATENCY_7M_PLUS   8                 335 #define CABLE_LATENCY_7M_PLUS   8
336                                                   336 
337 /* Cable Termination Type */                      337 /* Cable Termination Type */
338 #define PCABLE_VCONN_NOT_REQ    0                 338 #define PCABLE_VCONN_NOT_REQ    0
339 #define PCABLE_VCONN_REQ        1                 339 #define PCABLE_VCONN_REQ        1
340 #define ACABLE_ONE_END          2                 340 #define ACABLE_ONE_END          2
341 #define ACABLE_BOTH_END         3                 341 #define ACABLE_BOTH_END         3
342                                                   342 
343 /* Maximum Vbus Voltage */                        343 /* Maximum Vbus Voltage */
344 #define CABLE_MAX_VBUS_20V      0                 344 #define CABLE_MAX_VBUS_20V      0
345 #define CABLE_MAX_VBUS_30V      1                 345 #define CABLE_MAX_VBUS_30V      1
346 #define CABLE_MAX_VBUS_40V      2                 346 #define CABLE_MAX_VBUS_40V      2
347 #define CABLE_MAX_VBUS_50V      3                 347 #define CABLE_MAX_VBUS_50V      3
348                                                   348 
349 /* Active Cable SBU Supported/Type */             349 /* Active Cable SBU Supported/Type */
350 #define ACABLE_SBU_SUPP         0                 350 #define ACABLE_SBU_SUPP         0
351 #define ACABLE_SBU_NOT_SUPP     1                 351 #define ACABLE_SBU_NOT_SUPP     1
352 #define ACABLE_SBU_PASSIVE      0                 352 #define ACABLE_SBU_PASSIVE      0
353 #define ACABLE_SBU_ACTIVE       1                 353 #define ACABLE_SBU_ACTIVE       1
354                                                   354 
355 /* Vbus Current Handling Capability */            355 /* Vbus Current Handling Capability */
356 #define CABLE_CURR_DEF          0                 356 #define CABLE_CURR_DEF          0
357 #define CABLE_CURR_3A           1                 357 #define CABLE_CURR_3A           1
358 #define CABLE_CURR_5A           2                 358 #define CABLE_CURR_5A           2
359                                                   359 
360 /* USB SuperSpeed Signaling Support (PD Rev2.0    360 /* USB SuperSpeed Signaling Support (PD Rev2.0) */
361 #define CABLE_USBSS_U2_ONLY     0                 361 #define CABLE_USBSS_U2_ONLY     0
362 #define CABLE_USBSS_U31_GEN1    1                 362 #define CABLE_USBSS_U31_GEN1    1
363 #define CABLE_USBSS_U31_GEN2    2                 363 #define CABLE_USBSS_U31_GEN2    2
364                                                   364 
365 /* USB Highest Speed */                           365 /* USB Highest Speed */
366 #define CABLE_USB2_ONLY         0                 366 #define CABLE_USB2_ONLY         0
367 #define CABLE_USB32_GEN1        1                 367 #define CABLE_USB32_GEN1        1
368 #define CABLE_USB32_4_GEN2      2                 368 #define CABLE_USB32_4_GEN2      2
369 #define CABLE_USB4_GEN3         3                 369 #define CABLE_USB4_GEN3         3
370                                                   370 
371 #define VDO_CABLE(hw, fw, cbl, lat, term, tx1d    371 #define VDO_CABLE(hw, fw, cbl, lat, term, tx1d, tx2d, rx1d, rx2d, cur, vps, sopp, usbss) \
372         (((hw) & 0x7) << 28 | ((fw) & 0x7) <<     372         (((hw) & 0x7) << 28 | ((fw) & 0x7) << 24 | ((cbl) & 0x3) << 18          \
373          | ((lat) & 0x7) << 13 | ((term) & 0x3    373          | ((lat) & 0x7) << 13 | ((term) & 0x3) << 11 | (tx1d) << 10            \
374          | (tx2d) << 9 | (rx1d) << 8 | (rx2d)     374          | (tx2d) << 9 | (rx1d) << 8 | (rx2d) << 7 | ((cur) & 0x3) << 5         \
375          | (vps) << 4 | (sopp) << 3 | ((usbss)    375          | (vps) << 4 | (sopp) << 3 | ((usbss) & 0x7))
376 #define VDO_PCABLE(hw, fw, ver, conn, lat, ter    376 #define VDO_PCABLE(hw, fw, ver, conn, lat, term, vbm, cur, spd)                 \
377         (((hw) & 0xf) << 28 | ((fw) & 0xf) <<     377         (((hw) & 0xf) << 28 | ((fw) & 0xf) << 24 | ((ver) & 0x7) << 21          \
378          | ((conn) & 0x3) << 18 | ((lat) & 0xf    378          | ((conn) & 0x3) << 18 | ((lat) & 0xf) << 13 | ((term) & 0x3) << 11    \
379          | ((vbm) & 0x3) << 9 | ((cur) & 0x3)     379          | ((vbm) & 0x3) << 9 | ((cur) & 0x3) << 5 | ((spd) & 0x7))
380 #define VDO_ACABLE1(hw, fw, ver, conn, lat, te    380 #define VDO_ACABLE1(hw, fw, ver, conn, lat, term, vbm, sbu, sbut, cur, vbt, sopp, spd) \
381         (((hw) & 0xf) << 28 | ((fw) & 0xf) <<     381         (((hw) & 0xf) << 28 | ((fw) & 0xf) << 24 | ((ver) & 0x7) << 21          \
382          | ((conn) & 0x3) << 18 | ((lat) & 0xf    382          | ((conn) & 0x3) << 18 | ((lat) & 0xf) << 13 | ((term) & 0x3) << 11    \
383          | ((vbm) & 0x3) << 9 | (sbu) << 8 | (    383          | ((vbm) & 0x3) << 9 | (sbu) << 8 | (sbut) << 7 | ((cur) & 0x3) << 5   \
384          | (vbt) << 4 | (sopp) << 3 | ((spd) &    384          | (vbt) << 4 | (sopp) << 3 | ((spd) & 0x7))
385                                                   385 
386 #define VDO_TYPEC_CABLE_SPEED(vdo)      ((vdo)    386 #define VDO_TYPEC_CABLE_SPEED(vdo)      ((vdo) & 0x7)
387 #define VDO_TYPEC_CABLE_TYPE(vdo)       (((vdo    387 #define VDO_TYPEC_CABLE_TYPE(vdo)       (((vdo) >> 18) & 0x3)
388                                                   388 
389 /*                                                389 /*
390  * Active Cable VDO 2                             390  * Active Cable VDO 2
391  * ---------                                      391  * ---------
392  * <31:24> :: Maximum operating temperature       392  * <31:24> :: Maximum operating temperature
393  * <23:16> :: Shutdown temperature                393  * <23:16> :: Shutdown temperature
394  * <15>    :: Reserved, Shall be set to zero      394  * <15>    :: Reserved, Shall be set to zero
395  * <14:12> :: U3/CLd power                        395  * <14:12> :: U3/CLd power
396  * <11>    :: U3 to U0 transition mode (0b ==     396  * <11>    :: U3 to U0 transition mode (0b == direct, 1b == through U3S)
397  * <10>    :: Physical connection (0b == coppe    397  * <10>    :: Physical connection (0b == copper, 1b == optical)
398  * <9>     :: Active element (0b == redriver,     398  * <9>     :: Active element (0b == redriver, 1b == retimer)
399  * <8>     :: USB4 supported (0b == yes, 1b ==    399  * <8>     :: USB4 supported (0b == yes, 1b == no)
400  * <7:6>   :: USB2 hub hops consumed              400  * <7:6>   :: USB2 hub hops consumed
401  * <5>     :: USB2 supported (0b == yes, 1b ==    401  * <5>     :: USB2 supported (0b == yes, 1b == no)
402  * <4>     :: USB3.2 supported (0b == yes, 1b     402  * <4>     :: USB3.2 supported (0b == yes, 1b == no)
403  * <3>     :: USB lanes supported (0b == one l    403  * <3>     :: USB lanes supported (0b == one lane, 1b == two lanes)
404  * <2>     :: Optically isolated active cable     404  * <2>     :: Optically isolated active cable (0b == no, 1b == yes)
405  * <1>     :: Reserved, Shall be set to zero      405  * <1>     :: Reserved, Shall be set to zero
406  * <0>     :: USB gen (0b == gen1, 1b == gen2+    406  * <0>     :: USB gen (0b == gen1, 1b == gen2+)
407  */                                               407  */
408 /* U3/CLd Power*/                                 408 /* U3/CLd Power*/
409 #define ACAB2_U3_CLD_10MW_PLUS  0                 409 #define ACAB2_U3_CLD_10MW_PLUS  0
410 #define ACAB2_U3_CLD_10MW       1                 410 #define ACAB2_U3_CLD_10MW       1
411 #define ACAB2_U3_CLD_5MW        2                 411 #define ACAB2_U3_CLD_5MW        2
412 #define ACAB2_U3_CLD_1MW        3                 412 #define ACAB2_U3_CLD_1MW        3
413 #define ACAB2_U3_CLD_500UW      4                 413 #define ACAB2_U3_CLD_500UW      4
414 #define ACAB2_U3_CLD_200UW      5                 414 #define ACAB2_U3_CLD_200UW      5
415 #define ACAB2_U3_CLD_50UW       6                 415 #define ACAB2_U3_CLD_50UW       6
416                                                   416 
417 /* Other Active Cable VDO 2 Fields */             417 /* Other Active Cable VDO 2 Fields */
418 #define ACAB2_U3U0_DIRECT       0                 418 #define ACAB2_U3U0_DIRECT       0
419 #define ACAB2_U3U0_U3S          1                 419 #define ACAB2_U3U0_U3S          1
420 #define ACAB2_PHY_COPPER        0                 420 #define ACAB2_PHY_COPPER        0
421 #define ACAB2_PHY_OPTICAL       1                 421 #define ACAB2_PHY_OPTICAL       1
422 #define ACAB2_REDRIVER          0                 422 #define ACAB2_REDRIVER          0
423 #define ACAB2_RETIMER           1                 423 #define ACAB2_RETIMER           1
424 #define ACAB2_USB4_SUPP         0                 424 #define ACAB2_USB4_SUPP         0
425 #define ACAB2_USB4_NOT_SUPP     1                 425 #define ACAB2_USB4_NOT_SUPP     1
426 #define ACAB2_USB2_SUPP         0                 426 #define ACAB2_USB2_SUPP         0
427 #define ACAB2_USB2_NOT_SUPP     1                 427 #define ACAB2_USB2_NOT_SUPP     1
428 #define ACAB2_USB32_SUPP        0                 428 #define ACAB2_USB32_SUPP        0
429 #define ACAB2_USB32_NOT_SUPP    1                 429 #define ACAB2_USB32_NOT_SUPP    1
430 #define ACAB2_LANES_ONE         0                 430 #define ACAB2_LANES_ONE         0
431 #define ACAB2_LANES_TWO         1                 431 #define ACAB2_LANES_TWO         1
432 #define ACAB2_OPT_ISO_NO        0                 432 #define ACAB2_OPT_ISO_NO        0
433 #define ACAB2_OPT_ISO_YES       1                 433 #define ACAB2_OPT_ISO_YES       1
434 #define ACAB2_GEN_1             0                 434 #define ACAB2_GEN_1             0
435 #define ACAB2_GEN_2_PLUS        1                 435 #define ACAB2_GEN_2_PLUS        1
436                                                   436 
437 #define VDO_ACABLE2(mtemp, stemp, u3p, trans,     437 #define VDO_ACABLE2(mtemp, stemp, u3p, trans, phy, ele, u4, hops, u2, u32, lane, iso, gen)      \
438         (((mtemp) & 0xff) << 24 | ((stemp) & 0    438         (((mtemp) & 0xff) << 24 | ((stemp) & 0xff) << 16 | ((u3p) & 0x7) << 12  \
439          | (trans) << 11 | (phy) << 10 | (ele)    439          | (trans) << 11 | (phy) << 10 | (ele) << 9 | (u4) << 8                 \
440          | ((hops) & 0x3) << 6 | (u2) << 5 | (    440          | ((hops) & 0x3) << 6 | (u2) << 5 | (u32) << 4 | (lane) << 3           \
441          | (iso) << 2 | (gen))                    441          | (iso) << 2 | (gen))
442                                                   442 
443 /*                                                443 /*
444  * AMA VDO (PD Rev2.0)                            444  * AMA VDO (PD Rev2.0)
445  * ---------                                      445  * ---------
446  * <31:28> :: Cable HW version                    446  * <31:28> :: Cable HW version
447  * <27:24> :: Cable FW version                    447  * <27:24> :: Cable FW version
448  * <23:12> :: Reserved, Shall be set to zero      448  * <23:12> :: Reserved, Shall be set to zero
449  * <11>    :: SSTX1 Directionality support (0b    449  * <11>    :: SSTX1 Directionality support (0b == fixed, 1b == cfgable)
450  * <10>    :: SSTX2 Directionality support        450  * <10>    :: SSTX2 Directionality support
451  * <9>     :: SSRX1 Directionality support        451  * <9>     :: SSRX1 Directionality support
452  * <8>     :: SSRX2 Directionality support        452  * <8>     :: SSRX2 Directionality support
453  * <7:5>   :: Vconn power                         453  * <7:5>   :: Vconn power
454  * <4>     :: Vconn power required                454  * <4>     :: Vconn power required
455  * <3>     :: Vbus power required                 455  * <3>     :: Vbus power required
456  * <2:0>   :: USB SS Signaling support            456  * <2:0>   :: USB SS Signaling support
457  */                                               457  */
458 #define VDO_AMA(hw, fw, tx1d, tx2d, rx1d, rx2d    458 #define VDO_AMA(hw, fw, tx1d, tx2d, rx1d, rx2d, vcpwr, vcr, vbr, usbss) \
459         (((hw) & 0x7) << 28 | ((fw) & 0x7) <<     459         (((hw) & 0x7) << 28 | ((fw) & 0x7) << 24                        \
460          | (tx1d) << 11 | (tx2d) << 10 | (rx1d    460          | (tx1d) << 11 | (tx2d) << 10 | (rx1d) << 9 | (rx2d) << 8      \
461          | ((vcpwr) & 0x7) << 5 | (vcr) << 4 |    461          | ((vcpwr) & 0x7) << 5 | (vcr) << 4 | (vbr) << 3               \
462          | ((usbss) & 0x7))                       462          | ((usbss) & 0x7))
463                                                   463 
464 #define PD_VDO_AMA_VCONN_REQ(vdo)       (((vdo    464 #define PD_VDO_AMA_VCONN_REQ(vdo)       (((vdo) >> 4) & 1)
465 #define PD_VDO_AMA_VBUS_REQ(vdo)        (((vdo    465 #define PD_VDO_AMA_VBUS_REQ(vdo)        (((vdo) >> 3) & 1)
466                                                   466 
467 #define AMA_USBSS_U2_ONLY       0                 467 #define AMA_USBSS_U2_ONLY       0
468 #define AMA_USBSS_U31_GEN1      1                 468 #define AMA_USBSS_U31_GEN1      1
469 #define AMA_USBSS_U31_GEN2      2                 469 #define AMA_USBSS_U31_GEN2      2
470 #define AMA_USBSS_BBONLY        3                 470 #define AMA_USBSS_BBONLY        3
471                                                   471 
472 /*                                                472 /*
473  * VPD VDO                                        473  * VPD VDO
474  * ---------                                      474  * ---------
475  * <31:28> :: HW version                          475  * <31:28> :: HW version
476  * <27:24> :: FW version                          476  * <27:24> :: FW version
477  * <23:21> :: VDO version                         477  * <23:21> :: VDO version
478  * <20:17> :: Reserved, Shall be set to zero      478  * <20:17> :: Reserved, Shall be set to zero
479  * <16:15> :: Maximum Vbus voltage (00b == 20V    479  * <16:15> :: Maximum Vbus voltage (00b == 20V, 01b == 30V, 10b == 40V, 11b == 50V)
480  * <14>    :: Charge through current support (    480  * <14>    :: Charge through current support (0b == 3A, 1b == 5A)
481  * <13>    :: Reserved, Shall be set to zero      481  * <13>    :: Reserved, Shall be set to zero
482  * <12:7>  :: Vbus impedance                      482  * <12:7>  :: Vbus impedance
483  * <6:1>   :: Ground impedance                    483  * <6:1>   :: Ground impedance
484  * <0>     :: Charge through support (0b == no    484  * <0>     :: Charge through support (0b == no, 1b == yes)
485  */                                               485  */
486 #define VPD_VDO_VER1_0          0                 486 #define VPD_VDO_VER1_0          0
487 #define VPD_MAX_VBUS_20V        0                 487 #define VPD_MAX_VBUS_20V        0
488 #define VPD_MAX_VBUS_30V        1                 488 #define VPD_MAX_VBUS_30V        1
489 #define VPD_MAX_VBUS_40V        2                 489 #define VPD_MAX_VBUS_40V        2
490 #define VPD_MAX_VBUS_50V        3                 490 #define VPD_MAX_VBUS_50V        3
491 #define VPDCT_CURR_3A           0                 491 #define VPDCT_CURR_3A           0
492 #define VPDCT_CURR_5A           1                 492 #define VPDCT_CURR_5A           1
493 #define VPDCT_NOT_SUPP          0                 493 #define VPDCT_NOT_SUPP          0
494 #define VPDCT_SUPP              1                 494 #define VPDCT_SUPP              1
495                                                   495 
496 #define VDO_VPD(hw, fw, ver, vbm, curr, vbi, g    496 #define VDO_VPD(hw, fw, ver, vbm, curr, vbi, gi, ct)                    \
497         (((hw) & 0xf) << 28 | ((fw) & 0xf) <<     497         (((hw) & 0xf) << 28 | ((fw) & 0xf) << 24 | ((ver) & 0x7) << 21  \
498          | ((vbm) & 0x3) << 15 | (curr) << 14     498          | ((vbm) & 0x3) << 15 | (curr) << 14 | ((vbi) & 0x3f) << 7     \
499          | ((gi) & 0x3f) << 1 | (ct))             499          | ((gi) & 0x3f) << 1 | (ct))
500                                                   500 
501 /*                                                501 /*
502  * SVDM Discover SVIDs request -> response        502  * SVDM Discover SVIDs request -> response
503  *                                                503  *
504  * Request is properly formatted VDM Header wi    504  * Request is properly formatted VDM Header with discover SVIDs command.
505  * Response is a set of SVIDs of all supported    505  * Response is a set of SVIDs of all supported SVIDs with all zero's to
506  * mark the end of SVIDs.  If more than 12 SVI    506  * mark the end of SVIDs.  If more than 12 SVIDs are supported command SHOULD be
507  * repeated.                                      507  * repeated.
508  */                                               508  */
509 #define VDO_SVID(svid0, svid1)  (((svid0) & 0x    509 #define VDO_SVID(svid0, svid1)  (((svid0) & 0xffff) << 16 | ((svid1) & 0xffff))
510 #define PD_VDO_SVID_SVID0(vdo)  ((vdo) >> 16)     510 #define PD_VDO_SVID_SVID0(vdo)  ((vdo) >> 16)
511 #define PD_VDO_SVID_SVID1(vdo)  ((vdo) & 0xfff    511 #define PD_VDO_SVID_SVID1(vdo)  ((vdo) & 0xffff)
512                                                   512 
513 /* USB-IF SIDs */                                 513 /* USB-IF SIDs */
514 #define USB_SID_PD              0xff00 /* powe    514 #define USB_SID_PD              0xff00 /* power delivery */
515 #define USB_SID_DISPLAYPORT     0xff01            515 #define USB_SID_DISPLAYPORT     0xff01
516 #define USB_SID_MHL             0xff02  /* Mob    516 #define USB_SID_MHL             0xff02  /* Mobile High-Definition Link */
517                                                   517 
518 /* VDM command timeouts (in ms) */                518 /* VDM command timeouts (in ms) */
519                                                   519 
520 #define PD_T_VDM_UNSTRUCTURED   500               520 #define PD_T_VDM_UNSTRUCTURED   500
521 #define PD_T_VDM_BUSY           100               521 #define PD_T_VDM_BUSY           100
522 #define PD_T_VDM_WAIT_MODE_E    100               522 #define PD_T_VDM_WAIT_MODE_E    100
523 #define PD_T_VDM_SNDR_RSP       30                523 #define PD_T_VDM_SNDR_RSP       30
524 #define PD_T_VDM_E_MODE         25                524 #define PD_T_VDM_E_MODE         25
525 #define PD_T_VDM_RCVR_RSP       15                525 #define PD_T_VDM_RCVR_RSP       15
526                                                   526 
527 #endif /* __LINUX_USB_PD_VDO_H */                 527 #endif /* __LINUX_USB_PD_VDO_H */
528                                                   528 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php