1 /* $NetBSD: cissvar.h,v 1.6 2013/10/12 16:52:21 christos Exp $ */ 2 /* $OpenBSD: cissvar.h,v 1.15 2013/05/30 16:15:02 deraadt 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