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

📄 ixparityenaccmain.c

📁 有关ARM开发板上的IXP400网络驱动程序的源码以。
💻 C
📖 第 1 页 / 共 5 页
字号:
                "ixParityENAccParityDetectionConfigure(): "                "EBC Configuration of CS6 failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    if ((hwParityConfig->ebcConfig.ebcCs7Enabled !=         ixParityENAccParityConfigStatus.ebcConfig.ebcCs7Enabled) ||        ((hwParityConfig->ebcConfig.parityOddEven !=           ixParityENAccParityConfigStatus.ebcConfig.parityOddEven) &&         (hwParityConfig->ebcConfig.ebcCs7Enabled == IX_PARITYENACC_ENABLE)))    {        ixEbcPDCfg.ebcCsExtSource = IXP400_PARITYENACC_PE_EBC_CS;        ixEbcPDCfg.ebcInOrOutbound.ebcCsEnabled =             hwParityConfig->ebcConfig.ebcCs7Enabled;        ixEbcPDCfg.ebcCsId = IXP400_PARITYENACC_PE_EBC_CHIPSEL7;        ixEbcPDCfg.parityOddEven = hwParityConfig->ebcConfig.parityOddEven;            if (IX_SUCCESS == ixParityENAccEbcPEDetectionConfigure(ixEbcPDCfg))        {            ixParityENAccParityConfigStatus.ebcConfig.ebcCs7Enabled =                hwParityConfig->ebcConfig.ebcCs7Enabled;            ixParityENAccParityConfigStatus.ebcConfig.parityOddEven =                 hwParityConfig->ebcConfig.parityOddEven;        } /* else/end of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                "ixParityENAccParityDetectionConfigure(): "                "EBC Configuration of CS7 failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    if ((hwParityConfig->ebcConfig.ebcExtMstEnabled !=          ixParityENAccParityConfigStatus.ebcConfig.ebcExtMstEnabled) ||        ((hwParityConfig->ebcConfig.parityOddEven !=           ixParityENAccParityConfigStatus.ebcConfig.parityOddEven) &&         (hwParityConfig->ebcConfig.ebcExtMstEnabled == IX_PARITYENACC_ENABLE)))    {        ixEbcPDCfg.ebcCsExtSource = IXP400_PARITYENACC_PE_EBC_EXTMST;        ixEbcPDCfg.ebcInOrOutbound.ebcExtMstEnabled =             hwParityConfig->ebcConfig.ebcExtMstEnabled;        ixEbcPDCfg.parityOddEven = hwParityConfig->ebcConfig.parityOddEven;                if (IX_SUCCESS == ixParityENAccEbcPEDetectionConfigure(ixEbcPDCfg))        {            ixParityENAccParityConfigStatus.ebcConfig.ebcExtMstEnabled =                hwParityConfig->ebcConfig.ebcExtMstEnabled;            ixParityENAccParityConfigStatus.ebcConfig.parityOddEven =                 hwParityConfig->ebcConfig.parityOddEven;        } /* else/end of if */#ifndef NDEBUG        else        {            IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                 "ixParityENAccParityDetectionConfigure(): "                "EBC Configuration of EXT failed\n",0,0,0,0,0,0);            ixReturnStatus = IX_FAIL;        } /* end of if */#endif /* end of #ifndef NDEBUG */    } /* end of if */    if (IX_FAIL == ixReturnStatus)    {        IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,             "ixParityENAccParityDetectionConfigure(): "            "One/More of hardware block's Configuration failed\n", 0,0,0,0,0,0);    } /* end of if */    return IX_PARITYENACC_SUCCESS;} /* end of ixParityENAccParityDetectionConfigure() function */PUBLIC IxParityENAccStatusixParityENAccParityDetectionQuery(    IxParityENAccHWParityConfig * const hwParityConfig){    /* Not initialised before? */    if (FALSE == ixParityENAccInitStatus)    {        return IX_PARITYENACC_NOT_INITIALISED;    } /* end of if */    /* Verify the parameter reference */    if ((IxParityENAccHWParityConfig *)NULL == hwParityConfig)    {        return IX_PARITYENACC_INVALID_PARAMETERS;    } /* end of if */    /* Return the current config status of all hardware blocks */    memcpy((void *)hwParityConfig, (void *)&ixParityENAccParityConfigStatus,        sizeof(IxParityENAccHWParityConfig));    return IX_PARITYENACC_SUCCESS;} /* end of ixParityENAccParityDetectionQuery() function */PUBLIC IxParityENAccStatusixParityENAccParityErrorContextGet(    IxParityENAccParityErrorContextMessage * const pecMessage){    /* Local Variables */    IxParityENAccIcParityInterruptStatus ixIcParityInterruptStatus =    { FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE };    IxParityENAccMcuPEParityErrorContext  ixMcuPECMsg;    IxParityENAccNpePEParityErrorContext  ixNpePECMsg;    IxParityENAccSwcpPEParityErrorContext ixSwcpPECMsg;    IxParityENAccAqmPEParityErrorContext  ixAqmPECMsg;    IxParityENAccPbcPEParityErrorContext  ixPbcPECMsg;    IxParityENAccEbcPEParityErrorContext  ixEbcPECMsg;    IxParityENAccPmuEAHBErrorTransaction  ixPmuAhbTransactionStatus;    /* Not initialised before? */    if (FALSE == ixParityENAccInitStatus)    {        return IX_PARITYENACC_NOT_INITIALISED;    } /* end of if */    if ((IxParityENAccParityErrorContextMessage *) NULL == pecMessage)    {        return IX_PARITYENACC_INVALID_PARAMETERS;    } /* end of if */    /* Get the pending parity interrupts status */    if (IX_SUCCESS != ixParityENAccIcInterruptStatusGet(                          &ixIcParityInterruptStatus))    {        return IX_PARITYENACC_OPERATION_FAILED;    } /* end of if */    /*     * Process interrupts as per the following priority     *     * 0 - MCU   (Multi, Single-bit, Overflow in that order)     * 1 - NPE-A (IMem, DMem and Ext Error in that order)     * 2 - NPE-B (IMem, DMem and Ext Error in that order)     * 3 - NPE-C (IMem, DMem and Ext Error in that order)     * 4 - SWCP     * 5 - QM     * 6 - PCI   (Initiator Rd, Target Wr and Initiator Wr in that order)     * 7 - EXP   (Inbound Wr, Outbound Rd in that order)     */    if (TRUE == ixIcParityInterruptStatus.mcuParityInterrupt)    {        if (IX_SUCCESS != ixParityENAccMcuPEParityErrorContextFetch(&ixMcuPECMsg))        {            return IX_PARITYENACC_OPERATION_FAILED;        } /* end of if */        /* No Parity! Might have been cleared by data/prefetch abort          * Exception Handler before this function is invoked         */        if (IXP400_PARITYENACC_PE_MCU_NOPARITY == ixMcuPECMsg.mcuParitySource)        {            return IX_PARITYENACC_NO_PARITY;        } /* end of if */        pecMessage->pecParitySource = ixMcuPECMsg.mcuParitySource;        pecMessage->pecAccessType   = ixMcuPECMsg.mcuAccessType;        pecMessage->pecRequester    = ixMcuPECMsg.mcuRequester;        pecMessage->pecAddress      = ixMcuPECMsg.mcuParityAddress;        pecMessage->pecData         = ixMcuPECMsg.mcuParityData;        /* Get Last Erroneous AHB Transaction Master & Slave details */        if (IX_SUCCESS != ixParityENAccPmuEAHBTransactionStatus (                              &ixPmuAhbTransactionStatus))        {            return IX_PARITYENACC_OPERATION_FAILED;        } /* end of if */        pecMessage->ahbErrorTran.ahbErrorMaster = ixPmuAhbTransactionStatus.ahbErrorMaster;        pecMessage->ahbErrorTran.ahbErrorSlave = ixPmuAhbTransactionStatus.ahbErrorSlave;        /* Increment statistics */        switch (pecMessage->pecParitySource)        {            case IX_PARITYENACC_MCU_SBIT:            {                ixParityENAccPEParityErrorStats.mcuStats.parityErrorsSingleBit++;                break;            } /* end of case MCU SBIT */            case IX_PARITYENACC_MCU_MBIT:            {                ixParityENAccPEParityErrorStats.mcuStats.parityErrorsMultiBit++;                break;            } /* end of case MCU MBIT */            case IX_PARITYENACC_MCU_OVERFLOW:            {                ixParityENAccPEParityErrorStats.mcuStats.parityErrorsOverflow++;                break;            } /* end of case MCU OVERFLOW */            default:            {                IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                     "ixParityENAccParityErrorContextGet(): "                    "Invalid Parity Source: %0x\n", pecMessage->pecParitySource, 0,0,0,0,0);                return IX_PARITYENACC_OPERATION_FAILED;          } /* end of case default */        } /* end of switch */        return IX_PARITYENACC_SUCCESS;    } /* end of if (TRUE == ixIcParityInterruptStatus.mcuParityInterrupt) */    if (TRUE == ixIcParityInterruptStatus.npeAParityInterrupt)    {        if (IX_SUCCESS != ixParityENAccNpePEParityErrorContextFetch (                              IXP400_PARITYENACC_PE_NPE_A, &ixNpePECMsg))        {            return IX_PARITYENACC_OPERATION_FAILED;        } /* end of if */                pecMessage->pecParitySource =             (IXP400_PARITYENACC_PE_NPE_IMEM == ixNpePECMsg.npeParitySource) ?                IX_PARITYENACC_NPE_A_IMEM :                (IXP400_PARITYENACC_PE_NPE_DMEM  == ixNpePECMsg.npeParitySource) ?                     IX_PARITYENACC_NPE_A_DMEM : IX_PARITYENACC_NPE_A_EXT;        pecMessage->pecAccessType = ixNpePECMsg.npeAccessType;        /* Increment statistics */        switch (pecMessage->pecParitySource)        {            case IX_PARITYENACC_NPE_A_IMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsIMem++;                break;            } /* end of case NPE - A IMEM */            case IX_PARITYENACC_NPE_A_DMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsDMem++;                break;            } /* end of case NPE - A DMEM */            case IX_PARITYENACC_NPE_A_EXT:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsExternal++;                break;            } /* end of case NPE - A EXT */            default:            {                IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                     "ixParityENAccParityErrorContextGet(): "                    "Invalid Parity Source: %0x\n", pecMessage->pecParitySource, 0,0,0,0,0);                return IX_PARITYENACC_OPERATION_FAILED;          } /* end of case default */        } /* end of switch */        return IX_PARITYENACC_SUCCESS;    } /* end of if (TRUE == ixIcParityInterruptStatus.npeAParityInterrupt) */    if (TRUE == ixIcParityInterruptStatus.npeBParityInterrupt)    {        if (IX_SUCCESS != ixParityENAccNpePEParityErrorContextFetch (                              IXP400_PARITYENACC_PE_NPE_B, &ixNpePECMsg))        {            return IX_PARITYENACC_OPERATION_FAILED;        } /* end of if */        pecMessage->pecParitySource =             (IXP400_PARITYENACC_PE_NPE_IMEM == ixNpePECMsg.npeParitySource) ?                IX_PARITYENACC_NPE_B_IMEM :                (IXP400_PARITYENACC_PE_NPE_DMEM  == ixNpePECMsg.npeParitySource) ?                     IX_PARITYENACC_NPE_B_DMEM : IX_PARITYENACC_NPE_B_EXT;        pecMessage->pecAccessType = ixNpePECMsg.npeAccessType;        /* Increment statistics */        switch (pecMessage->pecParitySource)        {            case IX_PARITYENACC_NPE_B_IMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsIMem++;                break;            } /* end of case NPE - B IMEM */            case IX_PARITYENACC_NPE_B_DMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsDMem++;                break;            } /* end of case NPE - B DMEM */            case IX_PARITYENACC_NPE_B_EXT:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsExternal++;                break;            } /* end of case NPE - B EXT */            default:            {                IXP400_PARITYENACC_MSGLOG(IX_OSAL_LOG_LVL_ERROR, IX_OSAL_LOG_DEV_STDERR,                     "ixParityENAccParityErrorContextGet(): "                    "Invalid Parity Source: %0x\n", pecMessage->pecParitySource, 0,0,0,0,0);                return IX_PARITYENACC_OPERATION_FAILED;          } /* end of case default */        } /* end of switch */        return IX_PARITYENACC_SUCCESS;    } /* end of if (TRUE == ixIcParityInterruptStatus.npeBParityInterrupt) */    if (TRUE == ixIcParityInterruptStatus.npeCParityInterrupt)    {        if (IX_SUCCESS != ixParityENAccNpePEParityErrorContextFetch (                              IXP400_PARITYENACC_PE_NPE_C, &ixNpePECMsg))        {            return IX_PARITYENACC_OPERATION_FAILED;        } /* end of if */        pecMessage->pecParitySource =             (IXP400_PARITYENACC_PE_NPE_IMEM == ixNpePECMsg.npeParitySource) ?                IX_PARITYENACC_NPE_C_IMEM :                (IXP400_PARITYENACC_PE_NPE_DMEM  == ixNpePECMsg.npeParitySource) ?                     IX_PARITYENACC_NPE_C_DMEM : IX_PARITYENACC_NPE_C_EXT;        pecMessage->pecAccessType = ixNpePECMsg.npeAccessType;        /* Increment statistics */        switch (pecMessage->pecParitySource)        {            case IX_PARITYENACC_NPE_C_IMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsIMem++;                break;            } /* end of case NPE - C IMEM */            case IX_PARITYENACC_NPE_C_DMEM:            {                ixParityENAccPEParityErrorStats.npeStats.parityErrorsDMem++;

⌨️ 快捷键说明

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