Deleted Added
full compact
mcd.c (106719) mcd.c (111731)
1/*
2 * Copyright 1993 by Holger Veit (data part)
3 * Copyright 1993 by Brian Moore (audio part)
4 * Changes Copyright 1993 by Gary Clark II
5 * Changes Copyright (C) 1994-1995 by Andrey A. Chernov, Moscow, Russia
6 *
7 * Rewrote probe routine to work on newer Mitsumi drives.
8 * Additional changes (C) 1994 by Jordan K. Hubbard

--- 26 unchanged lines hidden (view full) ---

35 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
36 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
37 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
38 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
39 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 *
1/*
2 * Copyright 1993 by Holger Veit (data part)
3 * Copyright 1993 by Brian Moore (audio part)
4 * Changes Copyright 1993 by Gary Clark II
5 * Changes Copyright (C) 1994-1995 by Andrey A. Chernov, Moscow, Russia
6 *
7 * Rewrote probe routine to work on newer Mitsumi drives.
8 * Additional changes (C) 1994 by Jordan K. Hubbard

--- 26 unchanged lines hidden (view full) ---

35 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
36 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
37 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
38 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
39 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 *
43 * $FreeBSD: head/sys/dev/mcd/mcd.c 106719 2002-11-10 03:45:49Z mdodd $
43 * $FreeBSD: head/sys/dev/mcd/mcd.c 111731 2003-03-02 14:30:54Z phk $
44 */
45static const char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
46
47#include <sys/param.h>
48#include <sys/systm.h>
49#include <sys/kernel.h>
50#include <sys/conf.h>
51#include <sys/fcntl.h>

--- 94 unchanged lines hidden (view full) ---

146static int mcd_playtracks(struct mcd_softc *, struct ioc_play_track *pt);
147static int mcd_play(struct mcd_softc *, struct mcd_read2 *pb);
148static int mcd_playmsf(struct mcd_softc *, struct ioc_play_msf *pt);
149static int mcd_playblocks(struct mcd_softc *, struct ioc_play_blocks *);
150static int mcd_pause(struct mcd_softc *);
151static int mcd_resume(struct mcd_softc *);
152static int mcd_lock_door(struct mcd_softc *, int lock);
153static int mcd_close_tray(struct mcd_softc *);
44 */
45static const char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
46
47#include <sys/param.h>
48#include <sys/systm.h>
49#include <sys/kernel.h>
50#include <sys/conf.h>
51#include <sys/fcntl.h>

--- 94 unchanged lines hidden (view full) ---

146static int mcd_playtracks(struct mcd_softc *, struct ioc_play_track *pt);
147static int mcd_play(struct mcd_softc *, struct mcd_read2 *pb);
148static int mcd_playmsf(struct mcd_softc *, struct ioc_play_msf *pt);
149static int mcd_playblocks(struct mcd_softc *, struct ioc_play_blocks *);
150static int mcd_pause(struct mcd_softc *);
151static int mcd_resume(struct mcd_softc *);
152static int mcd_lock_door(struct mcd_softc *, int lock);
153static int mcd_close_tray(struct mcd_softc *);
154static int mcd_size(dev_t dev);
154
155static d_open_t mcdopen;
156static d_close_t mcdclose;
157static d_ioctl_t mcdioctl;
155
156static d_open_t mcdopen;
157static d_close_t mcdclose;
158static d_ioctl_t mcdioctl;
158static d_psize_t mcdsize;
159static d_strategy_t mcdstrategy;
160
161#define CDEV_MAJOR 29
162
163static struct cdevsw mcd_cdevsw = {
164 /* open */ mcdopen,
165 /* close */ mcdclose,
166 /* read */ physread,

--- 85 unchanged lines hidden (view full) ---

252 device_printf(sc->dev, "no CD inside\n");
253 return (ENXIO);
254 }
255 if (sc->data.status & MCDDSKCHNG) {
256 device_printf(sc->dev, "CD not sensed\n");
257 return (ENXIO);
258 }
259
159static d_strategy_t mcdstrategy;
160
161#define CDEV_MAJOR 29
162
163static struct cdevsw mcd_cdevsw = {
164 /* open */ mcdopen,
165 /* close */ mcdclose,
166 /* read */ physread,

--- 85 unchanged lines hidden (view full) ---

252 device_printf(sc->dev, "no CD inside\n");
253 return (ENXIO);
254 }
255 if (sc->data.status & MCDDSKCHNG) {
256 device_printf(sc->dev, "CD not sensed\n");
257 return (ENXIO);
258 }
259
260 if (mcdsize(dev) < 0) {
260 if (mcd_size(dev) < 0) {
261 device_printf(sc->dev, "failed to get disk size\n");
262 return (ENXIO);
263 }
264
265 dev->si_bsize_phys = sc->data.blksize;
266
267 sc->data.openflags = 1;
268 sc->data.partflags |= MCDREADRAW;

--- 163 unchanged lines hidden (view full) ---

432 (void) tsleep((caddr_t)sc, PSOCK | PCATCH, "mcdsn2", hz/WAIT_FRAC);
433 if ((r = mcd_getstat(sc, 1)) == -1)
434 return (EIO);
435 if (r != -2)
436 break;
437 }
438 if ( (sc->data.status & (MCDDOOROPEN|MCDDSKCHNG))
439 || !(sc->data.status & MCDDSKIN)
261 device_printf(sc->dev, "failed to get disk size\n");
262 return (ENXIO);
263 }
264
265 dev->si_bsize_phys = sc->data.blksize;
266
267 sc->data.openflags = 1;
268 sc->data.partflags |= MCDREADRAW;

--- 163 unchanged lines hidden (view full) ---

432 (void) tsleep((caddr_t)sc, PSOCK | PCATCH, "mcdsn2", hz/WAIT_FRAC);
433 if ((r = mcd_getstat(sc, 1)) == -1)
434 return (EIO);
435 if (r != -2)
436 break;
437 }
438 if ( (sc->data.status & (MCDDOOROPEN|MCDDSKCHNG))
439 || !(sc->data.status & MCDDSKIN)
440 || mcdsize(dev) < 0
440 || mcd_size(dev) < 0
441 )
442 return (ENXIO);
443 sc->data.flags |= MCDVALID;
444 sc->data.partflags |= MCDREADRAW;
445 (void) mcd_lock_door(sc, MCD_LK_LOCK);
446 if (!(sc->data.flags & MCDVALID))
447 return (ENXIO);
448 }

--- 32 unchanged lines hidden (view full) ---

481 return mcd_stop(sc);
482 default:
483 return (ENOTTY);
484 }
485 /*NOTREACHED*/
486}
487
488static int
441 )
442 return (ENXIO);
443 sc->data.flags |= MCDVALID;
444 sc->data.partflags |= MCDREADRAW;
445 (void) mcd_lock_door(sc, MCD_LK_LOCK);
446 if (!(sc->data.flags & MCDVALID))
447 return (ENXIO);
448 }

--- 32 unchanged lines hidden (view full) ---

481 return mcd_stop(sc);
482 default:
483 return (ENOTTY);
484 }
485 /*NOTREACHED*/
486}
487
488static int
489mcdsize(dev_t dev)
489mcd_size(dev_t dev)
490{
491 struct mcd_softc *sc;
492 int size;
493
494 sc = (struct mcd_softc *)dev->si_drv1;
495
496 if (mcd_volinfo(sc) == 0) {
497 sc->data.blksize = MCDBLK;

--- 1125 unchanged lines hidden ---
490{
491 struct mcd_softc *sc;
492 int size;
493
494 sc = (struct mcd_softc *)dev->si_drv1;
495
496 if (mcd_volinfo(sc) == 0) {
497 sc->data.blksize = MCDBLK;

--- 1125 unchanged lines hidden ---