Pull USB/PHY updates from Greg KH: "Here is the big set of USB and PHY driver patches for 5.2-rc1 There is the usual set of: - USB gadget updates - PHY driver updates and additions - USB serial driver updates and fixes - typec updates and new chips supported - mtu3 driver updates - xhci driver updates - other tiny driver updates Nothing really interesting, just constant forward progress. All of these have been in linux-next for a while with no reported issues. The usb-gadget and usb-serial trees were merged a bit "late", but both of them had been in linux-next before they got merged here last Friday" * tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (206 commits) USB: serial: f81232: implement break control USB: serial: f81232: add high baud rate support USB: serial: f81232: clear overrun flag USB: serial: f81232: fix interrupt worker not stop usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA usb: dwc3: Fix default lpm_nyet_threshold value usb: dwc3: debug: Print GET_STATUS(device) tracepoint usb: dwc3: Do core validation early on probe usb: dwc3: gadget: Set lpm_capable usb: gadget: atmel: tie wake lock to running clock usb: gadget: atmel: support USB suspend usb: gadget: atmel_usba_udc: simplify setting of interrupt-enabled mask dwc2: gadget: Fix completed transfer size calculation in DDMA usb: dwc2: Set lpm mode parameters depend on HW configuration usb: dwc2: Fix channel disable flow usb: dwc2: Set actual frame number for completed ISOC transfer usb: gadget: do not use __constant_cpu_to_le16 usb: dwc2: gadget: Increase descriptors count for ISOC's usb: introduce usb_ep_type_string() function usb: dwc3: move synchronize_irq() out of the spinlock protected block ...
Showing the changes to include/linux (7 of 206 files). Show all
Unified · Split
| @@ -64,6 +64,7 @@ union phy_configure_opts { · 63 unmodified lines | ||
| 64 | 64 | * @set_mode: set the mode of the phy |
| 65 | 65 | * @reset: resetting the phy |
| 66 | 66 | * @calibrate: calibrate the phy |
| 67 | + * @release: ops to be performed while the consumer relinquishes the PHY | |
| 67 | 68 | * @owner: the module owner containing the ops |
| 68 | 69 | */ |
| 69 | 70 | struct phy_ops { |
| @@ -105,6 +106,7 @@ struct phy_ops { · 35 unmodified lines | ||
| 105 | 106 | union phy_configure_opts *opts); |
| 106 | 107 | int (*reset)(struct phy *phy); |
| 107 | 108 | int (*calibrate)(struct phy *phy); |
| 109 | + void (*release)(struct phy *phy); | |
| 108 | 110 | struct module *owner; |
| 109 | 111 | }; |
| 110 | 112 | |
| @@ -1543,10 +1543,10 @@ typedef void (*usb_complete_t)(struct urb *); · 1542 unmodified lines | ||
| 1543 | 1543 | struct urb { |
| 1544 | 1544 | /* private: usb core and host controller only fields in the urb */ |
| 1545 | 1545 | struct kref kref; /* reference count of the URB */ |
| 1546 | + int unlinked; /* unlink error code */ | |
| 1546 | 1547 | void *hcpriv; /* private data for host controller */ |
| 1547 | 1548 | atomic_t use_count; /* concurrent submissions counter */ |
| 1548 | 1549 | atomic_t reject; /* submissions will fail */ |
| 1549 | − int unlinked; /* unlink error code */ | |
| 1550 | 1550 | |
| 1551 | 1551 | /* public: documented fields in the urb that can be used by drivers */ |
| 1552 | 1552 | struct list_head urb_list; /* list head for use by the urb's |
| @@ -36,6 +36,14 @@ · 35 unmodified lines | ||
| 36 | 36 | #include <linux/device.h> |
| 37 | 37 | #include <uapi/linux/usb/ch9.h> |
| 38 | 38 | |
| 39 | +/** | |
| 40 | + * usb_ep_type_string() - Returns human readable-name of the endpoint type. | |
| 41 | + * @ep_type: The endpoint type to return human-readable name for. If it's not | |
| 42 | + * any of the types: USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT}, | |
| 43 | + * usually got by usb_endpoint_type(), the string 'unknown' will be returned. | |
| 44 | + */ | |
| 45 | +extern const char *usb_ep_type_string(int ep_type); | |
| 46 | + | |
| 39 | 47 | /** |
| 40 | 48 | * usb_speed_string() - Returns human readable-name of the speed. |
| 41 | 49 | * @speed: The speed to return human-readable name for. If it's not |
| @@ -98,6 +98,7 @@ struct usb_hcd { · 97 unmodified lines | ||
| 98 | 98 | #ifdef CONFIG_PM |
| 99 | 99 | struct work_struct wakeup_work; /* for remote wakeup */ |
| 100 | 100 | #endif |
| 101 | + struct work_struct died_work; /* for when the device dies */ | |
| 101 | 102 | |
| 102 | 103 | /* |
| 103 | 104 | * hardware info/state |
| @@ -652,11 +653,16 @@ extern wait_queue_head_t usb_kill_urb_queue; · 548 unmodified lines | ||
| 652 | 653 | #define usb_endpoint_out(ep_dir) (!((ep_dir) & USB_DIR_IN)) |
| 653 | 654 | |
| 654 | 655 | #ifdef CONFIG_PM |
| 656 | +extern unsigned usb_wakeup_enabled_descendants(struct usb_device *udev); | |
| 655 | 657 | extern void usb_root_hub_lost_power(struct usb_device *rhdev); |
| 656 | 658 | extern int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg); |
| 657 | 659 | extern int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg); |
| 658 | 660 | extern void usb_hcd_resume_root_hub(struct usb_hcd *hcd); |
| 659 | 661 | #else |
| 662 | +static inline unsigned usb_wakeup_enabled_descendants(struct usb_device *udev) | |
| 663 | +{ | |
| 664 | + return 0; | |
| 665 | +} | |
| 660 | 666 | static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd) |
| 661 | 667 | { |
| 662 | 668 | return; |
| @@ -23,11 +23,9 @@ · 22 unmodified lines | ||
| 23 | 23 | /* The maximum number of ports one device can grab at once */ |
| 24 | 24 | #define MAX_NUM_PORTS 16 |
| 25 | 25 | |
| 26 | −/* parity check flag */ | |
| 27 | −#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) | |
| 28 | − | |
| 29 | 26 | /* USB serial flags */ |
| 30 | 27 | #define USB_SERIAL_WRITE_BUSY 0 |
| 28 | +#define USB_SERIAL_THROTTLED 1 | |
| 31 | 29 | |
| 32 | 30 | /** |
| 33 | 31 | * usb_serial_port: structure for the specific ports of a device. |
| @@ -67,8 +65,6 @@ · 33 unmodified lines | ||
| 67 | 65 | * @flags: usb serial port flags |
| 68 | 66 | * @write_wait: a wait_queue_head_t used by the port. |
| 69 | 67 | * @work: work queue entry for the line discipline waking up. |
| 70 | − * @throttled: nonzero if the read urb is inactive to throttle the device | |
| 71 | − * @throttle_req: nonzero if the tty wants to throttle us | |
| 72 | 68 | * @dev: pointer to the serial device |
| 73 | 69 | * |
| 74 | 70 | * This structure is used by the usb-serial core and drivers for the specific |
| @@ -115,8 +111,6 @@ struct usb_serial_port { · 40 unmodified lines | ||
| 115 | 111 | unsigned long flags; |
| 116 | 112 | wait_queue_head_t write_wait; |
| 117 | 113 | struct work_struct work; |
| 118 | − char throttled; | |
| 119 | − char throttle_req; | |
| 120 | 114 | unsigned long sysrq; /* sysrq timeout */ |
| 121 | 115 | struct device dev; |
| 122 | 116 | }; |
| @@ -121,10 +121,10 @@ struct tcpc_config { · 120 unmodified lines | ||
| 121 | 121 | * with partner. |
| 122 | 122 | * @set_pd_rx: Called to enable or disable reception of PD messages |
| 123 | 123 | * @set_roles: Called to set power and data roles |
| 124 | − * @start_drp_toggling: | |
| 125 | − * Optional; if supported by hardware, called to start DRP | |
| 126 | − * toggling. DRP toggling is stopped automatically if | |
| 127 | − * a connection is established. | |
| 124 | + * @start_toggling: | |
| 125 | + * Optional; if supported by hardware, called to start dual-role | |
| 126 | + * toggling or single-role connection detection. Toggling stops | |
| 127 | + * automatically if a connection is established. | |
| 128 | 128 | * @try_role: Optional; called to set a preferred role |
| 129 | 129 | * @pd_transmit:Called to transmit PD message |
| 130 | 130 | * @mux: Pointer to multiplexer data |
| @@ -147,8 +147,9 @@ struct tcpc_dev { · 16 unmodified lines | ||
| 147 | 147 | int (*set_pd_rx)(struct tcpc_dev *dev, bool on); |
| 148 | 148 | int (*set_roles)(struct tcpc_dev *dev, bool attached, |
| 149 | 149 | enum typec_role role, enum typec_data_role data); |
| 150 | − int (*start_drp_toggling)(struct tcpc_dev *dev, | |
| 151 | − enum typec_cc_status cc); | |
| 150 | + int (*start_toggling)(struct tcpc_dev *dev, | |
| 151 | + enum typec_port_type port_type, | |
| 152 | + enum typec_cc_status cc); | |
| 152 | 153 | int (*try_role)(struct tcpc_dev *dev, int role); |
| 153 | 154 | int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type, |
| 154 | 155 | const struct pd_message *msg); |
| @@ -5,6 +5,11 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <linux/usb/typec_altmode.h> |
| 6 | 6 | |
| 7 | 7 | #define USB_TYPEC_DP_SID 0xff01 |
| 8 | +/* USB IF has not assigned a Standard ID (SID) for VirtualLink, | |
| 9 | + * so the manufacturers of VirtualLink adapters use their Vendor | |
| 10 | + * IDs as the SVID. | |
| 11 | + */ | |
| 12 | +#define USB_TYPEC_NVIDIA_VLINK_SID 0x955 /* NVIDIA VirtualLink */ | |
| 8 | 13 | #define USB_TYPEC_DP_MODE 1 |
| 9 | 14 | |
| 10 | 15 | /* |