The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/scsi/safte.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: safte.h,v 1.9 2020/09/12 15:54:51 krw Exp $ */
    2 
    3 /*
    4  * Copyright (c) 2005 David Gwynne <dlg@openbsd.org>
    5  *
    6  * Permission to use, copy, modify, and distribute this software for any
    7  * purpose with or without fee is hereby granted, provided that the above
    8  * copyright notice and this permission notice appear in all copies.
    9  *
   10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   17  */
   18 
   19 #ifndef _SCSI_SAFTE_H
   20 #define _SCSI_SAFTE_H
   21 
   22 /* scsi_inquiry_data.extra */
   23 struct safte_inq {
   24         u_int8_t        uniqueid[7];
   25         u_int8_t        chanid;
   26         u_int8_t        ident[6];
   27 #define SAFTE_IDENT             "SAF-TE"
   28 };
   29 
   30 struct safte_readbuf_cmd {
   31         u_int8_t        opcode;         /* READ_BUFFER */
   32         u_int8_t        flags;
   33 #define SAFTE_RD_LUNMASK        0xe0    /* the lun should always be 0 */
   34 #define SAFTE_RD_MODEMASK       0x07
   35 #define SAFTE_RD_MODE           0x01    /* 0x01 is the SAF-TE command mode */
   36         u_int8_t        bufferid;
   37 #define SAFTE_RD_CONFIG         0x00    /* enclosure configuration */
   38 #define SAFTE_RD_ENCSTAT        0x01    /* enclosure status */
   39 #define SAFTE_RD_USAGE          0x02    /* usage statistics */
   40 #define SAFTE_RD_INSERTS        0x03    /* device insertions */
   41 #define SAFTE_RD_SLOTSTAT       0x04    /* slot status */
   42 #define SAFTE_RD_GLOBALS        0x05    /* global flags */
   43         u_int32_t       reserved1;
   44         u_int16_t       length;         /* transfer length (big endian) */
   45         u_int8_t        reserved2;
   46 } __packed;
   47 
   48 struct safte_writebuf_cmd {
   49         u_int8_t        opcode;         /* WRITE_BUFFER */
   50         u_int8_t        flags;
   51 #define SAFTE_WR_LUNMASK        0xe0    /* the lun should always be 0 */
   52 #define SAFTE_WR_MODEMASK       0x07
   53 #define SAFTE_WR_MODE           0x01    /* 0x01 is the SAF-TE command mode */
   54         u_int8_t        reserved1[5];
   55         u_int16_t       length;         /* transfer length (big endian) */
   56         u_int8_t        reserved2;
   57 } __packed;
   58 
   59 #define SAFTE_WRITE_SLOTSTAT    0x10    /* write device slot status */
   60 #define SAFTE_WRITE_SETID       0x11    /* set scsi id */
   61 #define SAFTE_WRITE_SLOTOP      0x12    /* perform slot operation */
   62 #define SAFTE_WRITE_FANSPEED    0x13    /* set fan speed */
   63 #define SAFTE_WRITE_PWRSUP      0x14    /* activate power supply */
   64 #define SAFTE_WRITE_GLOBALS     0x15    /* global flags */
   65 
   66 
   67 /* enclosure configuration */
   68 struct safte_config {
   69         u_int8_t        nfans;          /* number of fans */
   70         u_int8_t        npwrsup;        /* number of power supplies */
   71         u_int8_t        nslots;         /* number of device slots */
   72         u_int8_t        doorlock;       /* door lock installed */
   73         u_int8_t        ntemps;         /* number of temp sensors */
   74         u_int8_t        alarm;          /* audible alarm installed */
   75         u_int8_t        therm;          /* temps in C and num of thermostats */
   76 #define SAFTE_CFG_CELSIUSMASK   0x80
   77 #define SAFTE_CFG_CELSIUS(a)    ((a) & SAFTE_CFG_CELSIUSMASK ? 1 : 0)
   78 #define SAFTE_CFG_NTHERMMASK    0x0f
   79 #define SAFTE_CFG_NTHERM(a)     ((a) & SAFTE_CFG_NTHERMMASK)
   80         u_int8_t        reserved[56]; /* 7 to 62 */
   81         u_int8_t        vendor_bytes;   /* number of vendor specific bytes */
   82 } __packed;
   83 #define SAFTE_CONFIG_LEN        sizeof(struct safte_config)
   84 
   85 /* enclosure status fields */
   86 /* fan status field */
   87 #define SAFTE_FAN_OP            0x00    /* operational */
   88 #define SAFTE_FAN_MF            0x01    /* malfunctioning */
   89 #define SAFTE_FAN_NOTINST       0x02    /* not installed */
   90 #define SAFTE_FAN_UNKNOWN       0x80    /* unknown status or unreportable */
   91 
   92 /* power supply status field */
   93 #define SAFTE_PWR_OP_ON         0x00    /* operational and on */
   94 #define SAFTE_PWR_OP_OFF        0x01    /* operational and off */
   95 #define SAFTE_PWR_MF_ON         0x10    /* malfunctioning and on */
   96 #define SAFTE_PWR_MF_OFF        0x11    /* malfunctioning and off */
   97 #define SAFTE_PWR_NOTINST       0x20    /* not present */
   98 #define SAFTE_PWR_PRESENT       0x21    /* present */
   99 #define SAFTE_PWR_UNKNOWN       0x80    /* unknown status or unreportable */
  100 
  101 /* scsi id fields */
  102 /* are integers, not bitfields */
  103 
  104 /* door lock status */
  105 #define SAFTE_DOOR_LOCKED       0x00    /* locked */
  106 #define SAFTE_DOOR_UNLOCKED     0x01    /* unlocked or uncontrollable */
  107 #define SAFTE_DOOR_UNKNOWN      0x80    /* unknown status or unreportable */
  108 
  109 /* speaker status */
  110 #define SAFTE_SPKR_OFF          0x00    /* off or not installed */
  111 #define SAFTE_SPKR_ON           0x01    /* speaker is currently on */
  112 
  113 /* temperature */
  114 #define SAFTE_TEMP_OFFSET       -10     /* -10 to 245 degrees */
  115 
  116 /* temp out of range */
  117 #define SAFTE_TEMP_ETA          0x8000  /* any temp alert */
  118 
  119 
  120 /* usage statistics */
  121 struct safte_usage {
  122         u_int32_t       minutes;        /* total number of minutes on */
  123         u_int32_t       cycles;         /* total number of power cycles */
  124         u_int8_t        reserved[7];
  125         u_int8_t        vendor_bytes;   /* number of vendor specific bytes */
  126 };
  127 
  128 
  129 /* device insertions */
  130 /* u_int16_t * nslots */
  131 
  132 
  133 /* device slot status */
  134 #define SAFTE_SLOTSTAT_INSERT   (1<<0)  /* inserted */
  135 #define SAFTE_SLOTSTAT_SWAP     (1<<1)  /* ready to be inserted/removed */
  136 #define SAFTE_SLOTSTAT_OPER     (1<<2)  /* ready for operation */
  137 
  138 
  139 /* global flags */
  140 struct safte_globals {
  141         u_int8_t        flags1;
  142 #define SAFTE_GLOBAL_ALARM      (1<<0)  /* audible alarm */
  143 #define SAFTE_GLOBAL_FAILURE    (1<<1)  /* global failure indication */
  144 #define SAFTE_GLOBAL_WARNING    (1<<2)  /* global warning indication */
  145 #define SAFTE_GLOBAL_POWER      (1<<3)  /* enclosure power */
  146 #define SAFTE_GLOBAL_COOLING    (1<<4)  /* cooling failure */
  147 #define SAFTE_GLOBAL_PWRFAIL    (1<<5)  /* power failure */
  148 #define SAFTE_GLOBAL_DRVFAIL    (1<<6)  /* drive failure */
  149 #define SAFTE_GLOBAL_DRVWARN    (1<<6)  /* drive warning */
  150         u_int8_t        flags2;
  151 #define SAFTE_GLOBAL_ARRAYFAIL  (1<<0)  /* array failure */
  152 #define SAFTE_GLOBAL_ARRAYWARN  (1<<1)  /* array warning */
  153 #define SAFTE_GLOBAL_LOCK       (1<<2)  /* enclosure lock */
  154 #define SAFTE_GLOBAL_IDENTIFY   (1<<3)  /* identify enclosure */
  155         u_int8_t        flags3;
  156         u_int8_t        reserved[13];
  157 };
  158 
  159 
  160 /*  perform slot operation */
  161 struct safte_slotop {
  162         u_int8_t        opcode;         /* SAFTE_WRITE_SLOTOP */
  163         u_int8_t        slot;
  164         u_int8_t        flags;
  165 #define SAFTE_SLOTOP_OPERATE    (1<<0)  /* prepare for operation */
  166 #define SAFTE_SLOTOP_INSREM     (1<<1)  /* prepare for insert/removal */
  167 #define SAFTE_SLOTOP_IDENTIFY   (1<<2)  /* identify */
  168         u_int8_t        reserved[61];   /* zero these */
  169 } __packed;
  170 
  171 #endif /* _SCSI_SAFTE_H */

Cache object: 943c082ceba3f1d62deb3e84830f3420


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.