git: 1928debe1a47 - main - usb: Add get_ext_port_status helper function
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 02 Nov 2026 03:02:50 UTC
The branch main has been updated by aokblast:
URL: https://cgit.FreeBSD.org/src/commit/?id=1928debe1a47e3a7411a1c09e46ea910f73950d2
commit 1928debe1a47e3a7411a1c09e46ea910f73950d2
Author: ShengYi Hung <aokblast@FreeBSD.org>
AuthorDate: 2026-05-22 16:23:07 +0000
Commit: ShengYi Hung <aokblast@FreeBSD.org>
CommitDate: 2026-11-02 03:02:11 +0000
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
---
sys/dev/usb/usb_request.c | 23 +++++++++++++++++++++++
sys/dev/usb/usb_request.h | 2 ++
2 files changed, 25 insertions(+)
diff --git a/sys/dev/usb/usb_request.c b/sys/dev/usb/usb_request.c
index 879d57f00eec..df6dadae541b 100644
--- a/sys/dev/usb/usb_request.c
+++ b/sys/dev/usb/usb_request.c
@@ -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
*
diff --git a/sys/dev/usb/usb_request.h b/sys/dev/usb/usb_request.h
index 56a4003e8bae..f7ccd84eb69c 100644
--- a/sys/dev/usb/usb_request.h
+++ b/sys/dev/usb/usb_request.h
@@ -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,