Re: [PATCH v3 03/12] usb: gadget: Expose sublink speed attributes

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

 



Chunfeng Yun wrote:
> On Fri, 2020-07-24 at 16:38 -0700, Thinh Nguyen wrote:
>> The USB 3.2 specification supports dual-lane and different transfer
>> rates for super-speed-plus. Devices operating in super-speed-plus can
>> be gen2x1, gen1x2, or gen2x2.
>>
>> A gadget driver may need to know the gadget's sublink speeds to properly
>> setup its transfer requests and describe its capability in its
>> descriptors. To describe the transfer rate in super-speed-plus fully,
>> let's expose the lane count and sublink speed attributes when operating
>> in super-speed-plus.
>>
>> Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx>
>> ---
>>   Changes in v3:
>>   - None
>>   Changes in v2:
>>   - None
>>
>>   include/linux/usb/gadget.h | 20 ++++++++++++++++++++
>>   1 file changed, 20 insertions(+)
>>
>> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
>> index 52ce1f6b8f83..bd982669609c 100644
>> --- a/include/linux/usb/gadget.h
>> +++ b/include/linux/usb/gadget.h
>> @@ -339,6 +339,15 @@ struct usb_gadget_ops {
>>    * @speed: Speed of current connection to USB host.
>>    * @max_speed: Maximal speed the UDC can handle.  UDC must support this
>>    *      and all slower speeds.
>> + * @num_lanes: Number of lanes in use.
>> + * @max_num_lanes: Maximum number of lanes the UDC supports.
>> + * @ssac: Sublink speed attribute count. The number of sublink speed
>> + *	attributes is ssac + 1.
>> + * @sublink_speed: Array of sublink speed attributes the UDC supports. Sublink
>> + *	speed attributes are paired, and an RX followed by a TX attribute.
>> + * @speed_ssid: Current sublink speed attribute ID in use.
>> + * @min_speed_ssid: Sublink speed attribute ID with the minimum speed.
>> + * @max_speed_ssid: Sublink speed attribute ID with the maximum speed.
>>    * @state: the state we are now (attached, suspended, configured, etc)
>>    * @name: Identifies the controller hardware type.  Used in diagnostics
>>    *	and sometimes configuration.
>> @@ -406,6 +415,17 @@ struct usb_gadget {
>>   	struct list_head		ep_list;	/* of usb_ep */
>>   	enum usb_device_speed		speed;
>>   	enum usb_device_speed		max_speed;
>> +
>> +	/* SSP only */
>> +	unsigned			num_lanes;
>> +	unsigned			max_num_lanes;
>> +	unsigned			ssac;
>> +#define USB_GADGET_MAX_SSAC 3
>> +	struct usb_sublink_speed	sublink_speed[USB_GADGET_MAX_SSAC + 1];
>> +	unsigned			speed_ssid;
>> +	unsigned			min_speed_ssid;
>> +	unsigned			max_speed_ssid;
> checkpatch warning:
>
> WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned'

Yes, but I'd like to keep them consistent with the rest of the fields in 
this structure.

>> +
>>   	enum usb_device_state		state;
>>   	const char			*name;
>>   	struct device			dev;

BR,
Thinh




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

  Powered by Linux