void UFOE_Init(BOOL isUFOEPoweredOn) { if (isUFOEPoweredOn) UFOE_BackupRegisters(); else _ResetBackupedUFOERegisterValues(); UFOE_PowerOn(); OUTREGBIT(UFOE_INTEN_REG, UFOE_REG->UFOE_INTEN, ufoe_fra_underrun, 1); OUTREGBIT(UFOE_INTEN_REG, UFOE_REG->UFOE_INTEN, ufoe_fra_done, 1); OUTREGBIT(UFOE_INTEN_REG, UFOE_REG->UFOE_INTEN, ufoe_fra_complete, 1); /* UFOE_REG->UFOE_CK_ON = 0x1; */ }
DPI_STATUS DPI_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID) { #if ENABLE_DPI_INTERRUPT switch(eventID) { case DISP_DPI_VSYNC_INT: //DPI_REG->INT_ENABLE.VSYNC = 1; OUTREGBIT(DPI_REG_INTERRUPT,DPI_REG->INT_ENABLE,VSYNC,1); break; case DISP_DPI_FIFO_EMPTY_INT: //DPI_REG->INT_ENABLE.VSYNC = 1; OUTREGBIT(DPI_REG_INTERRUPT,DPI_REG->INT_ENABLE,UNDERFLOW,1); break; case DISP_DPI_TARGET_LINE_INT: disp_register_irq(DISP_MODULE_RDMA0, _DPI_RDMA0_IRQ_Handler); break; case DISP_DPI_REG_UPDATE_INT: disp_register_irq(DISP_MODULE_MUTEX, _DPI_MUTEX_IRQ_Handler); break; case DISP_DPI_FIFO_FULL_INT: case DISP_DPI_OUT_EMPTY_INT: case DISP_DPI_CNT_OVERFLOW_INT: case DISP_DPI_LINE_ERR_INT: default: return DPI_STATUS_ERROR; } return DPI_STATUS_OK; #else switch(eventID) { case DISP_DPI_VSYNC_INT: OUTREGBIT(DPI_REG_INTERRUPT,DPI_REG->INT_ENABLE,VSYNC,1); disp_register_irq(DISP_MODULE_RDMA0, _DPI_RDMA0_IRQ_Handler); break; case DISP_DPI_TARGET_LINE_INT: disp_register_irq(DISP_MODULE_RDMA0, _DPI_RDMA0_IRQ_Handler); break; case DISP_DPI_REG_UPDATE_INT: disp_register_irq(DISP_MODULE_MUTEX, _DPI_MUTEX_IRQ_Handler); break; default: return DPI_STATUS_ERROR; } return DPI_STATUS_OK; ///TODO: warning log here //return DPI_STATUS_ERROR; #endif }
void UFOE_Config(UFOE_para ufoe_config) { OUTREGBIT(UFOE_START_REG, UFOE_REG->UFOE_START, ufoe_bypass, ufoe_config.bypass); OUTREG32(&UFOE_REG->UFOE_CFG_0B, ufoe_config.ufoe_cfg_0); OUTREG32(&UFOE_REG->UFOE_CFG_1B, ufoe_config.ufoe_cfg_1); OUTREG32(&UFOE_REG->UFOE_FRA_WIDTH, ufoe_config.width); OUTREG32(&UFOE_REG->UFOE_FRA_HEIGHT, ufoe_config.height); UFOE_DumpRegisters(); }
DPI_STATUS DPI_EnableInterrupt(DISP_INTERRUPT_EVENTS eventID) { #if ENABLE_DPI_INTERRUPT switch(eventID) { case DISP_DPI_VSYNC_INT: OUTREGBIT(DPI_REG_INTERRUPT,DPI_REG->INT_ENABLE,VSYNC,1); break; default: return DPI_STATUS_ERROR; } return DPI_STATUS_OK; #else ///TODO: warning log here return DPI_STATUS_ERROR; #endif }
void UFOE_Start(void) { OUTREGBIT(UFOE_START_REG, UFOE_REG->UFOE_START, ufoe_start, 0); OUTREGBIT(UFOE_START_REG, UFOE_REG->UFOE_START, ufoe_start, 1); }