Beispiel #1
0
/* DSL Rx */
void SetDslRxDataInd(BOOL value)
{
   #if COMMON_TX_RX_INDICATION
   WriteGPIOData(GPOUT_TXD_LED,!value);
   #else
   WriteGPIOData(GPOUT_RXD_LED,!value);
   #endif
}
Beispiel #2
0
void CnxtAdslLEDTask(void *sem)
{
    BOOL HandShakeLED;
    BOOL ShowtimeLED;

    struct task_struct *tsk = current ;
    tsk->session = 1 ;
    tsk->pgrp = 1 ;
    strcpy ( tsk->comm, "CnxtAdslLEDTask" ) ;

    /* sigstop and sigcont will stop and wakeup kupdate */
    spin_lock_irq(&tsk->sigmask_lock);
    sigfillset(&tsk->blocked);
    siginitsetinv(&current->blocked, sigmask(SIGCONT) | sigmask(SIGSTOP));
    recalc_sigpending(tsk);
    spin_unlock_irq(&tsk->sigmask_lock);

    up((struct semaphore *)sem);

    while(1)
    {
        /* Condensed Showtime State to two Booleans - In Showtime and In Training */
        ShowtimeLED= FALSE;
        HandShakeLED= FALSE;

        switch (HWSTATE.dwLineStatus)
        {
        case HW_IO_MODEM_STATUS_ACTIVATED:
            ShowtimeLED= TRUE;
            break;

        case HW_IO_MODEM_STATUS_CHANNEL_ANALYSIS:
        case HW_IO_MODEM_STATUS_TRANSCEIVER_TRAINING:
        case HW_IO_MODEM_STATUS_EXCHANGE:
        case HW_IO_MODEM_STATUS_ACTIVATION:
            HandShakeLED= TRUE;
            break;
        }

        /* Blink Showtime LED if in Training */
        if (ShowtimeLED || HandShakeLED)
        {
            WriteGPIOData( GPOUT_SHOWTIME_LED,LED_ON );
        }

        /* This logic is for a blinking Showtime LED */
        if (!ShowtimeLED)
        {
            WriteGPIOData( GPOUT_SHOWTIME_LED,LED_OFF );
        }

        TaskDelayMsec(LED_DELAY_PERIOD);

    }
}
Beispiel #3
0
void DpResetWiring( void )	
{
	// Outer pair
		WriteGPIOData( GPOUT_OUTER_PAIR, 0 );
	// Inner pair
		WriteGPIOData( GPOUT_INNER_PAIR, 0 );

	// Short/Long loop switch
		WriteGPIOData( GPOUT_SHORTLOOPSW, 1 );

}/*  End of function HwResetWiring() */
void sysEPHYPwrCtl(eHWPowerState ePowerState)
{
   switch (ePowerState)
   {
      case DEVICE_ON:
         break;

      case DEVICE_OFF:
         break;

      case DEVICE_RESET:
         #if DL10_D325_003 || CONFIG_CNXT_GSHDSL || CONFIG_CNXT_GSHDSL_MODULE
          WriteGPIOData( GPOUT_EMACRESET, 0 );
          WriteGPIOData( GPOUT_EMACRESET, 1 );
          sysTimerDelay(2000);  /* 2 ms */
         #endif
   }
}
void sysFALCONPwrCtl(eHWPowerState ePowerState)
{
	switch (ePowerState)
	{
		case DEVICE_ON:
			/* Enable Falcon Power */
			WriteGPIOData( GPOUT_F2PWRDWN, 0 );
			sysTimerDelay(10000);

			/* Remove Falcon Reset */
			WriteGPIOData( GPOUT_F2RESET, 1 );
			sysTimerDelay(10000);
			break;

		case DEVICE_OFF:
			/* Disable Falcon Power */
			WriteGPIOData( GPOUT_F2PWRDWN, 1 );

			/* Put Falcon in Reset */
			WriteGPIOData( GPOUT_F2RESET, 0 );
			WriteGPIOData( GPOUT_F2_SCANEN, 1 );

			WriteGPIOData( GPOUT_OUTER_PAIR, 0 );
			// Inner pair
			WriteGPIOData( GPOUT_INNER_PAIR, 0 );

			HWSTATE.eADSLLineState = ADSL_DISABLE;
			HWSTATE.eADSLRequestLineState= ADSL_DISABLE; 
			HWSTATE.dwLineStatus= HW_IO_MODEM_STATUS_DOWN;
			break;

		case DEVICE_RESET:
			/* Put Falcon in Reset */
			WriteGPIOData( GPOUT_F2RESET, 0);
			sysTimerDelay(100000);
			/* Take Falcon out of Reset */
			WriteGPIOData( GPOUT_F2RESET, 1 );
			sysTimerDelay(100000);
			break;

		case DEVICE_SLEEP:
			default:
			break;
	}
}
Beispiel #6
0
/*********************************************************************************
    Function     : void DpSetAFEHybridSelect( UINT8	 Select_Line, BOOLEAN State)
    Description  : This routine will deenergize the relay used for wire switching.
**********************************************************************************/
void DpSetAFEHybridSelect(
 	UINT8					  Select_Line, 
	BOOL					  State
)
{
	switch (Select_Line)
	{
		case 1:
			WriteGPIOData( GPOUT_SHORTLOOPSW, State );
			break;
		case 2:
			break;
	}
}
void sysAFEPwrCtl(eHWPowerState ePowerState)
{
   switch (ePowerState)
   {
      case DEVICE_ON:
          /* Power up Line Driver */
         #ifdef DL10_D325_003
            WriteGPIOData( GPOUT_LDRVPWR, 1 );
         #else
            WriteGPIOData( GPOUT_LDRVPWR, 0 );
         #endif
         sysTimerDelay(10000);

         /* Take AFE out of Reset*/
         WriteGPIOData( GPOUT_AFERESET, 1 );
         sysTimerDelay(10000);
         break;

      case DEVICE_OFF:
         /* Power down Line Driver */
         #ifdef DL10_D325_003 
            WriteGPIOData( GPOUT_LDRVPWR, 0 );
         #else
            WriteGPIOData( GPOUT_LDRVPWR, 1 );
         #endif

         /* Place AFE in Reset*/
         WriteGPIOData( GPOUT_AFERESET, 0 );
         break;

      case DEVICE_RESET:
         /* Place AFE in Reset */
         WriteGPIOData( GPOUT_AFERESET, 0 );
         /* Hold reset for some time */
         sysTimerDelay(100000);
         /* Take AFE out of Reset*/
         WriteGPIOData( GPOUT_AFERESET, 1 );
         sysTimerDelay(100000);
         break;

      case DEVICE_SLEEP:
      default:
         break;
   }
}
Beispiel #8
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);
}
Beispiel #9
0
void AFEReset(BOOL State)
{
	WriteGPIOData(GPOUT_AFERESET,!State);	/* GPIO8 */	
}
Beispiel #10
0
void LinedriverPower(BOOL State)
{
	WriteGPIOData(GPOUT_LDRVPWR,State);	/* GPIO13 */	
}
Beispiel #11
0
/* DSL Tx */
void SetDslTxDataInd(BOOL value)
{
   WriteGPIOData(GPOUT_TXD_LED,!value);
}
Beispiel #12
0
void FalconScanEnable(BOOL State)
{
	WriteGPIOData(GPOUT_F2_SCANEN,State);	/* GPIO30(P50) , GPIO26(ZIG)*/
}
Beispiel #13
0
void FalconPowerDown(BOOL State)
{
	WriteGPIOData(GPOUT_F2PWRDWN, State);		/* GPIO0(P46), GPIO12(P50) */
}
Beispiel #14
0
void FalconReset(BOOL State)
{
	WriteGPIOData(GPOUT_F2RESET,State);	/* GPIO6(P46), GPIO9(P50) */	
}