Beispiel #1
0
/**
 *	@brief		Set a PCLK mode.
 *	@param[in]	mode			Specifies a PCLK mode to change.
 *	@return		None.
 *	@remark		MPEGTSIF doesn't support NX_PCLKMODE_DYNAMIC. If you call this
 *				function with NX_PCLKMODE_DYNAMIC, it makes that PCLK doesn't
 *				provide to the MPEGTSIF module and MPEGTSIF module doesn't operate
 *				correctly. You have to set a PCLK mode as NX_PCLKMODE_ALWAYS
 *				to operate and control the MPEGTSIF module. But you can set a PCLK
 *				mode as NX_PCLKMODE_DYNAMIC to slightly reduce a power
 *				cunsumption if you don't want to use the MPEGTSIF module.\n
 *				\b IMPORTANT : \n
 *				Since changing a clock controller register of the MPEGTSIF module
 *				causes a reset of controller register of the MPEGTSIF module,
 *				you have to reconfigure all settings of the MPEGTSIF module
 *				after calling this function.
 *	@see		NX_PCLKMODE,	NX_MPEGTSIF_GetClockPClkMode,
 */
void	NX_MPEGTSIF_SetClockPClkMode( NX_PCLKMODE mode )
{
	const U32 PCLKMODE	= 1UL<<3;
	const U32 IRQPEND	= 1UL<<15;

	register U32 regvalue, regctrl;

	NX_ASSERT( CNULL != __g_pRegister );

	regctrl	= __g_pRegister->CTRL;				// back-up control register before changing CLKENB.
	regvalue	= __g_pRegister->CLKENB;

	switch( mode )
	{
		case NX_PCLKMODE_DYNAMIC:	regvalue &= ~PCLKMODE;	break;
		case NX_PCLKMODE_ALWAYS :	regvalue |=	PCLKMODE;	break;
		default:					NX_ASSERT( CFALSE );	break;
	}

//	__g_pRegister->CLKENB	= regvalue;
//	__g_pRegister->CTRL		= regctrl & ~IRQPEND;	// restore control register after changing CLKENB.
	WriteIODW(&__g_pRegister->CLKENB, regvalue);
	WriteIODW(&__g_pRegister->CTRL, regctrl & ~IRQPEND);	// restore control register after changing CLKENB.
}
Beispiel #2
0
/**
 *	@brief		Set all interrupts to be enabled or disabled.
 *	@param[in]	0		an index of module.
 *	@param[in]	Enable	\b Set as CTRUE to enable all interrupts. \r\n
 *						\b Set as CFALSE to disable all interrupts.
 *	@return		None.

 */
void	NX_USB20OTG_SetInterruptEnableAll(  CBOOL Enable )
{
    register NX_USB20OTG_RegisterSet* pRegister;
    register U32 	regvalue;

    NX_ASSERT( NUMBER_OF_USB20OTG_MODULE > 0 );
    NX_ASSERT( (0==Enable) || (1==Enable) );
    NX_ASSERT( CNULL != __g_pRegister[0] );

    pRegister = __g_pRegister[0];
    regvalue  = Enable ? 0xF77EFCFE : 0 ;


    WriteIODW(&pRegister->GINTMSK, regvalue);

}
Beispiel #3
0
/**
 *	@brief		Set a specified interrupt to be enable or disable.
 *	@param[in]	EnableFlag	Specify interrupt bit for enable of disable. Each bit's meaning is like below	\n
 *							- EnableFlag[0] : Set Transfer Done interrupt enable or disable. \n
 *	@return		None.
 *	@see		NX_MPEGTSIF_GetInterruptNumber,			NX_MPEGTSIF_SetInterruptEnable,
 *				NX_MPEGTSIF_GetInterruptEnable,
 *				NX_MPEGTSIF_GetInterruptEnable32,		NX_MPEGTSIF_GetInterruptPending,
 *				NX_MPEGTSIF_GetInterruptPending32,		NX_MPEGTSIF_ClearInterruptPending,
 *				NX_MPEGTSIF_ClearInterruptPending32,	NX_MPEGTSIF_SetInterruptEnableAll,
 *				NX_MPEGTSIF_GetInterruptEnableAll,		NX_MPEGTSIF_GetInterruptPendingAll,
 *				NX_MPEGTSIF_ClearInterruptPendingAll,	NX_MPEGTSIF_GetInterruptPendingNumber
 */
void	NX_MPEGTSIF_SetInterruptEnable32( U32 EnableFlag )
{
	register U32 regval;

	const U32 IRQENB_POS	= 8;
	const U32 IRQENB		= 1UL<<IRQENB_POS;
	const U32 IRQPEND		= 1UL<<15;

	NX_ASSERT( CNULL != __g_pRegister );

	regval = __g_pRegister->CTRL;
	regval &= ~(IRQENB | IRQPEND);
	regval |= ((U32)EnableFlag & 0x01)<<IRQENB_POS;
//	__g_pRegister->CTRL = regval;
	WriteIODW(&__g_pRegister->CTRL, regval);
}
Beispiel #4
0
/**
 *	@brief		Enable the MPEG-TS Interface module.
 *	@param[in]	bEnb	Set this as CTRUE to enable the MPEG-TS interface module. \n
 *						Set this as CFALSE to disable the MPEG-TS interface module.
 *	@return		None.
 *	@see		NX_MPEGTSIF_GetEnable, NX_MPEGTSIF_GetErrorFlag
 */
void	NX_MPEGTSIF_SetEnable( CBOOL bEnb )
{
	const U32 IRQPEND	= 1UL<<15;
	const U32 ENB_POS	= 6;
	const U32 ENB		= 1UL<<ENB_POS;
	register U32 regval;

	NX_ASSERT( 0==bEnb || 1==bEnb );
	NX_ASSERT( CNULL != __g_pRegister );

	regval = __g_pRegister->CTRL;
	regval &= ~(ENB | IRQPEND);
	regval |= ((bEnb&1)<<ENB_POS);
//	__g_pRegister->CTRL = regval;
	WriteIODW(&__g_pRegister->CTRL, regval);
}
Beispiel #5
0
/**
 *	@brief		Set all interrupts to be enabled or disabled.
 *	@param[in]	bEnb			Set it as CTRUE to enable all interrupts. \n
 *								Set it as CFALSE to disable all interrupts.
 *	@return		None.
 *	@see		NX_MPEGTSIF_GetInterruptNumber,			NX_MPEGTSIF_SetInterruptEnable,
 *				NX_MPEGTSIF_GetInterruptEnable,			NX_MPEGTSIF_SetInterruptEnable32,
 *				NX_MPEGTSIF_GetInterruptEnable32,		NX_MPEGTSIF_GetInterruptPending,
 *				NX_MPEGTSIF_GetInterruptPending32,		NX_MPEGTSIF_ClearInterruptPending,
 *				NX_MPEGTSIF_ClearInterruptPending32,	
 *				NX_MPEGTSIF_GetInterruptEnableAll,		NX_MPEGTSIF_GetInterruptPendingAll,
 *				NX_MPEGTSIF_ClearInterruptPendingAll,	NX_MPEGTSIF_GetInterruptPendingNumber
 */
void	NX_MPEGTSIF_SetInterruptEnableAll( CBOOL bEnb )
{
	register U32 regval;

	const U32 IRQENB_POS	= 8;
	const U32 IRQENB		= 1UL<<IRQENB_POS;
	const U32 IRQPEND		= 1UL<<15;

	NX_ASSERT( (0==bEnb) || (1==bEnb) );
	NX_ASSERT( CNULL != __g_pRegister );

	regval = __g_pRegister->CTRL;
	regval &= ~(IRQENB | IRQPEND);
	regval |= ((U32)bEnb)<<IRQENB_POS;
//	__g_pRegister->CTRL = regval;
	WriteIODW(&__g_pRegister->CTRL, regval);
}
Beispiel #6
0
/**
 *	@brief		Set 2bit value
 *	@param[in]	Value		This Value is changed when SetBit2() executed.
 *	@param[in]	Bit			Bit number
 *	@param[in]	BitValue	Set value of bit
 *	@return		None.
 *	@see		NX_GPIO_GetBit2
 */
__inline void NX_GPIO_SetBit2
(
	volatile U32* Value,
	U32 Bit,
	U32 BitValue
)
{
	register U32 newvalue = *Value;

	NX_ASSERT( CNULL != Value );
	NX_ASSERT( NX_GPIO_MAX_BIT > Bit );

	newvalue = (U32)(newvalue & ~(3UL<<(Bit*2)));
	newvalue = (U32)(newvalue | (BitValue<<(Bit*2)));
//	*Value = newvalue;
	WriteIODW(Value, newvalue);
}
Beispiel #7
0
/**
 *	@brief		Set clock generator's operation
 *	@param[in]	Enable	\b CTRUE	indicate that Enable of clock generator. \n
 *						\b CFALSE	indicate that Disable of clock generator.
 *	@return		None.
 *	@see		NX_PPM_SetClockPClkMode,		NX_PPM_GetClockPClkMode,
 *				NX_PPM_SetClockSource,			NX_PPM_GetClockSource,
 *				NX_PPM_SetClockDivisor,			NX_PPM_GetClockDivisor,
 *												NX_PPM_GetClockDivisorEnable
 */
void NX_PPM_SetClockDivisorEnable( CBOOL Enable )
{
	const U32	CLKGENENB_POS	=	2;
	const U32	CLKGENENB_MASK	=	1UL << CLKGENENB_POS;

	register U32 ReadValue;

	NX_ASSERT( (0==Enable) ||(1==Enable) );
	NX_ASSERT( CNULL != __g_pRegister );

	ReadValue	=	__g_pRegister->PPM_CLKENB;

	ReadValue	&=	~CLKGENENB_MASK;
	ReadValue	|= (U32)Enable << CLKGENENB_POS;

//	__g_pRegister->PPM_CLKENB	=	ReadValue;
	WriteIODW(&__g_pRegister->PPM_CLKENB, ReadValue);
}
Beispiel #8
0
/**
 *	@brief		Set all interrupts to be enables or disables.
 *	@param[in]	ModuleIndex		A index of module. (0:GPIOA, 1:GPIOB, 2:GPIOC )
 *	@param[in]	Enable	\b CTRUE	indicate that Set to all interrupt enable. \n
 *						\b CFALSE	indicate that Set to all interrupt disable.
 *	@return		None.
 *	@see		NX_GPIO_GetInterruptNumber,			NX_GPIO_SetInterruptEnable,
 *				NX_GPIO_GetInterruptEnable,			NX_GPIO_SetInterruptEnable32,
 *				NX_GPIO_GetInterruptEnable32,		NX_GPIO_GetInterruptPending,
 *				NX_GPIO_GetInterruptPending32,		NX_GPIO_ClearInterruptPending,
 *				NX_GPIO_ClearInterruptPending32,
 *				NX_GPIO_GetInterruptEnableAll,		NX_GPIO_GetInterruptPendingAll,
 *				NX_GPIO_ClearInterruptPendingAll,	NX_GPIO_GetInterruptPendingNumber
 */
void	NX_GPIO_SetInterruptEnableAll( U32 ModuleIndex, CBOOL Enable )
{
	register		U32	setvalue;

	NX_ASSERT( NUMBER_OF_GPIO_MODULE > ModuleIndex );
	NX_ASSERT( (0==Enable) || (1==Enable) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );

	if( Enable )
	{	setvalue = ~(0UL);	}
	else
	{	setvalue = 0UL;	}

//	__g_ModuleVariables[ModuleIndex].pRegister->GPIOxINTENB	= setvalue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].pRegister->GPIOxINTENB, setvalue);

	NX_GPIO_SetInterruptEnable32(ModuleIndex, setvalue);
}
Beispiel #9
0
void	NX_CRYPTO_SetInterruptEnable( U32 ModuleIndex, CBOOL Enb )
{
	register NX_CRYPTO_RegisterSet* pRegister;
	register U32 regvalue;
	NX_ASSERT( NUMBER_OF_CRYPTO_MODULE > ModuleIndex );
	NX_ASSERT( CNULL != __g_pRegister[ModuleIndex] );
	NX_ASSERT( Enb == CTRUE || Enb == CFALSE );
	pRegister = __g_pRegister[ModuleIndex];

	//@modified choiyk 2012-11-15 오후 4:03:19
	// 해당 신호들은 토글용 신호들이다.
	regvalue  = ReadIODW(&pRegister->CRYPTO_CRT_CTRL0);
	regvalue  = regvalue & (~(0x00ff));
	
	if( Enb )	regvalue  = regvalue | (1<<10);	
	else		regvalue  = regvalue & (~(1<<10));	
	WriteIODW(&pRegister->CRYPTO_CRT_CTRL0, regvalue);	
}
Beispiel #10
0
void	NX_CRYPTO_SetInterruptMask( U32 ModuleIndex, U32 Mask )
{
	register NX_CRYPTO_RegisterSet* pRegister;
	register U32 regvalue;
	NX_ASSERT( NUMBER_OF_CRYPTO_MODULE > ModuleIndex );
	NX_ASSERT( CNULL != __g_pRegister[ModuleIndex] );
	NX_ASSERT( Mask <= 1 );
	pRegister = __g_pRegister[ModuleIndex];

	//@modified choiyk 2012-11-15 오후 4:03:19
	// 해당 신호들은 토글용 신호들이다.
	regvalue  = ReadIODW(&pRegister->CRYPTO_CRT_CTRL0);
	regvalue  = regvalue & (~(0x00ff));
	
	if( Mask )	regvalue  = regvalue | (1<<9);	
	else		regvalue  = regvalue & (~(1<<9));	
	WriteIODW(&pRegister->CRYPTO_CRT_CTRL0, regvalue);	
}
Beispiel #11
0
void			NX_DISPTOP_CLKGEN_SetClockOutInv( U32 ModuleIndex, U32 Index, CBOOL OutClkInv )
{
	const U32 OUTCLKINV_POS	=	1;
	const U32 OUTCLKINV_MASK	=	1UL << OUTCLKINV_POS;

	register U32 ReadValue;

	//NX_ASSERT( 2 > Index );
	//NX_ASSERT( (0==OutClkInv) ||(1==OutClkInv) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister );

	ReadValue	=	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1];

	ReadValue	&=	~OUTCLKINV_MASK;
	ReadValue	|=	OutClkInv << OUTCLKINV_POS;

	//__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1]	=	ReadValue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1], ReadValue);
}
Beispiel #12
0
/**
 *	@brief		Set clock divisor of specified clock generator.
 *	@param[in]	ModuleIndex		An index of module ( 0 ~ 1 ).
 *	@param[in]	Index		Select clock generator( 0 : clock generator 0 )
 *	@param[in]	Divisor		Clock divisor ( 1 ~ 256 ).
 *	@return		None.
 *	@remarks	CLKGEN have one clock generator. so \e Index must set to 0.
 *	@see		NX_DISPTOP_CLKGEN_SetClockPClkMode,		NX_DISPTOP_CLKGEN_GetClockPClkMode,
 *				NX_DISPTOP_CLKGEN_SetClockSource,			NX_DISPTOP_CLKGEN_GetClockSource,
 *				NX_DISPTOP_CLKGEN_GetClockDivisor,
 *				NX_DISPTOP_CLKGEN_SetClockDivisorEnable,	NX_DISPTOP_CLKGEN_GetClockDivisorEnable
 */
void			NX_DISPTOP_CLKGEN_SetClockDivisor( U32 ModuleIndex, U32 Index, U32 Divisor )
{
	const U32 CLKDIV_POS	=	5;
	const U32 CLKDIV_MASK	=	0xFF << CLKDIV_POS;

	register U32 ReadValue;

	NX_ASSERT( NUMBER_OF_DISPTOP_CLKGEN_MODULE > ModuleIndex );
	//NX_ASSERT( 0 == Index );
	NX_ASSERT( 1 <= Divisor && Divisor <= 256 );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister );

	ReadValue	=	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1];

	ReadValue	&= ~CLKDIV_MASK;
	ReadValue	|= (Divisor-1) << CLKDIV_POS;

	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1], ReadValue);
}
Beispiel #13
0
CBOOL		NX_DISPTOP_CLKGEN_SetInputInv( U32 ModuleIndex, U32 Index, CBOOL InClkInv )
{
	const U32 INCLKINV_POS	=	4 + Index;
	const U32 INCLKINV_MASK	=	1UL << INCLKINV_POS;

	register U32 ReadValue;

	NX_ASSERT( (0==InClkInv) ||(1==InClkInv) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister )

	ReadValue	=	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB;

	ReadValue	&=	~INCLKINV_MASK;
	ReadValue	|=	InClkInv << INCLKINV_POS;

	//__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB	=	ReadValue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB, ReadValue);
	return CTRUE;
}
Beispiel #14
0
/**
 *	@brief		Clear pending state of all interrupts.
 *	@param[in]	ModuleIndex		an index of module.
 *	@return		None.
 *	@see		NX_TIMER_GetInterruptNumber,		NX_TIMER_SetInterruptEnable,
 *				NX_TIMER_GetInterruptEnable,		NX_TIMER_SetInterruptEnable32,
 *				NX_TIMER_GetInterruptEnable32,		NX_TIMER_GetInterruptPending,
 *				NX_TIMER_GetInterruptPending32,		NX_TIMER_ClearInterruptPending,
 *				NX_TIMER_ClearInterruptPending32,	NX_TIMER_SetInterruptEnableAll,
 *				NX_TIMER_GetInterruptEnableAll,		NX_TIMER_GetInterruptPendingAll,
 *													NX_TIMER_GetInterruptPendingNumber
 */
void	NX_TIMER_ClearInterruptPendingAll( U32 ModuleIndex )
{
	register struct NX_TIMER_RegisterSet* pRegister;

	const	 U32 INTPEND_POS = 5;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );
	NX_ASSERT( CTRUE == NX_TIMER_GetClockDivisorEnable(ModuleIndex) );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;

	regvalue  = pRegister->TMRCONTROL;
	regvalue |= 1UL << INTPEND_POS;

//	pRegister->TMRCONTROL = regvalue;
	WriteIODW(&pRegister->TMRCONTROL, regvalue);
}
Beispiel #15
0
/**
 *	@brief		Set a clock generator to be enabled or disabled.
 *	@param[in]	ModuleIndex		an index of module.
 *	@param[in]	Enable	\b Set as CTRUE to enable a clock generator. \n
 *						\b Set as CFALSE to disable a clock generator.
 *	@return		None.
 *	@see		NX_TIMER_SetClockPClkMode,			NX_TIMER_GetClockPClkMode,
 *													NX_TIMER_GetClockDivisorEnable,
 *				NX_TIMER_SetClockSource,			NX_TIMER_GetClockSource,
 *				NX_TIMER_SetClockDivisor,			NX_TIMER_GetClockDivisor
 */
void			NX_TIMER_SetClockDivisorEnable( U32 ModuleIndex, CBOOL Enable )
{
	const U32 CLKGENENB_POS	= 2;
	register struct NX_TIMER_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( (0==Enable) || (1==Enable) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue  = pRegister->TMRCLKENB;

	regvalue &= ~(1UL		<< CLKGENENB_POS);
	regvalue |=	(U32)Enable << CLKGENENB_POS;

//	pRegister->TMRCLKENB = regvalue;
	WriteIODW(&pRegister->TMRCLKENB, regvalue);
}
Beispiel #16
0
/**
 *	@brief		Set clock source of clock generator
 *	@param[in]	Index	Select clock generator( 0 : clock generator 0 );
 *	@param[in]	ClkSrc	Select clock source of clock generator.\n
 *						0:PLL0, 1:PLL1, 2:None, 3:XTI \n
 *	@remarks	PPM controller have one clock generator. so \e Index must set to 0.
 *	@return		None.
 *	@see		NX_PPM_SetClockPClkMode,		NX_PPM_GetClockPClkMode,
 *												NX_PPM_GetClockSource,
 *				NX_PPM_SetClockDivisor,			NX_PPM_GetClockDivisor,
 *				NX_PPM_SetClockDivisorEnable,	NX_PPM_GetClockDivisorEnable
 */
void NX_PPM_SetClockSource( U32 Index, U32 ClkSrc )
{
	const U32 CLKSRCSEL_POS		= 2;
	const U32 CLKSRCSEL_MASK	= 0x07 << CLKSRCSEL_POS;

	register U32 ReadValue;

	NX_ASSERT( 0 == Index );
	NX_ASSERT( 4 > ClkSrc );
	NX_ASSERT( CNULL != __g_pRegister );

	ReadValue = __g_pRegister->PPM_CLKGEN[Index];

	ReadValue &= ~CLKSRCSEL_MASK;
	ReadValue |= ClkSrc << CLKSRCSEL_POS;

//	__g_pRegister->PPM_CLKGEN[Index] = ReadValue;
	WriteIODW(&__g_pRegister->PPM_CLKGEN[Index], ReadValue);
}
Beispiel #17
0
/**
 *	@brief		Set clock divisor of specified clock generator.
 *	@param[in]	Index		Select clock generator( 0 : clock generator 0 );
 *	@param[in]	Divisor		Clock divisor ( 1 ~ 256 ).
 *	@return		None.
 *	@remarks	PPM controller have one clock generator. so \e Index must set to 0.
 *	@see		NX_PPM_SetClockPClkMode,		NX_PPM_GetClockPClkMode,
 *				NX_PPM_SetClockSource,			NX_PPM_GetClockSource,
 *												NX_PPM_GetClockDivisor,
 *				NX_PPM_SetClockDivisorEnable,	NX_PPM_GetClockDivisorEnable
 */
void NX_PPM_SetClockDivisor( U32 Index, U32 Divisor )
{
	const U32 CLKDIV_POS	=	5;
	const U32 CLKDIV_MASK	=	0xFF << CLKDIV_POS;

	register U32 ReadValue;

	NX_ASSERT( 0 == Index );
	NX_ASSERT( 1 <= Divisor && Divisor <= 256 );
	NX_ASSERT( CNULL != __g_pRegister );

	ReadValue	=	__g_pRegister->PPM_CLKGEN[Index];

	ReadValue	&= ~CLKDIV_MASK;
	ReadValue	|= (Divisor-1) << CLKDIV_POS;

//	__g_pRegister->PPM_CLKGEN[Index] = ReadValue;
	WriteIODW(&__g_pRegister->PPM_CLKGEN[Index], ReadValue);
}
Beispiel #18
0
/**
 *	@brief		Set the SYNC mode.
 *	@param[in]	syncmode	Specifies the SYNC mode which is one of @ref NX_MPEGTSIF_SYNCMODE enum.
 *	@return		None.
 *	@remarks	Bit Sync means that active sync period is a one bit time. \n
 *				Byte Sync means that active sync period is a one byte time.
 *	@see		NX_MPEGTSIF_SYNCMODE,
 *				NX_MPEGTSIF_SetClockPolarity,	NX_MPEGTSIF_GetClockPolarity,
 *				NX_MPEGTSIF_SetDataPolarity,	NX_MPEGTSIF_GetDataPolarity,
 *				NX_MPEGTSIF_SetSyncSource,		NX_MPEGTSIF_GetSyncSource,
 *												NX_MPEGTSIF_GetSyncMode,
 *				NX_MPEGTSIF_SetWordCount,		NX_MPEGTSIF_GetWordCount
 */
void	NX_MPEGTSIF_SetSyncMode( NX_MPEGTSIF_SYNCMODE syncmode )
{
	const U32 IRQPEND			= 1UL<<15;
	const U32 SYNCMODE_BITPOS	= 12;
	const U32 SYNCMODE_MASK		= 0x01 << SYNCMODE_BITPOS;

	register U32 regval;

	NX_ASSERT( (NX_MPEGTSIF_SYNCMODE_BIT==syncmode) || (NX_MPEGTSIF_SYNCMODE_BYTE==syncmode) );
	NX_ASSERT( CNULL != __g_pRegister );

	regval = __g_pRegister->CTRL & ~(IRQPEND | SYNCMODE_MASK);

	if( NX_MPEGTSIF_SYNCMODE_BYTE == syncmode )
		regval |= SYNCMODE_MASK;

//	__g_pRegister->CTRL = regval;
	WriteIODW(&__g_pRegister->CTRL, regval);
}
Beispiel #19
0
/**
 *	@brief		Set clock generator's operation
 *	@param[in]	ModuleIndex		An index of module ( 0 ~ 1 ).
 *	@param[in]	Enable	\b CTRUE	indicates that Enable of clock generator. \n
 *						\b CFALSE	indicates that Disable of clock generator.
 *	@return		None.
 *	@see		NX_DISPTOP_CLKGEN_SetClockPClkMode,		NX_DISPTOP_CLKGEN_GetClockPClkMode,
 *				NX_DISPTOP_CLKGEN_SetClockSource,			NX_DISPTOP_CLKGEN_GetClockSource,
 *				NX_DISPTOP_CLKGEN_SetClockDivisor,		NX_DISPTOP_CLKGEN_GetClockDivisor,
 *				NX_DISPTOP_CLKGEN_GetClockDivisorEnable
 */
void			NX_DISPTOP_CLKGEN_SetClockDivisorEnable( U32 ModuleIndex, CBOOL Enable )
{
	const U32	CLKGENENB_POS	=	2;
	const U32	CLKGENENB_MASK	=	1UL << CLKGENENB_POS;

	register U32 ReadValue;

	NX_ASSERT( NUMBER_OF_DISPTOP_CLKGEN_MODULE > ModuleIndex );
	NX_ASSERT( (0==Enable) ||(1==Enable) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister );

	ReadValue	=	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB;
	//ReadValue	=	NX_DISPTOP_CLKGEN_GetClockDivisorEnable(ModuleIndex);
	ReadValue	&=	~CLKGENENB_MASK;
	ReadValue	|= (U32)Enable << CLKGENENB_POS;

//	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB	=	ReadValue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB, ReadValue);
}
Beispiel #20
0
/**
 *	@brief		Set a clock generator to be enabled or disabled.
 *	@param[in]	Enable	\b CTRUE	indicate that Clock generator enable. \n
 *						\b CFALSE	indicate that Clock generator disable.
 *	@return		None.
 *	@see		NX_PWM_SetClockPClkMode,		NX_PWM_GetClockPClkMode,
 *												NX_PWM_GetClockDivisorEnable,
 *				NX_PWM_SetClockSource,			NX_PWM_GetClockSource,
 *				NX_PWM_SetClockDivisor,			NX_PWM_GetClockDivisor
 */
void			NX_PWM_SetClockDivisorEnable( CBOOL Enable )
{
	const U32 CLKGENENB_POS	= 2;
	register struct NX_PWM_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( (0==Enable) || (1==Enable) );
	NX_ASSERT( CNULL != __g_pRegister );

	pRegister = __g_pRegister;

	regvalue = pRegister->PWM_CLKENB;

	regvalue &= ~(1UL		<< CLKGENENB_POS);
	regvalue |=	(U32)Enable << CLKGENENB_POS;

//	pRegister->PWM_CLKENB = regvalue;
	WriteIODW(&pRegister->PWM_CLKENB, regvalue);
}
Beispiel #21
0
/**
 *	@brief		Set clock source of clock generator
 *	@param[in]	ModuleIndex		An index of module ( 0 ~ 1 ).
 *	@param[in]	Index	Select clock generator( 0 : clock generator 0 );
 *	@param[in]	ClkSrc	Select clock source of clock generator ( 0: PLL0, 1:PLL1 ).
 *	@remarks	CLKGEN have one clock generator. so \e Index must set to 0.
 *	@return		None.
 *	@see		NX_DISPTOP_CLKGEN_SetClockPClkMode,		NX_DISPTOP_CLKGEN_GetClockPClkMode,
 *				NX_DISPTOP_CLKGEN_GetClockSource,
 *				NX_DISPTOP_CLKGEN_SetClockDivisor,		NX_DISPTOP_CLKGEN_GetClockDivisor,
 *				NX_DISPTOP_CLKGEN_SetClockDivisorEnable,	NX_DISPTOP_CLKGEN_GetClockDivisorEnable
 */
void	NX_DISPTOP_CLKGEN_SetClockSource( U32 ModuleIndex, U32 Index, U32 ClkSrc )
{
	const U32 CLKSRCSEL_POS		= 2;
	const U32 CLKSRCSEL_MASK	= 0x07 << CLKSRCSEL_POS;

	register U32 ReadValue;

	NX_ASSERT( NUMBER_OF_DISPTOP_CLKGEN_MODULE > ModuleIndex );
	//NX_ASSERT( 0 == Index );
	//NX_ASSERT( 2 > ClkSrc );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister );

	ReadValue = __g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1];

	ReadValue &= ~CLKSRCSEL_MASK;
	ReadValue |= ClkSrc << CLKSRCSEL_POS;

//	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1] = ReadValue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1], ReadValue);
}
Beispiel #22
0
/**
 *	@brief		Set 1bit value
 *	@param[in]	Value	This Value is changed when SetBit() executed.
 *	@param[in]	Bit		Bit number
 *	@param[in]	Enable	\b CTRUE( Set ).\n
 *						\b CFALSE( Clear )
 *	@return		None.
 *	@see		NX_GPIO_GetBit
 */
__inline void NX_GPIO_SetBit
(
	volatile U32* Value,
	U32 Bit,
	CBOOL Enable
)
{
	register U32 newvalue;

	NX_ASSERT( CNULL != Value );
	NX_ASSERT( NX_GPIO_MAX_BIT > Bit );

	newvalue = *Value;

	newvalue &=		~(1UL		<< Bit );
	newvalue |=		(U32)Enable << Bit ;

//	*Value = newvalue;
	WriteIODW(Value, newvalue);
}
Beispiel #23
0
/**
 *	@brief		Stop the timer.
 *	@param[in]	ModuleIndex		an index of module.
 *	@return		None.
 *	@see		NX_TIMER_Run,
 *				NX_TIMER_SetWatchDogEnable,		NX_TIMER_SetTClkDivider,
 *				NX_TIMER_SetMatchCounter,		NX_TIMER_GetMatchCounter,
 *				NX_TIMER_SetTimerCounter,		NX_TIMER_GetTimerCounter
 */
void NX_TIMER_Stop( U32 ModuleIndex )
{
	const U32 INTPEND	= (1UL<<5);
	const U32 RUN		= (1UL<<3);

	register struct NX_TIMER_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );
	NX_ASSERT( CTRUE == NX_TIMER_GetClockDivisorEnable(ModuleIndex) );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue  = pRegister->TMRCONTROL;

	regvalue &= ~(INTPEND | RUN);

//	pRegister->TMRCONTROL = regvalue;
	WriteIODW(&pRegister->TMRCONTROL, regvalue);
}
Beispiel #24
0
/**
 *	@brief		Set a clock source for clock generator.
 *	@param[in]	ModuleIndex		an index of module.
 *	@param[in]	Index			an index of clock generator
 *	@param[in]	ClkSrc			a source clock for specified clock generator, 0 for PLL0 or 1 for PLL1.
 *	@return		None.
 *	@remarks	Since the timer module has only one clock generator, you have to only set @a Index as 0.
 *	@see		NX_TIMER_SetClockPClkMode,			NX_TIMER_GetClockPClkMode,
 *				NX_TIMER_SetClockDivisorEnable,		NX_TIMER_GetClockDivisorEnable,
 *													NX_TIMER_GetClockSource,
 *				NX_TIMER_SetClockDivisor,			NX_TIMER_GetClockDivisor
 */
void			NX_TIMER_SetClockSource( U32 ModuleIndex, U32 Index, U32 ClkSrc )
{
	const U32	CLKSRCSEL_POS	= 2;
	const U32	CLKSRCSEL_MASK	= 0x7;
	register struct NX_TIMER_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( 0 == Index );
	NX_ASSERT( 1 >= ClkSrc );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue  = pRegister->TMRCLKGEN;

	regvalue &= ~(CLKSRCSEL_MASK << CLKSRCSEL_POS);
	regvalue |= ( ClkSrc << CLKSRCSEL_POS );

//	pRegister->TMRCLKGEN = regvalue;
	WriteIODW(&pRegister->TMRCLKGEN, regvalue);
}
Beispiel #25
0
/**
 *	@brief		Set a specified interrupt to be enable or disable.
 *	@param[in]	ModuleIndex		an index of module.
 *	@param[in]	EnableFlag	Specify interrupt bit for enable of disable. Each bit's meaning is like below	\n
 *							- EnableFlag[0] : Set TIMER Counter	interrupt enable or disable. \n
 *	@return		None.
 *	@see		NX_TIMER_GetInterruptNumber,		NX_TIMER_SetInterruptEnable,
 *				NX_TIMER_GetInterruptEnable,
 *				NX_TIMER_GetInterruptEnable32,		NX_TIMER_GetInterruptPending,
 *				NX_TIMER_GetInterruptPending32,		NX_TIMER_ClearInterruptPending,
 *				NX_TIMER_ClearInterruptPending32,	NX_TIMER_SetInterruptEnableAll,
 *				NX_TIMER_GetInterruptEnableAll,		NX_TIMER_GetInterruptPendingAll,
 *				NX_TIMER_ClearInterruptPendingAll,	NX_TIMER_GetInterruptPendingNumber
 */
void	NX_TIMER_SetInterruptEnable32( U32 ModuleIndex, U32 EnableFlag )
{
	register struct NX_TIMER_RegisterSet* pRegister;
	register U32	regvalue;

	const	U32 INTPEND_POS = 5;
	const	U32 INTENB_POS	= 4;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );
	NX_ASSERT( CTRUE == NX_TIMER_GetClockDivisorEnable(ModuleIndex) );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue  = pRegister->TMRCONTROL;

	regvalue &=	~(( 1UL << INTPEND_POS ) | ( 1UL << INTENB_POS ) );
	regvalue |= (U32)((EnableFlag&0x01) << INTENB_POS);

//	pRegister->TMRCONTROL = regvalue;
	WriteIODW(&pRegister->TMRCONTROL, regvalue);
}
Beispiel #26
0
//--------
// Syncgen 용 Out Clock 1/2 ns delay Enable
// SRGB888 용 !
//@added choiyk 2012-10-31 오후 3:41:47
//---------
void NX_DISPTOP_CLKGEN_SetClockOutSelect( U32 ModuleIndex, U32 Index, CBOOL bBypass )
{
//	const U32 OUTCLKSEL_POS		=	0;
//	const U32 OUTCLKSEL_MASK	=	1UL << OUTCLKSEL_POS;

//	register struct NX_DPC_RegisterSet*	pRegister;
	register U32 	ReadValue;


	NX_ASSERT( Index == 1 );
	NX_ASSERT( (0==bBypass) ||(1==bBypass) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].__g_pRegister )

	ReadValue	=	__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1];

	ReadValue	=	ReadValue & (~0x01);
	ReadValue	=   ReadValue | bBypass;

	//__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKENB	=	ReadValue;
	WriteIODW(&__g_ModuleVariables[ModuleIndex].__g_pRegister->CLKGEN[Index<<1], ReadValue);
}
Beispiel #27
0
/**
 *	@brief		Set a clock divider for clock generator.
 *	@param[in]	Index		Select clock generator( 0 ).
 *	@param[in]	Divisor		Divide value of clock generator( 1 ~ 256 ).
 *	@return		None.
 *	@remarks	PWM module have only ONE clock generator. so Index is always setting to 0.
 *	@see		NX_PWM_SetClockPClkMode,		NX_PWM_GetClockPClkMode,
 *				NX_PWM_SetClockDivisorEnable,	NX_PWM_GetClockDivisorEnable,
 *				NX_PWM_SetClockSource,			NX_PWM_GetClockSource,
 *												NX_PWM_GetClockDivisor
 */
void			NX_PWM_SetClockDivisor( U32 Index, U32 Divisor )
{
	const U32 CLKDIV_POS	= 5;
	const U32 CLKDIV_MASK	= 0xFF;

	register struct NX_PWM_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( 0 == Index );
	NX_ASSERT( (1 <= Divisor) && ( 256 >= Divisor ) );
	NX_ASSERT( CNULL != __g_pRegister );

	pRegister = __g_pRegister;
	regvalue = pRegister->PWM_CLKGEN;

	regvalue &= ~(CLKDIV_MASK << CLKDIV_POS);
	regvalue |= (Divisor-1) << CLKDIV_POS;

//	pRegister->PWM_CLKGEN = regvalue;
	WriteIODW(&pRegister->PWM_CLKGEN, regvalue);
}
Beispiel #28
0
/**
 *	@brief		Set a clock source for clock generator.
 *	@param[in]	Index		Select clock generator
 *	@param[in]	ClkSrc		Select clock source ( 0 (PLL0), 1 (PLL1) )
 *	@return		None.
 *	@remarks	PWM module have only ONE clock generator. so Index is always setting to 0.
 *	@see		NX_PWM_SetClockPClkMode,		NX_PWM_GetClockPClkMode,
 *				NX_PWM_SetClockDivisorEnable,	NX_PWM_GetClockDivisorEnable,
 *												NX_PWM_GetClockSource,
 *				NX_PWM_SetClockDivisor,			NX_PWM_GetClockDivisor
 */
void			NX_PWM_SetClockSource( U32 Index, U32 ClkSrc )
{
	const U32	CLKSRCSEL_POS	= 2;
	const U32	CLKSRCSEL_MASK	= 0x7;
	register struct NX_PWM_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( 0 == Index );
	NX_ASSERT( 1 >= ClkSrc );
	NX_ASSERT( CNULL != __g_pRegister );

	pRegister = __g_pRegister;

	regvalue = pRegister->PWM_CLKGEN;

	regvalue &= ~(CLKSRCSEL_MASK << CLKSRCSEL_POS);
	regvalue |= ( ClkSrc << CLKSRCSEL_POS );

//	pRegister->PWM_CLKGEN = regvalue;
	WriteIODW(&pRegister->PWM_CLKGEN, regvalue);
}
Beispiel #29
0
/**
 *	@brief		Set a internal clock divider for a timer clock.
 *	@param[in]	ModuleIndex		an index of module.
 *	@param[in]	Clock			a TCLK to be used.
 *	@see		NX_TIMER_Run,					NX_TIMER_Stop,
 *				NX_TIMER_SetWatchDogEnable,
 *				NX_TIMER_SetMatchCounter,		NX_TIMER_GetMatchCounter,
 *				NX_TIMER_SetTimerCounter,		NX_TIMER_GetTimerCounter
 */
void NX_TIMER_SetTClkDivider( U32 ModuleIndex, NX_TIMER_CLOCK Clock )
{
	const U32 INTPEND	= (1UL<<5);
	const U32 SELTCLK	= (3UL<<0);

	register struct NX_TIMER_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( 4 > Clock );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );
	NX_ASSERT( CTRUE == NX_TIMER_GetClockDivisorEnable(ModuleIndex) );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue = pRegister->TMRCONTROL;

	regvalue &= ~(INTPEND | SELTCLK);
	regvalue |=	(U32)Clock;

//	pRegister->TMRCONTROL = regvalue;
	WriteIODW(&pRegister->TMRCONTROL, regvalue);
}
Beispiel #30
0
/**
 *	@brief		Set a clock divider for clock generator.
 *	@param[in]	ModuleIndex		an index of module.
 *	@param[in]	Index			an index of clock generator
 *	@param[in]	Divisor		a divide value of clock generator from 1 to 256.
 *	@return		None.
 *	@remarks	Since the timer module has only one clock generator, you have to only set @a Index as 0.
 *	@see		NX_TIMER_SetClockPClkMode,			NX_TIMER_GetClockPClkMode,
 *				NX_TIMER_SetClockDivisorEnable,		NX_TIMER_GetClockDivisorEnable,
 *				NX_TIMER_SetClockSource,			NX_TIMER_GetClockSource,
 *													NX_TIMER_GetClockDivisor
 */
void			NX_TIMER_SetClockDivisor( U32 ModuleIndex, U32 Index, U32 Divisor )
{
	const U32 CLKDIV_POS	= 5;
	const U32 CLKDIV_MASK	= 0xFF;

	register struct NX_TIMER_RegisterSet* pRegister;
	register U32 regvalue;

	NX_ASSERT( NUMBER_OF_TIMER_MODULE > ModuleIndex );
	NX_ASSERT( 0 == Index );
	NX_ASSERT( (1 <= Divisor) && ( 256 >= Divisor ) );
	NX_ASSERT( CNULL != __g_ModuleVariables[ModuleIndex].pRegister );

	pRegister = __g_ModuleVariables[ModuleIndex].pRegister;
	regvalue  = pRegister->TMRCLKGEN;

	regvalue &= ~(CLKDIV_MASK << CLKDIV_POS);
	regvalue |= (Divisor-1) << CLKDIV_POS;

//	pRegister->TMRCLKGEN = regvalue;
	WriteIODW(&pRegister->TMRCLKGEN, regvalue);
}