/****************************************************************************** * * Title : getRegisterId.c * Version 0.0 * * Description: supporting routine for RWRegField and pollRegField primitive * params panels. * Related files: primParamsUir.c * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include "getRegisterId.h" #include "errorHandler.h" /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * getRegisterId() *============================================================================= * * Function returns registerId (input parameter for RW_REGISER_FIELD and * POLL_REGISER_FIELD primitives) - see definitions in registerIndicies.h. * * Input: baseId (id with zero parameters)+ x, y, z params (if any). * X is always the first (or the only parameter), Y the second and Z the third * one in registerIndicies.h definition. * If register ID definition in registerIndicies.h has no * input parameter, then x,y,z input values into this function are * not used (default case). * * Output: regiserID */ ERROR_ID getRegisterId(UINT32 *registerId, UINT32 baseId, UINT32 x, UINT32 y, UINT32 z){ int fmt=x; int slv=x; switch(baseId){ case FMT_LINK_EN(0) : *registerId=FMT_LINK_EN(fmt) ; break; case FMT_EXP_MODE_EN(0) : *registerId=FMT_EXP_MODE_EN(fmt) ; break; case FMT_CONFIG_MODE_EN(0) : *registerId=FMT_CONFIG_MODE_EN(fmt) ; break; case FMT_EDGE_MODE_EN(0) : *registerId=FMT_EDGE_MODE_EN(fmt) ; break; case FMT_READOUT_TIMEOUT(0) : *registerId=FMT_READOUT_TIMEOUT(fmt) ; break; case FMT_DATA_OVERFLOW_LIMIT(0) : *registerId=FMT_DATA_OVERFLOW_LIMIT(fmt) ; break; case FMT_HEADER_TRAILER_LIMIT(0) : *registerId=FMT_HEADER_TRAILER_LIMIT(fmt); break; case FMT_ROD_BUSY_LIMIT(0) : *registerId=FMT_ROD_BUSY_LIMIT(fmt) ; break; case FMT_PXL_LINK03_L1A_CNT(0) : *registerId=FMT_PXL_LINK03_L1A_CNT(fmt) ; break; case FMT_PXL_LINK47_L1A_CNT(0) : *registerId=FMT_PXL_LINK47_L1A_CNT(fmt) ; break; case FMT_LINK_DATA_TEST_MUX(0) : *registerId=FMT_LINK_DATA_TEST_MUX(fmt) ; break; case FMT_MB_DIAG_REN(0) : *registerId=FMT_MB_DIAG_REN(fmt) ; break; case FMT_LINK_OCC_CNT(0,0) : *registerId=FMT_LINK_OCC_CNT(fmt,y) ; break; case FMT_TIMEOUT_ERR(0) : *registerId=FMT_TIMEOUT_ERR(fmt) ; break; case FMT_DATA_OVERFLOW_ERR(0) : *registerId=FMT_DATA_OVERFLOW_ERR(fmt) ; break; case FMT_HEADER_TRAILER_ERR(0) : *registerId=FMT_HEADER_TRAILER_ERR(fmt) ; break; case FMT_ROD_BUSY_ERR(0) : *registerId=FMT_ROD_BUSY_ERR(fmt) ; break; case FMT_DATA_FMT_STATUS(0) : *registerId=FMT_DATA_FMT_STATUS(fmt) ; break; case FMT_STATUS(0) : *registerId=FMT_STATUS(fmt) ; break; case FMT_VERSION(0) : *registerId=FMT_VERSION(fmt) ; break; case FMT_MODEBIT_STAT_05(0) : *registerId=FMT_MODEBIT_STAT_05(fmt) ; break; case FMT_MODEBIT_STAT_6B(0) : *registerId=FMT_MODEBIT_STAT_6B(fmt) ; break; case ERROR_MASK(0, 0) : *registerId=ERROR_MASK(x, y) ; break; case RTR_TRAP_CMND_0(0) : *registerId=RTR_TRAP_CMND_0(slv) ; break; case RTR_TRAP_CMND_1(0) : *registerId=RTR_TRAP_CMND_1(slv) ; break; case RTR_TRAP_RESET(0) : *registerId=RTR_TRAP_RESET(slv) ; break; case RTR_TRAP_STATUS(0) : *registerId=RTR_TRAP_STATUS(slv) ; break; case RTR_TRAP_MATCH_0(0) : *registerId=RTR_TRAP_MATCH_0(slv) ; break; case RTR_TRAP_MOD_0(0) : *registerId=RTR_TRAP_MOD_0(slv) ; break; case RTR_TRAP_MATCH_1(0) : *registerId=RTR_TRAP_MATCH_1(slv) ; break; case RTR_TRAP_MOD_1(0) : *registerId=RTR_TRAP_MOD_1(slv) ; break; case RTR_TRAP_XFR_FRM_SIZE(0) : *registerId=RTR_TRAP_XFR_FRM_SIZE(slv) ; break; case RTR_TRAP_FIFO_WRD_CNT(0) : *registerId=RTR_TRAP_FIFO_WRD_CNT(slv) ; break; case RTR_TRAP_EVT_CNT(0) : *registerId=RTR_TRAP_EVT_CNT(slv) ; break; case RTR_TRAP_INT_DELAY_CNT(0) : *registerId=RTR_TRAP_INT_DELAY_CNT(slv) ; break; case FE_OCC_CNTR_RESET(0) : *registerId=FE_OCC_CNTR_RESET(x) ; break; case FE_OCC_CNTR_LOAD(0) : *registerId=FE_OCC_CNTR_LOAD(x) ; break; case DATA_LINK_MASK(0) : *registerId=DATA_LINK_MASK(x) ; break; case FE_OCC_CNTR(0) : *registerId=FE_OCC_CNTR(x) ; break; case DM_DFLT_LUT(0) : *registerId=DM_DFLT_LUT(x) ; break; case DM_CRTV_LUT(0) : *registerId=DM_CRTV_LUT(x) ; break; case RMB_DFLT_LUT(0, 0, 0) : *registerId=RMB_DFLT_LUT(x, y, z); break; case RMB_CRTV_LUT(0, 0, 0) : *registerId=RMB_CRTV_LUT(x, y, z); break; case CMND_MASK_LUT(0, 0, 0): *registerId=CMND_MASK_LUT(x, y, z); break; case STREAM_INHIBIT_MASK(0) : *registerId=STREAM_INHIBIT_MASK(x) ; break; case MARK_SPACE(0) : *registerId=MARK_SPACE(x) ; break; case COARSE_DELAY(0) : *registerId=COARSE_DELAY(x) ; break; case FINE_DELAY(0) : *registerId=FINE_DELAY(x) ; break; case LASER_CURR_DAC(0) : *registerId=LASER_CURR_DAC(x) ; break; case IN_LINK_DATA_DELAY(0) : *registerId=IN_LINK_DATA_DELAY(x) ; break; case STROBE_DELAY(0) : *registerId=STROBE_DELAY(x) ; break; case IN_DATA_RX_THRESH_DAC(0) : *registerId=IN_DATA_RX_THRESH_DAC(x) ; break; default: if(baseId>LAST_ROD_REG){ ERROR_CHECK(PROGRAM_ERROR, Wrong registerId!); return(PROGRAM_ERROR); }else{ *registerId=baseId; } break; } return(SUCCESS); } /******************************************************************************/