--- cdrecord/drv_philips.c.orig Fri Feb 2 15:14:16 2001 +++ cdrecord/drv_philips.c Fri Feb 2 16:00:48 2001 @@ -62,6 +62,7 @@ LOCAL int write_track_info_philips __PR((SCSI *scgp, int)); LOCAL int write_track_philips __PR((SCSI *scgp, long, int)); LOCAL int open_track_philips __PR((SCSI *scgp, cdr_t *dp, int track, track_t *track_info)); +LOCAL int open_track_plasmon __PR((SCSI *scgp, cdr_t *dp, int track, track_t *track_info)); LOCAL int open_track_oldphilips __PR((SCSI *scgp, cdr_t *dp, int track, track_t *track_info)); LOCAL int open_track_yamaha __PR((SCSI *scgp, cdr_t *dp, int track, track_t *track_info)); LOCAL int close_track_philips __PR((SCSI *scgp, int track, track_t *trackp)); @@ -71,6 +72,7 @@ LOCAL int plasmon_attach __PR((SCSI *scgp, cdr_t *)); LOCAL int ricoh_attach __PR((SCSI *scgp, cdr_t *)); LOCAL int philips_getlilo __PR((SCSI *scgp, long *lilenp, long *lolenp)); +LOCAL int plasmon_buf __PR((SCSI *, long *, long *)); struct cdd_52x_mode_page_21 { /* write track information */ @@ -284,7 +286,7 @@ philips_getdisktype, philips_load, philips_unload, - buf_dummy, + plasmon_buf, recovery_needed, recover_philips, speed_select_philips, @@ -293,7 +295,7 @@ reserve_track_philips, scsi_cdr_write_philips, no_sendcue, - open_track_philips, + open_track_plasmon, close_track_philips, (int(*)__PR((SCSI *, cdr_t *, int, track_t *, int, int)))cmd_dummy, cmd_dummy, @@ -922,6 +924,22 @@ } LOCAL int +open_track_plasmon(scgp, dp, track, track_info) + SCSI *scgp; + cdr_t *dp; + int track; + track_t *track_info; +{ + if (select_secsize(scgp, track_info->secsize) < 0) + return (-1); + + if (write_track_info_philips(scgp, track_info->sectype) < 0) + return (-1); + + return (0); +} + +LOCAL int open_track_oldphilips(scgp, dp, track, track_info) SCSI *scgp; cdr_t *dp; @@ -1211,4 +1229,27 @@ *lolenp = lo; return (0); +} + +LOCAL int +plasmon_buf(scgp, sp, fp) + SCSI *scgp; + long *sp; /* Size pointer */ + long *fp; /* Free space pointer */ +{ + /* + * There's no way to obtain these values from the + * Plasmon RF41xx devices. This function stub is only + * present to prevent cdrecord.c from calling a pointless + * READ BUFFER SCSI cmd which is meant to be used for + * something totally else, and which would only jam the + * Plasmon due to the incorrect parameters used. + */ + + if (sp) + *sp = 2 * 1024 * 1024; /* assume 2 MB */ + if (fp) + *fp = 2 * 1024 * 1024; /* assume 2 MB */ + + return 100; }