summaryrefslogtreecommitdiff
path: root/firmware/usbstack/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/drivers')
-rw-r--r--firmware/usbstack/drivers/device/usb_storage.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/firmware/usbstack/drivers/device/usb_storage.c b/firmware/usbstack/drivers/device/usb_storage.c
index 8c96914270..49644e5805 100644
--- a/firmware/usbstack/drivers/device/usb_storage.c
+++ b/firmware/usbstack/drivers/device/usb_storage.c
@@ -151,6 +151,7 @@ struct device {
151 struct usb_ep* in; 151 struct usb_ep* in;
152 struct usb_ep* out; 152 struct usb_ep* out;
153 struct usb_ep* intr; 153 struct usb_ep* intr;
154 uint32_t used_config;
154 struct usb_descriptor_header** descriptors; 155 struct usb_descriptor_header** descriptors;
155}; 156};
156 157
@@ -253,6 +254,12 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request)
253 ret = set_config(request->wValue); 254 ret = set_config(request->wValue);
254 break; 255 break;
255 256
257 case USB_REQ_GET_CONFIGURATION:
258 logf("usb storage: get configuration");
259 ret = 1;
260 res.buf = &dev.used_config;
261 break;
262
256 case USB_REQ_SET_INTERFACE: 263 case USB_REQ_SET_INTERFACE:
257 logf("usb storage: set interface"); 264 logf("usb storage: set interface");
258 ret = 0; 265 ret = 0;
@@ -326,6 +333,8 @@ static int set_config(int config)
326 logf("setup %s", dev.out->name); 333 logf("setup %s", dev.out->name);
327 ops->enable(dev.out, (struct usb_endpoint_descriptor*)dev.descriptors[2]); 334 ops->enable(dev.out, (struct usb_endpoint_descriptor*)dev.descriptors[2]);
328 335
336 dev.used_config = config;
337
329 /* setup buffers */ 338 /* setup buffers */
330 339
331 return 0; 340 return 0;