diff options
author | ache <ache@FreeBSD.org> | 1996-02-03 00:06:49 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1996-02-03 00:06:49 +0000 |
commit | 12102ecb9dbbc46025cb642c678b9cbdc68b4619 (patch) | |
tree | c49caa5b60e9b2abc8fbc2d564f6eff80743b8d4 /sys/i386 | |
parent | 21c9c34c6c984309aedad8eae2a783ac2307c9fc (diff) | |
download | FreeBSD-src-12102ecb9dbbc46025cb642c678b9cbdc68b4619.zip FreeBSD-src-12102ecb9dbbc46025cb642c678b9cbdc68b4619.tar.gz |
Detect yet one kind of device (taken from NetBSD)
Use more accurate TOC size calculation
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/isa/mcd.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/sys/i386/isa/mcd.c b/sys/i386/isa/mcd.c index 419ea81..9d685ce 100644 --- a/sys/i386/isa/mcd.c +++ b/sys/i386/isa/mcd.c @@ -40,7 +40,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: mcd.c,v 1.67 1996/02/02 21:18:02 ache Exp $ + * $Id: mcd.c,v 1.68 1996/02/02 22:08:28 ache Exp $ */ static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore"; @@ -123,8 +123,9 @@ static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore"; #define MCD_TYPE_UNKNOWN 0 #define MCD_TYPE_LU002S 1 #define MCD_TYPE_LU005S 2 -#define MCD_TYPE_FX001 3 -#define MCD_TYPE_FX001D 4 +#define MCD_TYPE_LU006S 3 +#define MCD_TYPE_FX001 4 +#define MCD_TYPE_FX001D 5 struct mcd_mbx { short unit; @@ -804,12 +805,15 @@ mcd_probe(struct isa_device *dev) mcd_data[unit].read_command = MCD_CMDSINGLESPEEDREAD; switch (stbytes[1]) { case 'M': - if (mcd_data[unit].flags & MCDNEWMODEL) { + if (stbytes[2] <= 2) { + mcd_data[unit].type = MCD_TYPE_LU002S; + mcd_data[unit].name = "Mitsumi LU002S"; + } else if (stbytes[2] <= 5) { mcd_data[unit].type = MCD_TYPE_LU005S; mcd_data[unit].name = "Mitsumi LU005S"; } else { - mcd_data[unit].type = MCD_TYPE_LU002S; - mcd_data[unit].name = "Mitsumi LU002S"; + mcd_data[unit].type = MCD_TYPE_LU006S; + mcd_data[unit].name = "Mitsumi LU006S"; } break; case 'F': @@ -1363,9 +1367,9 @@ mcd_toc_header(int unit, struct ioc_toc_header *th) th->starting_track = bcd2bin(cd->volinfo.trk_low); th->ending_track = bcd2bin(cd->volinfo.trk_high); - th->len = sizeof(struct ioc_toc_header) + - (th->ending_track - th->starting_track + 1) * - sizeof(struct cd_toc_entry) + 6 /* ??? */; + th->len = 2 * sizeof(u_char) /* start & end tracks */ + + (th->ending_track + 1 - th->starting_track + 1) * + sizeof(struct cd_toc_entry); return 0; } |