Commit d6725169 authored by Sakari Ailus's avatar Sakari Ailus Committed by Greg Kroah-Hartman
Browse files

usb: core: Introduce usb_endpoint_is_hs_isoc_double()



Introduce usb_endpoint_is_hs_isoc_double() tell whether an endpoint
conforms to USB 2.0 Isochronous Double IN Bandwidth ECN.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250820143824.551777-7-sakari.ailus@linux.intel.com
parent 24b8762e
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -1139,6 +1139,25 @@ u32 usb_endpoint_max_periodic_payload(struct usb_device *udev,
}
EXPORT_SYMBOL_GPL(usb_endpoint_max_periodic_payload);

/**
 * usb_endpoint_is_hs_isoc_double - Tell whether an endpoint uses USB 2
 *                                  Isochronous Double IN Bandwidth
 * @udev: The USB device
 * @ep: The endpoint
 *
 * Returns: true if an endpoint @ep conforms to USB 2 Isochronous Double IN
 * Bandwidth ECN, false otherwise.
 */
bool usb_endpoint_is_hs_isoc_double(struct usb_device *udev,
				    const struct usb_host_endpoint *ep)
{
	return ep->eusb2_isoc_ep_comp.bDescriptorType &&
		le16_to_cpu(udev->descriptor.bcdUSB) == 0x220 &&
		usb_endpoint_is_isoc_in(&ep->desc) &&
		!le16_to_cpu(ep->desc.wMaxPacketSize);
}
EXPORT_SYMBOL_GPL(usb_endpoint_is_hs_isoc_double);

/*
 * Notifications of device and interface registration
 */
+3 −0
Original line number Diff line number Diff line
@@ -2042,6 +2042,9 @@ static inline u16 usb_maxpacket(struct usb_device *udev, int pipe)
u32 usb_endpoint_max_periodic_payload(struct usb_device *udev,
				      const struct usb_host_endpoint *ep);

bool usb_endpoint_is_hs_isoc_double(struct usb_device *udev,
				    const struct usb_host_endpoint *ep);

/* translate USB error codes to codes user space understands */
static inline int usb_translate_errors(int error_code)
{