diff options
Diffstat (limited to 'firmware/usbstack/usb_core.c')
-rw-r--r-- | firmware/usbstack/usb_core.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c index e0aaa9b2f4..aa4686500d 100644 --- a/firmware/usbstack/usb_core.c +++ b/firmware/usbstack/usb_core.c | |||
@@ -199,7 +199,10 @@ static struct usb_class_driver drivers[USB_NUM_DRIVERS] = | |||
199 | .init = usb_storage_init, | 199 | .init = usb_storage_init, |
200 | .disconnect = NULL, | 200 | .disconnect = NULL, |
201 | .transfer_complete = usb_storage_transfer_complete, | 201 | .transfer_complete = usb_storage_transfer_complete, |
202 | .control_request = usb_storage_control_request | 202 | .control_request = usb_storage_control_request, |
203 | #ifdef HAVE_HOTSWAP | ||
204 | .notify_hotswap = usb_storage_notify_hotswap, | ||
205 | #endif | ||
203 | }, | 206 | }, |
204 | #endif | 207 | #endif |
205 | #ifdef USB_SERIAL | 208 | #ifdef USB_SERIAL |
@@ -213,7 +216,10 @@ static struct usb_class_driver drivers[USB_NUM_DRIVERS] = | |||
213 | .init = usb_serial_init, | 216 | .init = usb_serial_init, |
214 | .disconnect = usb_serial_disconnect, | 217 | .disconnect = usb_serial_disconnect, |
215 | .transfer_complete = usb_serial_transfer_complete, | 218 | .transfer_complete = usb_serial_transfer_complete, |
216 | .control_request = usb_serial_control_request | 219 | .control_request = usb_serial_control_request, |
220 | #ifdef HAVE_HOTSWAP | ||
221 | .notify_hotswap = NULL, | ||
222 | #endif | ||
217 | }, | 223 | }, |
218 | #endif | 224 | #endif |
219 | #ifdef USB_CHARGING_ONLY | 225 | #ifdef USB_CHARGING_ONLY |
@@ -227,7 +233,10 @@ static struct usb_class_driver drivers[USB_NUM_DRIVERS] = | |||
227 | .init = NULL, | 233 | .init = NULL, |
228 | .disconnect = NULL, | 234 | .disconnect = NULL, |
229 | .transfer_complete = NULL, | 235 | .transfer_complete = NULL, |
230 | .control_request = NULL | 236 | .control_request = NULL, |
237 | #ifdef HAVE_HOTSWAP | ||
238 | .notify_hotswap = NULL, | ||
239 | #endif | ||
231 | }, | 240 | }, |
232 | #endif | 241 | #endif |
233 | }; | 242 | }; |
@@ -386,6 +395,20 @@ bool usb_core_driver_enabled(int driver) | |||
386 | return drivers[driver].enabled; | 395 | return drivers[driver].enabled; |
387 | } | 396 | } |
388 | 397 | ||
398 | #ifdef HAVE_HOTSWAP | ||
399 | void usb_core_hotswap_event(int volume,bool inserted) | ||
400 | { | ||
401 | int i; | ||
402 | for(i=0;i<USB_NUM_DRIVERS;i++) { | ||
403 | if(drivers[i].enabled && | ||
404 | drivers[i].notify_hotswap!=NULL) | ||
405 | { | ||
406 | drivers[i].notify_hotswap(volume,inserted); | ||
407 | } | ||
408 | } | ||
409 | } | ||
410 | #endif | ||
411 | |||
389 | static void usb_core_set_serial_function_id(void) | 412 | static void usb_core_set_serial_function_id(void) |
390 | { | 413 | { |
391 | int id = 0; | 414 | int id = 0; |