⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ixparityenaccmain.c

📁 有关ARM开发板上的IXP400网络驱动程序的源码以。
💻 C
📖 第 1 页 / 共 5 页
字号:
} /* end of ixNpePEInternalCallback() function */voidixAqmPEInternalCallback (UINT32 irqNum, IxParityENAccPEIsr isrAddr){    /* Output the AQM interrupt information for debug purpose */    IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,        "ixAqmPEInternalCallback(): AQM interrupt detected\n"        "IRQ #:%x ISR Address:%p\n", irqNum, (UINT32)isrAddr, 0,0,0,0);    /* Signal the client application of the interrupt condition */    ixParityENAccInvokeClientCallback(irqNum);} /* end of ixAqmPEInternalCallback() function */void ixEbcPEInternalCallback (UINT32 irqNum, IxParityENAccPEIsr isrAddr){    /* Output the EBC interrupt information for debug purpose */    IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,        "ixEbcPEInternalCallback(): EBCs interrupt detected\n"        "IRQ #:%x ISR Address:%p\n", irqNum, (UINT32)isrAddr, 0,0,0,0);    /* Signal the client application of the interrupt condition */    ixParityENAccInvokeClientCallback(irqNum);} /* end of ixEbcPEInternalCallback() function */void ixPbcPEInternalCallback (UINT32 irqNum, IxParityENAccPEIsr isrAddr){    /* Output the PBC interrupt information for debug purpose */    IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,        "ixPbcPEInternalCallback(): PBC interrupt detected\n"        "IRQ #:%x ISR Address:%p\n", irqNum, (UINT32)isrAddr, 0,0,0,0);    /* Signal the client application of the interrupt condition */    ixParityENAccInvokeClientCallback(irqNum);} /* end of ixPbcPEInternalCallback() function */void ixSwcpPEInternalCallback (UINT32 irqNum, IxParityENAccPEIsr isrAddr){    /* Output the SWCP interrupt information for debug purpose */    IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,         "ixSwcpPEInternalCallback(): SWCP interrupt detected\n"        "IRQ #:%x ISR Address:%p\n", irqNum, (UINT32)isrAddr, 0,0,0,0);    /* Signal the client application of the interrupt condition */    if (IX_PARITYENACC_ENABLE == ixParityENAccParityConfigStatus.swcpEnabled)    {        ixParityENAccInvokeClientCallback(irqNum);    } /* end of if */} /* end of ixSwcpPEInternalCallback() function *//* * -------------------------------------------------------------------------- * *                            Public API definitions                          * * -------------------------------------------------------------------------- * */PUBLIC IxParityENAccStatusixParityENAccInit (void){    /* Initialised before? */    if (TRUE == ixParityENAccInitStatus)    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,            "Already Initialised\n", 0,0,0,0,0,0);        return IX_PARITYENACC_ALREADY_INITIALISED;    } /* end of if */    /* Initialise sub modules */    if (IX_SUCCESS != ixParityENAccConfigInit())    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,            "Config Init Failed\n", 0,0,0,0,0,0);        return IX_PARITYENACC_OPERATION_FAILED;    } /* end of if */    /* Initialise sub modules */    if (IX_SUCCESS != ixParityENAccModulesInit())    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,            "Modules Init Failed\n", 0,0,0,0,0,0);        return IX_PARITYENACC_OPERATION_FAILED;    } /* end of if */    ixParityENAccInitStatus = TRUE;    return IX_PARITYENACC_SUCCESS;} /* end of ixParityENAccInit() function */PUBLIC IxParityENAccStatusixParityENAccCallbackRegister (IxParityENAccCallback parityErrNfyCallback){    IxParityENAccParityConfigStatus nullCfgStatus;    /* Not initialised before? */    if (FALSE == ixParityENAccInitStatus)    {        return IX_PARITYENACC_NOT_INITIALISED;    } /* end of if */    /* Verify the callback */    if ((IxParityENAccCallback)NULL == parityErrNfyCallback)    {        return IX_PARITYENACC_INVALID_PARAMETERS;    } /* end of if */    /* Clear off the contents to zeros */    memset((void *) &nullCfgStatus, 0, sizeof(IxParityENAccParityConfigStatus));    /*      * Verify for the parity error detection disable state     * after excluding the parity type.     */    nullCfgStatus.npeAConfig.parityOddEven = ixParityENAccParityConfigStatus.npeAConfig.parityOddEven;    nullCfgStatus.npeBConfig.parityOddEven = ixParityENAccParityConfigStatus.npeBConfig.parityOddEven;    nullCfgStatus.npeCConfig.parityOddEven = ixParityENAccParityConfigStatus.npeCConfig.parityOddEven;    nullCfgStatus.ebcConfig.parityOddEven  = ixParityENAccParityConfigStatus.ebcConfig.parityOddEven;    /* Parity detection disabled on all hardware modules? */    if (0 != memcmp((const void *)&nullCfgStatus,                     (const void *)&ixParityENAccParityConfigStatus,                     sizeof(ixParityENAccParityConfigStatus)))    {        return IX_PARITYENACC_OPERATION_FAILED;    } /* end of if */#ifndef NDEBUG    if ((IxParityENAccCallback)NULL == ixParityENAccClientCb)    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,              "ixParityENAccCallbackRegister(): New Callback:%p\n",              (UINT32)parityErrNfyCallback, 0,0,0,0,0);    }    else    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_USER, IX_OSAL_LOG_DEV_STDOUT,              "ixParityENAccCallbackRegister(): Re-registered Callback:%p\n",              (UINT32)parityErrNfyCallback, 0,0,0,0,0);    } /* end of if */#endif /* end of #ifndef NDEBUG */    ixParityENAccClientCb = parityErrNfyCallback;    return IX_PARITYENACC_SUCCESS;} /* end of ixParityENAccCallbackRegister() function */PUBLIC IxParityENAccStatusixParityENAccParityDetectionConfigure (    const IxParityENAccHWParityConfig *hwParityConfig){    /* Local Variables */    IxParityENAccNpePEConfigOption ixNpePDCfg;    IxParityENAccMcuPEConfigOption ixMcuPDCfg;    IxParityENAccAqmPEConfigOption ixAqmPDCfg;    IxParityENAccEbcPEConfigOption ixEbcPDCfg;    IxParityENAccSwcpPEConfigOption ixSwcpPDCfg;    BOOL ixPbcPrevInitTgtDisableCurrInitOrTgtEnable  = FALSE;    BOOL ixPbcPrevInitTgtEnableCurrInitAndTgtDisable = FALSE;    BOOL ixPbcPrevInitEnableCurrInitDisable = FALSE;    BOOL ixPbcPrevTgtEnableCurrTgtDisable   = FALSE;    IX_STATUS ixReturnStatus = IX_SUCCESS;    /* Not initialised before? */    if (FALSE == ixParityENAccInitStatus)    {        return IX_PARITYENACC_NOT_INITIALISED;    } /* end of if */    if ((IxParityENAccHWParityConfig *) NULL == hwParityConfig)    {        return IX_PARITYENACC_INVALID_PARAMETERS;    } /* end of if */    /*     * Change in parity type on NPE-A/B/C?     */    if (((hwParityConfig->npeAConfig.ideEnabled !=          ixParityENAccParityConfigStatus.npeAConfig.ideEnabled) ||         ((hwParityConfig->npeAConfig.parityOddEven !=          ixParityENAccParityConfigStatus.npeAConfig.parityOddEven) &&          (hwParityConfig->npeAConfig.ideEnabled == IX_PARITYENACC_ENABLE))) &&        (FALSE == IXP400_PARITYENACC_VAL_BIT_CHECK(ixParityENAccFusedModules,                     IXP400_PARITYENACC_FUSED_MODULE_NPEA)))    {        ixNpePDCfg.ideEnabled    = hwParityConfig->npeAConfig.ideEnabled;        ixNpePDCfg.parityOddEven = hwParityConfig->npeAConfig.parityOddEven;                    if (IX_SUCCESS == ixParityENAccNpePEDetectionConfigure(                              IXP400_PARITYENACC_PE_NPE_A,ixNpePDCfg))        {            ixParityENAccParityConfigStatus.npeAConfig.ideEnabled =                 hwParityConfig->npeAConfig.ideEnabled;            ixParityENAccParityConfigStatus.npeAConfig.parityOddEven =                hwParityConfig->npeAConfig.parityOddEven;        } /* end/else of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                "ixParityENAccParityDetectionConfigure(): "                "NPE-A Configuration failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    if (((hwParityConfig->npeBConfig.ideEnabled !=          ixParityENAccParityConfigStatus.npeBConfig.ideEnabled) ||         ((hwParityConfig->npeBConfig.parityOddEven !=          ixParityENAccParityConfigStatus.npeBConfig.parityOddEven) &&          (hwParityConfig->npeBConfig.ideEnabled == IX_PARITYENACC_ENABLE))) &&        (FALSE == IXP400_PARITYENACC_VAL_BIT_CHECK(ixParityENAccFusedModules,                     IXP400_PARITYENACC_FUSED_MODULE_NPEB)))    {        ixNpePDCfg.ideEnabled    = hwParityConfig->npeBConfig.ideEnabled;        ixNpePDCfg.parityOddEven = hwParityConfig->npeBConfig.parityOddEven;        if (IX_SUCCESS == ixParityENAccNpePEDetectionConfigure(                              IXP400_PARITYENACC_PE_NPE_B,ixNpePDCfg))        {            ixParityENAccParityConfigStatus.npeBConfig.ideEnabled =                 hwParityConfig->npeBConfig.ideEnabled;            ixParityENAccParityConfigStatus.npeBConfig.parityOddEven =                hwParityConfig->npeBConfig.parityOddEven;        } /* end/else of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                 "ixParityENAccParityDetectionConfigure(): "                "NPE-B Configuration failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    if (((hwParityConfig->npeCConfig.ideEnabled !=          ixParityENAccParityConfigStatus.npeCConfig.ideEnabled) ||         ((hwParityConfig->npeCConfig.parityOddEven !=          ixParityENAccParityConfigStatus.npeCConfig.parityOddEven) &&          (hwParityConfig->npeCConfig.ideEnabled == IX_PARITYENACC_ENABLE))) &&        (FALSE == IXP400_PARITYENACC_VAL_BIT_CHECK(ixParityENAccFusedModules,                     IXP400_PARITYENACC_FUSED_MODULE_NPEC)))    {        ixNpePDCfg.ideEnabled    = hwParityConfig->npeCConfig.ideEnabled;        ixNpePDCfg.parityOddEven = hwParityConfig->npeCConfig.parityOddEven;        if (IX_SUCCESS == ixParityENAccNpePEDetectionConfigure(                              IXP400_PARITYENACC_PE_NPE_C, ixNpePDCfg))        {            ixParityENAccParityConfigStatus.npeCConfig.ideEnabled =                 hwParityConfig->npeCConfig.ideEnabled;            ixParityENAccParityConfigStatus.npeCConfig.parityOddEven =                hwParityConfig->npeCConfig.parityOddEven;        } /* else/end of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                 "ixParityENAccParityDetectionConfigure(): "                "NPE-C Configuration failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */        /*     * Change in configuration of MCU ECC?      */    if (((hwParityConfig->mcuConfig.singlebitDetectEnabled !=          ixParityENAccParityConfigStatus.mcuConfig.singlebitDetectEnabled) ||         (hwParityConfig->mcuConfig.singlebitCorrectionEnabled !=         ixParityENAccParityConfigStatus.mcuConfig.singlebitCorrectionEnabled) ||         (hwParityConfig->mcuConfig.multibitDetectionEnabled !=         ixParityENAccParityConfigStatus.mcuConfig.multibitDetectionEnabled)) &&        (FALSE == IXP400_PARITYENACC_VAL_BIT_CHECK(ixParityENAccFusedModules,                     IXP400_PARITYENACC_FUSED_MODULE_MCU_ECC)))    {        ixMcuPDCfg.singlebitDetectEnabled =             hwParityConfig->mcuConfig.singlebitDetectEnabled;        ixMcuPDCfg.singlebitCorrectionEnabled =            hwParityConfig->mcuConfig.singlebitCorrectionEnabled;        ixMcuPDCfg.multibitDetectionEnabled =             hwParityConfig->mcuConfig.multibitDetectionEnabled;        if (IX_SUCCESS == ixParityENAccMcuPEDetectionConfigure(ixMcuPDCfg))        {            ixParityENAccParityConfigStatus.mcuConfig.singlebitDetectEnabled =                hwParityConfig->mcuConfig.singlebitDetectEnabled;            ixParityENAccParityConfigStatus.mcuConfig.singlebitCorrectionEnabled =                hwParityConfig->mcuConfig.singlebitCorrectionEnabled;            ixParityENAccParityConfigStatus.mcuConfig.multibitDetectionEnabled =                hwParityConfig->mcuConfig.multibitDetectionEnabled;        } /* end/else of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                "ixParityENAccParityDetectionConfigure(): "                "MCU ECC Configuration failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    /*     * Change in configuration of SWCP?     */    if (hwParityConfig->swcpEnabled != ixParityENAccParityConfigStatus.swcpEnabled)    {        ixSwcpPDCfg = hwParityConfig->swcpEnabled;        if (IX_SUCCESS == ixParityENAccSwcpPEDetectionConfigure(ixSwcpPDCfg))        {            ixParityENAccParityConfigStatus.swcpEnabled = hwParityConfig->swcpEnabled;        } /* end/else of if */#ifndef NDEBUG        else        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -