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/contrib/ncsw/Peripherals/FM/fm_ipc.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  * Copyright 2008-2012 Freescale Semiconductor Inc.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions are met:
    6  *     * Redistributions of source code must retain the above copyright
    7  *       notice, this list of conditions and the following disclaimer.
    8  *     * Redistributions in binary form must reproduce the above copyright
    9  *       notice, this list of conditions and the following disclaimer in the
   10  *       documentation and/or other materials provided with the distribution.
   11  *     * Neither the name of Freescale Semiconductor nor the
   12  *       names of its contributors may be used to endorse or promote products
   13  *       derived from this software without specific prior written permission.
   14  *
   15  *
   16  * ALTERNATIVELY, this software may be distributed under the terms of the
   17  * GNU General Public License ("GPL") as published by the Free Software
   18  * Foundation, either version 2 of that License or (at your option) any
   19  * later version.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
   22  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   24  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
   25  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   26  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   28  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 
   34 /**************************************************************************//**
   35  @File          fm_ipc.h
   36 
   37  @Description   FM Inter-Partition prototypes, structures and definitions.
   38 *//***************************************************************************/
   39 #ifndef __FM_IPC_H
   40 #define __FM_IPC_H
   41 
   42 #include "error_ext.h"
   43 #include "std_ext.h"
   44 
   45 
   46 /**************************************************************************//**
   47  @Group         FM_grp Frame Manager API
   48 
   49  @Description   FM API functions, definitions and enums
   50 
   51  @{
   52 *//***************************************************************************/
   53 
   54 /**************************************************************************//**
   55  @Group         FM_IPC_grp FM Inter-Partition messaging Unit
   56 
   57  @Description   FM Inter-Partition messaging unit API definitions and enums.
   58 
   59  @{
   60 *//***************************************************************************/
   61 
   62 #if defined(__MWERKS__) && !defined(__GNUC__)
   63 #pragma pack(push,1)
   64 #endif /* defined(__MWERKS__) && ... */
   65 
   66 /**************************************************************************//**
   67  @Description   enum for defining MAC types
   68 *//***************************************************************************/
   69 
   70 /**************************************************************************//**
   71  @Description   A structure of parameters for specifying a MAC.
   72 *//***************************************************************************/
   73 typedef _Packed struct
   74 {
   75     uint8_t         id;
   76     uint32_t        enumType;
   77 } _PackedType t_FmIpcMacParams;
   78 
   79 /**************************************************************************//**
   80  @Description   A structure of parameters for specifying a MAC.
   81 *//***************************************************************************/
   82 typedef _Packed struct
   83 {
   84     t_FmIpcMacParams    macParams;
   85     uint16_t            maxFrameLength;
   86 } _PackedType t_FmIpcMacMaxFrameParams;
   87 
   88 /**************************************************************************//**
   89  @Description   FM physical Address
   90 *//***************************************************************************/
   91 typedef _Packed struct t_FmIpcPhysAddr
   92 {
   93     volatile uint8_t    high;
   94     volatile uint32_t   low;
   95 } _PackedType t_FmIpcPhysAddr;
   96 
   97 
   98 typedef _Packed struct t_FmIpcPortOutInitParams {
   99     uint8_t             numOfTasks;         /**< OUT */
  100     uint8_t             numOfExtraTasks;    /**< OUT */
  101     uint8_t             numOfOpenDmas;      /**< OUT */
  102     uint8_t             numOfExtraOpenDmas; /**< OUT */
  103     uint32_t            sizeOfFifo;         /**< OUT */
  104     uint32_t            extraSizeOfFifo;    /**< OUT */
  105     t_FmIpcPhysAddr     ipcPhysAddr;        /**< OUT */
  106 } _PackedType t_FmIpcPortOutInitParams;
  107 
  108 /**************************************************************************//**
  109  @Description   Structure for IPC communication during FM_PORT_Init.
  110 *//***************************************************************************/
  111 typedef _Packed struct t_FmIpcPortInInitParams {
  112     uint8_t             hardwarePortId;     /**< IN. port Id */
  113     uint32_t            enumPortType;       /**< IN. Port type */
  114     uint8_t             boolIndependentMode;/**< IN. TRUE if FM Port operates in independent mode */
  115     uint16_t            liodnOffset;        /**< IN. Port's requested resource */
  116     uint8_t             numOfTasks;         /**< IN. Port's requested resource */
  117     uint8_t             numOfExtraTasks;    /**< IN. Port's requested resource */
  118     uint8_t             numOfOpenDmas;      /**< IN. Port's requested resource */
  119     uint8_t             numOfExtraOpenDmas; /**< IN. Port's requested resource */
  120     uint32_t            sizeOfFifo;         /**< IN. Port's requested resource */
  121     uint32_t            extraSizeOfFifo;    /**< IN. Port's requested resource */
  122     uint8_t             deqPipelineDepth;   /**< IN. Port's requested resource */
  123     uint16_t            maxFrameLength;     /**< IN. Port's max frame length. */
  124     uint16_t            liodnBase;          /**< IN. Irrelevant for P4080 rev 1.
  125                                                  LIODN base for this port, to be
  126                                                  used together with LIODN offset. */
  127 } _PackedType t_FmIpcPortInInitParams;
  128 
  129 
  130 /**************************************************************************//**
  131  @Description   Structure for IPC communication between port and FM
  132                 regarding tasks and open DMA resources management.
  133 *//***************************************************************************/
  134 typedef _Packed struct t_FmIpcPortRsrcParams {
  135     uint8_t             hardwarePortId;     /**< IN. port Id */
  136     uint32_t            val;                /**< IN. Port's requested resource */
  137     uint32_t            extra;              /**< IN. Port's requested resource */
  138     uint8_t             boolInitialConfig;
  139 } _PackedType t_FmIpcPortRsrcParams;
  140 
  141 
  142 /**************************************************************************//**
  143  @Description   Structure for IPC communication between port and FM
  144                 regarding tasks and open DMA resources management.
  145 *//***************************************************************************/
  146 typedef _Packed struct t_FmIpcPortFifoParams {
  147     t_FmIpcPortRsrcParams   rsrcParams;
  148     uint32_t                enumPortType;
  149     uint8_t                 boolIndependentMode;
  150     uint8_t                 deqPipelineDepth;
  151     uint8_t                 numOfPools;
  152     uint16_t                secondLargestBufSize;
  153     uint16_t                largestBufSize;
  154     uint8_t                 boolInitialConfig;
  155 } _PackedType t_FmIpcPortFifoParams;
  156 
  157 /**************************************************************************//**
  158  @Description   Structure for port-FM communication during FM_PORT_Free.
  159 *//***************************************************************************/
  160 typedef _Packed struct t_FmIpcPortFreeParams {
  161     uint8_t             hardwarePortId;         /**< IN. port Id */
  162     uint32_t            enumPortType;           /**< IN. Port type */
  163     uint8_t             deqPipelineDepth;       /**< IN. Port's requested resource */
  164 } _PackedType t_FmIpcPortFreeParams;
  165 
  166 /**************************************************************************//**
  167  @Description   Structure for defining DMA status
  168 *//***************************************************************************/
  169 typedef _Packed struct t_FmIpcDmaStatus {
  170     uint8_t    boolCmqNotEmpty;            /**< Command queue is not empty */
  171     uint8_t    boolBusError;               /**< Bus error occurred */
  172     uint8_t    boolReadBufEccError;        /**< Double ECC error on buffer Read */
  173     uint8_t    boolWriteBufEccSysError;    /**< Double ECC error on buffer write from system side */
  174     uint8_t    boolWriteBufEccFmError;     /**< Double ECC error on buffer write from FM side */
  175     uint8_t    boolSinglePortEccError;     /**< Single port ECC error from FM side */
  176 } _PackedType t_FmIpcDmaStatus;
  177 
  178 typedef _Packed struct t_FmIpcRegisterIntr
  179 {
  180     uint8_t         guestId;        /* IN */
  181     uint32_t        event;          /* IN */
  182 } _PackedType t_FmIpcRegisterIntr;
  183 
  184 typedef _Packed struct t_FmIpcIsr
  185 {
  186     uint8_t         boolErr;        /* IN */
  187     uint32_t        pendingReg;     /* IN */
  188 } _PackedType t_FmIpcIsr;
  189 
  190 /**************************************************************************//**
  191  @Description   structure for returning FM parameters
  192 *//***************************************************************************/
  193 typedef _Packed struct t_FmIpcParams {
  194     uint16_t        fmClkFreq;              /**< OUT: FM Clock frequency */
  195     uint16_t        fmMacClkFreq;           /**< OUT: FM MAC clock frequence */
  196     uint8_t         majorRev;               /**< OUT: FM Major revision */
  197     uint8_t         minorRev;               /**< OUT: FM Minor revision */
  198 } _PackedType t_FmIpcParams;
  199 
  200 
  201 /**************************************************************************//**
  202  @Description   structure for returning Fman Ctrl Code revision information
  203 *//***************************************************************************/
  204 typedef _Packed struct t_FmIpcFmanCtrlCodeRevisionInfo {
  205     uint16_t        packageRev;             /**< OUT: Package revision */
  206     uint8_t         majorRev;               /**< OUT: Major revision */
  207     uint8_t         minorRev;               /**< OUT: Minor revision */
  208 } _PackedType t_FmIpcFmanCtrlCodeRevisionInfo;
  209 
  210 /**************************************************************************//**
  211  @Description   Structure for defining Fm number of Fman controlers
  212 *//***************************************************************************/
  213 typedef _Packed struct t_FmIpcPortNumOfFmanCtrls {
  214     uint8_t             hardwarePortId;         /**< IN. port Id */
  215     uint8_t             numOfFmanCtrls;         /**< IN. Port type */
  216     t_FmFmanCtrl        orFmanCtrl;             /**< IN. fman controller for order restoration*/
  217 } t_FmIpcPortNumOfFmanCtrls;
  218 
  219 /**************************************************************************//**
  220  @Description   structure for setting Fman contriller events
  221 *//***************************************************************************/
  222 typedef _Packed struct t_FmIpcFmanEvents {
  223     uint8_t     eventRegId;               /**< IN: Fman controller event register id */
  224     uint32_t    enableEvents;             /**< IN/OUT: required enabled events mask */
  225 } _PackedType t_FmIpcFmanEvents;
  226 
  227 typedef _Packed struct t_FmIpcResourceAllocParams {
  228     uint8_t     guestId;
  229     uint16_t    base;
  230     uint16_t    num;
  231 }_PackedType t_FmIpcResourceAllocParams;
  232 
  233 typedef _Packed struct t_FmIpcVspSetPortWindow {
  234     uint8_t     hardwarePortId;
  235     uint8_t     baseStorageProfile;
  236     uint8_t     log2NumOfProfiles;
  237 }_PackedType t_FmIpcVspSetPortWindow;
  238 
  239 typedef _Packed struct t_FmIpcSetCongestionGroupPfcPriority {
  240     uint32_t     congestionGroupId;
  241     uint8_t      priorityBitMap;
  242 }_PackedType t_FmIpcSetCongestionGroupPfcPriority;
  243 
  244 #define FM_IPC_MAX_REPLY_BODY_SIZE  20
  245 #define FM_IPC_MAX_REPLY_SIZE       (FM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t))
  246 #define FM_IPC_MAX_MSG_SIZE         30
  247 
  248 typedef _Packed struct t_FmIpcMsg
  249 {
  250     uint32_t    msgId;
  251     uint8_t     msgBody[FM_IPC_MAX_MSG_SIZE];
  252 } _PackedType t_FmIpcMsg;
  253 
  254 typedef _Packed struct t_FmIpcReply
  255 {
  256     uint32_t    error;
  257     uint8_t     replyBody[FM_IPC_MAX_REPLY_BODY_SIZE];
  258 } _PackedType t_FmIpcReply;
  259 
  260 #if defined(__MWERKS__) && !defined(__GNUC__)
  261 #pragma pack(pop)
  262 #endif /* defined(__MWERKS__) && ... */
  263 
  264 
  265 /***************************************************************************/
  266 /************************ FRONT-END-TO-BACK-END*****************************/
  267 /***************************************************************************/
  268 
  269 /**************************************************************************//**
  270  @Function      FM_GET_TIMESTAMP_SCALE
  271 
  272  @Description   Used by FM front-end.
  273 
  274  @Param[out]    uint32_t Pointer
  275 *//***************************************************************************/
  276 #define FM_GET_TIMESTAMP_SCALE      1
  277 
  278 /**************************************************************************//**
  279  @Function      FM_GET_COUNTER
  280 
  281  @Description   Used by FM front-end.
  282 
  283  @Param[in/out] t_FmIpcGetCounter Pointer
  284 *//***************************************************************************/
  285 #define FM_GET_COUNTER              2
  286 
  287 /**************************************************************************//**
  288  @Function      FM_GET_SET_PORT_PARAMS
  289 
  290  @Description   Used by FM front-end for the PORT module in order to set and get
  291                 parameters in/from master FM module on FM PORT initialization time.
  292 
  293  @Param[in/out] t_FmIcPortInitParams Pointer
  294 *//***************************************************************************/
  295 #define FM_GET_SET_PORT_PARAMS      4
  296 
  297 /**************************************************************************//**
  298  @Function      FM_FREE_PORT
  299 
  300  @Description   Used by FM front-end for the PORT module when a port is freed
  301                 to free all FM PORT resources.
  302 
  303  @Param[in]     uint8_t Pointer
  304 *//***************************************************************************/
  305 #define FM_FREE_PORT                5
  306 
  307 /**************************************************************************//**
  308  @Function      FM_RESET_MAC
  309 
  310  @Description   Used by front-end for the MAC module to reset the MAC registers
  311 
  312  @Param[in]     t_FmIpcMacParams Pointer .
  313 *//***************************************************************************/
  314 #define FM_RESET_MAC                6
  315 
  316 /**************************************************************************//**
  317  @Function      FM_RESUME_STALLED_PORT
  318 
  319  @Description   Used by FM front-end for the PORT module in order to
  320                 release a stalled FM Port.
  321 
  322  @Param[in]     uint8_t Pointer
  323 *//***************************************************************************/
  324 #define FM_RESUME_STALLED_PORT      7
  325 
  326 /**************************************************************************//**
  327  @Function      FM_IS_PORT_STALLED
  328 
  329  @Description   Used by FM front-end for the PORT module in order to check whether
  330                 an FM port is stalled.
  331 
  332  @Param[in/out] t_FmIcPortIsStalled Pointer
  333 *//***************************************************************************/
  334 #define FM_IS_PORT_STALLED          8
  335 
  336 /**************************************************************************//**
  337  @Function      FM_GET_PARAMS
  338 
  339  @Description   Used by FM front-end for the PORT module in order to dump
  340                 return FM parameters.
  341 
  342  @Param[in]     uint8_t Pointer
  343 *//***************************************************************************/
  344 #define FM_GET_PARAMS                  10
  345 
  346 /**************************************************************************//**
  347  @Function      FM_REGISTER_INTR
  348 
  349  @Description   Used by FM front-end to register an interrupt handler to
  350                 be called upon interrupt for guest.
  351 
  352  @Param[out]    t_FmIpcRegisterIntr Pointer
  353 *//***************************************************************************/
  354 #define FM_REGISTER_INTR            11
  355 
  356 /**************************************************************************//**
  357  @Function      FM_DMA_STAT
  358 
  359  @Description   Used by FM front-end to read the FM DMA status.
  360 
  361  @Param[out]    t_FmIpcDmaStatus Pointer
  362 *//***************************************************************************/
  363 #define FM_DMA_STAT                 13
  364 
  365 /**************************************************************************//**
  366  @Function      FM_ALLOC_FMAN_CTRL_EVENT_REG
  367 
  368  @Description   Used by FM front-end to allocate event register.
  369 
  370  @Param[out]    Event register id Pointer
  371 *//***************************************************************************/
  372 #define FM_ALLOC_FMAN_CTRL_EVENT_REG 14
  373 
  374 /**************************************************************************//**
  375  @Function      FM_FREE_FMAN_CTRL_EVENT_REG
  376 
  377  @Description   Used by FM front-end to free locate event register.
  378 
  379  @Param[in]    uint8_t Pointer - Event register id
  380 *//***************************************************************************/
  381 #define FM_FREE_FMAN_CTRL_EVENT_REG 15
  382 
  383 /**************************************************************************//**
  384  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
  385 
  386  @Description   Used by FM front-end to enable events in the FPM
  387                 Fman controller event register.
  388 
  389  @Param[in]    t_FmIpcFmanEvents Pointer
  390 *//***************************************************************************/
  391 #define FM_SET_FMAN_CTRL_EVENTS_ENABLE 16
  392 
  393 /**************************************************************************//**
  394  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
  395 
  396  @Description   Used by FM front-end to enable events in the FPM
  397                 Fman controller event register.
  398 
  399  @Param[in/out] t_FmIpcFmanEvents Pointer
  400 *//***************************************************************************/
  401 #define FM_GET_FMAN_CTRL_EVENTS_ENABLE 17
  402 
  403 /**************************************************************************//**
  404  @Function      FM_SET_MAC_MAX_FRAME
  405 
  406  @Description   Used by FM front-end to set MAC's MTU/RTU's in
  407                 back-end.
  408 
  409  @Param[in/out] t_FmIpcMacMaxFrameParams Pointer
  410 *//***************************************************************************/
  411 #define FM_SET_MAC_MAX_FRAME 18
  412 
  413 /**************************************************************************//**
  414  @Function      FM_GET_PHYS_MURAM_BASE
  415 
  416  @Description   Used by FM front-end in order to get MURAM base address
  417 
  418  @Param[in/out] t_FmIpcPhysAddr Pointer
  419 *//***************************************************************************/
  420 #define FM_GET_PHYS_MURAM_BASE  19
  421 
  422 /**************************************************************************//**
  423  @Function      FM_MASTER_IS_ALIVE
  424 
  425  @Description   Used by FM front-end in order to verify Master is up
  426 
  427  @Param[in/out] bool
  428 *//***************************************************************************/
  429 #define FM_MASTER_IS_ALIVE          20
  430 
  431 #define FM_ENABLE_RAM_ECC           21
  432 #define FM_DISABLE_RAM_ECC          22
  433 #define FM_SET_NUM_OF_FMAN_CTRL     23
  434 #define FM_SET_SIZE_OF_FIFO         24
  435 #define FM_SET_NUM_OF_TASKS         25
  436 #define FM_SET_NUM_OF_OPEN_DMAS     26
  437 #define FM_VSP_ALLOC                27
  438 #define FM_VSP_FREE                 28
  439 #define FM_VSP_SET_PORT_WINDOW      29
  440 #define FM_GET_FMAN_CTRL_CODE_REV   30
  441 #define FM_SET_CONG_GRP_PFC_PRIO    31
  442 #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
  443 #define FM_10G_TX_ECC_WA            100
  444 #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
  445 
  446 /***************************************************************************/
  447 /************************ BACK-END-TO-FRONT-END*****************************/
  448 /***************************************************************************/
  449 
  450 /**************************************************************************//**
  451  @Function      FM_GUEST_ISR
  452 
  453  @Description   Used by FM back-end to report an interrupt to the front-end.
  454 
  455  @Param[out]    t_FmIpcIsr Pointer
  456 *//***************************************************************************/
  457 #define FM_GUEST_ISR                1
  458 
  459 
  460 
  461 /** @} */ /* end of FM_IPC_grp group */
  462 /** @} */ /* end of FM_grp group */
  463 
  464 
  465 #endif /* __FM_IPC_H */

Cache object: 90050bf51fbebfeda14bcba8f11a06c4


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