Home | History | Annotate | Line # | Download | only in ic
cissvar.h revision 1.5.2.1
      1 /*	$NetBSD: cissvar.h,v 1.5.2.1 2014/05/18 17:45:37 rmind Exp $	*/
      2 /*	$OpenBSD: cissvar.h,v 1.2 2005/09/07 04:00:16 mickey Exp $	*/
      3 
      4 /*
      5  * Copyright (c) 2005,2006 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 #include <sys/mutex.h>
     22 #include <sys/condvar.h>
     23 
     24 #include <dev/sysmon/sysmonvar.h>
     25 #include <sys/envsys.h>
     26 
     27 struct ciss_ld {
     28 	struct ciss_blink bling;	/* a copy of blink state */
     29 	char	xname[16];		/* copy of the sdN name */
     30 	int	ndrives;
     31 	u_int8_t tgts[1];
     32 };
     33 
     34 struct ciss_softc {
     35 	/* Generic device info. */
     36 	device_t		sc_dev;
     37 	kmutex_t		sc_mutex;
     38 	kmutex_t		sc_mutex_scratch;
     39 	bus_space_handle_t	sc_ioh;
     40 	bus_space_tag_t		sc_iot;
     41 	bus_dma_tag_t		sc_dmat;
     42 	void			*sc_ih;
     43 	void			*sc_sh;		/* shutdown hook */
     44 	struct proc		*sc_thread;
     45 	int			sc_flush;
     46 
     47 	struct scsipi_channel	sc_channel;
     48 	struct scsipi_channel	*sc_channel_raw;
     49 	struct scsipi_adapter	sc_adapter;
     50 	struct scsipi_adapter	*sc_adapter_raw;
     51 	struct callout		sc_hb;
     52 
     53 	u_int	sc_flags;
     54 	int ccblen, maxcmd, maxsg, nbus, ndrives, maxunits;
     55 	ciss_queue_head	sc_free_ccb, sc_ccbq, sc_ccbdone;
     56 	kcondvar_t		sc_condvar;
     57 
     58 	bus_dmamap_t		cmdmap;
     59 	bus_dma_segment_t	cmdseg[1];
     60 	void *			ccbs;
     61 	void			*scratch;
     62 	u_int			sc_waitflag;
     63 
     64 	bus_space_handle_t	cfg_ioh;
     65 
     66 	int fibrillation;
     67 	struct ciss_config cfg;
     68 	int cfgoff;
     69 	u_int32_t iem;
     70 	u_int32_t heartbeat;
     71 	struct ciss_ld **sc_lds;
     72 
     73 	/* scsi ioctl from sd device */
     74 	int			(*sc_ioctl)(device_t, u_long, void *);
     75 
     76 	struct sysmon_envsys    *sc_sme;
     77 	envsys_data_t		*sc_sensor;
     78 };
     79 
     80 struct ciss_rawsoftc {
     81 	struct ciss_softc *sc_softc;
     82 	u_int8_t	sc_channel;
     83 };
     84 
     85 int	ciss_attach(struct ciss_softc *sc);
     86 int	ciss_intr(void *v);
     87