mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
revert r18327, as it introduces serious issues on non-sd players (like ipods)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18370 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ca588afe51
commit
ab7cfd2855
1 changed files with 6 additions and 14 deletions
|
@ -235,7 +235,6 @@ static union {
|
||||||
struct command_status_wrapper* csw;
|
struct command_status_wrapper* csw;
|
||||||
char *max_lun;
|
char *max_lun;
|
||||||
} tb;
|
} tb;
|
||||||
unsigned char* cached_transfer_buffer;
|
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
unsigned int sector;
|
unsigned int sector;
|
||||||
|
@ -243,7 +242,6 @@ static struct {
|
||||||
unsigned int tag;
|
unsigned int tag;
|
||||||
unsigned int lun;
|
unsigned int lun;
|
||||||
unsigned char *data[2];
|
unsigned char *data[2];
|
||||||
unsigned char *cached_data[2];
|
|
||||||
unsigned char data_select;
|
unsigned char data_select;
|
||||||
unsigned int last_result;
|
unsigned int last_result;
|
||||||
} cur_cmd;
|
} cur_cmd;
|
||||||
|
@ -382,17 +380,14 @@ void usb_storage_init_connection(void)
|
||||||
static unsigned char _transfer_buffer[BUFFER_SIZE*2]
|
static unsigned char _transfer_buffer[BUFFER_SIZE*2]
|
||||||
USBDEVBSS_ATTR __attribute__((aligned(32)));
|
USBDEVBSS_ATTR __attribute__((aligned(32)));
|
||||||
tb.transfer_buffer = (void *)_transfer_buffer;
|
tb.transfer_buffer = (void *)_transfer_buffer;
|
||||||
cached_transfer_buffer = tb.transfer_buffer;
|
|
||||||
#else
|
#else
|
||||||
/* TODO : check if bufsize is at least 32K ? */
|
/* TODO : check if bufsize is at least 32K ? */
|
||||||
size_t bufsize;
|
size_t bufsize;
|
||||||
unsigned char * audio_buffer;
|
unsigned char * audio_buffer;
|
||||||
|
|
||||||
audio_buffer = audio_get_buffer(false,&bufsize);
|
audio_buffer = audio_get_buffer(false,&bufsize);
|
||||||
cached_transfer_buffer =
|
|
||||||
(void *)((unsigned int)(audio_buffer + 31) & 0xffffffe0);
|
|
||||||
tb.transfer_buffer =
|
tb.transfer_buffer =
|
||||||
(void *)UNCACHED_ADDR(cached_transfer_buffer);
|
(void *)UNCACHED_ADDR((unsigned int)(audio_buffer + 31) & 0xffffffe0);
|
||||||
invalidate_icache();
|
invalidate_icache();
|
||||||
#endif
|
#endif
|
||||||
usb_drv_recv(usb_endpoint, tb.transfer_buffer, 1024);
|
usb_drv_recv(usb_endpoint, tb.transfer_buffer, 1024);
|
||||||
|
@ -433,14 +428,11 @@ void usb_storage_transfer_complete(int ep,bool in,int status,int length)
|
||||||
|
|
||||||
/* Now write the data that just came in, while the host is
|
/* Now write the data that just came in, while the host is
|
||||||
sending the next bit */
|
sending the next bit */
|
||||||
#if CONFIG_CPU == IMX31L || CONFIG_USBOTG == USBOTG_ISP1583
|
|
||||||
invalidate_icache();
|
|
||||||
#endif
|
|
||||||
int result = ata_write_sectors(IF_MV2(cur_cmd.lun,)
|
int result = ata_write_sectors(IF_MV2(cur_cmd.lun,)
|
||||||
cur_cmd.sector,
|
cur_cmd.sector,
|
||||||
MIN(BUFFER_SIZE/SECTOR_SIZE,
|
MIN(BUFFER_SIZE/SECTOR_SIZE,
|
||||||
cur_cmd.count),
|
cur_cmd.count),
|
||||||
cur_cmd.cached_data[cur_cmd.data_select]);
|
cur_cmd.data[cur_cmd.data_select]);
|
||||||
if(result != 0) {
|
if(result != 0) {
|
||||||
send_csw(UMS_STATUS_FAIL);
|
send_csw(UMS_STATUS_FAIL);
|
||||||
cur_sense_data.sense_key=SENSE_MEDIUM_ERROR;
|
cur_sense_data.sense_key=SENSE_MEDIUM_ERROR;
|
||||||
|
@ -658,10 +650,6 @@ static void handle_scsi(struct command_block_wrapper* cbw)
|
||||||
|
|
||||||
cur_cmd.tag = cbw->tag;
|
cur_cmd.tag = cbw->tag;
|
||||||
cur_cmd.lun = lun;
|
cur_cmd.lun = lun;
|
||||||
cur_cmd.cached_data[0] = cached_transfer_buffer;
|
|
||||||
cur_cmd.cached_data[1] = &cached_transfer_buffer[BUFFER_SIZE];
|
|
||||||
cur_cmd.data[0] = tb.transfer_buffer;
|
|
||||||
cur_cmd.data[1] = &tb.transfer_buffer[BUFFER_SIZE];
|
|
||||||
|
|
||||||
switch (cbw->command_block[0]) {
|
switch (cbw->command_block[0]) {
|
||||||
case SCSI_TEST_UNIT_READY:
|
case SCSI_TEST_UNIT_READY:
|
||||||
|
@ -917,6 +905,8 @@ static void handle_scsi(struct command_block_wrapper* cbw)
|
||||||
cur_sense_data.ascq=0;
|
cur_sense_data.ascq=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
cur_cmd.data[0] = tb.transfer_buffer;
|
||||||
|
cur_cmd.data[1] = &tb.transfer_buffer[BUFFER_SIZE];
|
||||||
cur_cmd.data_select=0;
|
cur_cmd.data_select=0;
|
||||||
cur_cmd.sector = block_size_mult *
|
cur_cmd.sector = block_size_mult *
|
||||||
(cbw->command_block[2] << 24 |
|
(cbw->command_block[2] << 24 |
|
||||||
|
@ -954,6 +944,8 @@ static void handle_scsi(struct command_block_wrapper* cbw)
|
||||||
cur_sense_data.ascq=0;
|
cur_sense_data.ascq=0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
cur_cmd.data[0] = tb.transfer_buffer;
|
||||||
|
cur_cmd.data[1] = &tb.transfer_buffer[BUFFER_SIZE];
|
||||||
cur_cmd.data_select=0;
|
cur_cmd.data_select=0;
|
||||||
cur_cmd.sector = block_size_mult *
|
cur_cmd.sector = block_size_mult *
|
||||||
(cbw->command_block[2] << 24 |
|
(cbw->command_block[2] << 24 |
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue