Home | History | Annotate | Line # | Download | only in ic
cissvar.h revision 1.2
      1 /*	$NetBSD: cissvar.h,v 1.2 2007/03/04 06:01:53 christos Exp $	*/
      2 /*	$OpenBSD: cissvar.h,v 1.2 2005/09/07 04:00:16 mickey Exp $	*/
      3 
      4 /*
      5  * Copyright (c) 2005 Michael Shalayeff
      6  * All rights reserved.
      7  *
      8  * Permission to use, copy, modify, and distribute this software for any
      9  * purpose with or without fee is hereby granted, provided that the above
     10  * copyright notice and this permission notice appear in all copies.
     11  *
     12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     16  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
     17  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
     18  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     19  */
     20 
     21 struct ciss_softc {
     22 	/* Generic device info. */
     23 	struct device		sc_dev;
     24 	bus_space_handle_t	sc_ioh;
     25 	bus_space_tag_t		sc_iot;
     26 	bus_dma_tag_t		sc_dmat;
     27 	void			*sc_ih;
     28 	void			*sc_sh;		/* shutdown hook */
     29 	struct proc		*sc_thread;
     30 	int			sc_flush;
     31 
     32 	struct scsipi_channel	sc_channel;
     33 	struct scsipi_channel	*sc_channel_raw;
     34 	struct scsipi_adapter	sc_adapter;
     35 	struct scsipi_adapter	*sc_adapter_raw;
     36 	struct callout		sc_hb;
     37 
     38 	u_int	sc_flags;
     39 	int ccblen, maxcmd, maxsg, nbus, ndrives, maxunits;
     40 	ciss_queue_head	sc_free_ccb, sc_ccbq, sc_ccbdone;
     41 
     42 	bus_dmamap_t		cmdmap;
     43 	bus_dma_segment_t	cmdseg[1];
     44 	void *			ccbs;
     45 	void			*scratch;
     46 
     47 	bus_space_handle_t	cfg_ioh;
     48 
     49 	struct ciss_config cfg;
     50 	int cfgoff;
     51 	u_int32_t iem;
     52 	u_int32_t heartbeat;
     53 };
     54 
     55 struct ciss_rawsoftc {
     56 	struct ciss_softc *sc_softc;
     57 	u_int8_t	sc_channel;
     58 };
     59 
     60 /* XXX These have to become spinlocks in case of fine SMP */
     61 #define	CISS_LOCK(sc) splbio()
     62 #define	CISS_UNLOCK(sc, lock) splx(lock)
     63 #define	CISS_LOCK_SCRATCH(sc) splbio()
     64 #define	CISS_UNLOCK_SCRATCH(sc, lock) splx(lock)
     65 typedef	int ciss_lock_t;
     66 
     67 int	ciss_attach(struct ciss_softc *sc);
     68 int	ciss_intr(void *v);
     69