diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index 5a2b37a4..9b4a71e4 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2009.10.30.134640" +#define Cdrskin_timestamP "2009.11.03.184626" diff --git a/libburn/trunk/libburn/libburn.h b/libburn/trunk/libburn/libburn.h index f579c7a5..8c0c58c1 100644 --- a/libburn/trunk/libburn/libburn.h +++ b/libburn/trunk/libburn/libburn.h @@ -2750,7 +2750,7 @@ BURN_END_DECLS #endif -/* Temporary facility for exploring Problems with Pioneer DVR-216D which +/* Temporary facility for exploring problems with Pioneer DVR-216D which does not end writing of DVD-R. This code does not hamper normal operations but causes some extra messages to stderr and lots of text lines in File @@ -2760,14 +2760,11 @@ BURN_END_DECLS # define Libburn_pioneer_dvr_216d_tesT 1 */ -/* Temporary facility to disable asynchronous execution of the final buffer - flush command SYNCHRONIZE CACHE. This is suspected to cycle endlessly - on Pioneer DVR-216D. - On the other hand, synchronous execution of the command blocks a P-ATA - controller for both eventually connected devices. - - Move the next line outside this remark and remove all blanks up to "define". - # Libburn_pioneer_dvr_sync_not_immeD 1 +/* Experiment for problems with Pioneer DVR-216D: + In mode page 05h set LS_V to 1 and Link Size to 16. + (This is done by growisofs and by wodim in DAO mode although MMC-5 + specifies that they do not matter for DAO.) + # define Libburn_pioneer_dvr_216d_lsv_onE 1 */ diff --git a/libburn/trunk/libburn/mmc.c b/libburn/trunk/libburn/mmc.c index cc703879..b2e7b7ad 100644 --- a/libburn/trunk/libburn/mmc.c +++ b/libburn/trunk/libburn/mmc.c @@ -3736,7 +3736,6 @@ int mmc_compose_mode_page_5(struct burn_drive *d, pd[4] = 8; /* Link size dummy */ pd[5] = 0; - } else if ((d->current_profile == 0x14 || d->current_profile == 0x11 || d->current_profile == 0x15) && o->write_type == BURN_WRITE_SAO) { @@ -3753,6 +3752,13 @@ int mmc_compose_mode_page_5(struct burn_drive *d, /* Data Block Type = 8 */ pd[4] = 8; + +#ifdef Libburn_pioneer_dvr_216d_lsv_onE + pd[2] |= (1 << 5); /* LS_V = 1 */ + pd[5] = 16; /* Link Size = 16 */ + fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_lsv_onE , LS_V=1, Link Size=16\n"); +#endif + } else if (d->current_profile == 0x14 || d->current_profile == 0x11 || d->current_profile == 0x15) { /* ts A70128 : DVD-R[W][/DL] Incremental Streaming */ @@ -3787,6 +3793,10 @@ int mmc_compose_mode_page_5(struct burn_drive *d, /* Packet Size */ pd[13] = 16; +#ifdef Libburn_pioneer_dvr_216d_lsv_onE + fprintf(stderr, "libburn_DEBUG: Libburn_pioneer_dvr_216d_lsv_onE , LS_V= %d, Link Size= %d\n", !!(pd[2] & 32), (int) pd[5]); +#endif + } else if (d->current_profile == 0x1a || d->current_profile == 0x1b || d->current_profile == 0x2b || d->current_profile == 0x12 || d->current_profile == 0x41 || d->current_profile == 0x42 ||