laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-e1-hardware/+/30064
)
Change subject: icE1usb fw: Process read/write device requests separately
......................................................................
icE1usb fw: Process read/write device requests separately
Signed-off-by: Sylvain Munaut <tnt(a)246tNt.com>
Change-Id: I9a8fb3d6712c83f59e5e4cba8e0bcbd4d4f95eee
---
M firmware/ice40-riscv/icE1usb/usb_dev.c
1 file changed, 25 insertions(+), 5 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/firmware/ice40-riscv/icE1usb/usb_dev.c
b/firmware/ice40-riscv/icE1usb/usb_dev.c
index e19d9a0..e834142 100644
--- a/firmware/ice40-riscv/icE1usb/usb_dev.c
+++ b/firmware/ice40-riscv/icE1usb/usb_dev.c
@@ -21,13 +21,19 @@
static enum usb_fnd_resp
-_usb_dev_ctrl_req(struct usb_ctrl_req *req, struct usb_xfer *xfer)
+_usb_dev_ctrl_req_write(struct usb_ctrl_req *req, struct usb_xfer *xfer)
{
- /* Check it's a device-wide vendor request */
- if (USB_REQ_TYPE_RCPT(req) != (USB_REQ_TYPE_VENDOR | USB_REQ_RCPT_DEV))
- return USB_FND_CONTINUE;
+ switch (req->bRequest) {
+ default:
+ return USB_FND_ERROR;
+ }
- /* Dispatch / Handle */
+ return USB_FND_SUCCESS;
+}
+
+static enum usb_fnd_resp
+_usb_dev_ctrl_req_read(struct usb_ctrl_req *req, struct usb_xfer *xfer)
+{
switch (req->bRequest) {
case ICE1USB_DEV_GET_CAPABILITIES:
xfer->data[0] = (1 << ICE1USB_DEV_CAP_GPSDO);
@@ -44,6 +50,20 @@
return USB_FND_SUCCESS;
}
+static enum usb_fnd_resp
+_usb_dev_ctrl_req(struct usb_ctrl_req *req, struct usb_xfer *xfer)
+{
+ /* Check it's a device-wide vendor request */
+ if (USB_REQ_TYPE_RCPT(req) != (USB_REQ_TYPE_VENDOR | USB_REQ_RCPT_DEV))
+ return USB_FND_CONTINUE;
+
+ /* Read / Write dispatch */
+ if (USB_REQ_IS_READ(req))
+ return _usb_dev_ctrl_req_read(req, xfer);
+ else
+ return _usb_dev_ctrl_req_write(req, xfer);
+}
+
static struct usb_fn_drv _dev_drv = {
.ctrl_req = _usb_dev_ctrl_req,
--
To view, visit
https://gerrit.osmocom.org/c/osmo-e1-hardware/+/30064
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-e1-hardware
Gerrit-Branch: master
Gerrit-Change-Id: I9a8fb3d6712c83f59e5e4cba8e0bcbd4d4f95eee
Gerrit-Change-Number: 30064
Gerrit-PatchSet: 1
Gerrit-Owner: tnt <tnt(a)246tNt.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged