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.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.h
   36 
   37  @Description   FM internal structures and definitions.
   38 *//***************************************************************************/
   39 #ifndef __FM_H
   40 #define __FM_H
   41 
   42 #include "error_ext.h"
   43 #include "std_ext.h"
   44 #include "fm_ext.h"
   45 #include "fm_ipc.h"
   46 
   47 #include "fsl_fman.h"
   48 
   49 #define __ERR_MODULE__  MODULE_FM
   50 
   51 #define FM_MAX_NUM_OF_HW_PORT_IDS           64
   52 #define FM_MAX_NUM_OF_GUESTS                100
   53 
   54 /**************************************************************************//**
   55  @Description       Exceptions
   56 *//***************************************************************************/
   57 #define FM_EX_DMA_BUS_ERROR                 0x80000000      /**< DMA bus error. */
   58 #define FM_EX_DMA_READ_ECC                  0x40000000
   59 #define FM_EX_DMA_SYSTEM_WRITE_ECC          0x20000000
   60 #define FM_EX_DMA_FM_WRITE_ECC              0x10000000
   61 #define FM_EX_FPM_STALL_ON_TASKS            0x08000000      /**< Stall of tasks on FPM */
   62 #define FM_EX_FPM_SINGLE_ECC                0x04000000      /**< Single ECC on FPM */
   63 #define FM_EX_FPM_DOUBLE_ECC                0x02000000
   64 #define FM_EX_QMI_SINGLE_ECC                0x01000000      /**< Single ECC on FPM */
   65 #define FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID   0x00800000      /**< Dequeu from default queue id */
   66 #define FM_EX_QMI_DOUBLE_ECC                0x00400000
   67 #define FM_EX_BMI_LIST_RAM_ECC              0x00200000
   68 #define FM_EX_BMI_STORAGE_PROFILE_ECC       0x00100000
   69 #define FM_EX_BMI_STATISTICS_RAM_ECC        0x00080000
   70 #define FM_EX_IRAM_ECC                      0x00040000
   71 #define FM_EX_MURAM_ECC                     0x00020000
   72 #define FM_EX_BMI_DISPATCH_RAM_ECC          0x00010000
   73 #define FM_EX_DMA_SINGLE_PORT_ECC           0x00008000
   74 
   75 #define DMA_EMSR_EMSTR_MASK                 0x0000FFFF
   76 
   77 #define DMA_THRESH_COMMQ_MASK               0xFF000000
   78 #define DMA_THRESH_READ_INT_BUF_MASK        0x007F0000
   79 #define DMA_THRESH_WRITE_INT_BUF_MASK       0x0000007F
   80 
   81 #define GET_EXCEPTION_FLAG(bitMask, exception)              \
   82 switch (exception){                                         \
   83     case e_FM_EX_DMA_BUS_ERROR:                             \
   84         bitMask = FM_EX_DMA_BUS_ERROR; break;               \
   85     case e_FM_EX_DMA_SINGLE_PORT_ECC:                       \
   86         bitMask = FM_EX_DMA_SINGLE_PORT_ECC; break;         \
   87     case e_FM_EX_DMA_READ_ECC:                              \
   88         bitMask = FM_EX_DMA_READ_ECC; break;                \
   89     case e_FM_EX_DMA_SYSTEM_WRITE_ECC:                      \
   90         bitMask = FM_EX_DMA_SYSTEM_WRITE_ECC; break;        \
   91     case e_FM_EX_DMA_FM_WRITE_ECC:                          \
   92         bitMask = FM_EX_DMA_FM_WRITE_ECC; break;            \
   93     case e_FM_EX_FPM_STALL_ON_TASKS:                        \
   94         bitMask = FM_EX_FPM_STALL_ON_TASKS; break;          \
   95     case e_FM_EX_FPM_SINGLE_ECC:                            \
   96         bitMask = FM_EX_FPM_SINGLE_ECC; break;              \
   97     case e_FM_EX_FPM_DOUBLE_ECC:                            \
   98         bitMask = FM_EX_FPM_DOUBLE_ECC; break;              \
   99     case e_FM_EX_QMI_SINGLE_ECC:                            \
  100         bitMask = FM_EX_QMI_SINGLE_ECC; break;              \
  101     case e_FM_EX_QMI_DOUBLE_ECC:                            \
  102         bitMask = FM_EX_QMI_DOUBLE_ECC; break;              \
  103     case e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID:               \
  104         bitMask = FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID; break; \
  105     case e_FM_EX_BMI_LIST_RAM_ECC:                          \
  106         bitMask = FM_EX_BMI_LIST_RAM_ECC; break;            \
  107     case e_FM_EX_BMI_STORAGE_PROFILE_ECC:                   \
  108         bitMask = FM_EX_BMI_STORAGE_PROFILE_ECC; break;     \
  109     case e_FM_EX_BMI_STATISTICS_RAM_ECC:                    \
  110         bitMask = FM_EX_BMI_STATISTICS_RAM_ECC; break;      \
  111     case e_FM_EX_BMI_DISPATCH_RAM_ECC:                      \
  112         bitMask = FM_EX_BMI_DISPATCH_RAM_ECC; break;        \
  113     case e_FM_EX_IRAM_ECC:                                  \
  114         bitMask = FM_EX_IRAM_ECC; break;                    \
  115     case e_FM_EX_MURAM_ECC:                                 \
  116         bitMask = FM_EX_MURAM_ECC; break;                   \
  117     default: bitMask = 0;break;                             \
  118 }
  119 
  120 #define GET_FM_MODULE_EVENT(_mod, _id, _intrType, _event)                                           \
  121     switch (_mod) {                                                                                 \
  122         case e_FM_MOD_PRS:                                                                          \
  123             if (_id) _event = e_FM_EV_DUMMY_LAST;                                                   \
  124             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PRS : e_FM_EV_PRS;        \
  125             break;                                                                                  \
  126         case e_FM_MOD_KG:                                                                           \
  127             if (_id) _event = e_FM_EV_DUMMY_LAST;                                                   \
  128             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_KG : e_FM_EV_DUMMY_LAST;  \
  129             break;                                                                                  \
  130         case e_FM_MOD_PLCR:                                                                         \
  131             if (_id) _event = e_FM_EV_DUMMY_LAST;                                                   \
  132             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_PLCR : e_FM_EV_PLCR;      \
  133             break;                                                                                  \
  134         case e_FM_MOD_TMR:                                                                          \
  135             if (_id) _event = e_FM_EV_DUMMY_LAST;                                                   \
  136             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_DUMMY_LAST : e_FM_EV_TMR;     \
  137             break;                                                                                  \
  138         case e_FM_MOD_10G_MAC:                                                                      \
  139             if (_id >= FM_MAX_NUM_OF_10G_MACS) _event = e_FM_EV_DUMMY_LAST;                         \
  140             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? (e_FM_EV_ERR_10G_MAC0 + _id) : (e_FM_EV_10G_MAC0 + _id); \
  141             break;                                                                                  \
  142         case e_FM_MOD_1G_MAC:                                                                       \
  143             if (_id >= FM_MAX_NUM_OF_1G_MACS) _event = e_FM_EV_DUMMY_LAST;                          \
  144             else _event = (_intrType == e_FM_INTR_TYPE_ERR) ? (e_FM_EV_ERR_1G_MAC0 + _id) : (e_FM_EV_1G_MAC0 + _id); \
  145             break;                                                                                  \
  146         case e_FM_MOD_MACSEC:                                                                       \
  147             switch (_id){                                                                           \
  148                  case (0): _event = (_intrType == e_FM_INTR_TYPE_ERR) ? e_FM_EV_ERR_MACSEC_MAC0:e_FM_EV_MACSEC_MAC0; \
  149                  break;                                                                             \
  150                  }                                                                                  \
  151             break;                                                                                  \
  152         case e_FM_MOD_FMAN_CTRL:                                                                    \
  153             if (_intrType == e_FM_INTR_TYPE_ERR) _event = e_FM_EV_DUMMY_LAST;                       \
  154             else _event = (e_FM_EV_FMAN_CTRL_0 + _id);                                              \
  155             break;                                                                                  \
  156         default: _event = e_FM_EV_DUMMY_LAST;                                                       \
  157         break;                                                                                      \
  158     }
  159 
  160 #define FMAN_CACHE_OVERRIDE_TRANS(fsl_cache_override, _cache_override) \
  161     switch (_cache_override){ \
  162         case  e_FM_DMA_NO_CACHE_OR:                    \
  163             fsl_cache_override =  E_FMAN_DMA_NO_CACHE_OR; break;    \
  164         case  e_FM_DMA_NO_STASH_DATA:                    \
  165             fsl_cache_override =  E_FMAN_DMA_NO_STASH_DATA; break;        \
  166         case  e_FM_DMA_MAY_STASH_DATA:                    \
  167             fsl_cache_override =  E_FMAN_DMA_MAY_STASH_DATA; break;    \
  168         case  e_FM_DMA_STASH_DATA:                        \
  169             fsl_cache_override =  E_FMAN_DMA_STASH_DATA; break;        \
  170         default: \
  171             fsl_cache_override =  E_FMAN_DMA_NO_CACHE_OR; break;    \
  172     }
  173 
  174 #define FMAN_AID_MODE_TRANS(fsl_aid_mode, _aid_mode) \
  175     switch (_aid_mode){ \
  176         case  e_FM_DMA_AID_OUT_PORT_ID:                    \
  177             fsl_aid_mode =  E_FMAN_DMA_AID_OUT_PORT_ID; break;    \
  178         case  e_FM_DMA_AID_OUT_TNUM:                    \
  179             fsl_aid_mode =  E_FMAN_DMA_AID_OUT_TNUM; break;        \
  180         default: \
  181             fsl_aid_mode =  E_FMAN_DMA_AID_OUT_PORT_ID; break;    \
  182     }
  183 
  184 #define FMAN_DMA_DBG_CNT_TRANS(fsl_dma_dbg_cnt, _dma_dbg_cnt) \
  185     switch (_dma_dbg_cnt){ \
  186         case  e_FM_DMA_DBG_NO_CNT:                    \
  187             fsl_dma_dbg_cnt =  E_FMAN_DMA_DBG_NO_CNT; break;    \
  188         case  e_FM_DMA_DBG_CNT_DONE:                    \
  189             fsl_dma_dbg_cnt =  E_FMAN_DMA_DBG_CNT_DONE; break;        \
  190         case  e_FM_DMA_DBG_CNT_COMM_Q_EM:                    \
  191             fsl_dma_dbg_cnt =  E_FMAN_DMA_DBG_CNT_COMM_Q_EM; break;    \
  192         case  e_FM_DMA_DBG_CNT_INT_READ_EM:                        \
  193             fsl_dma_dbg_cnt =  E_FMAN_DMA_DBG_CNT_INT_READ_EM; break;        \
  194         case  e_FM_DMA_DBG_CNT_INT_WRITE_EM:                        \
  195             fsl_dma_dbg_cnt = E_FMAN_DMA_DBG_CNT_INT_WRITE_EM ; break;        \
  196         case  e_FM_DMA_DBG_CNT_FPM_WAIT:                        \
  197             fsl_dma_dbg_cnt = E_FMAN_DMA_DBG_CNT_FPM_WAIT ; break;        \
  198         case  e_FM_DMA_DBG_CNT_SIGLE_BIT_ECC:                        \
  199             fsl_dma_dbg_cnt = E_FMAN_DMA_DBG_CNT_SIGLE_BIT_ECC ; break;        \
  200         case  e_FM_DMA_DBG_CNT_RAW_WAR_PROT:                        \
  201             fsl_dma_dbg_cnt = E_FMAN_DMA_DBG_CNT_RAW_WAR_PROT ; break;        \
  202         default: \
  203             fsl_dma_dbg_cnt =  E_FMAN_DMA_DBG_NO_CNT; break;    \
  204     }
  205 
  206 #define FMAN_DMA_EMER_TRANS(fsl_dma_emer, _dma_emer) \
  207     switch (_dma_emer){ \
  208         case  e_FM_DMA_EM_EBS:                    \
  209             fsl_dma_emer =  E_FMAN_DMA_EM_EBS; break;    \
  210         case  e_FM_DMA_EM_SOS:                    \
  211             fsl_dma_emer =  E_FMAN_DMA_EM_SOS; break;        \
  212         default: \
  213             fsl_dma_emer =  E_FMAN_DMA_EM_EBS; break;    \
  214     }
  215 
  216 #define FMAN_DMA_ERR_TRANS(fsl_dma_err, _dma_err) \
  217     switch (_dma_err){ \
  218         case  e_FM_DMA_ERR_CATASTROPHIC:                    \
  219             fsl_dma_err =  E_FMAN_DMA_ERR_CATASTROPHIC; break;    \
  220         case  e_FM_DMA_ERR_REPORT:                    \
  221             fsl_dma_err =  E_FMAN_DMA_ERR_REPORT; break;        \
  222         default: \
  223             fsl_dma_err =  E_FMAN_DMA_ERR_CATASTROPHIC; break;    \
  224     }
  225 
  226 #define FMAN_CATASTROPHIC_ERR_TRANS(fsl_catastrophic_err, _catastrophic_err) \
  227     switch (_catastrophic_err){ \
  228         case  e_FM_CATASTROPHIC_ERR_STALL_PORT:                    \
  229             fsl_catastrophic_err =  E_FMAN_CATAST_ERR_STALL_PORT; break;    \
  230         case  e_FM_CATASTROPHIC_ERR_STALL_TASK:                    \
  231             fsl_catastrophic_err =  E_FMAN_CATAST_ERR_STALL_TASK; break;        \
  232         default: \
  233             fsl_catastrophic_err =  E_FMAN_CATAST_ERR_STALL_PORT; break;    \
  234     }
  235 
  236 #define FMAN_COUNTERS_TRANS(fsl_counters, _counters) \
  237     switch (_counters){ \
  238         case  e_FM_COUNTERS_ENQ_TOTAL_FRAME:                    \
  239             fsl_counters =  E_FMAN_COUNTERS_ENQ_TOTAL_FRAME; break;    \
  240         case  e_FM_COUNTERS_DEQ_TOTAL_FRAME:                    \
  241             fsl_counters =  E_FMAN_COUNTERS_DEQ_TOTAL_FRAME; break;        \
  242         case  e_FM_COUNTERS_DEQ_0:                    \
  243             fsl_counters =  E_FMAN_COUNTERS_DEQ_0; break;    \
  244         case  e_FM_COUNTERS_DEQ_1:                    \
  245             fsl_counters =  E_FMAN_COUNTERS_DEQ_1; break;        \
  246         case  e_FM_COUNTERS_DEQ_2:                    \
  247             fsl_counters =  E_FMAN_COUNTERS_DEQ_2; break;    \
  248         case  e_FM_COUNTERS_DEQ_3:                    \
  249             fsl_counters =  E_FMAN_COUNTERS_DEQ_3; break;        \
  250         case  e_FM_COUNTERS_DEQ_FROM_DEFAULT:                    \
  251             fsl_counters =  E_FMAN_COUNTERS_DEQ_FROM_DEFAULT; break;    \
  252         case  e_FM_COUNTERS_DEQ_FROM_CONTEXT:                    \
  253             fsl_counters =  E_FMAN_COUNTERS_DEQ_FROM_CONTEXT; break;        \
  254         case  e_FM_COUNTERS_DEQ_FROM_FD:                    \
  255             fsl_counters =  E_FMAN_COUNTERS_DEQ_FROM_FD; break;    \
  256         case  e_FM_COUNTERS_DEQ_CONFIRM:                    \
  257             fsl_counters =  E_FMAN_COUNTERS_DEQ_CONFIRM; break;        \
  258         default: \
  259             fsl_counters =  E_FMAN_COUNTERS_ENQ_TOTAL_FRAME; break;    \
  260     }
  261 
  262 /**************************************************************************//**
  263  @Description       defaults
  264 *//***************************************************************************/
  265 #define DEFAULT_exceptions                 (FM_EX_DMA_BUS_ERROR            |\
  266                                             FM_EX_DMA_READ_ECC              |\
  267                                             FM_EX_DMA_SYSTEM_WRITE_ECC      |\
  268                                             FM_EX_DMA_FM_WRITE_ECC          |\
  269                                             FM_EX_FPM_STALL_ON_TASKS        |\
  270                                             FM_EX_FPM_SINGLE_ECC            |\
  271                                             FM_EX_FPM_DOUBLE_ECC            |\
  272                                             FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID|\
  273                                             FM_EX_BMI_LIST_RAM_ECC          |\
  274                                             FM_EX_BMI_STORAGE_PROFILE_ECC   |\
  275                                             FM_EX_BMI_STATISTICS_RAM_ECC    |\
  276                                             FM_EX_IRAM_ECC                  |\
  277                                             FM_EX_MURAM_ECC                 |\
  278                                             FM_EX_BMI_DISPATCH_RAM_ECC      |\
  279                                             FM_EX_QMI_DOUBLE_ECC            |\
  280                                             FM_EX_QMI_SINGLE_ECC)
  281 
  282 #define DEFAULT_eccEnable                   FALSE
  283 #ifdef FM_PEDANTIC_DMA
  284 #define DEFAULT_aidOverride                 TRUE
  285 #else
  286 #define DEFAULT_aidOverride                 FALSE
  287 #endif /* FM_PEDANTIC_DMA */
  288 #define DEFAULT_aidMode                     e_FM_DMA_AID_OUT_TNUM
  289 #define DEFAULT_dmaStopOnBusError           FALSE
  290 #define DEFAULT_stopAtBusError              FALSE
  291 #define DEFAULT_axiDbgNumOfBeats            1
  292 #define DEFAULT_dmaReadIntBufLow            ((DMA_THRESH_MAX_BUF+1)/2)
  293 #define DEFAULT_dmaReadIntBufHigh           ((DMA_THRESH_MAX_BUF+1)*3/4)
  294 #define DEFAULT_dmaWriteIntBufLow           ((DMA_THRESH_MAX_BUF+1)/2)
  295 #define DEFAULT_dmaWriteIntBufHigh          ((DMA_THRESH_MAX_BUF+1)*3/4)
  296 #define DEFAULT_catastrophicErr             e_FM_CATASTROPHIC_ERR_STALL_PORT
  297 #define DEFAULT_dmaErr                      e_FM_DMA_ERR_CATASTROPHIC
  298 #define DEFAULT_resetOnInit                 FALSE
  299 #define DEFAULT_resetOnInitOverrideCallback NULL
  300 #define DEFAULT_haltOnExternalActivation    FALSE   /* do not change! if changed, must be disabled for rev1 ! */
  301 #define DEFAULT_haltOnUnrecoverableEccError FALSE   /* do not change! if changed, must be disabled for rev1 ! */
  302 #define DEFAULT_externalEccRamsEnable       FALSE
  303 #define DEFAULT_VerifyUcode                 FALSE
  304 
  305 #if (DPAA_VERSION < 11)
  306 #define DEFAULT_totalFifoSize(major, minor)     \
  307     (((major == 2) || (major == 5)) ?           \
  308      (100*KILOBYTE) : ((major == 4) ?           \
  309      (49*KILOBYTE) : (122*KILOBYTE)))
  310 #define DEFAULT_totalNumOfTasks(major, minor)   \
  311             BMI_MAX_NUM_OF_TASKS
  312 
  313 #define DEFAULT_dmaCommQLow                 ((DMA_THRESH_MAX_COMMQ+1)/2)
  314 #define DEFAULT_dmaCommQHigh                ((DMA_THRESH_MAX_COMMQ+1)*3/4)
  315 #define DEFAULT_cacheOverride               e_FM_DMA_NO_CACHE_OR
  316 #define DEFAULT_dmaCamNumOfEntries          32
  317 #define DEFAULT_dmaDbgCntMode               e_FM_DMA_DBG_NO_CNT
  318 #define DEFAULT_dmaEnEmergency              FALSE
  319 #define DEFAULT_dmaSosEmergency             0
  320 #define DEFAULT_dmaWatchdog                 0 /* disabled */
  321 #define DEFAULT_dmaEnEmergencySmoother      FALSE
  322 #define DEFAULT_dmaEmergencySwitchCounter   0
  323 
  324 #define DEFAULT_dispLimit                   0
  325 #define DEFAULT_prsDispTh                   16
  326 #define DEFAULT_plcrDispTh                  16
  327 #define DEFAULT_kgDispTh                    16
  328 #define DEFAULT_bmiDispTh                   16
  329 #define DEFAULT_qmiEnqDispTh                16
  330 #define DEFAULT_qmiDeqDispTh                16
  331 #define DEFAULT_fmCtl1DispTh                16
  332 #define DEFAULT_fmCtl2DispTh                16
  333 
  334 #else  /* (DPAA_VERSION < 11) */
  335 /* Defaults are registers' reset values */
  336 #define DEFAULT_totalFifoSize(major, minor)                     \
  337         (((major == 6) && ((minor == 1) || (minor == 4))) ?     \
  338         (156*KILOBYTE) : (295*KILOBYTE))
  339 
  340 /* According to the default value of FMBM_CFG2[TNTSKS] */
  341 #define DEFAULT_totalNumOfTasks(major, minor)   \
  342       (((major == 6) && ((minor == 1) || (minor == 4))) ? 59 : 124)
  343 
  344 #define DEFAULT_dmaCommQLow                 0x2A
  345 #define DEFAULT_dmaCommQHigh                0x3F
  346 #define DEFAULT_cacheOverride               e_FM_DMA_NO_CACHE_OR
  347 #define DEFAULT_dmaCamNumOfEntries          64
  348 #define DEFAULT_dmaDbgCntMode               e_FM_DMA_DBG_NO_CNT
  349 #define DEFAULT_dmaEnEmergency              FALSE
  350 #define DEFAULT_dmaSosEmergency             0
  351 #define DEFAULT_dmaWatchdog                 0 /* disabled */
  352 #define DEFAULT_dmaEnEmergencySmoother      FALSE
  353 #define DEFAULT_dmaEmergencySwitchCounter   0
  354 
  355 #define DEFAULT_dispLimit                   0
  356 #define DEFAULT_prsDispTh                   16
  357 #define DEFAULT_plcrDispTh                  16
  358 #define DEFAULT_kgDispTh                    16
  359 #define DEFAULT_bmiDispTh                   16
  360 #define DEFAULT_qmiEnqDispTh                16
  361 #define DEFAULT_qmiDeqDispTh                16
  362 #define DEFAULT_fmCtl1DispTh                16
  363 #define DEFAULT_fmCtl2DispTh                16
  364 #endif /* (DPAA_VERSION < 11) */
  365 
  366 #define FM_TIMESTAMP_1_USEC_BIT             8
  367 
  368 /**************************************************************************//**
  369  @Collection   Defines used for enabling/disabling FM interrupts
  370  @{
  371 *//***************************************************************************/
  372 #define ERR_INTR_EN_DMA         0x00010000
  373 #define ERR_INTR_EN_FPM         0x80000000
  374 #define ERR_INTR_EN_BMI         0x00800000
  375 #define ERR_INTR_EN_QMI         0x00400000
  376 #define ERR_INTR_EN_PRS         0x00200000
  377 #define ERR_INTR_EN_KG          0x00100000
  378 #define ERR_INTR_EN_PLCR        0x00080000
  379 #define ERR_INTR_EN_MURAM       0x00040000
  380 #define ERR_INTR_EN_IRAM        0x00020000
  381 #define ERR_INTR_EN_10G_MAC0    0x00008000
  382 #define ERR_INTR_EN_10G_MAC1    0x00000040
  383 #define ERR_INTR_EN_1G_MAC0     0x00004000
  384 #define ERR_INTR_EN_1G_MAC1     0x00002000
  385 #define ERR_INTR_EN_1G_MAC2     0x00001000
  386 #define ERR_INTR_EN_1G_MAC3     0x00000800
  387 #define ERR_INTR_EN_1G_MAC4     0x00000400
  388 #define ERR_INTR_EN_1G_MAC5     0x00000200
  389 #define ERR_INTR_EN_1G_MAC6     0x00000100
  390 #define ERR_INTR_EN_1G_MAC7     0x00000080
  391 #define ERR_INTR_EN_MACSEC_MAC0 0x00000001
  392 
  393 #define INTR_EN_QMI             0x40000000
  394 #define INTR_EN_PRS             0x20000000
  395 #define INTR_EN_WAKEUP          0x10000000
  396 #define INTR_EN_PLCR            0x08000000
  397 #define INTR_EN_1G_MAC0         0x00080000
  398 #define INTR_EN_1G_MAC1         0x00040000
  399 #define INTR_EN_1G_MAC2         0x00020000
  400 #define INTR_EN_1G_MAC3         0x00010000
  401 #define INTR_EN_1G_MAC4         0x00000040
  402 #define INTR_EN_1G_MAC5         0x00000020
  403 #define INTR_EN_1G_MAC6         0x00000008
  404 #define INTR_EN_1G_MAC7         0x00000002
  405 #define INTR_EN_10G_MAC0        0x00200000
  406 #define INTR_EN_10G_MAC1        0x00100000
  407 #define INTR_EN_REV0            0x00008000
  408 #define INTR_EN_REV1            0x00004000
  409 #define INTR_EN_REV2            0x00002000
  410 #define INTR_EN_REV3            0x00001000
  411 #define INTR_EN_BRK             0x00000080
  412 #define INTR_EN_TMR             0x01000000
  413 #define INTR_EN_MACSEC_MAC0     0x00000001
  414 /* @} */
  415 
  416 /**************************************************************************//**
  417  @Description       Memory Mapped Registers
  418 *//***************************************************************************/
  419 
  420 #if defined(__MWERKS__) && !defined(__GNUC__)
  421 #pragma pack(push,1)
  422 #endif /* defined(__MWERKS__) && ... */
  423 
  424 typedef struct
  425 {
  426     volatile uint32_t   iadd;           /**< FM IRAM instruction address register */
  427     volatile uint32_t   idata;          /**< FM IRAM instruction data register */
  428     volatile uint32_t   itcfg;          /**< FM IRAM timing config register */
  429     volatile uint32_t   iready;         /**< FM IRAM ready register */
  430     volatile uint32_t   res[0x1FFFC];
  431 } t_FMIramRegs;
  432 
  433 /* Trace buffer registers -
  434    each FM Controller has its own trace buffer residing at FM_MM_TRB(fmCtrlIndex) offset */
  435 typedef struct t_FmTrbRegs
  436 {
  437     volatile uint32_t   tcrh;
  438     volatile uint32_t   tcrl;
  439     volatile uint32_t   tesr;
  440     volatile uint32_t   tecr0h;
  441     volatile uint32_t   tecr0l;
  442     volatile uint32_t   terf0h;
  443     volatile uint32_t   terf0l;
  444     volatile uint32_t   tecr1h;
  445     volatile uint32_t   tecr1l;
  446     volatile uint32_t   terf1h;
  447     volatile uint32_t   terf1l;
  448     volatile uint32_t   tpcch;
  449     volatile uint32_t   tpccl;
  450     volatile uint32_t   tpc1h;
  451     volatile uint32_t   tpc1l;
  452     volatile uint32_t   tpc2h;
  453     volatile uint32_t   tpc2l;
  454     volatile uint32_t   twdimr;
  455     volatile uint32_t   twicvr;
  456     volatile uint32_t   tar;
  457     volatile uint32_t   tdr;
  458     volatile uint32_t   tsnum1;
  459     volatile uint32_t   tsnum2;
  460     volatile uint32_t   tsnum3;
  461     volatile uint32_t   tsnum4;
  462 } t_FmTrbRegs;
  463 
  464 #if defined(__MWERKS__) && !defined(__GNUC__)
  465 #pragma pack(pop)
  466 #endif /* defined(__MWERKS__) && ... */
  467 
  468 /**************************************************************************//**
  469  @Description       General defines
  470 *//***************************************************************************/
  471 #define FM_DEBUG_STATUS_REGISTER_OFFSET     0x000d1084UL
  472 #define FM_FW_DEBUG_INSTRUCTION             0x6ffff805UL
  473 
  474 /**************************************************************************//**
  475  @Description       FPM defines
  476 *//***************************************************************************/
  477 /* masks */
  478 #define FPM_BRKC_RDBG                   0x00000200
  479 #define FPM_BRKC_SLP                    0x00000800
  480 /**************************************************************************//**
  481  @Description       BMI defines
  482 *//***************************************************************************/
  483 /* masks */
  484 #define BMI_INIT_START                      0x80000000
  485 #define BMI_ERR_INTR_EN_STORAGE_PROFILE_ECC 0x80000000
  486 #define BMI_ERR_INTR_EN_LIST_RAM_ECC        0x40000000
  487 #define BMI_ERR_INTR_EN_STATISTICS_RAM_ECC  0x20000000
  488 #define BMI_ERR_INTR_EN_DISPATCH_RAM_ECC    0x10000000
  489 /**************************************************************************//**
  490  @Description       QMI defines
  491 *//***************************************************************************/
  492 /* masks */
  493 #define QMI_ERR_INTR_EN_DOUBLE_ECC      0x80000000
  494 #define QMI_ERR_INTR_EN_DEQ_FROM_DEF    0x40000000
  495 #define QMI_INTR_EN_SINGLE_ECC          0x80000000
  496 
  497 /**************************************************************************//**
  498  @Description       IRAM defines
  499 *//***************************************************************************/
  500 /* masks */
  501 #define IRAM_IADD_AIE                   0x80000000
  502 #define IRAM_READY                      0x80000000
  503 
  504 /**************************************************************************//**
  505  @Description       TRB defines
  506 *//***************************************************************************/
  507 /* masks */
  508 #define TRB_TCRH_RESET              0x04000000
  509 #define TRB_TCRH_ENABLE_COUNTERS    0x84008000
  510 #define TRB_TCRH_DISABLE_COUNTERS   0x8400C000
  511 #define TRB_TCRL_RESET              0x20000000
  512 #define TRB_TCRL_UTIL               0x00000460
  513 typedef struct {
  514     void        (*f_Isr) (t_Handle h_Arg, uint32_t event);
  515     t_Handle    h_SrcHandle;
  516 } t_FmanCtrlIntrSrc;
  517 
  518 
  519 typedef void (t_FmanCtrlIsr)( t_Handle h_Fm, uint32_t event);
  520 
  521 typedef struct
  522 {
  523 /***************************/
  524 /* Master/Guest parameters */
  525 /***************************/
  526     uint8_t                     fmId;
  527     e_FmPortType                portsTypes[FM_MAX_NUM_OF_HW_PORT_IDS];
  528     uint16_t                    fmClkFreq;
  529     uint16_t                    fmMacClkFreq;
  530     t_FmRevisionInfo            revInfo;
  531 /**************************/
  532 /* Master Only parameters */
  533 /**************************/
  534     bool                        enabledTimeStamp;
  535     uint8_t                     count1MicroBit;
  536     uint8_t                     totalNumOfTasks;
  537     uint32_t                    totalFifoSize;
  538     uint8_t                     maxNumOfOpenDmas;
  539     uint8_t                     accumulatedNumOfTasks;
  540     uint32_t                    accumulatedFifoSize;
  541     uint8_t                     accumulatedNumOfOpenDmas;
  542     uint8_t                     accumulatedNumOfDeqTnums;
  543 #ifdef FM_LOW_END_RESTRICTION
  544     bool                        lowEndRestriction;
  545 #endif /* FM_LOW_END_RESTRICTION */
  546     uint32_t                    exceptions;
  547     uintptr_t                   irq;
  548     uintptr_t                   errIrq;
  549     bool                        ramsEccEnable;
  550     bool                        explicitEnable;
  551     bool                        internalCall;
  552     uint8_t                     ramsEccOwners;
  553     uint32_t                    extraFifoPoolSize;
  554     uint8_t                     extraTasksPoolSize;
  555     uint8_t                     extraOpenDmasPoolSize;
  556 #if defined(FM_MAX_NUM_OF_10G_MACS) && (FM_MAX_NUM_OF_10G_MACS)
  557     uint16_t                    portMaxFrameLengths10G[FM_MAX_NUM_OF_10G_MACS];
  558     uint16_t                    macMaxFrameLengths10G[FM_MAX_NUM_OF_10G_MACS];
  559 #endif /* defined(FM_MAX_NUM_OF_10G_MACS) && ... */
  560     uint16_t                    portMaxFrameLengths1G[FM_MAX_NUM_OF_1G_MACS];
  561     uint16_t                    macMaxFrameLengths1G[FM_MAX_NUM_OF_1G_MACS];
  562 } t_FmStateStruct;
  563 
  564 #if (DPAA_VERSION >= 11)
  565 typedef struct t_FmMapParam {
  566     uint16_t        profilesBase;
  567     uint16_t        numOfProfiles;
  568     t_Handle        h_FmPort;
  569 } t_FmMapParam;
  570 
  571 typedef struct t_FmAllocMng {
  572     bool            allocated;
  573     uint8_t         ownerId; /* guestId for KG in multi-partition only,
  574                                 portId for PLCR in any environment */
  575 } t_FmAllocMng;
  576 
  577 typedef struct t_FmPcdSpEntry {
  578     bool            valid;
  579     t_FmAllocMng    profilesMng;
  580 } t_FmPcdSpEntry;
  581 
  582 typedef struct t_FmSp {
  583     void            *p_FmPcdStoragePrflRegs;
  584     t_FmPcdSpEntry  profiles[FM_VSP_MAX_NUM_OF_ENTRIES];
  585     t_FmMapParam    portsMapping[FM_MAX_NUM_OF_PORTS];
  586 } t_FmSp;
  587 #endif /* (DPAA_VERSION >= 11) */
  588 
  589 typedef struct t_Fm
  590 {
  591 /***************************/
  592 /* Master/Guest parameters */
  593 /***************************/
  594 /* locals for recovery */
  595     uintptr_t                   baseAddr;
  596 
  597 /* un-needed for recovery */
  598     t_Handle                    h_Pcd;
  599     char                        fmModuleName[MODULE_NAME_SIZE];
  600     char                        fmIpcHandlerModuleName[FM_MAX_NUM_OF_GUESTS][MODULE_NAME_SIZE];
  601     t_Handle                    h_IpcSessions[FM_MAX_NUM_OF_GUESTS];
  602     t_FmIntrSrc                 intrMng[e_FM_EV_DUMMY_LAST];    /* FM exceptions user callback */
  603     uint8_t                     guestId;
  604 /**************************/
  605 /* Master Only parameters */
  606 /**************************/
  607 /* locals for recovery */
  608     struct fman_fpm_regs *p_FmFpmRegs;
  609     struct fman_bmi_regs *p_FmBmiRegs;
  610     struct fman_qmi_regs *p_FmQmiRegs;
  611     struct fman_dma_regs *p_FmDmaRegs;
  612     struct fman_regs            *p_FmRegs;
  613     t_FmExceptionsCallback      *f_Exception;
  614     t_FmBusErrorCallback        *f_BusError;
  615     t_Handle                    h_App;                          /* Application handle */
  616     t_Handle                    h_Spinlock;
  617     bool                        recoveryMode;
  618     t_FmStateStruct             *p_FmStateStruct;
  619     uint16_t                    tnumAgingPeriod;
  620 #if (DPAA_VERSION >= 11)
  621     t_FmSp                      *p_FmSp;
  622     uint8_t                     partNumOfVSPs;
  623     uint8_t                     partVSPBase;
  624     uintptr_t                   vspBaseAddr;
  625 #endif /* (DPAA_VERSION >= 11) */
  626     bool                        portsPreFetchConfigured[FM_MAX_NUM_OF_HW_PORT_IDS]; /* Prefetch configration per Tx-port */
  627     bool                        portsPreFetchValue[FM_MAX_NUM_OF_HW_PORT_IDS];      /* Prefetch configration per Tx-port */
  628 
  629 /* un-needed for recovery */
  630     struct fman_cfg             *p_FmDriverParam;
  631     t_Handle                    h_FmMuram;
  632     uint64_t                    fmMuramPhysBaseAddr;
  633     bool                        independentMode;
  634     bool                        hcPortInitialized;
  635     uintptr_t                   camBaseAddr;                    /* save for freeing */
  636     uintptr_t                   resAddr;
  637     uintptr_t                   fifoBaseAddr;                   /* save for freeing */
  638     t_FmanCtrlIntrSrc           fmanCtrlIntr[FM_NUM_OF_FMAN_CTRL_EVENT_REGS];    /* FM exceptions user callback */
  639     bool                        usedEventRegs[FM_NUM_OF_FMAN_CTRL_EVENT_REGS];
  640     t_FmFirmwareParams          firmware;
  641     bool                        fwVerify;
  642     bool                        resetOnInit;
  643     t_FmResetOnInitOverrideCallback     *f_ResetOnInitOverride;
  644     uint32_t                    userSetExceptions;
  645 } t_Fm;
  646 
  647 
  648 #endif /* __FM_H */

Cache object: 524ba2731915fc96c8721dd5c45e4d3e


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