|
|
|
@ -2454,8 +2454,11 @@ int mmc_read_cd_msf(struct burn_drive *d,
|
|
|
|
|
const struct burn_read_opts *o, struct buffer *buf, int flag)
|
|
|
|
|
{
|
|
|
|
|
int req, ret, dap_bit;
|
|
|
|
|
int report_recovered_errors = 0, subcodes_audio = 0, subcodes_data = 0;
|
|
|
|
|
int subcodes_audio = 0, subcodes_data = 0;
|
|
|
|
|
struct command *c;
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
int report_recovered_errors = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
c = &(d->casual_command);
|
|
|
|
|
mmc_start_if_needed(d, 0);
|
|
|
|
@ -2464,10 +2467,13 @@ int mmc_read_cd_msf(struct burn_drive *d,
|
|
|
|
|
|
|
|
|
|
dap_bit = flag & 1;
|
|
|
|
|
if (o != NULL) {
|
|
|
|
|
report_recovered_errors = o->report_recovered_errors;
|
|
|
|
|
subcodes_audio = o->subcodes_audio;
|
|
|
|
|
subcodes_data = o->subcodes_data;
|
|
|
|
|
dap_bit |= o->dap_bit;
|
|
|
|
|
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
report_recovered_errors = o->report_recovered_errors;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scsi_init_command(c, MMC_READ_CD_MSF, sizeof(MMC_READ_CD_MSF));
|
|
|
|
@ -2482,11 +2488,12 @@ int mmc_read_cd_msf(struct burn_drive *d,
|
|
|
|
|
|
|
|
|
|
req = main_ch & 0xf8;
|
|
|
|
|
|
|
|
|
|
/* ts A61106 : LG GSA-4082B dislikes this. key=5h asc=24h ascq=00h
|
|
|
|
|
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
/* ts A61106 : LG GSA-4082B dislikes this. key=5h asc=24h ascq=00h */
|
|
|
|
|
if (d->busy == BURN_DRIVE_GRABBING || report_recovered_errors)
|
|
|
|
|
req |= 2;
|
|
|
|
|
*/
|
|
|
|
|
#endif /* Libburn_mmc_report_recovereD */
|
|
|
|
|
|
|
|
|
|
c->opcode[9] = req;
|
|
|
|
|
|
|
|
|
|
c->opcode[10] = 0;
|
|
|
|
@ -2530,9 +2537,13 @@ int mmc_read_cd(struct burn_drive *d, int start, int len,
|
|
|
|
|
const struct burn_read_opts *o, struct buffer *buf, int flag)
|
|
|
|
|
{
|
|
|
|
|
int temp, req, ret, dap_bit;
|
|
|
|
|
int report_recovered_errors = 0, subcodes_audio = 0, subcodes_data = 0;
|
|
|
|
|
int subcodes_audio = 0, subcodes_data = 0;
|
|
|
|
|
struct command *c;
|
|
|
|
|
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
int report_recovered_errors = 0;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* # define Libburn_read_cd_by_msF 1 */
|
|
|
|
|
#ifdef Libburn_read_cd_by_msF
|
|
|
|
|
|
|
|
|
@ -2554,10 +2565,13 @@ int mmc_read_cd(struct burn_drive *d, int start, int len,
|
|
|
|
|
|
|
|
|
|
dap_bit = flag & 1;
|
|
|
|
|
if (o != NULL) {
|
|
|
|
|
report_recovered_errors = o->report_recovered_errors;
|
|
|
|
|
subcodes_audio = o->subcodes_audio;
|
|
|
|
|
subcodes_data = o->subcodes_data;
|
|
|
|
|
dap_bit |= o->dap_bit;
|
|
|
|
|
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
report_recovered_errors = o->report_recovered_errors;
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scsi_init_command(c, MMC_READ_CD, sizeof(MMC_READ_CD));
|
|
|
|
@ -2578,11 +2592,11 @@ int mmc_read_cd(struct burn_drive *d, int start, int len,
|
|
|
|
|
c->opcode[6] = len & 0xFF;
|
|
|
|
|
req = main_ch & 0xf8;
|
|
|
|
|
|
|
|
|
|
/* ts A61106 : LG GSA-4082B dislikes this. key=5h asc=24h ascq=00h
|
|
|
|
|
|
|
|
|
|
#ifdef Libburn_mmc_report_recovereD
|
|
|
|
|
/* ts A61106 : LG GSA-4082B dislikes this. key=5h asc=24h ascq=00h */
|
|
|
|
|
if (d->busy == BURN_DRIVE_GRABBING || report_recovered_errors)
|
|
|
|
|
req |= 2;
|
|
|
|
|
*/
|
|
|
|
|
#endif /* Libburn_mmc_report_recovereD */
|
|
|
|
|
|
|
|
|
|
c->opcode[9] = req;
|
|
|
|
|
c->opcode[10] = 0;
|
|
|
|
|