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 | * @set_mode: set the mode of the phy | 64 | * @set_mode: set the mode of the phy |
| 65 | * @reset: resetting the phy | 65 | * @reset: resetting the phy |
| 66 | * @calibrate: calibrate the phy | 66 | * @calibrate: calibrate the phy |
| 67 | * @release: ops to be performed while the consumer relinquishes the PHY | ||
| 67 | * @owner: the module owner containing the ops | 68 | * @owner: the module owner containing the ops |
| 68 | */ | 69 | */ |
| 69 | struct phy_ops { | 70 | struct phy_ops { |
| @@ -105,6 +106,7 @@ struct phy_ops { · 35 unmodified lines | |||
| 105 | union phy_configure_opts *opts); | 106 | union phy_configure_opts *opts); |
| 106 | int (*reset)(struct phy *phy); | 107 | int (*reset)(struct phy *phy); |
| 107 | int (*calibrate)(struct phy *phy); | 108 | int (*calibrate)(struct phy *phy); |
| 109 | void (*release)(struct phy *phy); | ||
| 108 | struct module *owner; | 110 | struct module *owner; |
| 109 | }; | 111 | }; |
| 110 | 112 | ||
| @@ -1543,10 +1543,10 @@ typedef void (*usb_complete_t)(struct urb *); · 1542 unmodified lines | |||
| 1543 | struct urb { | 1543 | struct urb { |
| 1544 | /* private: usb core and host controller only fields in the urb */ | 1544 | /* private: usb core and host controller only fields in the urb */ |
| 1545 | struct kref kref; /* reference count of the URB */ | 1545 | struct kref kref; /* reference count of the URB */ |
| 1546 | int unlinked; /* unlink error code */ | ||
| 1546 | void *hcpriv; /* private data for host controller */ | 1547 | void *hcpriv; /* private data for host controller */ |
| 1547 | atomic_t use_count; /* concurrent submissions counter */ | 1548 | atomic_t use_count; /* concurrent submissions counter */ |
| 1548 | atomic_t reject; /* submissions will fail */ | 1549 | atomic_t reject; /* submissions will fail */ |
| 1549 | int unlinked; /* unlink error code */ | ||
| 1550 | 1550 | ||
| 1551 | /* public: documented fields in the urb that can be used by drivers */ | 1551 | /* public: documented fields in the urb that can be used by drivers */ |
| 1552 | struct list_head urb_list; /* list head for use by the urb's | 1552 | struct list_head urb_list; /* list head for use by the urb's |
| @@ -36,6 +36,14 @@ · 35 unmodified lines | |||
| 36 | #include <linux/device.h> | 36 | #include <linux/device.h> |
| 37 | #include <uapi/linux/usb/ch9.h> | 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 | * usb_speed_string() - Returns human readable-name of the speed. | 48 | * usb_speed_string() - Returns human readable-name of the speed. |
| 41 | * @speed: The speed to return human-readable name for. If it's not | 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 | #ifdef CONFIG_PM | 98 | #ifdef CONFIG_PM |
| 99 | struct work_struct wakeup_work; /* for remote wakeup */ | 99 | struct work_struct wakeup_work; /* for remote wakeup */ |
| 100 | #endif | 100 | #endif |
| 101 | struct work_struct died_work; /* for when the device dies */ | ||
| 101 | 102 | ||
| 102 | /* | 103 | /* |
| 103 | * hardware info/state | 104 | * hardware info/state |
| @@ -652,11 +653,16 @@ extern wait_queue_head_t usb_kill_urb_queue; · 548 unmodified lines | |||
| 652 | #define usb_endpoint_out(ep_dir) (!((ep_dir) & USB_DIR_IN)) | 653 | #define usb_endpoint_out(ep_dir) (!((ep_dir) & USB_DIR_IN)) |
| 653 | 654 | ||
| 654 | #ifdef CONFIG_PM | 655 | #ifdef CONFIG_PM |
| 656 | extern unsigned usb_wakeup_enabled_descendants(struct usb_device *udev); | ||
| 655 | extern void usb_root_hub_lost_power(struct usb_device *rhdev); | 657 | extern void usb_root_hub_lost_power(struct usb_device *rhdev); |
| 656 | extern int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg); | 658 | extern int hcd_bus_suspend(struct usb_device *rhdev, pm_message_t msg); |
| 657 | extern int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg); | 659 | extern int hcd_bus_resume(struct usb_device *rhdev, pm_message_t msg); |
| 658 | extern void usb_hcd_resume_root_hub(struct usb_hcd *hcd); | 660 | extern void usb_hcd_resume_root_hub(struct usb_hcd *hcd); |
| 659 | #else | 661 | #else |
| 662 | static inline unsigned usb_wakeup_enabled_descendants(struct usb_device *udev) | ||
| 663 | { | ||
| 664 | return 0; | ||
| 665 | } | ||
| 660 | static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd) | 666 | static inline void usb_hcd_resume_root_hub(struct usb_hcd *hcd) |
| 661 | { | 667 | { |
| 662 | return; | 668 | return; |
| @@ -23,11 +23,9 @@ · 22 unmodified lines | |||
| 23 | /* The maximum number of ports one device can grab at once */ | 23 | /* The maximum number of ports one device can grab at once */ |
| 24 | #define MAX_NUM_PORTS 16 | 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 | /* USB serial flags */ | 26 | /* USB serial flags */ |
| 30 | #define USB_SERIAL_WRITE_BUSY 0 | 27 | #define USB_SERIAL_WRITE_BUSY 0 |
| 28 | #define USB_SERIAL_THROTTLED 1 | ||
| 31 | 29 | ||
| 32 | /** | 30 | /** |
| 33 | * usb_serial_port: structure for the specific ports of a device. | 31 | * usb_serial_port: structure for the specific ports of a device. |
| @@ -67,8 +65,6 @@ · 33 unmodified lines | |||
| 67 | * @flags: usb serial port flags | 65 | * @flags: usb serial port flags |
| 68 | * @write_wait: a wait_queue_head_t used by the port. | 66 | * @write_wait: a wait_queue_head_t used by the port. |
| 69 | * @work: work queue entry for the line discipline waking up. | 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 | * @dev: pointer to the serial device | 68 | * @dev: pointer to the serial device |
| 73 | * | 69 | * |
| 74 | * This structure is used by the usb-serial core and drivers for the specific | 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 | unsigned long flags; | 111 | unsigned long flags; |
| 116 | wait_queue_head_t write_wait; | 112 | wait_queue_head_t write_wait; |
| 117 | struct work_struct work; | 113 | struct work_struct work; |
| 118 | char throttled; | ||
| 119 | char throttle_req; | ||
| 120 | unsigned long sysrq; /* sysrq timeout */ | 114 | unsigned long sysrq; /* sysrq timeout */ |
| 121 | struct device dev; | 115 | struct device dev; |
| 122 | }; | 116 | }; |
| @@ -121,10 +121,10 @@ struct tcpc_config { · 120 unmodified lines | |||
| 121 | * with partner. | 121 | * with partner. |
| 122 | * @set_pd_rx: Called to enable or disable reception of PD messages | 122 | * @set_pd_rx: Called to enable or disable reception of PD messages |
| 123 | * @set_roles: Called to set power and data roles | 123 | * @set_roles: Called to set power and data roles |
| 124 | * @start_drp_toggling: | 124 | * @start_toggling: |
| 125 | * Optional; if supported by hardware, called to start DRP | 125 | * Optional; if supported by hardware, called to start dual-role |
| 126 | * toggling. DRP toggling is stopped automatically if | 126 | * toggling or single-role connection detection. Toggling stops |
| 127 | * a connection is established. | 127 | * automatically if a connection is established. |
| 128 | * @try_role: Optional; called to set a preferred role | 128 | * @try_role: Optional; called to set a preferred role |
| 129 | * @pd_transmit:Called to transmit PD message | 129 | * @pd_transmit:Called to transmit PD message |
| 130 | * @mux: Pointer to multiplexer data | 130 | * @mux: Pointer to multiplexer data |
| @@ -147,8 +147,9 @@ struct tcpc_dev { · 16 unmodified lines | |||
| 147 | int (*set_pd_rx)(struct tcpc_dev *dev, bool on); | 147 | int (*set_pd_rx)(struct tcpc_dev *dev, bool on); |
| 148 | int (*set_roles)(struct tcpc_dev *dev, bool attached, | 148 | int (*set_roles)(struct tcpc_dev *dev, bool attached, |
| 149 | enum typec_role role, enum typec_data_role data); | 149 | enum typec_role role, enum typec_data_role data); |
| 150 | int (*start_drp_toggling)(struct tcpc_dev *dev, | 150 | int (*start_toggling)(struct tcpc_dev *dev, |
| 151 | enum typec_cc_status cc); | 151 | enum typec_port_type port_type, |
| 152 | enum typec_cc_status cc); | ||
| 152 | int (*try_role)(struct tcpc_dev *dev, int role); | 153 | int (*try_role)(struct tcpc_dev *dev, int role); |
| 153 | int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type, | 154 | int (*pd_transmit)(struct tcpc_dev *dev, enum tcpm_transmit_type type, |
| 154 | const struct pd_message *msg); | 155 | const struct pd_message *msg); |
| @@ -5,6 +5,11 @@ · 4 unmodified lines | |||
| 5 | #include <linux/usb/typec_altmode.h> | 5 | #include <linux/usb/typec_altmode.h> |
| 6 | 6 | ||
| 7 | #define USB_TYPEC_DP_SID 0xff01 | 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 | #define USB_TYPEC_DP_MODE 1 | 13 | #define USB_TYPEC_DP_MODE 1 |
| 9 | 14 | ||
| 10 | /* | 15 | /* |