blob: f1c19b932bd17099c9cab26d3971bfbb9498f253 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef TYPECD_PD_VDO_CONSTANTS_H_
#define TYPECD_PD_VDO_CONSTANTS_H_
// Declare fields/values associated with Power Delivery (PD) discovery. These
// are used during various USB Type C mode entry checks.
namespace typecd {
// USB PD spec rev 3.0, v 2.0.
// Table 6-29 ID Header VDO.
// Modal operation bit field.
constexpr uint32_t kIDHeaderVDOModalOperationBitField = (1 << 26);
// Bit Masks for Cable type.
constexpr uint8_t kIDHeaderVDOProductTypeBitOffset = 27;
constexpr uint8_t kIDHeaderVDOProductTypeMask = 0x7;
constexpr uint8_t kIDHeaderVDOProductTypeCablePassive = 0x3;
constexpr uint8_t kIDHeaderVDOProductTypeCableActive = 0x4;
constexpr uint8_t kIDHeaderVDOProductTypeUFPHub = 0x1;
constexpr uint8_t kIDHeaderVDOProductTypeUFPPeripheral = 0x2;
constexpr uint8_t kIDHeaderVDOProductTypeUFPAMA = 0x5;
constexpr uint32_t kIdHeaderVDOVidMask = 0x0000ffff;
// Bit Masks for Product VDO
// USB PD spec rev 3.0, v 2.0.
// Table 6-34 Product VDO
constexpr uint32_t kProductVDOPidMask = 0xffff0000;
// Bit Masks for Product Type VDOs
// USB PD spec rev 3.0, v 2.0.
// Table 6-35 UFP VDO 1
constexpr uint32_t kDeviceCapabilityBitOffset = 24;
constexpr uint8_t kDeviceCapabilityMask = 0xF;
constexpr uint8_t kDeviceCapabilityBillboard = 0x2;
constexpr uint8_t kDeviceCapabilityUSB4 = 0x8;
constexpr uint32_t kUSBSpeedBitMask = 0x3;
constexpr uint32_t kUSBSpeed20 = 0x0;
constexpr uint32_t kUSBSuperSpeed32Gen1 = 0x1;
constexpr uint32_t kUSBSuperSpeed32Or40Gen2 = 0x2;
constexpr uint32_t kUSB40SuperSpeedGen3 = 0x3;
// Speed values for PD rev 2.0
constexpr uint32_t kUSBSuperSpeed31Gen1 = 0x1;
constexpr uint32_t kUSBSuperSpeed31Gen2 = 0x2;
// Bit Masks for Active Cable VDO1
// USB PD spec rev 3.0, v 2.0.
// Table 6-39 Active Cable VDO1
constexpr uint8_t kActiveCableVDO1VDOVersionOffset = 21;
constexpr uint8_t kActiveCableVDO1VDOVersionBitMask = 0x7;
constexpr uint8_t kActiveCableVDO1VDOVersion13 = 0x3;
// Bit Masks for Active Cable VDO2
// US PD spec rev 3.0, v 2.0.
// Table 6-40 Active Cable VDO2
constexpr uint32_t kActiveCableVDO2USB4SupportedBitField = (1 << 8);
// Bit Masks for TBT3 Cables
// USB Type-C Cable & Connector spec release 2.0
// Table F-11 TBT3 Cable Discover Mode VDO Responses
constexpr uint8_t kTBT3CableDiscModeVDORoundedSupportOffset = 19;
constexpr uint8_t kTBT3CableDiscModeVDORoundedSupportMask = 0x3;
constexpr uint8_t kTBT3CableDiscModeVDO_3_4_Gen_Rounded_Non_Rounded = 0x1;
// Standard and Vendor Indentifications commonly expected in cables and partners
constexpr uint16_t kDPAltModeSID = 0xff01;
// DP altmode VDO capabilities.
// NOTE: We only include the bit fields we are interested in.
constexpr uint32_t kDPModeSnk = 0x1;
constexpr uint16_t kTBTAltModeVID = 0x8087;
// Bit Masks for Alternate Mode Adapter (AMA) VDO
// USB PD spec rev 3.0, v 2.0.
// Table 6-41 AMA VDO
constexpr uint32_t kAMAVDOUSBSpeedBitMask = 0x7;
constexpr uint32_t kAMAVDOUSBSpeedBillboard = 0x3;
} // namespace typecd
#endif // TYPECD_PD_VDO_CONSTANTS_H_