1/* $NetBSD: atapiconf.h,v 1.22 2008/03/24 14:44:26 cube Exp $ */ 2 3/* 4 * Copyright (c) 1996, 2001 Manuel Bouyer. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#ifndef _DEV_SCSIPI_ATAPICONF_H 28#define _DEV_SCSIPI_ATAPICONF_H 29 30#include <sys/device.h> 31#include <dev/scsipi/scsipiconf.h> 32 33struct atapibus_softc { 34 device_t sc_dev; 35 struct scsipi_channel *sc_channel; /* our scsipi_channel */ 36}; 37 38extern const struct scsipi_periphsw atapi_probe_periphsw; 39 40 41/* 42 * We need some more data than in scsipi_adapter. 43 * So define a new atapi_adapter, we'll cast channel->chan_adapter to 44 * atapi_adapter when we need the extra data (only in ATAPI code) 45 */ 46struct atapi_adapter { 47 struct scsipi_adapter _generic; 48 void (*atapi_probe_device)(struct atapibus_softc *, int); 49}; 50 51void *atapi_probe_device(struct atapibus_softc *, int, 52 struct scsipi_periph *, struct scsipibus_attach_args *); 53int atapiprint(void *, const char *); 54void atapi_print_addr(struct scsipi_periph *); 55int atapi_interpret_sense(struct scsipi_xfer *); 56void atapi_scsipi_cmd(struct scsipi_xfer *); 57 58#endif /* _DEV_SCSIPI_ATAPICONF_H */ 59