15#ifndef ZEPHYR_INCLUDE_DRIVERS_USB_C_USBC_PD_H_
16#define ZEPHYR_INCLUDE_DRIVERS_USB_C_USBC_PD_H_
36#define PD_MAX_EXTENDED_MSG_LEGACY_LEN 26
43#define PD_MAX_EXTENDED_MSG_LEN 260
55#define PD_MAX_EXTENDED_MSG_CHUNK_LEN 26
68#define PD_N_CAPS_COUNT 50
75#define PD_N_HARD_RESET_COUNT 2
89#define PD_T_NO_RESPONSE_MIN_MS 4500
96#define PD_T_NO_RESPONSE_MAX_MS 5500
104#define PD_T_PS_HARD_RESET_MIN_MS 25
112#define PD_T_PS_HARD_RESET_MAX_MS 35
119#define PD_T_SINK_TX_MIN_MS 16
126#define PD_T_SINK_TX_MAX_MS 20
135#define PD_T_TYPEC_SEND_SOURCE_CAP_MIN_MS 100
144#define PD_T_TYPEC_SEND_SOURCE_CAP_MAX_MS 200
154#define PD_T_TYPEC_SINK_WAIT_CAP_MIN_MS 310
162#define PD_T_TYPEC_SINK_WAIT_CAP_MAX_MS 620
169#define PD_V_SAFE_0V_MAX_MV 800
176#define PD_V_SAFE_5V_MIN_MV 4750
183#define PD_T_SAFE_0V_MAX_MS 650
190#define PD_T_SAFE_5V_MAX_MS 275
195#define PD_T_TX_TIMEOUT_MS 100
201#define PD_T_HARD_RESET_COMPLETE_MIN_MS 4
207#define PD_T_HARD_RESET_COMPLETE_MAX_MS 5
213#define PD_T_SENDER_RESPONSE_MIN_MS 24
219#define PD_T_SENDER_RESPONSE_NOM_MS 27
225#define PD_T_SENDER_RESPONSE_MAX_MS 30
231#define PD_T_SPR_PS_TRANSITION_MIN_MS 450
237#define PD_T_SPR_PS_TRANSITION_NOM_MS 500
243#define PD_T_SPR_PS_TRANSITION_MAX_MS 550
249#define PD_T_EPR_PS_TRANSITION_MIN_MS 830
255#define PD_T_EPR_PS_TRANSITION_NOM_MS 925
261#define PD_T_EPR_PS_TRANSITION_MAX_MS 1020
267#define PD_T_SINK_REQUEST_MIN_MS 100
274#define PD_T_CHUNKING_NOT_SUPPORTED_MIN_MS 40
281#define PD_T_CHUNKING_NOT_SUPPORTED_NOM_MS 45
288#define PD_T_CHUNKING_NOT_SUPPORTED_MAX_MS 50
296#define PD_CONVERT_BYTES_TO_PD_HEADER_COUNT(c) ((c) >> 2)
303#define PD_CONVERT_PD_HEADER_COUNT_TO_BYTES(c) ((c) << 2)
309#define SINK_TX_OK TC_RP_3A0
315#define SINK_TX_NG TC_RP_1A5
348#define PD_GET_EXT_HEADER(c) ((c) & 0xffff)
380#define PDO_MAX_DATA_OBJECTS 7
402#define PD_CONVERT_MA_TO_FIXED_PDO_CURRENT(c) ((c) / 10)
409#define PD_CONVERT_MV_TO_FIXED_PDO_VOLTAGE(v) ((v) / 50)
416#define PD_CONVERT_FIXED_PDO_CURRENT_TO_MA(c) ((c) * 10)
425#define PD_CONVERT_FIXED_PDO_VOLTAGE_TO_MV(v) ((v) * 50)
512#define PD_CONVERT_MA_TO_VARIABLE_PDO_CURRENT(c) ((c) / 10)
519#define PD_CONVERT_MV_TO_VARIABLE_PDO_VOLTAGE(v) ((v) / 50)
526#define PD_CONVERT_VARIABLE_PDO_CURRENT_TO_MA(c) ((c) * 10)
533#define PD_CONVERT_VARIABLE_PDO_VOLTAGE_TO_MV(v) ((v) * 50)
580#define PD_CONVERT_MW_TO_BATTERY_PDO_POWER(c) ((c) / 250)
587#define PD_CONVERT_MV_TO_BATTERY_PDO_VOLTAGE(v) ((v) / 50)
594#define PD_CONVERT_BATTERY_PDO_POWER_TO_MW(c) ((c) * 250)
601#define PD_CONVERT_BATTERY_PDO_VOLTAGE_TO_MV(v) ((v) * 50)
648#define PD_CONVERT_MA_TO_AUGMENTED_PDO_CURRENT(c) ((c) / 50)
655#define PD_CONVERT_MV_TO_AUGMENTED_PDO_VOLTAGE(v) ((v) / 100)
662#define PD_CONVERT_AUGMENTED_PDO_CURRENT_TO_MA(c) ((c) * 50)
669#define PD_CONVERT_AUGMENTED_PDO_VOLTAGE_TO_MV(v) ((v) * 100)
910#define NUM_SOP_STAR_TYPES (PD_PACKET_DEBUG_PRIME_PRIME + 1)
#define PDO_FIXED(mv, ma, flags)
Build a Fixed Supply PDO.
Definition pd.h:82
pdo_type
Power Data Object Type Table 6-7 Power Data Object.
Definition usbc_pd.h:386
pd_ext_msg_type
Extended message type for REV 3.0 See Table 6-48 Extended Message Types.
Definition usbc_pd.h:1004
pd_frs_type
Fast Role Swap Required for USB Type-C current.
Definition usbc_pd.h:464
pd_ctrl_msg_type
Control Message type See Table 6-5 Control Message Types.
Definition usbc_pd.h:916
pd_data_msg_type
Data message type See Table 6-6 Data Message Types.
Definition usbc_pd.h:974
pd_rev_type
Protocol revision.
Definition usbc_pd.h:871
#define PD_MAX_EXTENDED_MSG_LEN
Maximum length of an Extended Message in bytes.
Definition usbc_pd.h:43
pd_packet_type
Power Delivery packet type See USB Type-C Port Controller Interface Specification,...
Definition usbc_pd.h:885
usbpd_cc_pin
Active PD CC pin.
Definition usbc_pd.h:1042
@ PDO_VARIABLE
Variable Supply (non-Battery).
Definition usbc_pd.h:392
@ PDO_BATTERY
Battery.
Definition usbc_pd.h:390
@ PDO_AUGMENTED
Augmented Power Data Object (APDO).
Definition usbc_pd.h:394
@ PD_EXT_SECURITY_REQUEST
Security_Request Message.
Definition usbc_pd.h:1022
@ PD_EXT_FIRMWARE_UPDATE_REQUEST
Firmware_Update_Request Message.
Definition usbc_pd.h:1026
@ PD_EXT_FIRMWARE_UPDATE_RESPONSE
Firmware_Update_Response Message.
Definition usbc_pd.h:1028
@ PD_EXT_MANUFACTURER_INFO
Manufacturer_Info Message.
Definition usbc_pd.h:1020
@ PD_EXT_SOURCE_CAP
0 Reserved
Definition usbc_pd.h:1008
@ PD_EXT_GET_BATTERY_STATUS
Get_Battery_Status Message.
Definition usbc_pd.h:1014
@ PD_EXT_PPS_STATUS
PPS_Status Message.
Definition usbc_pd.h:1030
@ PD_EXT_STATUS
Status Message.
Definition usbc_pd.h:1010
@ PD_EXT_GET_BATTERY_CAP
Get_Battery_Cap Message.
Definition usbc_pd.h:1012
@ PD_EXT_COUNTRY_INFO
Country_Codes Message.
Definition usbc_pd.h:1032
@ PD_EXT_GET_MANUFACTURER_INFO
Get_Manufacturer_Info Message.
Definition usbc_pd.h:1018
@ PD_EXT_SECURITY_RESPONSE
Security_Response Message.
Definition usbc_pd.h:1024
@ PD_EXT_COUNTRY_CODES
Country_Info Message.
Definition usbc_pd.h:1034
@ PD_EXT_BATTERY_CAP
Battery_Capabilities Message.
Definition usbc_pd.h:1016
@ FRS_DEFAULT_USB_POWER
Default USB Power.
Definition usbc_pd.h:468
@ FRS_3P0A_5V
3.0A @ 5V
Definition usbc_pd.h:472
@ FRS_1P5A_5V
1.5A @ 5V
Definition usbc_pd.h:470
@ FRS_NOT_SUPPORTED
Fast Swap not supported.
Definition usbc_pd.h:466
@ PD_CTRL_DATA_RESET
Used for REV 3.0.
Definition usbc_pd.h:949
@ PD_CTRL_FR_SWAP
FR_Swap Message.
Definition usbc_pd.h:959
@ PD_CTRL_GET_STATUS
Get_Status Message.
Definition usbc_pd.h:957
@ PD_CTRL_DATA_RESET_COMPLETE
Data_Reset_Complete Message.
Definition usbc_pd.h:951
@ PD_CTRL_WAIT
Wait Message.
Definition usbc_pd.h:942
@ PD_CTRL_DR_SWAP
DR_Swap Message.
Definition usbc_pd.h:936
@ PD_CTRL_GOTO_MIN
GotoMin Message.
Definition usbc_pd.h:922
@ PD_CTRL_ACCEPT
Accept Message.
Definition usbc_pd.h:924
@ PD_CTRL_GET_COUNTRY_CODES
Get_Country_Codes Message.
Definition usbc_pd.h:963
@ PD_CTRL_VCONN_SWAP
VCONN_Swap Message.
Definition usbc_pd.h:940
@ PD_CTRL_PING
Ping Message.
Definition usbc_pd.h:928
@ PD_CTRL_GET_SOURCE_CAP
Get_Source_Cap Message.
Definition usbc_pd.h:932
@ PD_CTRL_REJECT
Reject Message.
Definition usbc_pd.h:926
@ PD_CTRL_GET_SINK_CAP_EXT
Get_Sink_Cap_Extended Message.
Definition usbc_pd.h:965
@ PD_CTRL_GET_SINK_CAP
Get_Sink_Cap Message.
Definition usbc_pd.h:934
@ PD_CTRL_GET_SOURCE_CAP_EXT
Get_Source_Cap_Extended Message.
Definition usbc_pd.h:955
@ PD_CTRL_GET_PPS_STATUS
Get_PPS_Status Message.
Definition usbc_pd.h:961
@ PD_CTRL_NOT_SUPPORTED
Not_Supported Message.
Definition usbc_pd.h:953
@ PD_CTRL_PR_SWAP
PR_Swap Message.
Definition usbc_pd.h:938
@ PD_CTRL_SOFT_RESET
Soft Reset Message.
Definition usbc_pd.h:944
@ PD_CTRL_GOOD_CRC
0 Reserved
Definition usbc_pd.h:920
@ PD_CTRL_PS_RDY
PS_RDY Message.
Definition usbc_pd.h:930
@ PD_DATA_ENTER_USB
8-14 Reserved for REV 3.0
Definition usbc_pd.h:995
@ PD_DATA_SINK_CAP
Sink Capabilities Message.
Definition usbc_pd.h:984
@ PD_DATA_BIST
BIST Message.
Definition usbc_pd.h:982
@ PD_DATA_ALERT
Alert Message.
Definition usbc_pd.h:988
@ PD_DATA_GET_COUNTRY_INFO
Get Country Info Message.
Definition usbc_pd.h:990
@ PD_DATA_VENDOR_DEF
Vendor Defined Message.
Definition usbc_pd.h:997
@ PD_DATA_BATTERY_STATUS
5-14 Reserved for REV 2.0
Definition usbc_pd.h:986
@ PD_DATA_SOURCE_CAP
0 Reserved
Definition usbc_pd.h:978
@ PD_DATA_REQUEST
Request Message.
Definition usbc_pd.h:980
@ PD_REV10
PD revision 1.0.
Definition usbc_pd.h:873
@ PD_REV20
PD revision 2.0.
Definition usbc_pd.h:875
@ PD_REV30
PD revision 3.0.
Definition usbc_pd.h:877
@ PD_PACKET_SOP
Port Partner message.
Definition usbc_pd.h:887
@ PD_PACKET_DEBUG_PRIME_PRIME
Currently undefined in the PD specification.
Definition usbc_pd.h:895
@ PD_PACKET_CABLE_RESET
Cable Reset message to the Cable.
Definition usbc_pd.h:899
@ PD_PACKET_MSG_INVALID
USED ONLY FOR RECEPTION OF UNKNOWN MSG TYPES.
Definition usbc_pd.h:904
@ PD_PACKET_PRIME_PRIME
Cable Plug message far end.
Definition usbc_pd.h:891
@ PD_PACKET_DEBUG_PRIME
Currently undefined in the PD specification.
Definition usbc_pd.h:893
@ PD_PACKET_TX_HARD_RESET
Hard Reset message to the Port Partner.
Definition usbc_pd.h:897
@ PD_PACKET_SOP_PRIME
Cable Plug message.
Definition usbc_pd.h:889
@ PD_PACKET_TX_BIST_MODE_2
BIST_MODE_2 message to the Port Partner.
Definition usbc_pd.h:901
@ USBPD_CC_PIN_2
PD is active on CC2.
Definition usbc_pd.h:1046
@ USBPD_CC_PIN_1
PD is active on CC1.
Definition usbc_pd.h:1044
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Power Delivery message.
Definition usbc_pd.h:1052
uint32_t len
Length of bytes in data.
Definition usbc_pd.h:1058
uint8_t data[260]
Message data.
Definition usbc_pd.h:1060
union pd_header header
Header of this message.
Definition usbc_pd.h:1056
enum pd_packet_type type
Type of this packet.
Definition usbc_pd.h:1054
Create Augmented Supply PDO Sink value See Table 6-17 Programmable Power Supply APDO - Sink.
Definition usbc_pd.h:709
uint32_t max_current
Maximum Current in 50mA increments.
Definition usbc_pd.h:713
uint32_t reserved3
00b – Programmable Power Supply 01b…11b - Reserved, Shall Not be used Setting as reserved because it ...
Definition usbc_pd.h:729
uint32_t reserved1
Reserved – Shall be set to zero.
Definition usbc_pd.h:719
uint32_t reserved0
Reserved – Shall be set to zero.
Definition usbc_pd.h:715
uint32_t min_voltage
Minimum Voltage in 100mV increments.
Definition usbc_pd.h:717
enum pdo_type type
Augmented Power Data Object (APDO).
Definition usbc_pd.h:731
uint32_t reserved2
Reserved – Shall be set to zero.
Definition usbc_pd.h:723
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:734
uint32_t max_voltage
Maximum Voltage in 100mV increments.
Definition usbc_pd.h:721
Create Augmented Supply PDO Source value See Table 6-13 Programmable Power Supply APDO - Source.
Definition usbc_pd.h:675
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:702
uint32_t min_voltage
Minimum Voltage in 100mV increments.
Definition usbc_pd.h:683
uint32_t max_current
Maximum Current in 50mA increments.
Definition usbc_pd.h:679
uint32_t reserved3
00b – Programmable Power Supply 01b…11b - Reserved, Shall Not be used Setting as reserved because it ...
Definition usbc_pd.h:697
enum pdo_type type
Augmented Power Data Object (APDO).
Definition usbc_pd.h:699
uint32_t reserved2
Reserved – Shall be set to zero.
Definition usbc_pd.h:689
uint32_t max_voltage
Maximum Voltage in 100mV increments.
Definition usbc_pd.h:687
uint32_t pps_power_limited
PPS Power Limited.
Definition usbc_pd.h:691
uint32_t reserved0
Reserved – Shall be set to zero.
Definition usbc_pd.h:681
uint32_t reserved1
Reserved – Shall be set to zero.
Definition usbc_pd.h:685
Create a Battery Supply PDO Sink value See Table 6-16 Battery Supply PDO - Sink.
Definition usbc_pd.h:627
uint32_t operational_power
Operational Power in 250mW units.
Definition usbc_pd.h:631
uint32_t min_voltage
Minimum Voltage in 50mV units.
Definition usbc_pd.h:633
uint32_t max_voltage
Maximum Voltage in 50mV units.
Definition usbc_pd.h:635
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:640
enum pdo_type type
Battery supply.
Definition usbc_pd.h:637
Create a Battery Supply PDO Source value See Table 6-12 Battery Supply PDO - Source.
Definition usbc_pd.h:607
uint32_t max_power
Maximum Allowable Power in 250mW units.
Definition usbc_pd.h:611
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:620
uint32_t max_voltage
Maximum Voltage in 50mV units.
Definition usbc_pd.h:615
enum pdo_type type
Battery supply.
Definition usbc_pd.h:617
uint32_t min_voltage
Minimum Voltage in 50mV units.
Definition usbc_pd.h:613
Create a Fixed Supply PDO Sink value See Table 6-14 Fixed Supply PDO - Sink.
Definition usbc_pd.h:479
uint32_t usb_comms_capable
USB Communications Capable.
Definition usbc_pd.h:493
uint32_t reserved0
Reserved – Shall be set to zero.
Definition usbc_pd.h:487
uint32_t operational_current
Operational Current in 10mA units.
Definition usbc_pd.h:483
uint32_t higher_capability
Higher Capability.
Definition usbc_pd.h:497
uint32_t dual_role_data
Dual-Role Data.
Definition usbc_pd.h:491
enum pd_frs_type frs_required
Fast Role Swap required USB Type-C Current.
Definition usbc_pd.h:489
uint32_t dual_role_power
Dual-Role Power.
Definition usbc_pd.h:499
uint32_t unconstrained_power
Unconstrained Power.
Definition usbc_pd.h:495
uint32_t voltage
Voltage in 50mV units.
Definition usbc_pd.h:485
enum pdo_type type
Fixed supply.
Definition usbc_pd.h:501
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:504
Create a Fixed Supply PDO Source value See Table 6-9 Fixed Supply PDO - Source.
Definition usbc_pd.h:431
enum pdo_type type
Fixed supply.
Definition usbc_pd.h:455
uint32_t peak_current
Peak Current.
Definition usbc_pd.h:439
uint32_t unchunked_ext_msg_supported
Unchunked Extended Messages Supported.
Definition usbc_pd.h:443
uint32_t usb_suspend_supported
USB Suspend Supported.
Definition usbc_pd.h:451
uint32_t voltage
Voltage in 50mV units.
Definition usbc_pd.h:437
uint32_t reserved0
Reserved – Shall be set to zero.
Definition usbc_pd.h:441
uint32_t usb_comms_capable
USB Communications Capable.
Definition usbc_pd.h:447
uint32_t dual_role_data
Dual-Role Data.
Definition usbc_pd.h:445
uint32_t max_current
Maximum Current in 10mA units.
Definition usbc_pd.h:435
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:458
uint32_t unconstrained_power
Unconstrained Power.
Definition usbc_pd.h:449
uint32_t dual_role_power
Dual-Role Power.
Definition usbc_pd.h:453
The Request Data Object (RDO) Shall be returned by the Sink making a request for power.
Definition usbc_pd.h:742
uint32_t usb_comm_capable
USB Communications Capable.
Definition usbc_pd.h:765
struct pd_rdo::@276057113217274036052213313045216337155207367376 variable
Create a Variable RDO value See Table 6-19 Fixed and Variable Request Data Object.
struct pd_rdo::@151345154173245234307024003163226203346066022061 battery
Create a Battery RDO value See Table 6-20 Battery Request Data Object.
uint32_t min_or_max_operating_current
Operating Current 10mA units NOTE: If Give Back Flag is zero, this field is the Maximum Operating Cur...
Definition usbc_pd.h:755
uint32_t raw_value
Raw RDO value.
Definition usbc_pd.h:865
uint32_t reserved2
Reserved - Shall be set to zero.
Definition usbc_pd.h:858
uint32_t operating_power
Operating power in 250mW units.
Definition usbc_pd.h:817
struct pd_rdo::@113022110152312302017265223063311235333163210363 augmented
Create an Augmented RDO value See Table 6-22 Programmable Request Data Object.
uint32_t operating_current
Operating current in 10mA units.
Definition usbc_pd.h:757
uint32_t reserved3
Reserved - Shall be set to zero.
Definition usbc_pd.h:862
uint32_t reserved1
Reserved - Shall be set to zero.
Definition usbc_pd.h:773
uint32_t reserved0
Reserved - Shall be set to zero.
Definition usbc_pd.h:759
uint32_t min_operating_power
Minimum Operating Power in 250mW units.
Definition usbc_pd.h:815
struct pd_rdo::@167046126277350301017044024302172335270353370365 fixed
Create a Fixed RDO value See Table 6-19 Fixed and Variable Request Data Object.
uint32_t output_voltage
Output Voltage in 20mV units.
Definition usbc_pd.h:846
uint32_t giveback
Give Back Flag.
Definition usbc_pd.h:769
uint32_t unchunked_ext_msg_supported
Unchunked Extended Messages Supported.
Definition usbc_pd.h:761
uint32_t no_usb_suspend
No USB Suspend.
Definition usbc_pd.h:763
uint32_t cap_mismatch
Capability Mismatch.
Definition usbc_pd.h:767
uint32_t object_pos
Object Position (000b is Reserved and Shall Not be used).
Definition usbc_pd.h:771
Create a Variable Supply PDO Sink value See Table 6-15 Variable Supply (non-Battery) PDO - Sink.
Definition usbc_pd.h:559
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:572
enum pdo_type type
Variable supply.
Definition usbc_pd.h:569
uint32_t min_voltage
Minimum Voltage in 50mV units.
Definition usbc_pd.h:565
uint32_t operational_current
operational Current in 10mA units
Definition usbc_pd.h:563
uint32_t max_voltage
Maximum Voltage in 50mV units.
Definition usbc_pd.h:567
Create a Variable Supply PDO Source value See Table 6-11 Variable Supply (non-Battery) PDO - Source.
Definition usbc_pd.h:539
uint32_t max_voltage
Maximum Voltage in 50mV units.
Definition usbc_pd.h:547
enum pdo_type type
Variable supply.
Definition usbc_pd.h:549
uint32_t min_voltage
Minimum Voltage in 50mV units.
Definition usbc_pd.h:545
uint32_t max_current
Maximum Current in 10mA units.
Definition usbc_pd.h:543
uint32_t raw_value
Raw PDO value.
Definition usbc_pd.h:552