diff --git a/sys/dev/scsipi/cd.c b/sys/dev/scsipi/cd.c index 4b240fd460aa..45378d6e9526 100644 --- a/sys/dev/scsipi/cd.c +++ b/sys/dev/scsipi/cd.c @@ -1,4 +1,4 @@ -/* $NetBSD: cd.c,v 1.212 2004/12/07 23:07:31 thorpej Exp $ */ +/* $NetBSD: cd.c,v 1.213 2005/01/30 23:39:42 reinoud Exp $ */ /*- * Copyright (c) 1998, 2001, 2003, 2004 The NetBSD Foundation, Inc. @@ -54,7 +54,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.212 2004/12/07 23:07:31 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.213 2005/01/30 23:39:42 reinoud Exp $"); #include "rnd.h" @@ -124,7 +124,7 @@ static int cd_pause(struct cd_softc *, int); static int cd_reset(struct cd_softc *); static int cd_read_subchannel(struct cd_softc *, int, int, int, struct cd_sub_channel_info *, int, int); -static int cd_read_toc(struct cd_softc *, int, int, void *, int, int, int); +static int cd_read_toc_f0(struct cd_softc *, int, int, void *, int, int, int); static int cd_get_parms(struct cd_softc *, int); static int cd_load_toc(struct cd_softc *, struct cd_toc *, int); static int cdreadmsaddr(struct cd_softc *, int *); @@ -1098,7 +1098,7 @@ cdreadmsaddr(struct cd_softc *cd, int *addr) struct cd_toc toc; struct cd_toc_entry *cte; - error = cd_read_toc(cd, 0, 0, &toc, + error = cd_read_toc_f0(cd, 0, 0, &toc, sizeof(struct ioc_toc_header) + sizeof(struct cd_toc_entry), XS_CTL_DATA_ONSTACK, 0x40 /* control word for "get MS info" */); @@ -1314,7 +1314,7 @@ bad: case CDIOREADTOCHEADER: { struct ioc_toc_header th; - if ((error = cd_read_toc(cd, 0, 0, &th, sizeof(th), + if ((error = cd_read_toc_f0(cd, 0, 0, &th, sizeof(th), XS_CTL_DATA_ONSTACK, 0)) != 0) return (error); if (cd->sc_periph->periph_quirks & PQUIRK_LITTLETOC) @@ -1338,7 +1338,7 @@ bad: if (len > sizeof(toc.entries) || len < sizeof(struct cd_toc_entry)) return (EINVAL); - error = cd_read_toc(cd, te->address_format, te->starting_track, + error = cd_read_toc_f0(cd, te->address_format, te->starting_track, &toc, len + sizeof(struct ioc_toc_header), XS_CTL_DATA_ONSTACK, 0); if (error) @@ -1754,7 +1754,7 @@ cd_read_subchannel(struct cd_softc *cd, int mode, int format, int track, * Read table of contents */ static int -cd_read_toc(struct cd_softc *cd, int mode, int start, void *data, int len, +cd_read_toc_f0(struct cd_softc *cd, int mode, int start, void *data, int len, int flags, int control) { struct scsipi_read_toc cmd; @@ -1770,7 +1770,8 @@ cd_read_toc(struct cd_softc *cd, int mode, int start, void *data, int len, ntoc = len; cmd.opcode = READ_TOC; if (mode == CD_MSF_FORMAT) - cmd.byte2 |= CD_MSF; + cmd.addr_mode |= CD_MSF; + cmd.resp_format = 0; cmd.from_track = start; _lto2b(ntoc, cmd.data_len); cmd.control = control; diff --git a/sys/dev/scsipi/scsipi_cd.h b/sys/dev/scsipi/scsipi_cd.h index cd4e4f5ad445..5afb777e71f3 100644 --- a/sys/dev/scsipi/scsipi_cd.h +++ b/sys/dev/scsipi/scsipi_cd.h @@ -1,4 +1,4 @@ -/* $NetBSD: scsipi_cd.h,v 1.7 2003/09/07 22:11:24 mycroft Exp $ */ +/* $NetBSD: scsipi_cd.h,v 1.8 2005/01/30 23:39:42 reinoud Exp $ */ /* * Written by Julian Elischer (julian@tfs.com) @@ -98,8 +98,9 @@ struct scsipi_read_subchannel { #define READ_TOC 0x43 /* cdrom read TOC */ struct scsipi_read_toc { u_int8_t opcode; - u_int8_t byte2; - u_int8_t unused[4]; + u_int8_t addr_mode; + u_int8_t resp_format; + u_int8_t unused[3]; u_int8_t from_track; u_int8_t data_len[2]; u_int8_t control;