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/isci/scil/sati_mode_pages.c

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 OR GPL-2.0
    3  *
    4  * This file is provided under a dual BSD/GPLv2 license.  When using or
    5  * redistributing this file, you may do so under either license.
    6  *
    7  * GPL LICENSE SUMMARY
    8  *
    9  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
   10  *
   11  * This program is free software; you can redistribute it and/or modify
   12  * it under the terms of version 2 of the GNU General Public License as
   13  * published by the Free Software Foundation.
   14  *
   15  * This program is distributed in the hope that it will be useful, but
   16  * WITHOUT ANY WARRANTY; without even the implied warranty of
   17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   18  * General Public License for more details.
   19  *
   20  * You should have received a copy of the GNU General Public License
   21  * along with this program; if not, write to the Free Software
   22  * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
   23  * The full GNU General Public License is included in this distribution
   24  * in the file called LICENSE.GPL.
   25  *
   26  * BSD LICENSE
   27  *
   28  * Copyright(c) 2008 - 2011 Intel Corporation. All rights reserved.
   29  * All rights reserved.
   30  *
   31  * Redistribution and use in source and binary forms, with or without
   32  * modification, are permitted provided that the following conditions
   33  * are met:
   34  *
   35  *   * Redistributions of source code must retain the above copyright
   36  *     notice, this list of conditions and the following disclaimer.
   37  *   * Redistributions in binary form must reproduce the above copyright
   38  *     notice, this list of conditions and the following disclaimer in
   39  *     the documentation and/or other materials provided with the
   40  *     distribution.
   41  *
   42  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   43  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   44  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   45  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   46  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   47  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   48  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   49  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   50  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   51  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   52  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   53  */
   54 
   55 #include <sys/cdefs.h>
   56 __FBSDID("$FreeBSD$");
   57 
   58 /**
   59  * @file
   60  * @brief This file contains the mode page constants and data for the mode
   61  *        pages supported by this translation implementation.
   62  */
   63 
   64 // DO NOT MOVE THIS INCLUDE STATEMENT! This include must occur before
   65 // the below check for ENABLE_SATI_MODE_PAGES.
   66 #include <dev/isci/scil/sati_types.h>
   67 
   68 #if defined(ENABLE_SATI_MODE_PAGES)
   69 
   70 #include <dev/isci/scil/sati_mode_pages.h>
   71 #include <dev/isci/scil/intel_scsi.h>
   72 
   73 //******************************************************************************
   74 //* C O N S T A N T S
   75 //******************************************************************************
   76 
   77 #define SCSI_MODE_PAGE19_SAS_ID         0x6
   78 #define SCSI_MODE_PAGE19_SUB1_PAGE_NUM  0x1
   79 #define SCSI_MODE_PAGE19_SUB1_PC        0x59
   80 
   81 //******************************************************************************
   82 //* M O D E   P A G E S
   83 //******************************************************************************
   84 
   85 U8 sat_default_mode_page_01[] =
   86 {
   87    SCSI_MODE_PAGE_READ_WRITE_ERROR, // Byte 0 - Page Code, SPF(0), PS(0)
   88    SCSI_MODE_PAGE_01_LENGTH-2,      // Byte 1 - Page Length
   89    0x80, // Byte 2 - AWRE, ARRE, TB, RC, EER, PER, DTE, DCR
   90    0x00, // Byte 3 - Read Retry Count
   91 
   92    0x00, // Byte 4 - Obsolete
   93    0x00, // Byte 5 - Obsolete
   94    0x00, // Byte 6 - Obsolete
   95    0x00, // Byte 7 - Restricted for MMC-4
   96 
   97    0x00, // Byte 8 - Write Retry Count
   98    0x00, // Byte 9 - Reserved
   99    0x00, // Byte 10 - Recovery Time Limit
  100    0x00, // Byte 11
  101 };
  102 
  103 U8 sat_changeable_mode_page_01[] =
  104 {
  105    SCSI_MODE_PAGE_READ_WRITE_ERROR,
  106    SCSI_MODE_PAGE_01_LENGTH-2,
  107    0x00,
  108    0x00,
  109 
  110    0x00,
  111    0x00,
  112    0x00,
  113    0x00,
  114 
  115    0x00,
  116    0x00,
  117    0x00,
  118    0x00,
  119 };
  120 
  121 U8 sat_default_mode_page_02[] =
  122 {
  123    SCSI_MODE_PAGE_DISCONNECT_RECONNECT, // Byte 0 - Page Code, SPF(0), PS(0)
  124    SCSI_MODE_PAGE_02_LENGTH-2,          // Byte 1 - Page Length
  125    0x00, // Byte 2 - Buffer Full Ratio
  126    0x00, // Byte 3 - Buffer Empty Ratio
  127 
  128    0x00, // Byte 4 - Bus Inactivity Limit
  129    0x00, // Byte 5
  130    0x00, // Byte 6 - Disconnect Time Limit
  131    0x00, // Byte 7
  132 
  133    0x00, // Byte 8 - Connect Time Limit
  134    0x00, // Byte 9
  135    0x00, // Byte 10 - Maximum Burst Size
  136    0x00, // Byte 11
  137 
  138    0x00, // Byte 12 - EMDP, FAIR_ARB, DIMM, DTDC
  139    0x00, // Byte 13
  140    0x00, // Byte 14 - First Burst Size
  141    0x00, // Byte 15
  142 };
  143 
  144 U8 sat_changeable_mode_page_02[] =
  145 {
  146    SCSI_MODE_PAGE_DISCONNECT_RECONNECT,
  147    SCSI_MODE_PAGE_02_LENGTH-2,
  148    0x00,
  149    0x00,
  150 
  151    0x00,
  152    0x00,
  153    0x00,
  154    0x00,
  155 
  156    0x00,
  157    0x00,
  158    0x00,
  159    0x00,
  160 
  161    0x00,
  162    0x00,
  163    0x00,
  164    0x00,
  165 };
  166 
  167 U8 sat_default_mode_page_08[] =
  168 {
  169    SCSI_MODE_PAGE_CACHING,     // Byte 0 - Page Code, SPF(0), PS(0)
  170    SCSI_MODE_PAGE_08_LENGTH-2, // Byte 1 - Page Length
  171    0x00, // Byte 2 - IC, ABPF, CAP, DISC, SIZE, WCE(1), MF, RCD
  172    0x00, // Byte 3 - Demand Read Retention Priority, Write Retention Priority
  173 
  174    0x00, // Byte 4 - Disable Pre-Fetch Transfer Length
  175    0x00, // Byte 5
  176    0x00, // Byte 6 - Minimum Pre-Fetch
  177    0x00, // Byte 7
  178 
  179    0x00, // Byte 8 - Maximum Pre-Fetch
  180    0x00, // Byte 9
  181    0x00, // Byte 10 - Maximum Pre-Fetch Ceiling
  182    0x00, // Byte 11
  183 
  184    0x00, // Byte 12 - FSW, LBCSS, DRA(0), Vendor Specific, NV_DIS
  185    0x00, // Byte 13 - Number of Cache Segments
  186    0x00, // Byte 14 - Cache Segment Size
  187    0x00, // Byte 15
  188 
  189    0x00, // Byte 16 - Reserved
  190    0x00, // Byte 17 - Non-Cache Segment Size
  191    0x00, // Byte 18
  192    0x00, // PAD
  193 };
  194 
  195 U8 sat_changeable_mode_page_08[] =
  196 {
  197    SCSI_MODE_PAGE_CACHING,
  198    SCSI_MODE_PAGE_08_LENGTH-2,
  199    SCSI_MODE_PAGE_CACHE_PAGE_WCE_BIT,
  200    0x00,
  201 
  202    0x00,
  203    0x00,
  204    0x00,
  205    0x00,
  206 
  207    0x00,
  208    0x00,
  209    0x00,
  210    0x00,
  211 
  212    SCSI_MODE_PAGE_CACHE_PAGE_DRA_BIT,
  213    0x00,
  214    0x00,
  215    0x00,
  216 
  217    0x00,
  218    0x00,
  219    0x00,
  220    0x00, // PAD
  221 };
  222 
  223 U8 sat_default_mode_page_0A[] =
  224 {
  225    SCSI_MODE_PAGE_CONTROL,     // Byte 0 - Page Code, SPF(0), PS(0)
  226    SCSI_MODE_PAGE_0A_LENGTH-2, // Byte 1 - Page Length
  227    0x00, // Byte 2 - TST(0), TMF_ONLY(0), D_SENSE(0), GLTSD(0), RLEC(0)
  228    0x10, // Byte 3 - Queue Algorithm(0), QErr(0)
  229 
  230    0x00, // Byte 4 - TAS(0), RAC(0), UA_(0), SWP(0)
  231    0x00, // Byte 5 - ATO(0), AUTOLOAD(0)
  232    0x00, // Byte 6
  233    0x00, // Byte 7
  234 
  235    0xFF, // Byte 8 - Unlimited Busy timeout
  236    0xFF, // Byte 9
  237    0x00, // Byte 10 - do not support self time compl time xlation
  238    0x00, // Byte 11
  239 };
  240 
  241 U8 sat_changeable_mode_page_0A[] =
  242 {
  243    SCSI_MODE_PAGE_CONTROL,
  244    SCSI_MODE_PAGE_0A_LENGTH-2,
  245    0x00,
  246    0x00,
  247 
  248    0x00,
  249    0x00,
  250    0x00,
  251    0x00,
  252 
  253    0x00,
  254    0x00,
  255    0x00,
  256    0x00,
  257 };
  258 
  259 U8 sat_default_mode_page_19[] =
  260 {
  261    SCSI_MODE_PAGE_PROTOCOL_SPECIFIC_PORT, // Byte 0 - PS, SPF, Page Code
  262    SCSI_MODE_PAGE_19_LENGTH-2,  // Byte 1 - Page Length
  263    SCSI_MODE_PAGE19_SAS_ID,     // Byte 2 - Rsvd, READY_LED,  ProtoID
  264    0x00, // PAD
  265 
  266    0xFF, // Byte 4 - IT NLT MSB, 0xFF retry forever
  267    0xFF, // Byte 5 - IT NLT LSB, 0xFF retry forever
  268    0x00, // Byte 6 - IRT MSB, 0x0 disable init resp timer
  269    0x00, // Byte 7 - IRT LSB, 0x0 disable init resp timer
  270 };
  271 
  272 U8 sat_changeable_mode_page_19[] =
  273 {
  274    SCSI_MODE_PAGE_PROTOCOL_SPECIFIC_PORT,
  275    SCSI_MODE_PAGE_19_LENGTH-2,
  276    0x00,
  277    0x00,
  278 
  279    0x00,
  280    0x00,
  281    0x00,
  282    0x00,
  283 };
  284 
  285 U8 sat_default_mode_page_1C[] =
  286 {
  287    SCSI_MODE_PAGE_INFORMATIONAL_EXCP_CONTROL, // Byte 0 - Page Code,
  288                                               // SPF(0), PS(0)
  289    SCSI_MODE_PAGE_1C_LENGTH-2,   // Byte 1 - Page Length
  290    SCSI_MODE_PAGE_DEXCPT_ENABLE, // Byte 2 - Perf, EBF, EWasc,
  291                                  // DExcpt(1), Test, LogErr
  292    0x06, // Byte 3 -- MRIE (6 == values only available upon request)
  293 
  294    0x00, // Byte 4 -- Interval Timer
  295    0x00, // Byte 5
  296    0x00, // Byte 6
  297    0x00, // Byte 7
  298 
  299    0x00, // Byte 8 -- Report Count
  300    0x00, // Byte 9
  301    0x00, // Byte 10
  302    0x00, // Byte 11
  303 };
  304 
  305 U8 sat_changeable_mode_page_1C[] =
  306 {
  307    SCSI_MODE_PAGE_INFORMATIONAL_EXCP_CONTROL,
  308    SCSI_MODE_PAGE_1C_LENGTH-2,
  309    SCSI_MODE_PAGE_DEXCPT_ENABLE,
  310    0x00,
  311 
  312    0x00,
  313    0x00,
  314    0x00,
  315    0x00,
  316 
  317    0x00,
  318    0x00,
  319    0x00,
  320    0x00,
  321 };
  322 
  323 U8 sat_supported_mode_pages[] =
  324 {
  325    SCSI_MODE_PAGE_READ_WRITE_ERROR,
  326    SCSI_MODE_PAGE_DISCONNECT_RECONNECT,
  327    SCSI_MODE_PAGE_CACHING,
  328    SCSI_MODE_PAGE_CONTROL,
  329    SCSI_MODE_PAGE_INFORMATIONAL_EXCP_CONTROL
  330 };
  331 
  332 U8 *sat_changeable_mode_pages[] =
  333 {
  334    sat_changeable_mode_page_01,
  335    sat_changeable_mode_page_02,
  336    sat_changeable_mode_page_08,
  337    sat_changeable_mode_page_0A,
  338    sat_changeable_mode_page_1C
  339 };
  340 
  341 U8 *sat_default_mode_pages[] =
  342 {
  343    sat_default_mode_page_01,
  344    sat_default_mode_page_02,
  345    sat_default_mode_page_08,
  346    sat_default_mode_page_0A,
  347    sat_default_mode_page_1C
  348 };
  349 
  350 U16 sat_mode_page_sizes[] =
  351 {
  352    sizeof(sat_default_mode_page_01),
  353    sizeof(sat_default_mode_page_02),
  354    sizeof(sat_default_mode_page_08),
  355    sizeof(sat_default_mode_page_0A),
  356    sizeof(sat_default_mode_page_1C)
  357 };
  358 
  359 U16 sati_mode_page_get_page_index(
  360    U8  page_code
  361 )
  362 {
  363    U16 index;
  364    for (index = 0; index < SAT_SUPPORTED_MODE_PAGES_LENGTH; index++)
  365    {
  366       if (sat_supported_mode_pages[index] == page_code)
  367          return index;
  368    }
  369 
  370    return SATI_MODE_PAGE_UNSUPPORTED_INDEX;
  371 }
  372 
  373 #endif // defined(ENABLE_SATI_MODE_PAGES)
  374 

Cache object: 862ddbf82d619d78c69c2aba88da86a9


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