/* * * Function Name: cslDsiAfeLdoSetState * * Description: AFE LDO Control * */ static void cslDsiAfeLdoSetState(DSI_HANDLE dsiH, DSI_LDO_STATE_t state) { #define DSI_LDO_HP_EN 0x00000001 #define DSI_LDO_LP_EN 0x00000002 #define DSI_LDO_CNTL_ENA 0x00000004 #define DSI_LDO_ISO_OUT 0x00800000 unsigned long ldo_val = 0; switch (state) { case DSI_LDO_HP: ldo_val = DSI_LDO_CNTL_ENA | DSI_LDO_HP_EN; break; case DSI_LDO_LP: ldo_val = DSI_LDO_CNTL_ENA | DSI_LDO_LP_EN; break; case DSI_LDO_OFF: ldo_val = DSI_LDO_CNTL_ENA | DSI_LDO_ISO_OUT; break; default: ldo_val = DSI_LDO_CNTL_ENA | DSI_LDO_HP_EN; LCD_DBG(LCD_DBG_ERR_ID, "[CSL DSI] %s: " "ERROR Invalid LDO State[%d] !\r\n", __func__, state); break; } if (dsiH->bus == 0) HW_REG_WRITE(0x3C004030, ldo_val); else HW_REG_WRITE(0x3C004034, ldo_val); OSTASK_Sleep(TICKS_IN_MILLISECONDS(1)); }
/* ** The actual handware interrupt goes here for processing. */ void GPIOHandler(int irq, void *dev_id, struct pt_regs * regs) { register UINT32 i; register UINT32 dwGPIO1Stat, dwGPIO2Stat, dwGPIO3Stat; register UINT32 BitPosition; register int oldlevel; #ifdef INSTRUMENTATION register int oldTskGPIO; #endif /* INSTRUMENTATION */ oldlevel = INTLOCK(); #ifdef INSTRUMENTATION oldTskGPIO= ReadGPIOData(GPOUT_TASKRDY_LED); WriteGPIOData(GPOUT_TASKRDY_LED, LED_ON); #endif /* INSTRUMENTATION */ while (1) { /* Each GPIO ISR only contains 16 bits */ dwGPIO1Stat = (*p_GRP0_INT_STAT & *p_GRP0_INT_MASK) & 0xFFFF; dwGPIO2Stat = (*p_GRP1_INT_STAT & *p_GRP1_INT_MASK) & 0xFFFF; dwGPIO3Stat = (*p_GRP2_INT_STAT & *p_GRP2_INT_MASK) & 0xFFFF; if ( (dwGPIO1Stat | dwGPIO2Stat | dwGPIO3Stat) == 0) break; for (i = 0, BitPosition = 1; dwGPIO1Stat; i++, BitPosition<<=1) if (dwGPIO1Stat & BitPosition) { if (GPIOISR1Handler_Tbl[i] != 0) (*GPIOISR1Handler_Tbl[i])(i); else { if (pGPIO_ISR[i] != 0) (*(pGPIO_ISR)[i])(i); HW_REG_WRITE (p_GRP0_INT_STAT, BitPosition); } dwGPIO1Stat &= ~(BitPosition); } for (i = 0, BitPosition = 1; dwGPIO2Stat; i++, BitPosition<<=1) if (dwGPIO2Stat & BitPosition) { if (GPIOISR2Handler_Tbl[i] != 0) (*GPIOISR2Handler_Tbl[i])(i+16); else { if (pGPIO_ISR[i+16] != 0) (*(pGPIO_ISR)[i+16])(i+16); HW_REG_WRITE (p_GRP1_INT_STAT, BitPosition); } dwGPIO2Stat &= ~(BitPosition); } for (i = 0, BitPosition = 1; dwGPIO3Stat; i++, BitPosition<<=1) if (dwGPIO3Stat & BitPosition) { if (GPIOISR3Handler_Tbl[i] != 0) (*GPIOISR3Handler_Tbl[i])(i+32); else { if (pGPIO_ISR[i+32] != 0) (*(pGPIO_ISR)[i+32])(i+32); HW_REG_WRITE (p_GRP2_INT_STAT, BitPosition); } dwGPIO3Stat &= ~(BitPosition); } } #ifdef INSTRUMENTATION WriteGPIOData(GPOUT_TASKRDY_LED, oldTskGPIO); #endif /* INSTRUMENTATION */ HW_REG_WRITE (PIC_TOP_ISR_IRQ, INT_GPIO); INTUNLOCK(oldlevel); }
void PICClearIntStatus(UINT32 IntSource) { HW_REG_WRITE (PIC_TOP_ISR_IRQ, (1 <<IntSource) ); }