/* DSL Rx */ void SetDslRxDataInd(BOOL value) { #if COMMON_TX_RX_INDICATION WriteGPIOData(GPOUT_TXD_LED,!value); #else WriteGPIOData(GPOUT_RXD_LED,!value); #endif }
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(¤t->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); } }
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; } }
/********************************************************************************* 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; } }
/* ** 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 AFEReset(BOOL State) { WriteGPIOData(GPOUT_AFERESET,!State); /* GPIO8 */ }
void LinedriverPower(BOOL State) { WriteGPIOData(GPOUT_LDRVPWR,State); /* GPIO13 */ }
/* DSL Tx */ void SetDslTxDataInd(BOOL value) { WriteGPIOData(GPOUT_TXD_LED,!value); }
void FalconScanEnable(BOOL State) { WriteGPIOData(GPOUT_F2_SCANEN,State); /* GPIO30(P50) , GPIO26(ZIG)*/ }
void FalconPowerDown(BOOL State) { WriteGPIOData(GPOUT_F2PWRDWN, State); /* GPIO0(P46), GPIO12(P50) */ }
void FalconReset(BOOL State) { WriteGPIOData(GPOUT_F2RESET,State); /* GPIO6(P46), GPIO9(P50) */ }