mirror of https://gitee.com/openkylin/linux.git
USB: add descriptors from USB Power Delivery spec
Adding the descriptors of chapter 9.2 of the Power Delivery spec. Signed-off-by: Oliver Neukum <oneukum@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c3b46c7326
commit
e10f9a42e9
|
@ -913,6 +913,104 @@ struct usb_ssp_cap_descriptor {
|
|||
#define USB_SSP_SUBLINK_SPEED_LSM (0xff << 16) /* Lanespeed mantissa */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* USB Power Delivery Capability Descriptor:
|
||||
* Defines capabilities for PD
|
||||
*/
|
||||
/* Defines the various PD Capabilities of this device */
|
||||
#define USB_PD_POWER_DELIVERY_CAPABILITY 0x06
|
||||
/* Provides information on each battery supported by the device */
|
||||
#define USB_PD_BATTERY_INFO_CAPABILITY 0x07
|
||||
/* The Consumer characteristics of a Port on the device */
|
||||
#define USB_PD_PD_CONSUMER_PORT_CAPABILITY 0x08
|
||||
/* The provider characteristics of a Port on the device */
|
||||
#define USB_PD_PD_PROVIDER_PORT_CAPABILITY 0x09
|
||||
|
||||
struct usb_pd_cap_descriptor {
|
||||
__u8 bLength;
|
||||
__u8 bDescriptorType;
|
||||
__u8 bDevCapabilityType; /* set to USB_PD_POWER_DELIVERY_CAPABILITY */
|
||||
__u8 bReserved;
|
||||
__le32 bmAttributes;
|
||||
#define USB_PD_CAP_BATTERY_CHARGING (1 << 1) /* supports Battery Charging specification */
|
||||
#define USB_PD_CAP_USB_PD (1 << 2) /* supports USB Power Delivery specification */
|
||||
#define USB_PD_CAP_PROVIDER (1 << 3) /* can provide power */
|
||||
#define USB_PD_CAP_CONSUMER (1 << 4) /* can consume power */
|
||||
#define USB_PD_CAP_CHARGING_POLICY (1 << 5) /* supports CHARGING_POLICY feature */
|
||||
#define USB_PD_CAP_TYPE_C_CURRENT (1 << 6) /* supports power capabilities defined in the USB Type-C Specification */
|
||||
|
||||
#define USB_PD_CAP_PWR_AC (1 << 8)
|
||||
#define USB_PD_CAP_PWR_BAT (1 << 9)
|
||||
#define USB_PD_CAP_PWR_USE_V_BUS (1 << 14)
|
||||
|
||||
__le16 bmProviderPorts; /* Bit zero refers to the UFP of the device */
|
||||
__le16 bmConsumerPorts;
|
||||
__le16 bcdBCVersion;
|
||||
__le16 bcdPDVersion;
|
||||
__le16 bcdUSBTypeCVersion;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct usb_pd_cap_battery_info_descriptor {
|
||||
__u8 bLength;
|
||||
__u8 bDescriptorType;
|
||||
__u8 bDevCapabilityType;
|
||||
/* Index of string descriptor shall contain the user friendly name for this battery */
|
||||
__u8 iBattery;
|
||||
/* Index of string descriptor shall contain the Serial Number String for this battery */
|
||||
__u8 iSerial;
|
||||
__u8 iManufacturer;
|
||||
__u8 bBatteryId; /* uniquely identifies this battery in status Messages */
|
||||
__u8 bReserved;
|
||||
/*
|
||||
* Shall contain the Battery Charge value above which this
|
||||
* battery is considered to be fully charged but not necessarily
|
||||
* “topped off.”
|
||||
*/
|
||||
__le32 dwChargedThreshold; /* in mWh */
|
||||
/*
|
||||
* Shall contain the minimum charge level of this battery such
|
||||
* that above this threshold, a device can be assured of being
|
||||
* able to power up successfully (see Battery Charging 1.2).
|
||||
*/
|
||||
__le32 dwWeakThreshold; /* in mWh */
|
||||
__le32 dwBatteryDesignCapacity; /* in mWh */
|
||||
__le32 dwBatteryLastFullchargeCapacity; /* in mWh */
|
||||
} __attribute__((packed));
|
||||
|
||||
struct usb_pd_cap_consumer_port_descriptor {
|
||||
__u8 bLength;
|
||||
__u8 bDescriptorType;
|
||||
__u8 bDevCapabilityType;
|
||||
__u8 bReserved;
|
||||
__u8 bmCapabilities;
|
||||
/* port will oerate under: */
|
||||
#define USB_PD_CAP_CONSUMER_BC (1 << 0) /* BC */
|
||||
#define USB_PD_CAP_CONSUMER_PD (1 << 1) /* PD */
|
||||
#define USB_PD_CAP_CONSUMER_TYPE_C (1 << 2) /* USB Type-C Current */
|
||||
__le16 wMinVoltage; /* in 50mV units */
|
||||
__le16 wMaxVoltage; /* in 50mV units */
|
||||
__u16 wReserved;
|
||||
__le32 dwMaxOperatingPower; /* in 10 mW - operating at steady state */
|
||||
__le32 dwMaxPeakPower; /* in 10mW units - operating at peak power */
|
||||
__le32 dwMaxPeakPowerTime; /* in 100ms units - duration of peak */
|
||||
#define USB_PD_CAP_CONSUMER_UNKNOWN_PEAK_POWER_TIME 0xffff
|
||||
} __attribute__((packed));
|
||||
|
||||
struct usb_pd_cap_provider_port_descriptor {
|
||||
__u8 bLength;
|
||||
__u8 bDescriptorType;
|
||||
__u8 bDevCapabilityType;
|
||||
__u8 bReserved1;
|
||||
__u8 bmCapabilities;
|
||||
/* port will oerate under: */
|
||||
#define USB_PD_CAP_PROVIDER_BC (1 << 0) /* BC */
|
||||
#define USB_PD_CAP_PROVIDER_PD (1 << 1) /* PD */
|
||||
#define USB_PD_CAP_PROVIDER_TYPE_C (1 << 2) /* USB Type-C Current */
|
||||
__u8 bNumOfPDObjects;
|
||||
__u8 bReserved2;
|
||||
__le32 wPowerDataObject[];
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Precision time measurement capability descriptor: advertised by devices and
|
||||
* hubs that support PTM
|
||||
|
|
Loading…
Reference in New Issue