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

📄 bkcompat.c

📁 开发Inetl IXP2400平台所必须的硬件诊断和测试程序。该软件包支持的功能包括CPU基本功能检测
💻 C
📖 第 1 页 / 共 4 页
字号:
        {
#ifdef DBG	
    	printf("Writing to address %p\n", (BaseAddress + ((ushort) address + ndx)));
#endif
            WRITE_TO_HW(BaseAddress + ((ushort) address + ndx), *twoBytePtr);
        }
        break;
    case FOUR_BYTES:
        fourBytePtr = (ulong*) buffer;
        for(ndx=0; ndx < length; ndx++, fourBytePtr++)
        {
            WRITE_TO_HW(BaseAddress + ((ushort) address + ndx),
                                            (ushort) (*fourBytePtr >> 16));
            WRITE_TO_HW(BaseAddress + ((ushort) address + ndx), 
                                            (ushort) (*fourBytePtr & 0xFFFF));
        }
        break;
    case EIGHT_BYTES:
    default:
        return bb_WORD_SIZE_UNSUPPORTED;
        break;
    }
    
    return bb_NO_ERROR;
}

#if 0
/******************************************************************
* Function : Ixf6048GetBuildVersion
*-----------------------------------------------------------------
* Description  : This routine returns the firmware build version of 
*                the ixf6048 driver.
*-----------------------------------------------------------------
* Inputs  : pChipData : Validated Chip Data
* Outputs : drvName : Null terminated string describing the driver
*           date : The build date of the driver.
*           buildVer : The version number of the driver.
*           buildRev : The revision number of the driver.
*-----------------------------------------------------------------
* Returns : bb_Error_e  Returns Error Condition if Not successful
*-----------------------------------------------------------------
* Access Globals : None.
*-----------------------------------------------------------------
* Comments : None.
******************************************************************/
bb_Error_e 
Ixf6048GetBuildVersion(bb_ChipData_t* pChipData, char* drvName,
                       char *date, ushort *buildVer, ushort *buildRev)
{
    /* Get the ixf6048 build information */
    strcpy(drvName, IXF6048_BUILD_DRIVER_NAME);
    strcpy(date, IXF6048_BUILD_DATE);
    *buildVer = IXF6048_BUILD_VERSION;
    *buildRev = IXF6048_BUILD_REV;

    return bb_NO_ERROR;
}

/******************************************************************
* Function : Ixf6048GetLCDFilter
*-----------------------------------------------------------------
* Description  : This routine will retrieve the LCD Filter value.
*-----------------------------------------------------------------
* Inputs  : pChipData : Validated Chip Data
*			section : Determines the section(channel) to get the value.
* Outputs : value : The LCD value.
*-----------------------------------------------------------------
* Returns : Status;
*-----------------------------------------------------------------
* Access Globals : None.
*-----------------------------------------------------------------
* Comments : 
******************************************************************/
bb_Error_e 
Ixf6048GetLCDFilter(bb_ChipData_t* pChipData, bb_ChipSegment_t *section,
                    void *value)
{
    ulong *lcdValue;

	lcdValue = (ulong*) value;
	
	/* read the LCD Filter */				
    *lcdValue = READ_FROM_HW(pChipData->BaseAddress + 
                  ixf6048_R_LCDFLTR_CHAN_MSB_OFFSET(section->group.channel));

    /* The the Most Significant part over */
    *lcdValue = *lcdValue << 16;

    /* Read in the Least Significant part */
	*lcdValue |= READ_FROM_HW(pChipData->BaseAddress +
                  ixf6048_R_LCDFLTR_CHAN_LSB_OFFSET(section->group.channel));

    return bb_NO_ERROR;
}

/******************************************************************
* Function : Ixf6048SetLCDFilter
*-----------------------------------------------------------------
* Description  : This routine will retrieve the LCD Filter value.
*-----------------------------------------------------------------
* Inputs  : pChipData : Validated Chip Data
*			section : Determines the section(channel) to get the value.
*           value : The LCD value.
* Outputs : None.
*-----------------------------------------------------------------
* Returns : Status;
*-----------------------------------------------------------------
* Access Globals : None.
*-----------------------------------------------------------------
* Comments : 
******************************************************************/
bb_Error_e 
Ixf6048SetLCDFilter(bb_ChipData_t* pChipData, bb_ChipSegment_t *section,
                    void *value)
{
    ushort lcdMsbValue;
    ushort lcdLsbValue;

	lcdMsbValue = (ushort) ((((ulong)value) >> 16) & 0xFFFF);
	lcdLsbValue = (ushort) (((ulong)value) & 0xFFFF);
	
	/* Write MSB LCD Filter */				
    WRITE_TO_HW(pChipData->BaseAddress + 
                ixf6048_R_LCDFLTR_CHAN_MSB_OFFSET(section->group.channel),
                lcdMsbValue);

	/* Write LSB LCD Filter */				
    WRITE_TO_HW(pChipData->BaseAddress + 
                ixf6048_R_LCDFLTR_CHAN_LSB_OFFSET(section->group.channel),
                lcdLsbValue);

    return bb_NO_ERROR;
}

/******************************************************************
* Function : Ixf6048InitAllocMemory
*-----------------------------------------------------------------
* Description  : This routine dynamically allocates memory within
*				 the "pChipData" parameter for those members that 
*				 need dynamic allocation.
*-----------------------------------------------------------------
* Inputs  : pChipData : A pointer to the chip data structure without 
*						pointers memory allocation.
* Outputs : pChipData : A pointer to the chip data structure with 
*						pointer memory allocation.
*-----------------------------------------------------------------
* Returns : 
*-----------------------------------------------------------------
* Access Globals : None.
*-----------------------------------------------------------------
* Comments : See IxfApiInit for the completion of the initialization
******************************************************************/
bb_Error_e 
Ixf6048InitAllocMemory(bb_ChipData_t *pChipData)
{
    uint ndx;
    ixf6048_ChipCfg_t* pChipCfg;
    ixf6048_AlarmCfg_t* pAlarmCfg;
    
    /* Allocate memory for ChipCfg */
    pChipData->pChipCfg =
           (ixf6048_ChipCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_ChipCfg_t));	
    
    /* Cast the void pointer */
    pChipCfg = (ixf6048_ChipCfg_t *) pChipData->pChipCfg;
    
    /* Initialize the ChipLevel Configuration */
    
    pChipCfg->pChipLevelCfg = (ixf6048_ChipLevelCfg_t *) 
                            OS_CMD_ALLOC_MEM(sizeof(ixf6048_ChipLevelCfg_t));
    
    
    /* Initialize the Channel Configurations */
    for(ndx=0; ndx < MAX_NUM_CHANNELS; ndx++) 
    {
        pChipCfg->pChanCfg[ndx] = 
             (ixf6048_ChanCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_ChanCfg_t));
        memset(pChipCfg->pChanCfg[ndx], 0, sizeof(ixf6048_ChanCfg_t));

        pChipCfg->pChanCfg[ndx]->pChanIfCfg = 
         (ixf6048_ChanIfCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_ChanIfCfg_t));
        memset(pChipCfg->pChanCfg[ndx]->pChanIfCfg, 0, sizeof(ixf6048_ChanIfCfg_t));

        pChipCfg->pChanCfg[ndx]->pOhtChanCfg = 
         (ixf6048_OhtChanCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_OhtChanCfg_t));
        memset(pChipCfg->pChanCfg[ndx]->pOhtChanCfg, 0, sizeof(ixf6048_OhtChanCfg_t));

        pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxRstCfg.pExpectedJ0String = 
            (uchar *) OS_CMD_ALLOC_MEM(sizeof(uchar) * 64);
        memset(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxRstCfg.pExpectedJ0String, 0, sizeof(uchar) * 64);

        pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxHptCfg.pExpectedJ1String = 
            (uchar *) OS_CMD_ALLOC_MEM(sizeof(uchar) * 64);
        memset(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxHptCfg.pExpectedJ1String, 0, sizeof(uchar) * 64);

        pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxRstCfg.pJ0String = 
            (uchar *) OS_CMD_ALLOC_MEM(sizeof(uchar) * 64);
        memset(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxRstCfg.pJ0String, 0, sizeof(uchar) * 64);

	    pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxHptCfg.pTxJ1String = 
            (uchar *) OS_CMD_ALLOC_MEM(sizeof(uchar) * 64);
        memset(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxHptCfg.pTxJ1String, 0, sizeof(uchar) * 64);

        pChipCfg->pChanCfg[ndx]->pAtmChanCfg = 
         (ixf6048_AtmChanCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_AtmChanCfg_t));
        memset(pChipCfg->pChanCfg[ndx]->pAtmChanCfg, 0, sizeof(ixf6048_AtmChanCfg_t));

        pChipCfg->pChanCfg[ndx]->pPosChanCfg = 
         (ixf6048_PosChanCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_PosChanCfg_t));
        memset(pChipCfg->pChanCfg[ndx]->pPosChanCfg, 0, sizeof(ixf6048_PosChanCfg_t));
    }
    
    /* Allocate memory for AlarmCfg */
    pChipData->pAlarmCfg = 
                 (ixf6048_AlarmCfg_t *) OS_CMD_ALLOC_MEM(sizeof(ixf6048_AlarmCfg_t));
    memset(pChipData->pAlarmCfg, 0, sizeof(ixf6048_AlarmCfg_t));
    
    /* Cast the void pointer */
    pAlarmCfg = (ixf6048_AlarmCfg_t *) pChipData->pAlarmCfg;
    
    /* Initialize the Channel Alarm Configurations */
    for(ndx=0; ndx < MAX_NUM_CHANNELS; ndx++) 
    {
        pAlarmCfg->pChanAlarmCfg[ndx] = (ixf6048_ChanAlarmCfg_t *) 
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_ChanAlarmCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx], 0, sizeof(ixf6048_ChanAlarmCfg_t));

        pAlarmCfg->pChanAlarmCfg[ndx]->pOhtChanAlarmCfg = (ixf6048_OhtChanAlarmCfg_t *)
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_OhtChanAlarmCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx]->pOhtChanAlarmCfg, 0, sizeof(ixf6048_OhtChanAlarmCfg_t));

        pAlarmCfg->pChanAlarmCfg[ndx]->pUtopiaAlarmsCfg = (ixf6048_UtopiaAlarmsCfg_t *) 
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_UtopiaAlarmsCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx]->pUtopiaAlarmsCfg, 0, sizeof(ixf6048_UtopiaAlarmsCfg_t));

        pAlarmCfg->pChanAlarmCfg[ndx]->pAtmChanAlarmCfg = (ixf6048_AtmChanAlarmCfg_t *) 
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_AtmChanAlarmCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx]->pAtmChanAlarmCfg, 0, sizeof(ixf6048_AtmChanAlarmCfg_t));

        pAlarmCfg->pChanAlarmCfg[ndx]->pPosChanAlarmCfg = (ixf6048_PosChanAlarmCfg_t *) 
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_PosChanAlarmCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx]->pPosChanAlarmCfg, 0, sizeof(ixf6048_PosChanAlarmCfg_t));

        pAlarmCfg->pChanAlarmCfg[ndx]->pMiscAlarmsCfg = (ixf6048_MiscAlarmsCfg_t *) 
            OS_CMD_ALLOC_MEM(sizeof(ixf6048_MiscAlarmsCfg_t));
        memset(pAlarmCfg->pChanAlarmCfg[ndx]->pMiscAlarmsCfg, 0, sizeof(ixf6048_MiscAlarmsCfg_t));

    }

    return bb_NO_ERROR;
}

/******************************************************************
* Function : Ixf6048DeAllocMemory
*-----------------------------------------------------------------
* Description  : This routine frees the dynamically allocated memory
*				 within the "pChipData" structure
*-----------------------------------------------------------------
* Inputs  : pChipData : A pointer to the chip data structure.
* Outputs : None.
*-----------------------------------------------------------------
* Returns : Status
*-----------------------------------------------------------------
* Access Globals : None.
*-----------------------------------------------------------------
* Comments : None.
******************************************************************/
bb_Error_e 
Ixf6048DeAllocMemory(bb_ChipData_t *pChipData)
{
    uint ndx;
    ixf6048_ChipCfg_t* pChipCfg;
    ixf6048_AlarmCfg_t* pAlarmCfg;
    
    /* Deallocate memory for ChipCfg */
    if (pChipData->pChipCfg) 
    {
        /* Cast the void pointer */
        pChipCfg = (ixf6048_ChipCfg_t *) pChipData->pChipCfg;
           
        /* Cycle thru the channels */
        for(ndx=0; ndx < MAX_NUM_CHANNELS; ndx++) 
        {			
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pPosChanCfg);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pAtmChanCfg);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxRstCfg.pExpectedJ0String);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->RxHptCfg.pExpectedJ1String);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxRstCfg.pJ0String);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pOhtChanCfg->TxHptCfg.pTxJ1String);
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pOhtChanCfg);           
            OS_CMD_DEALLOC_MEM(pChipCfg->pChanCfg[ndx]->pChanIfCfg);

⌨️ 快捷键说明

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