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,
