Test macros for double START UNIT and SET CD SPEED
This commit is contained in:
parent
11d1538fbd
commit
4b30530f52
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2009.11.04.084506"
|
#define Cdrskin_timestamP "2009.11.05.170409"
|
||||||
|
@ -2769,5 +2769,20 @@ BURN_END_DECLS
|
|||||||
# define Libburn_pioneer_dvr_216d_with_opC 1
|
# define Libburn_pioneer_dvr_216d_with_opC 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Experiment for problems with Pioneer DVR-216D:
|
||||||
|
After starting unit asynchronously issue again a synchronous START UNIT.
|
||||||
|
Issue an extra START UNIT pair before reserving the track.
|
||||||
|
|
||||||
|
Move the next line outside this remark and remove all blanks up to "define".
|
||||||
|
# define Libburn_pioneer_dvr_216d_double_starT 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Experiment for problems with Pioneer DVR-216D:
|
||||||
|
Set speed not only via SET STREAMING but also via SET CD SPEED.
|
||||||
|
|
||||||
|
Move the next line outside this remark and remove all blanks up to "define".
|
||||||
|
# define Libburn_pioneer_dvr_216d_set_cd_speeD 1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#endif /*LIBBURN_H*/
|
#endif /*LIBBURN_H*/
|
||||||
|
@ -1766,11 +1766,16 @@ regard_as_blank:;
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ts A61217 : Note for future
|
/* ts A61217 :
|
||||||
growisofs performs OPC if (data[0]<<8)|data[1]<=32
|
growisofs performs OPC if (data[0]<<8)|data[1]<=32
|
||||||
which indicates no OPC entries are attached to the
|
which indicates no OPC entries are attached to the
|
||||||
reply from the drive.
|
reply from the drive.
|
||||||
|
ts A91104 :
|
||||||
|
Actually growisofs performs OPC only on DVD-R[W].
|
||||||
*/
|
*/
|
||||||
|
d->num_opc_tables = 0;
|
||||||
|
if(((data[0] << 8) | data[1]) > 32) /* i.e. > 34 bytes are available */
|
||||||
|
d->num_opc_tables = data[33];
|
||||||
|
|
||||||
/* ts A61219 : mmc5r03c.pdf 6.22.3.1.13 BG Format Status
|
/* ts A61219 : mmc5r03c.pdf 6.22.3.1.13 BG Format Status
|
||||||
0=blank (not yet started)
|
0=blank (not yet started)
|
||||||
@ -2274,8 +2279,15 @@ void mmc_set_speed(struct burn_drive *d, int r, int w)
|
|||||||
/* ts A61221 : try to set DVD speed via command B6h */
|
/* ts A61221 : try to set DVD speed via command B6h */
|
||||||
if (strstr(d->current_profile_text, "DVD") == d->current_profile_text){
|
if (strstr(d->current_profile_text, "DVD") == d->current_profile_text){
|
||||||
ret = mmc_set_streaming(d, r, w, end_lba);
|
ret = mmc_set_streaming(d, r, w, end_lba);
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_set_cd_speeD
|
||||||
|
if (ret < 0)
|
||||||
|
return; /* fatal failure */
|
||||||
|
#else
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return; /* success or really fatal failure */
|
return; /* success or really fatal failure */
|
||||||
|
#endif /* ! Libburn_pioneer_dvr_216d_set_cd_speeD */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ts A61112 : MMC standards prescribe FFFFh as max speed.
|
/* ts A61112 : MMC standards prescribe FFFFh as max speed.
|
||||||
@ -3753,6 +3765,7 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
|||||||
pd[4] = 8;
|
pd[4] = 8;
|
||||||
|
|
||||||
|
|
||||||
|
/* <<< did not help. A91104 */
|
||||||
#ifdef Libburn_pioneer_dvr_216d_lsv_onE
|
#ifdef Libburn_pioneer_dvr_216d_lsv_onE
|
||||||
pd[2] |= (1 << 5); /* LS_V = 1 */
|
pd[2] |= (1 << 5); /* LS_V = 1 */
|
||||||
pd[5] = 16; /* Link Size = 16 */
|
pd[5] = 16; /* Link Size = 16 */
|
||||||
@ -4270,6 +4283,7 @@ int mmc_setup_drive(struct burn_drive *d)
|
|||||||
d->needs_close_session = 0;
|
d->needs_close_session = 0;
|
||||||
d->needs_sync_cache = 0;
|
d->needs_sync_cache = 0;
|
||||||
d->bg_format_status = -1;
|
d->bg_format_status = -1;
|
||||||
|
d->num_opc_tables = -1;
|
||||||
d->last_lead_in = -2000000000;
|
d->last_lead_in = -2000000000;
|
||||||
d->last_lead_out = -2000000000;
|
d->last_lead_out = -2000000000;
|
||||||
d->disc_type = 0xff;
|
d->disc_type = 0xff;
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
#include "spc.h"
|
#include "spc.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_double_starT
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* ts A70910
|
/* ts A70910
|
||||||
debug: for tracing calls which might use open drive fds
|
debug: for tracing calls which might use open drive fds
|
||||||
@ -95,6 +99,18 @@ int sbc_start_unit(struct burn_drive *d)
|
|||||||
/* ts A70918 : now asynchronous */
|
/* ts A70918 : now asynchronous */
|
||||||
d->is_stopped = 0;
|
d->is_stopped = 0;
|
||||||
ret = spc_wait_unit_attention(d, 1800, "START UNIT", 0);
|
ret = spc_wait_unit_attention(d, 1800, "START UNIT", 0);
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_double_starT
|
||||||
|
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_double_starT\n");
|
||||||
|
scsi_init_command(&c, SBC_START_UNIT, sizeof(SBC_START_UNIT));
|
||||||
|
c.retry = 1;
|
||||||
|
c.opcode[1] = 0; /* Not Immed */
|
||||||
|
c.dir = NO_TRANSFER;
|
||||||
|
d->issue_command(d, &c);
|
||||||
|
if (c.error)
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,6 +220,7 @@ struct burn_drive
|
|||||||
/* ts A61218 from 51h READ DISC INFORMATION */
|
/* ts A61218 from 51h READ DISC INFORMATION */
|
||||||
int last_lead_in;
|
int last_lead_in;
|
||||||
int last_lead_out;
|
int last_lead_out;
|
||||||
|
int num_opc_tables; /* ts A91104: -1= not yet known */
|
||||||
int bg_format_status; /* 0=needs format start, 1=needs format restart*/
|
int bg_format_status; /* 0=needs format start, 1=needs format restart*/
|
||||||
int disc_type; /* 0="CD-DA or CD-ROM", 0x10="CD-I", 0x20="CD-ROM XA" */
|
int disc_type; /* 0="CD-DA or CD-ROM", 0x10="CD-I", 0x20="CD-ROM XA" */
|
||||||
unsigned int disc_id; /* a "32 bit binary integer" */
|
unsigned int disc_id; /* a "32 bit binary integer" */
|
||||||
|
@ -1080,6 +1080,10 @@ int burn_disc_open_track_dvd_minus_r(struct burn_write_opts *o,
|
|||||||
/* ts A70214 : eventually adjust already expanded size of track */
|
/* ts A70214 : eventually adjust already expanded size of track */
|
||||||
burn_track_apply_fillup(s->track[tnum], d->media_capacity_remaining,1);
|
burn_track_apply_fillup(s->track[tnum], d->media_capacity_remaining,1);
|
||||||
|
|
||||||
|
#ifdef Libburn_pioneer_dvr_216d_double_starT
|
||||||
|
d->start_unit(d);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (o->write_type == BURN_WRITE_SAO) { /* DAO */
|
if (o->write_type == BURN_WRITE_SAO) { /* DAO */
|
||||||
/* Round track size up to 32 KiB and reserve track */
|
/* Round track size up to 32 KiB and reserve track */
|
||||||
size = ((off_t) burn_track_get_sectors(s->track[tnum]))
|
size = ((off_t) burn_track_get_sectors(s->track[tnum]))
|
||||||
@ -1098,7 +1102,8 @@ int burn_disc_open_track_dvd_minus_r(struct burn_write_opts *o,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Libburn_pioneer_dvr_216d_with_opC
|
#ifdef Libburn_pioneer_dvr_216d_with_opC
|
||||||
if (!o->simulate) {
|
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_with_opC : num_opc_tables = %d\n", d->num_opc_tables);
|
||||||
|
if (d->num_opc_tables <= 0 && !o->simulate) {
|
||||||
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_with_opC : performing OPC\n");
|
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_with_opC : performing OPC\n");
|
||||||
d->perform_opc(d);
|
d->perform_opc(d);
|
||||||
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_with_opC : done\n");
|
fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_with_opC : done\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user