diff --git a/firmware/ice40-riscv/icE1usb/Makefile b/firmware/ice40-riscv/icE1usb/Makefile
index 0022bd9..1240a9f 100644
--- a/firmware/ice40-riscv/icE1usb/Makefile
+++ b/firmware/ice40-riscv/icE1usb/Makefile
@@ -50,6 +50,7 @@
 	ice1usb_proto.h \
 	misc.h \
 	usb_desc_ids.h \
+	usb_dev.h \
 	usb_e1.h \
 	usb_str_app.gen.h \
 	$(NULL)
@@ -59,6 +60,7 @@
 	fw_app.c \
 	misc.c \
 	usb_desc_app.c \
+	usb_dev.c \
 	usb_e1.c \
 	$(NULL)
 
diff --git a/firmware/ice40-riscv/icE1usb/fw_app.c b/firmware/ice40-riscv/icE1usb/fw_app.c
index 3fbec7c..41ef3ab 100644
--- a/firmware/ice40-riscv/icE1usb/fw_app.c
+++ b/firmware/ice40-riscv/icE1usb/fw_app.c
@@ -18,6 +18,7 @@
 #include "misc.h"
 #include "mini-printf.h"
 #include "spi.h"
+#include "usb_dev.h"
 #include "usb_e1.h"
 #include "utils.h"
 
@@ -97,6 +98,7 @@
 
 	/* Enable USB directly */
 	usb_init(&app_stack_desc);
+	usb_dev_init();
 	usb_dfu_rt_init();
 	usb_e1_init();
 
diff --git a/firmware/ice40-riscv/icE1usb/usb_dev.c b/firmware/ice40-riscv/icE1usb/usb_dev.c
new file mode 100644
index 0000000..1187047
--- /dev/null
+++ b/firmware/ice40-riscv/icE1usb/usb_dev.c
@@ -0,0 +1,48 @@
+/*
+ * usb_dev.c
+ *
+ * Copyright (C) 2019-2022  Sylvain Munaut <tnt@246tNt.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#include <stdint.h>
+
+#include <no2usb/usb.h>
+#include <no2usb/usb_proto.h>
+
+#include "console.h"
+#include "misc.h"
+
+#include "ice1usb_proto.h"
+
+
+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;
+
+	/* Dispatch / Handle */
+	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;
+}
+
+
+static struct usb_fn_drv _dev_drv = {
+	.ctrl_req = _usb_dev_ctrl_req,
+};
+
+void
+usb_dev_init(void)
+{
+	usb_register_function_driver(&_dev_drv);
+}
diff --git a/firmware/ice40-riscv/icE1usb/usb_dev.h b/firmware/ice40-riscv/icE1usb/usb_dev.h
new file mode 100644
index 0000000..ca32a46
--- /dev/null
+++ b/firmware/ice40-riscv/icE1usb/usb_dev.h
@@ -0,0 +1,10 @@
+/*
+ * usb_dev.h
+ *
+ * Copyright (C) 2019-2022  Sylvain Munaut <tnt@246tNt.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#pragma once
+
+void usb_dev_init(void);
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,
