usb: Add get_ext_port_status helper function

usbd_req_get_ext_port_status() wraps the Get Extended Port Status
request.

Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D57201
This commit is contained in:
ShengYi Hung committed 2026-11-02 14:02:11 +11:00
1 parent 1fe552b036
commit 1928debe1a
2 files changed
+25

No files matched your search

+23
View File
@@ -1624,6 +1624,29 @@ usbd_req_get_port_status(struct usb_device *udev, struct mtx *mtx,
return (usbd_do_request_flags(udev, mtx, &req, ps, 0, NULL, 1000));
}
/*------------------------------------------------------------------------*
* usbd_req_get_ext_port_status
*
* Returns:
* 0: Success
* Else: Failure
*------------------------------------------------------------------------*/
usb_error_t
usbd_req_get_ext_port_status(struct usb_device *udev, struct mtx *mtx,
struct usb_ext_status *ps, uint8_t port)
{
struct usb_device_request req;
req.bmRequestType = UT_READ_CLASS_OTHER;
req.bRequest = UR_GET_STATUS;
USETW(req.wValue, 2);
req.wIndex[0] = port;
req.wIndex[1] = 0;
USETW(req.wLength, sizeof(*ps));
return (usbd_do_request_flags(udev, mtx, &req, ps, 0, NULL, 1000));
}
/*------------------------------------------------------------------------*
* usbd_req_clear_hub_feature
*
+2
View File
@@ -64,6 +64,8 @@ usb_error_t usbd_req_get_hub_status(struct usb_device *udev, struct mtx *mtx,
struct usb_hub_status *st);
usb_error_t usbd_req_get_port_status(struct usb_device *udev, struct mtx *mtx,
struct usb_port_status *ps, uint8_t port);
usb_error_t usbd_req_get_ext_port_status(struct usb_device *udev,
struct mtx *mtx, struct usb_ext_status *ps, uint8_t port);
usb_error_t usbd_req_reset_port(struct usb_device *udev, struct mtx *mtx,
uint8_t port);
usb_error_t usbd_req_warm_reset_port(struct usb_device *udev,