|
|
@ -613,7 +613,8 @@ void mmc_close(struct burn_drive *d, int session, int track) |
|
|
|
scsi_init_command(c, MMC_CLOSE, sizeof(MMC_CLOSE)); |
|
|
|
c->retry = 1; |
|
|
|
|
|
|
|
c->opcode[1] |= 1; /* ts A70918 : Immed */ |
|
|
|
if (!d->do_no_immed) |
|
|
|
c->opcode[1] |= 1; /* ts A70918 : Immed */ |
|
|
|
|
|
|
|
/* (ts A61030 : shifted !!session rather than or-ing plain session ) */ |
|
|
|
c->opcode[2] = ((session & 3) << 1) | !!track; |
|
|
@ -621,7 +622,10 @@ void mmc_close(struct burn_drive *d, int session, int track) |
|
|
|
c->opcode[5] = track & 0xFF; |
|
|
|
c->page = NULL; |
|
|
|
c->dir = NO_TRANSFER; |
|
|
|
c->timeout = Libburn_mmc_close_timeouT; |
|
|
|
if (d->do_no_immed) |
|
|
|
c->timeout = Libburn_mmc_close_noim_timeouT; |
|
|
|
else |
|
|
|
c->timeout = Libburn_mmc_close_timeouT; |
|
|
|
d->issue_command(d, c); |
|
|
|
|
|
|
|
/* ts A70918 : Immed : wait for drive to complete command */ |
|
|
@ -2717,12 +2721,16 @@ void mmc_erase(struct burn_drive *d, int fast) |
|
|
|
return; |
|
|
|
|
|
|
|
scsi_init_command(c, MMC_BLANK, sizeof(MMC_BLANK)); |
|
|
|
c->opcode[1] = 16; /* IMMED set to 1 */ |
|
|
|
if (!d->do_no_immed) |
|
|
|
c->opcode[1] = 16; /* IMMED set to 1 */ |
|
|
|
c->opcode[1] |= !!fast; |
|
|
|
c->retry = 1; |
|
|
|
c->page = NULL; |
|
|
|
c->dir = NO_TRANSFER; |
|
|
|
c->timeout = Libburn_mmc_blank_timeouT; |
|
|
|
if (d->do_no_immed) |
|
|
|
c->timeout = Libburn_mmc_blank_noim_timeouT; |
|
|
|
else |
|
|
|
c->timeout = Libburn_mmc_blank_timeouT; |
|
|
|
d->issue_command(d, c); |
|
|
|
if (c->error) { |
|
|
|
d->cancel = 1; |
|
|
@ -3522,10 +3530,14 @@ void mmc_sync_cache(struct burn_drive *d) |
|
|
|
|
|
|
|
scsi_init_command(c, MMC_SYNC_CACHE, sizeof(MMC_SYNC_CACHE)); |
|
|
|
c->retry = 1; |
|
|
|
c->opcode[1] |= 2; /* ts A70918 : Immed */ |
|
|
|
if (!d->do_no_immed) |
|
|
|
c->opcode[1] |= 2; /* ts A70918 : Immed */ |
|
|
|
c->page = NULL; |
|
|
|
c->dir = NO_TRANSFER; |
|
|
|
c->timeout = Libburn_mmc_sync_timeouT; |
|
|
|
if (d->do_no_immed) |
|
|
|
c->timeout = Libburn_mmc_sync_noim_timeouT; |
|
|
|
else |
|
|
|
c->timeout = Libburn_mmc_sync_timeouT; |
|
|
|
|
|
|
|
libdax_msgs_submit(libdax_messenger, -1, 0x00000002, |
|
|
|
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_ZERO, |
|
|
@ -3674,11 +3686,15 @@ int mmc_format_unit(struct burn_drive *d, off_t size, int flag) |
|
|
|
c->page->bytes = 12; |
|
|
|
c->page->sectors = 0; |
|
|
|
c->dir = TO_DRIVE; |
|
|
|
c->timeout = Libburn_mmc_blank_timeouT; |
|
|
|
if (d->do_no_immed) |
|
|
|
c->timeout = Libburn_mmc_blank_noim_timeouT; |
|
|
|
else |
|
|
|
c->timeout = Libburn_mmc_blank_timeouT; |
|
|
|
memset(c->page->data, 0, c->page->bytes); |
|
|
|
|
|
|
|
descr[0] = 0; |
|
|
|
c->page->data[1] = 0x02; /* Immed */ |
|
|
|
if (!d->do_no_immed) |
|
|
|
c->page->data[1] = 0x02; /* Immed */ |
|
|
|
c->page->data[3] = 8; /* Format descriptor length */ |
|
|
|
num_of_blocks = size / 2048; |
|
|
|
mmc_int_to_four_char(c->page->data + 4, num_of_blocks); |
|
|
|