On Thu, Mar 10, 2016 at 3:59 PM, Oliver Neukum <oneukum@xxxxxxxx> wrote: > Adding the descriptors of chapter 9.2 of the Power Delivery spec. > > Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx> > --- > include/uapi/linux/usb/ch9.h | 98 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 98 insertions(+) > > diff --git a/include/uapi/linux/usb/ch9.h b/include/uapi/linux/usb/ch9.h > index 06d6c62..1046c55 100644 > --- a/include/uapi/linux/usb/ch9.h > +++ b/include/uapi/linux/usb/ch9.h > @@ -914,6 +914,104 @@ struct usb_ssp_cap_descriptor { > } __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) Thank you for fixing uSB_xxx here > + > + __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 */ However, this typo still exists here ^ > + __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 and here ^ > +} __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 */ ..and here ^ Could you please fix it in all places? Thanks, Ruslan > + __u8 bNumOfPDObjects; > + __u8 bReserved2; > + __le32 wPowerDataObject[]; > +} __attribute__((packed)); > + > +/* > * Precision time measurement capability descriptor: advertised by devices and > * hubs that support PTM > */ > -- > 2.1.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html