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/dev/ida/idareg.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 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 1999,2000 Jonathan Lemon
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD$
   29  */
   30 
   31 /*
   32  * #defines and software structures for the Compaq RAID card
   33  */
   34 
   35 /*
   36  * board register offsets for SMART-2 controllers
   37  */
   38 #define R_CMD_FIFO      0x04
   39 #define R_DONE_FIFO     0x08
   40 #define R_INT_MASK      0x0C
   41 #define R_STATUS        0x10
   42 #define R_INT_PENDING   0x14
   43 
   44 /*
   45  * interrupt mask values for SMART series
   46  */
   47 #define INT_DISABLE     0x00
   48 #define INT_ENABLE      0x01
   49 
   50 /*
   51  * board offsets for the 42xx series
   52  */
   53 #define R_42XX_STATUS   0x30
   54 #define R_42XX_INT_MASK 0x34
   55 #define R_42XX_REQUEST  0x40
   56 #define R_42XX_REPLY    0x44
   57 
   58 /*
   59  * interrupt values for 42xx series
   60  */
   61 #define INT_ENABLE_42XX                 0x00
   62 #define INT_DISABLE_42XX                0x08
   63 #define STATUS_42XX_INT_PENDING         0x08
   64 
   65 /*
   66  * return status codes
   67  */
   68 #define SOFT_ERROR      0x02    /* Non-fatal error. */
   69 #define HARD_ERROR      0x04    /* Fatal error. */
   70 #define INVALID_ERROR   0x10    /* Invalid Request Block. */
   71 #define CMD_REJECTED    0x14
   72 
   73 /*
   74  * command types
   75  */
   76 #define CMD_GET_LOG_DRV_INFO    0x10    /* Identify controller */
   77 #define CMD_GET_CTRL_INFO       0x11    /* Identify logical driver */
   78 #define CMD_SENSE_DRV_STATUS    0x12    /* Sense logical drive status */
   79 #define CMD_START_RECOVERY      0x13    /* Start recover */
   80 #define CMD_GET_PHYS_DRV_INFO   0x15    /* Identify physical drive */
   81 #define CMD_BLINK_DRV_LEDS      0x16    /* Blink drive tray LEDs */
   82 #define CMD_SENSE_DRV_LEDS      0x17    /* Sense Blinking drive tray LEDs */
   83 #define CMD_GET_LOG_DRV_EXT     0x18    /* Identify logical drive, Extended */
   84 #define CMD_READ                0x20    /* Read */
   85 #define CMD_WRITE               0x30    /* Write */
   86 #define CMD_WRITE_MEDIA         0x31    /* Write media */
   87 #define CMD_RESET_CTRL          0x40    /* Reset controller */
   88 #define CMD_DIAG_PASS_THRU      0x41    /* ??? */
   89 #define CMD_GET_CONFIG          0x50    /* Sense configuration */
   90 #define CMD_SET_CONFIG          0x51    /* Set configuration */
   91 
   92 #define CMD_BYPASS_VOL_STATE    0x52    /* ??? */
   93 #define CMD_SS_CREATE_VOL       0x53    /* ??? */
   94 #define CMD_CHANGE_CONFIG       0x54    /* ??? */
   95 #define CMD_SENSE_ORIG_CONF     0x55    /* ??? */
   96 #define CMD_REORDER_LOG_DRV     0x56    /* ??? */
   97 
   98 #define CMD_LABEL_LOG_DRV       0x57    /* Label logical drive */
   99 #define CMD_SS_TO_VOL           0x58    /* ??? */
  100 #define CMD_SET_SURFACE_DELAY   0x60    /* Set surface delay */
  101 #define CMD_SET_OVERHEAT_DELAY  0x61    /* ??? */
  102 #define CMD_SENSE_BUS_PARAMS    0x65    /* Sense bus parameters */
  103 #define CMD_SENSE_SUBSYS_INFO   0x66    /* Sense Subsystem Information */
  104 #define CMD_SENSE_SURFACE_ATS   0x70    /* Sense surface analysis task status */
  105 #define CMD_PASSTHROUGH         0x90    /* Pass-through operation */
  106 #define CMD_PASSTHROUGH_A       0x91    /* ??? */
  107 #define CMD_RESET_SCSI_DEV      0x94    /* Reset SCSI device */
  108 #define CMD_PAUSE_BG_ACT        0x98    /* Pause Background Activity */
  109 #define CMD_RESUME_BG_ACT       0x99    /* Resume Background Activity */
  110 #define CMD_START_FIRMWARE      0x99    /* for integrated RAID */
  111 #define CMD_SENSE_DRV_ERR_LOG   0xa6    /* Sense drive error log */
  112 #define CMD_START_CPM           0xa7    /* Start controller performance monitoring */
  113 #define CMD_SENSE_CP            0xa8    /* Sense controller performance */
  114 #define CMD_STOP_CPM            0xa9    /* Stop controller performance monitoring */
  115 #define CMD_FLUSH_CACHE         0xc2    /* Flush/disable write cache */
  116 #define CMD_COLLECT_BUFFER      0xd2    /* ??? */
  117 #define CMD_ACCEPT_MEDIA_EXCH   0xe0    /* Accept Media Exchange */     
  118 
  119 #define CMD_FLASH_READ          0xf6    /* Read FLASH */
  120 #define CMD_FLASH_WRITE         0xf7    /* Write FLASH */
  121 
  122 /* logical drive parameter table */
  123 struct ida_drive_param {
  124         u_int16_t       ncylinders;
  125         u_int8_t        nheads;
  126         u_int8_t        signature;
  127         u_int8_t        psectors;
  128         u_int16_t       wprecomp;
  129         u_int8_t        max_acc;
  130         u_int8_t        control;
  131         u_int16_t       pcylinders;
  132         u_int8_t        ptracks;
  133         u_int16_t       landing_zone;
  134         u_int8_t        nsectors;
  135         u_int8_t        checksum;
  136 } __packed;
  137 
  138 #define IDA_RAID0       0       /* No fault tolerance. */
  139 #define IDA_RAID4       1       /* Data Guard */
  140 #define IDA_RAID1       2       /* Mirroring */
  141 #define IDA_RAID5       3       /* Distributed Data Guard */
  142 
  143 /*
  144  * CMD_GET_LOG_DRV_INFO (0x10)
  145  * Identify Logical Drive
  146  */
  147 struct ida_drive_info {
  148         u_int16_t       secsize;        /* block size in bytes */
  149         u_int32_t       secperunit;     /* blocks available */
  150         struct ida_drive_param  dp;     /* logical drive parameter table */
  151         u_int8_t        mirror;         /* fault tolerance */
  152         u_int8_t        reserved;
  153         u_int8_t        bios_disable;
  154 } __packed;
  155 
  156 /*
  157  * CMD_GET_LOG_DRV_EXT (0x18)
  158  * Identify Logical Drive, Extended
  159  */
  160 struct ida_drive_info_ext {
  161         u_int16_t       secsize;        /* block size in bytes */
  162         u_int32_t       secperunit;     /* blocks available */
  163         struct ida_drive_param  dp;     /* logical drive parameter table */
  164         u_int8_t        mirror;         /* fault tolerance */
  165         u_int8_t        reserved;
  166         u_int8_t        bios_disable;
  167         u_int32_t       ld_id;          /* Logical drive identifier */
  168         u_int8_t        ld_label[64];   /* Logical drive label */
  169 } __packed;
  170 
  171 /*
  172  * CMD_GET_CTRL_INFO (0x11)
  173  * Identify Controller
  174  */
  175 struct ida_controller_info {
  176         u_int8_t        num_drvs;       /* Number of configured logical drives */
  177         u_int32_t       signature;      /* Configuration signature */
  178         u_int8_t        firm_rev[4];    /* ASCII firmware revision */
  179         u_int8_t        rom_rev[4];     /* ROM firmware revision */
  180         u_int8_t        hw_rev;         /* Revision level of the hardware */
  181         u_int32_t       bb_rev;
  182         u_int32_t       dp_map;         /* Drive present bit map */
  183         u_int32_t       ed_map;         /* External drive bit map */
  184         u_int32_t       board_id;
  185         u_int8_t        cfg_error;
  186         u_int32_t       nd_map;         /* Non-disk map */
  187         u_int8_t        bad_ram_addr;
  188         u_int8_t        cpu_rev;
  189         u_int8_t        pdpi_rev;
  190         u_int8_t        epic_rev;
  191         u_int8_t        wcxc_rev;
  192         u_int8_t        mkt_rev;        /* Marketing revision */
  193         u_int8_t        cflag;          /* Controller flags */
  194 #define IDA_CI_CFLAG_7DPB       (1<<3)
  195 #define IDA_CI_CFLAG_BIGMAP     (1<<7)
  196         u_int8_t        hflag;
  197         u_int8_t        expand_dis;
  198         u_int8_t        scsi_cc;        /* SCSI chip count */
  199         u_int32_t       max_req_blocks;
  200         u_int32_t       cclock;         /* Controller Clock */
  201         u_int8_t        dp_scsi;        /* Drives per SCSI bus */
  202         u_int16_t       big_dp_map[8];  /* Big drive present bit map */
  203         u_int16_t       big_ed_map[8];  /* Big external drive bit map */
  204         u_int16_t       big_nd_map[8];  /* Big non-disk map */
  205         u_int16_t       task_flags;
  206         u_int8_t        icl_bus;
  207         u_int8_t        red_modes;
  208         u_int8_t        cur_red_mode;
  209         u_int8_t        red_ctlr_stat;
  210         u_int8_t        red_fail_reason;
  211         u_int8_t        reserved[403];
  212 } __packed;
  213 
  214 /*
  215  * CMD_SENSE_DRV_STATUS (0x12)
  216  * Sense logical drive status
  217  */
  218 struct ida_drive_status {
  219         u_int8_t        status;
  220         u_int32_t       failure_map;
  221         u_int16_t       read_err[32];
  222         u_int16_t       write_error[32];
  223         u_int8_t        reserved0[288];
  224         u_int32_t       secrecover;
  225         u_int8_t        rebuilding;
  226         u_int16_t       remap_cnt[32];
  227         u_int32_t       repl_map;
  228         u_int32_t       spare_map;
  229         u_int8_t        spare_status;
  230         u_int8_t        spare_repl_map[32];
  231         u_int32_t       repl_ok_map;
  232         u_int8_t        media_exchange;
  233         u_int8_t        cache_failure;
  234         u_int8_t        expand_failure;
  235         u_int8_t        unit_flags;
  236         u_int16_t       big_failure_map[8];
  237         u_int16_t       big_remap_cnt[128];
  238         u_int16_t       big_repl_map[8];
  239         u_int16_t       big_act_spare_map[8];
  240         u_int8_t        big_spare_repl_map[128];
  241         u_int16_t       big_repl_ok_map[8];
  242         u_int8_t        big_rebuilding;
  243         u_int8_t        reserved1[36];
  244 } __packed;
  245 
  246 /*
  247  * CMD_GET_PHYS_DRV_INFO (0x15)
  248  * Identify Physical Drive
  249  */
  250 struct ida_phys_drv_info {
  251         u_int8_t        scsi_bus;       /* SCSI Bus */
  252         u_int8_t        scsi_id;        /* SCSI ID */
  253         u_int16_t       blksize;        /* block size in bytes */
  254         u_int32_t       blkcount;       /* total blocks */
  255         u_int32_t       blkreserved;    /* reserved blocks */
  256         u_int8_t        drv_model[40];  /* drive model */
  257         u_int8_t        drv_serial[40]; /* drive serial number */
  258         u_int8_t        drv_fwrev[8];   /* drive firmware revision */
  259         u_int8_t        scsi_inq;       /* SCSI inquiry bits */
  260         u_int8_t        cpq_drv_stmp;
  261         u_int8_t        last_fail;
  262         u_int8_t        pd_flags;       /* physical drive flags */
  263 #define PDF_DISK_PRESENT        0x01
  264 #define PDF_NONDISK_PRESENT     0x02
  265 #define PDF_WIDE_ENABLED        0x04
  266 #define PDF_SYNC                0x08
  267 #define PDF_NARROW_TRAY         0x10
  268 #define PDF_WIDEFAIL            0x20
  269 #define PDF_ULTRA               0x40
  270 #define PDF_ULTRA2              0x80
  271         u_int8_t        mpd_flags;      /* more physical drive flags */
  272 #define MPDF_SMART_SUPPORT      0x01    /* S.M.A.R.T supported */
  273 #define MPDF_SMART_ERRORS       0x02    /* S.M.A.R.T errors recorded */
  274 #define MPDF_SMART_ENABLED      0x04    /* S.M.A.R.T predictive failure is enabled */
  275 #define MPDF_SMART_ERR_RESET    0x08    /* S.M.A.R.T errors recorded since last reset */
  276 #define MPDF_DRIVE_EXTERNAL     0x10    /* Connected to external connector. */
  277 #define MPDF_DRIVE_CONF_LVOL    0x20    /* Configured as part of a logical volume */
  278 #define MPDF_DRIVE_CONF_SPARE   0x40    /* Configured as a spare */
  279 #define MPDF_DRIVE_WCE          0x80    /* Drive WCE set on spinup */
  280         u_int8_t        scsi_lun;
  281         u_int8_t        ympd_flags;     /* yet more physical drive flags */
  282 #define YMPDF_DRIVE_WCE_SET     0x40    /* WCE currently set */
  283 #define YMPDF_DRIVE_WCE_CHNG    0x80    /* WCE changeable */
  284         u_int8_t        reserved;
  285         u_int32_t       spi_speed_rules;
  286         u_int8_t        phys_con[2];    /* Physical Connector */
  287         u_int8_t        phys_box;       /* Physical Box on Bus */
  288         u_int8_t        phys_bay;       /* Physical Bay in Box */
  289 } __packed;
  290 
  291 /*
  292  * CMD_BLINK_DRV_LEDS (0x16)
  293  * Blink Drive Tray LEDs
  294  *
  295  * CMD_SENSE_DRV_LEDS (0x17)
  296  * Sense Blinking Drive Tray LEDs
  297  */
  298 struct ida_blink_drv_leds {
  299         u_int32_t       bd;             /* Blink duration (in 10ths sec) */
  300         u_int32_t       bte;            /* Blink time elapsed (sense only) */
  301         u_int8_t        bse[256];       /* Blink/seek enable */
  302         u_int8_t        reserved1[248];
  303 } __packed;
  304 
  305 /*
  306  * CMD_LABEL_LOG_DRV (0x57)
  307  * Label Logical Drive
  308  */
  309 struct ida_label_logical {
  310         u_int32_t       ld_id;          /* Logical drive identifier */
  311         u_int8_t        ld_label[64];   /* Logical drive label */
  312 } __packed;

Cache object: 6d59a0aa0392fd145f99af571608c5b1


[ 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.