summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/usb_storage.c')
-rw-r--r--firmware/usbstack/usb_storage.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index 8a4915123c..a70681d3e0 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -293,6 +293,7 @@ static bool check_disk_present(IF_MV_NONVOID(int volume))
293#endif 293#endif
294} 294}
295 295
296#if 0
296static void try_release_ata(void) 297static void try_release_ata(void)
297{ 298{
298 /* Check if there is a connected drive left. If not, 299 /* Check if there is a connected drive left. If not,
@@ -310,6 +311,7 @@ static void try_release_ata(void)
310 usb_release_exclusive_ata(); 311 usb_release_exclusive_ata();
311 } 312 }
312} 313}
314#endif
313 315
314#ifdef HAVE_HOTSWAP 316#ifdef HAVE_HOTSWAP
315void usb_storage_notify_hotswap(int volume,bool inserted) 317void usb_storage_notify_hotswap(int volume,bool inserted)
@@ -320,9 +322,7 @@ void usb_storage_notify_hotswap(int volume,bool inserted)
320 } 322 }
321 else { 323 else {
322 ejected[volume] = true; 324 ejected[volume] = true;
323 try_release_ata();
324 } 325 }
325
326} 326}
327#endif 327#endif
328 328
@@ -334,7 +334,6 @@ void usb_storage_reconnect(void)
334 for(i=0;i<NUM_VOLUMES;i++) 334 for(i=0;i<NUM_VOLUMES;i++)
335 ejected[i] = !check_disk_present(IF_MV(i)); 335 ejected[i] = !check_disk_present(IF_MV(i));
336 logf("%s", __func__); 336 logf("%s", __func__);
337 usb_request_exclusive_ata();
338 } 337 }
339} 338}
340 339
@@ -682,7 +681,6 @@ static void handle_scsi(struct command_block_wrapper* cbw)
682#ifdef HAVE_HOTSWAP 681#ifdef HAVE_HOTSWAP
683 if(storage_removable(lun) && !storage_present(lun)) { 682 if(storage_removable(lun) && !storage_present(lun)) {
684 ejected[lun] = true; 683 ejected[lun] = true;
685 try_release_ata();
686 } 684 }
687#endif 685#endif
688 686
@@ -699,7 +697,7 @@ static void handle_scsi(struct command_block_wrapper* cbw)
699 switch (cbw->command_block[0]) { 697 switch (cbw->command_block[0]) {
700 case SCSI_TEST_UNIT_READY: 698 case SCSI_TEST_UNIT_READY:
701 logf("scsi test_unit_ready %d",lun); 699 logf("scsi test_unit_ready %d",lun);
702 if(!usb_exclusive_ata()) { 700 if(!usb_exclusive_storage()) {
703 send_csw(UMS_STATUS_FAIL); 701 send_csw(UMS_STATUS_FAIL);
704 cur_sense_data.sense_key=SENSE_NOT_READY; 702 cur_sense_data.sense_key=SENSE_NOT_READY;
705 cur_sense_data.asc=ASC_MEDIUM_NOT_PRESENT; 703 cur_sense_data.asc=ASC_MEDIUM_NOT_PRESENT;
@@ -885,7 +883,6 @@ static void handle_scsi(struct command_block_wrapper* cbw)
885 { 883 {
886 logf("scsi eject"); 884 logf("scsi eject");
887 ejected[lun]=true; 885 ejected[lun]=true;
888 try_release_ata();
889 } 886 }
890 } 887 }
891 } 888 }