diff --git a/cmd/usb.c b/cmd/usb.c
index 9ed5dc61eab031fa5f78d34340a272f50ac5c447..97dd6f0099dc24b24d66f8cd9dd348d7a79b65d3 100644
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -541,7 +541,7 @@ static int do_usbboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 static int do_usb_stop_keyboard(int force)
 {
-#ifdef CONFIG_USB_KEYBOARD
+#if !defined CONFIG_DM_USB && defined CONFIG_USB_KEYBOARD
 	if (usb_kbd_deregister(force) != 0) {
 		printf("USB not stopped: usbkbd still using USB\n");
 		return 1;
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
index d84865fbbe26bb337d9453a86c03d8dbb06ae43d..97f79f8eb8c10a966b9b267d9f964ebff60102fd 100644
--- a/common/usb_kbd.c
+++ b/common/usb_kbd.c
@@ -566,7 +566,6 @@ int drv_usb_kbd_init(void)
 	/* No USB Keyboard found */
 	return -1;
 }
-#endif
 
 /* Deregister the keyboard. */
 int usb_kbd_deregister(int force)
@@ -599,6 +598,8 @@ int usb_kbd_deregister(int force)
 #endif
 }
 
+#endif
+
 #ifdef CONFIG_DM_USB
 
 static int usb_kbd_probe(struct udevice *dev)