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/scic_config_parameters.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 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  * $FreeBSD$
   55  */
   56 #ifndef _SCIC_SDS_USER_PARAMETERS_H_
   57 #define _SCIC_SDS_USER_PARAMETERS_H_
   58 
   59 /**
   60  * @file
   61  *
   62  * @brief This file contains all of the structure definitions and interface
   63  *        methods that can be called by a SCIC user on the SCU Driver
   64  *        Standard (SCIC_SDS_USER_PARAMETERS_T) user parameter block.
   65  */
   66 
   67 #ifdef __cplusplus
   68 extern "C" {
   69 #endif // __cplusplus
   70 
   71 #include <dev/isci/scil/sci_types.h>
   72 #include <dev/isci/scil/sci_status.h>
   73 #include <dev/isci/scil/intel_sas.h>
   74 #include <dev/isci/scil/sci_controller_constants.h>
   75 #include <dev/isci/scil/scu_bios_definitions.h>
   76 
   77 /**
   78  * @name SCIC_SDS_PARM_PHY_SPEED
   79  *
   80  * These constants define the speeds utilized for a phy/port.
   81  */
   82 /*@{*/
   83 #define SCIC_SDS_PARM_NO_SPEED   0
   84 
   85 /**
   86  * This value of 1 indicates generation 1 (i.e. 1.5 Gb/s).
   87  */
   88 #define SCIC_SDS_PARM_GEN1_SPEED 1
   89 
   90 /**
   91  * This value of 2 indicates generation 2 (i.e. 3.0 Gb/s).
   92  */
   93 #define SCIC_SDS_PARM_GEN2_SPEED 2
   94 
   95 /**
   96  * This value of 3 indicates generation 3 (i.e. 6.0 Gb/s).
   97  */
   98 #define SCIC_SDS_PARM_GEN3_SPEED 3
   99 
  100 /**
  101  * For range checks, the max speed generation
  102  */
  103 #define SCIC_SDS_PARM_MAX_SPEED SCIC_SDS_PARM_GEN3_SPEED
  104 /*@}*/
  105 
  106 /**
  107  * @struct SCIC_SDS_USER_PARAMETERS
  108  *
  109  * @brief This structure delineates the various user parameters that can be
  110  *        changed by the core user.
  111  */
  112 typedef struct SCIC_SDS_USER_PARAMETERS
  113 {
  114    struct
  115    {
  116       /**
  117        * This field specifies the NOTIFY (ENABLE SPIN UP) primitive
  118        * insertion frequency for this phy index.
  119        */
  120       U32  notify_enable_spin_up_insertion_frequency;
  121 
  122       /**
  123        * This method specifies the number of transmitted DWORDs within which
  124        * to transmit a single ALIGN primitive.  This value applies regardless
  125        * of what type of device is attached or connection state.  A value of
  126        * 0 indicates that no ALIGN primitives will be inserted.
  127        */
  128       U16  align_insertion_frequency;
  129 
  130       /**
  131        * This method specifies the number of transmitted DWORDs within which
  132        * to transmit 2 ALIGN primitives.  This applies for SAS connections
  133        * only.  A minimum value of 3 is required for this field.
  134        */
  135       U16  in_connection_align_insertion_frequency;
  136 
  137       /**
  138        * This field indicates the maximum speed generation to be utilized
  139        * by phys in the supplied port.
  140        * - A value of 1 indicates generation 1 (i.e. 1.5 Gb/s).
  141        * - A value of 2 indicates generation 2 (i.e. 3.0 Gb/s).
  142        * - A value of 3 indicates generation 3 (i.e. 6.0 Gb/s).
  143        */
  144       U8 max_speed_generation;
  145 
  146    } phys[SCI_MAX_PHYS];
  147 
  148 
  149    /**
  150     * This field specifies the number of seconds to allow a phy to consume
  151     * power before yielding to another phy.
  152     *
  153     */
  154    U8  phy_spin_up_delay_interval;
  155 
  156    /**
  157    * These timer values specifies how long a link will remain open with no
  158    * activity in increments of a microsecond, it can be in increments of
  159    * 100 microseconds if the upper most bit is set.
  160    *
  161    */
  162    U16 stp_inactivity_timeout;
  163    U16 ssp_inactivity_timeout;
  164 
  165    /**
  166    * These timer values specifies how long a link will remain open in increments
  167    * of 100 microseconds.
  168    *
  169    */
  170    U16 stp_max_occupancy_timeout;
  171    U16 ssp_max_occupancy_timeout;
  172 
  173    /**
  174    * This timer value specifies how long a link will remain open with no
  175    * outbound traffic in increments of a microsecond.
  176    *
  177    */
  178    U8 no_outbound_task_timeout;
  179 
  180 } SCIC_SDS_USER_PARAMETERS_T;
  181 
  182 /**
  183  * @union SCIC_USER_PARAMETERS
  184  * @brief This structure/union specifies the various different user
  185  *        parameter sets available.  Each type is specific to a hardware
  186  *        controller version.
  187  */
  188 typedef union SCIC_USER_PARAMETERS
  189 {
  190    /**
  191     * This field specifies the user parameters specific to the
  192     * Storage Controller Unit (SCU) Driver Standard (SDS) version
  193     * 1.
  194     */
  195    SCIC_SDS_USER_PARAMETERS_T sds1;
  196 
  197 } SCIC_USER_PARAMETERS_T;
  198 
  199 
  200 /**
  201  * @name SCIC_SDS_OEM_PHY_MASK
  202  *
  203  * These constants define the valid values for phy_mask
  204  */
  205 /*@{*/
  206 
  207 /**
  208  * This is the min value assignable to a port's phy mask
  209  */
  210 #define SCIC_SDS_PARM_PHY_MASK_MIN 0x0
  211 
  212 /**
  213  * This is the max value assignable to a port's phy mask
  214  */
  215 #define SCIC_SDS_PARM_PHY_MASK_MAX 0xF
  216 /*@}*/
  217 
  218 #define MAX_CONCURRENT_DEVICE_SPIN_UP_COUNT 4
  219 
  220 typedef SCI_BIOS_OEM_PARAM_ELEMENT_v_1_3_T SCIC_SDS_OEM_PARAMETERS_T;
  221 
  222 /**
  223  * @union SCIC_OEM_PARAMETERS
  224  *
  225  * @brief This structure/union specifies the various different OEM
  226  *        parameter sets available.  Each type is specific to a hardware
  227  *        controller version.
  228  */
  229 typedef union SCIC_OEM_PARAMETERS
  230 {
  231    /**
  232     * This field specifies the OEM parameters specific to the
  233     * Storage Controller Unit (SCU) Driver Standard (SDS) version
  234     * 1.
  235     */
  236    SCIC_SDS_OEM_PARAMETERS_T sds1;
  237 
  238 } SCIC_OEM_PARAMETERS_T;
  239 
  240 /**
  241  * @union OEM_SSC_DATA
  242  *
  243  * @brief This typedef provides a means to convert from the original
  244  *        1.0 version of the OEM PARAMETER do_enable_ssc to the more
  245  *        comprehensive 1.1 version of enabling SSC parameters.
  246  *        For the definition of the field members see scu_bios_definitions.h
  247  *        header file or refer to the SCU BIOS Writers Guide.
  248  */
  249 typedef union OEM_SSC_PARAMETERS
  250 {
  251    struct
  252    {
  253       U8 ssc_sata_tx_spread_level : 4;
  254       U8 ssc_sas_tx_spread_level : 3;
  255       U8 ssc_sas_tx_type : 1;
  256    } bf;
  257 
  258    U8 do_enable_ssc;
  259 
  260 } OEM_SSC_PARAMETERS_T;
  261 
  262 /**
  263  * @brief This method allows the user to attempt to change the user
  264  *        parameters utilized by the controller.
  265  *
  266  * @param[in] controller This parameter specifies the controller on which
  267  *            to set the user parameters.
  268  * @param[in] user_parameters This parameter specifies the USER_PARAMETERS
  269  *            object containing the potential new values.
  270  *
  271  * @return Indicate if the update of the user parameters was successful.
  272  * @retval SCI_SUCCESS This value is returned if the operation succeeded.
  273  * @retval SCI_FAILURE_INVALID_STATE This value is returned if the attempt
  274  *         to change the user parameter failed, because changing one of
  275  *         the parameters is not currently allowed.
  276  * @retval SCI_FAILURE_INVALID_PARAMETER_VALUE This value is returned if the
  277  *         user supplied an invalid interrupt coalescence time, spin up
  278  *         delay interval, etc.
  279  */
  280 SCI_STATUS scic_user_parameters_set(
  281    SCI_CONTROLLER_HANDLE_T   controller,
  282    SCIC_USER_PARAMETERS_T  * user_parameters
  283 );
  284 
  285 /**
  286  * @brief This method allows the user to retrieve the user parameters
  287  *        utilized by the controller.
  288  *
  289  * @param[in] controller This parameter specifies the controller on which
  290  *            to set the user parameters.
  291  * @param[in] user_parameters This parameter specifies the USER_PARAMETERS
  292  *            object into which the framework shall save it's parameters.
  293  *
  294  * @return none
  295  */
  296 void scic_user_parameters_get(
  297    SCI_CONTROLLER_HANDLE_T   controller,
  298    SCIC_USER_PARAMETERS_T  * user_parameters
  299 );
  300 
  301 /**
  302  * @brief This method allows the user to attempt to change the OEM
  303  *        parameters utilized by the controller.
  304  *
  305  * @param[in] controller This parameter specifies the controller on which
  306  *            to set the user parameters.
  307  * @param[in] oem_parameters This parameter specifies the OEM parameters
  308  *            object containing the potential new values.
  309  * @param[in] oem_parameters_version This parameter is the OEM block version
  310  *            value indicating the format of the data associated with
  311  *            oem_parameters.
  312  *
  313  * @return Indicate if the update of the user parameters was successful.
  314  * @retval SCI_SUCCESS This value is returned if the operation succeeded.
  315  * @retval SCI_FAILURE_INVALID_STATE This value is returned if the attempt
  316  *         to change the user parameter failed, because changing one of
  317  *         the parameters is not currently allowed.
  318  * @retval SCI_FAILURE_INVALID_PARAMETER_VALUE This value is returned if the
  319  *         user supplied an unsupported value for one of the OEM parameters.
  320  */
  321 SCI_STATUS scic_oem_parameters_set(
  322    SCI_CONTROLLER_HANDLE_T   controller,
  323    SCIC_OEM_PARAMETERS_T   * oem_parameters,
  324    U8 oem_parameters_version
  325 );
  326 
  327 /**
  328  * @brief This method allows the user to retrieve the OEM
  329  *        parameters utilized by the controller.
  330  *
  331  * @param[in]  controller This parameter specifies the controller on which
  332  *             to set the user parameters.
  333  * @param[out] oem_parameters This parameter specifies the OEM parameters
  334  *             object in which to write the core's OEM parameters.
  335  *
  336  * @return none
  337  */
  338 void scic_oem_parameters_get(
  339    SCI_CONTROLLER_HANDLE_T   controller,
  340    SCIC_OEM_PARAMETERS_T   * oem_parameters
  341 );
  342 
  343 #ifdef __cplusplus
  344 }
  345 #endif // __cplusplus
  346 
  347 #endif // _SCIC_SDS_USER_PARAMETERS_H_
  348 

Cache object: 8280d8f159ad310dbb653b9c7d57793d


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