/*
 *
 * 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));
}
Exemplo n.º 2
0
/*
** 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);
}
Exemplo n.º 3
0
void PICClearIntStatus(UINT32 IntSource)
{
   HW_REG_WRITE (PIC_TOP_ISR_IRQ, (1 <<IntSource) );
}