*** scsi.c.original Sat Jan 2 01:55:05 1999 --- scsi.c Sat Jan 2 02:34:21 1999 *************** *** 539,544 **** --- 539,546 ---- struct Scsi_Device_Template *sdtpnt; Scsi_Device * SDtail, *SDpnt=*SDpnt2; int bflags, type=-1; + static int PANA_DVD_RAM[2] = {-1,-1}; + int org_lun = lun; SDtail = scsi_devices; if (scsi_devices) *************** *** 551,556 **** --- 553,568 ---- SDpnt->lun = lun; SDpnt->channel = channel; + /* MATSUSHITA DVD-RAM LF-D100 */ + if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && lun == 1) { + /* get CD-ROM type */ + SDpnt->lun = lun = 0; + } else { + /* clear status */ + PANA_DVD_RAM[0] = -1; + PANA_DVD_RAM[1] = -1; + } + /* Some low level driver could use device->type (DB) */ SDpnt->type = -1; *************** *** 651,656 **** --- 663,683 ---- scsi_result[1] |= 0x80; /* removable */ } + if (!strncmp (scsi_result + 8, "MATSHITA", 8) && + !strncmp (scsi_result + 16, "PD-2 LF-D100", 12) && + scsi_result[0] == TYPE_ROM) { + if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && org_lun == 1) { + /* MATSUSHITA DVD-RAM LF-D100 treats as ROM */ + lun = 1; + } else { + /* MATSUSHITA DVD-RAM LF-D100 treats as MOD */ + scsi_result[0] = TYPE_MOD; + scsi_result[1] |= 0x80; /* removable */ + PANA_DVD_RAM[0] = channel; + PANA_DVD_RAM[1] = dev; + } + } + if (!strncmp (scsi_result + 8, "NEC", 3)) { if (!strncmp (scsi_result + 16, "CD-ROM DRIVE:84 ", 16) || !strncmp (scsi_result + 16, "CD-ROM DRIVE:25", 15)) *************** *** 824,829 **** --- 851,862 ---- */ if (bflags & BLIST_MAX5LUN) { *max_dev_lun = 5; + return 1; + } + + /* MATSUSHITA DVD-RAM LF-D100 */ + if (PANA_DVD_RAM[0] == channel && PANA_DVD_RAM[1] == dev && org_lun == 1) { + *max_dev_lun = 2; return 1; }