diff --git a/nx/include/switch/services/usb.h b/nx/include/switch/services/usb.h index f58e8db4..9482e73a 100644 --- a/nx/include/switch/services/usb.h +++ b/nx/include/switch/services/usb.h @@ -121,9 +121,9 @@ typedef enum { } UsbComplexId; typedef enum { - UsbDeviceSpeed_Full = 0x2, - UsbDeviceSpeed_High = 0x3, - UsbDeviceSpeed_Super = 0x4, + UsbDeviceSpeed_Full = 0x2, // USB 1.1 Full Speed + UsbDeviceSpeed_High = 0x3, // USB 2.0 High Speed + UsbDeviceSpeed_Super = 0x4, // USB 3.0 Super Speed } UsbDeviceSpeed; /// Imported from libusb, with changed names. @@ -206,9 +206,6 @@ Result usbDsWaitReady(u64 timeout); Result usbDsParseReportData(UsbDsReportData *reportdata, u32 urbId, u32 *requestedSize, u32 *transferredSize); /// IDsService -// Do not provide API access to these functions, as they're handled by usbDsInitialize(). -// Result usbDsBindDevice(UsbComplexId complexId); -// Result usbDsBindClientProcess(Handle prochandle); Event* usbDsGetStateChangeEvent(void); Result usbDsGetState(u32* out); diff --git a/nx/source/runtime/devices/usb_comms.c b/nx/source/runtime/devices/usb_comms.c index 47839afb..bbcc92a9 100644 --- a/nx/source/runtime/devices/usb_comms.c +++ b/nx/source/runtime/devices/usb_comms.c @@ -45,7 +45,6 @@ Result usbCommsInitializeEx(u32 num_interfaces) rc = usbDsInitialize(); if (R_SUCCEEDED(rc)) { - if (kernelAbove500()) { u8 iManufacturer, iProduct, iSerialNumber; static const u16 supported_langs[1] = {0x0409}; @@ -75,6 +74,7 @@ Result usbCommsInitializeEx(u32 num_interfaces) .iSerialNumber = iSerialNumber, .bNumConfigurations = 0x01 }; + // Full Speed is USB 1.1 if (R_SUCCEEDED(rc)) rc = usbDsSetUsbDeviceDescriptor(UsbDeviceSpeed_Full, &device_descriptor); // High Speed is USB 2.0 diff --git a/nx/source/services/usb.c b/nx/source/services/usb.c index 4f2be5a7..0e2869b9 100644 --- a/nx/source/services/usb.c +++ b/nx/source/services/usb.c @@ -42,7 +42,7 @@ Result usbDsInitialize(void) // GetStateChangeEvent if (R_SUCCEEDED(rc)) rc = _usbDsGetEvent(&g_usbDsSrv, &g_usbDsStateChangeEvent, 3); - + // Result code doesn't matter here, users can call themselves later, too. This prevents foot shooting. if (R_SUCCEEDED(rc)) usbDsClearDeviceData();