icE1usb fw: Move handling of device-wide request in usb_dev.c
We have upcoming ones not related to the E1 interface, so really
it make more sense to not have those in usb_e1.c
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I686916bb2b2cb90e94ac9c595deab19f189fcd49
diff --git a/firmware/ice40-riscv/icE1usb/usb_e1.c b/firmware/ice40-riscv/icE1usb/usb_e1.c
index 5d32924..6d0d3cf 100644
--- a/firmware/ice40-riscv/icE1usb/usb_e1.c
+++ b/firmware/ice40-riscv/icE1usb/usb_e1.c
@@ -371,13 +371,16 @@
return true;
}
-/* per-interface requests */
static enum usb_fnd_resp
-_e1_ctrl_req_intf(struct usb_ctrl_req *req, struct usb_xfer *xfer)
+_e1_ctrl_req(struct usb_ctrl_req *req, struct usb_xfer *xfer)
{
struct usb_e1_state *usb_e1;
int port;
+ /* Check it's for an E1 interface */
+ if (USB_REQ_TYPE_RCPT(req) != (USB_REQ_TYPE_VENDOR | USB_REQ_RCPT_INTF))
+ return USB_FND_CONTINUE;
+
/* Get matching port (if any) */
port = _ifnum2port(req->wIndex);
if (port < 0)
@@ -424,42 +427,6 @@
return USB_FND_SUCCESS;
}
-/* device-global requests */
-static enum usb_fnd_resp
-_e1_ctrl_req_dev(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);
- xfer->len = 1;
- break;
- default:
- return USB_FND_ERROR;
- }
-
- return USB_FND_SUCCESS;
-}
-
-
-/* USB host issues a control request to us */
-static enum usb_fnd_resp
-_e1_ctrl_req(struct usb_ctrl_req *req, struct usb_xfer *xfer)
-{
- if (USB_REQ_TYPE(req) != USB_REQ_TYPE_VENDOR)
- return USB_FND_CONTINUE;
-
- switch (USB_REQ_RCPT(req)) {
- case USB_REQ_RCPT_DEV:
- return _e1_ctrl_req_dev(req, xfer);
- case USB_REQ_RCPT_INTF:
- return _e1_ctrl_req_intf(req, xfer);
- case USB_REQ_RCPT_EP:
- case USB_REQ_RCPT_OTHER:
- default:
- return USB_FND_ERROR;
- }
-}
-
static struct usb_fn_drv _e1_drv = {
.set_conf = _e1_set_conf,