Re: [PATCH v3 1/3] USB: add descriptors from USB Power Delivery spec

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux