コード例 #1
0
// These functions may be called at system bootup time,
// so we need to keep the code and data in primary MAUI
void L1D_HW_TDMA_AUX_TIME_SETUP(kal_uint16 event0, kal_uint16 event1)
{
   kal_uint16 d16 = (kal_uint16)HW_READ(TDMA_AUXEVENA);
   HW_WRITE(TDMA_AUXEV0, event0);
   HW_WRITE(TDMA_AUXEV1, event1);
   HW_WRITE(TDMA_AUXEVENA, (d16|0x3));
}
コード例 #2
0
static void FH_set_fhset( unsigned short win_idx, sFHset* _fhset )
{
   /*MNPLL*/
   HW_WRITE( MNPLL_FHSET(win_idx,0), (  _fhset->fh_set_l      & 0xFFFF) );
   HW_WRITE( MNPLL_FHSET(win_idx,1), ( (_fhset->fh_set_l>>16) & 0xFFFF) );
   HW_WRITE( MNPLL_FHSET(win_idx,2), (  _fhset->fh_set_h      & 0xFFFF) );
   HW_WRITE( MNPLL_FHSET(win_idx,3), ( (_fhset->fh_set_h>>16) & 0xFFFF) );
}
コード例 #3
0
/*************************************************************************
 * FUNCTION
 *    HW_TDMA_Enable_CTIRQ1
 *
 * DESCRIPTION
 *    This function enable TDMA module CTIRQ1.
 *
 * PARAMETERS
 *
 * RETURNS
 *    None
 *
 * GLOBALS AFFECTED
 *
 *************************************************************************/
void HW_TDMA_Enable_CTIRQ1(void)
{
   kal_uint32 dX;

   HW_TDMA_Start();
   HW_WRITE(CTIRQ1, MD_DRV_TQ_CTIRQ1);
   HW_WRITE(TQ_WRAP, MD_DRV_TQ_WRAP_COUNT-1);
   HW_WRITE(TQ_EVENT_VALID, MD_DRV_TQ_VALIDATE_COUNT);
   dX  = HW_READ(EVENT_ENA(0));
   dX |= 0x2;
   HW_WRITE(EVENT_ENA(0), dX);
}
コード例 #4
0
void HW_wait_32k_start(void)
{
#if MD_DRV_IS_CENTRALIZED_SMM_CHIP

   #ifdef __UE_SIMULATOR__
#undef   FRC_CMD_MAGIC_VALUE
#define  FRC_CMD_MAGIC_VALUE            0x62760000
   #endif

   /*CSMM use 26M to calibrate 32K at TOPSM HW module*/
   kal_uint32 result;
   int count = 0;
   int waiting_32k_count = 80000;
   kal_uint32 tmp_T0 = 0, tmp_T1 = 0, tmp_D0 = 0, tmp_D1 = 0;

   /* Enable FRC for FM. */
   HW_WRITE( SM_FRC_CON, (FRC_CMD_MAGIC_VALUE+0x00000001) );
   HW_WRITE( SM_FM_CAL, 2 ); /*calibrate 2T 32K, ideal got 1586.9T 26M*/

   while(count < waiting_32k_count)
   {
      /* Enable FM and no need to Unmask FM INT. */
      HW_WRITE(SM_FM_CON, 0x11);

      /* Polling until FM_EN bit is cleared. */
      while((HW_READ(SM_FM_CON) & 0x1)) ;

      tmp_T0 = (HW_READ(SM_FM_T0)) & 0xFFFFFF;
      tmp_D0 = (HW_READ(SM_FM_T0)) >> 24;
      tmp_T1 = (HW_READ(SM_FM_T1)) & 0xFFFFFF;
      tmp_D1 = (HW_READ(SM_FM_T1)) >> 24;
      if( tmp_T1 > tmp_T0 )
      {
         result = (tmp_T1*26+tmp_D1) - (tmp_T0*26+tmp_D0);
      }
      else /* 1MHz FRC wrap case: */
      {
         result = ((tmp_T1+0x1000000)*26+tmp_D1) - (tmp_T0*26+tmp_D0);
      }
      if( FM_RESULT_LOWER_BOUND < result && result < FM_RESULT_UPPER_BOUND )
      {
         /* Clear INT of FM. Need to set bit[4] to mask it. */
         HW_WRITE(SM_FM_CON, 0x110);
         break;
      }
      count++;
   }
#else
   #error "Please implement HW_wait_32k_start() for non-centralized-sleep-mode chip"
#endif
}
コード例 #5
0
static void FH_init_FHtable(void)
{
   int i;
   unsigned int d16;

   /*Indicate write FH table at addr 0*/
   HW_WRITE( TDMA_FHCON(2), TDMA_FHCON2_DEFAULT );

   /*Write FH table*/
   for( i = 0 ; i < FH_table_UDVT_SIZE; i++ )
   {  d16 = TDMA_FHCON3_DEFAULT_INT | FH_table_UDVT[i];
      HW_WRITE( TDMA_FHCON(3), d16 );
      MD_DRV_WAIT_TIME_QB(1);
   }
}
コード例 #6
0
ファイル: console.c プロジェクト: mercurycc/cs452
int console_init( Console* cons )
{
	ptr base = 0;
	int status = 0;
	uint channel = 0;
	uint control = 0;
	
	base = console_getbase( cons );

	channel = cons->channel == CONSOLE_1 ? COM1 : COM2;
	/* Reset port first */
	cons->write_bytes = 0;
	cons->read_bytes = 0;
	status = bwsetspeed( channel, cons->speed );

	control = HW_READ( base, UART_LCRH_OFFSET );
	
	if( cons->fifo ){
		control |= FEN_MASK;
	} else {
		control &= ( ~FEN_MASK );
	}
	if( cons->dbl_stop ){
		control |= STP2_MASK;
	}
	
	HW_WRITE( base, UART_LCRH_OFFSET, control );

	ASSERT( status == ERR_NONE );

	/* Leave no garbage */
	console_drain( cons );
	
	return ERR_NONE;
}
コード例 #7
0
static void ReSet_MPLLFH_FHSTR( void )
{
   int i;

   for( i = 0; i < 6; i++ )
   {  HW_WRITE(TDMA_FHSTR(i), MD_DRV_TQ_MAXIMUM);  }

}
コード例 #8
0
ファイル: clock.c プロジェクト: mercurycc/cs452
static inline int clk_enable_direct( uint clk, uint ctrl )
{
	ptr base = clk_getbase( clk );

	HW_WRITE( base, TIMER_CTRL_OFFSET, ctrl );

	return ERR_NONE;
}
コード例 #9
0
ファイル: clock.c プロジェクト: mercurycc/cs452
int clk_clear( uint clk )
{
	ptr base = clk_getbase( clk );

	HW_WRITE( base, TIMER_CLR_OFFSET, 1 );

	return ERR_NONE;
}
コード例 #10
0
static void MD_DRV_L1D_DisableAllIRQ( void )
{
   HW_WRITE( EVENT_ENA(0), (HW_READ(EVENT_ENA(0))&0x0000)|MD_DRV_EVTENA0_SLOW_EN_SEL );
   HW_WRITE( EVENT_ENA(1), (HW_READ(EVENT_ENA(1))&0x0080) );
   HW_WRITE( EVENT_ENA(2), 0x0000 );
   HW_WRITE( EVENT_ENA(3), 0x0000 );
   HW_WRITE( EVENT_ENA(4), 0x0000 );
   HW_WRITE( EVENT_ENA(5), 0x0000 );
   HW_WRITE( EVENT_ENA(6), 0x0000 );
   #if MD_DRV_IS_TXPC_CL_AUXADC_SUPPORT
   HW_WRITE( EVENT_ENA(7), (HW_READ(EVENT_ENA(7))&0x0003) );
   #endif
   #if MD_DRV_IS_CHIP_MT6290 || MD_DRV_IS_CHIP_MT6595 || MD_DRV_IS_CHIP_MT6752_MD1 || MD_DRV_IS_CHIP_MT6752_MD2 || MD_DRV_IS_CHIP_MT6735
   HW_WRITE( EVENT_ENA(8), 0x0000 );
   HW_WRITE( EVENT_ENA(9), 0x0000 );
   #endif
}
コード例 #11
0
void Frequency_hopping_enable( void )
{
#if MD_DRV_IS_UDVT_FH_SUPPORT
   int d16;
   sFHset FHset = { (1 << FREE_RUN_BASE), 0 }; // -1%

   /*Enable DDS. Let RG_MDDS_EN[0] = 1*/
   /*It is done in INT_SetPLL()*/

   /*Power on TDMA*/
   HW_TDMA_Start();

   /*Init TQ_WRAP and Event validate*/
   HW_WRITE( TQ_WRAP, MD_DRV_TQ_WRAP_COUNT-1 );
   HW_WRITE( TQ_EVENT_VALID, MD_DRV_TQ_VALIDATE_COUNT );

   /*Low index of FH_table_UDVT first*/
   d16 = HW_READ(TDMA_FHCON(0));
   d16 &= TDMA_FHCON0_MASK;
   HW_WRITE( TDMA_FHCON(0), d16 );

   /*MNPLL free run range*/
   L1D_SET_MNPLL_FREE_RUN_RANGE();

   /*EFPLL free run range*/
   L1D_SET_EFPLL_FREE_RUN_RANGE();

   /*MNPLL FH type*/
   L1D_SET_MNPLL_FH_TYPE();

   /*EFPLL FH type*/
   L1D_SET_EFPLL_FH_TYPE();

   /*Reset FH TDMA timer*/
   ReSet_MPLLFH_FHSTR();

   /*init frequency hopping table*/
   FH_init_FHtable();

   FH_set_fhset( 0, &FHset );
   HW_WRITE( TQ_BIAS_CONT, 0 );
   HW_WRITE( TDMA_FHSTR(0), 0 );
#endif
}
コード例 #12
0
/*************************************************************************
* FUNCTION
*  USC_Get_TimeStamp
*
* DESCRIPTION
*  This function calculate the frame number.
*
* PARAMETERS
*  none
*
* RETURNS
*  Frame number since system power up
*
*************************************************************************/
kal_uint32 DEVDRV_LS_INTSRAM_ROCODE USC_Get_TimeStamp( void )
{
#if defined(__ALIGN_2G_CLOCK__)

    kal_uint32 uscnti,curFrame,_savedMask;

    _savedMask = SaveAndSetIRQMask();

    uscnti= ust_get_current_time();
    if (uscnti >= Pre_USCNTI) {
        curFrame = USCNT_TO_FRAME( uscnti - Pre_USCNTI ); // dur/3250/(120/26)
    } else {
        curFrame = USCNT_TO_FRAME((USCNT_WRAP - Pre_USCNTI) + uscnti);
    }
    FrameCount += curFrame;

    Pre_USCNTI += FRAME_TO_USCNT(curFrame);

    if( Pre_USCNTI > USCNT_WRAP )
    {
        Pre_USCNTI -= USCNT_WRAP;
    }

    RestoreIRQMask(_savedMask);

    return FrameCount;

#else

    kal_uint32 uscnti,curFrame,_savedMask;

    _savedMask = SaveAndSetIRQMask();

#if defined(__HW_OSTICK_CNT__)
    HW_WRITE(OST_CMD, CMD_MAGIC_VALUE | 0x02);
    curFrame = HW_READ(OST_TIMER_CNT_R);
#else
    uscnti= ust_get_current_time();

    if (uscnti >= Pre_USCNTI) {
        Total_USCNTI += (uscnti - Pre_USCNTI);
    } else {
        Total_USCNTI += ((USCNT_WRAP - Pre_USCNTI) + uscnti);
    }

    Pre_USCNTI = uscnti;

    curFrame = USCNT_TO_FRAME(Total_USCNTI);
#endif

    RestoreIRQMask(_savedMask);


    return curFrame;
#endif
}
コード例 #13
0
void SetupMPLLFH( void )
{
   ReSet_MPLLFH_FHSTR();

   if( MPLL_FH_idx%FH_table_UDVT_SIZE < 32)
   {  l1dfh_udvt.FHset_Modem.fh_set_l = 1 << (MPLL_FH_idx%FH_table_UDVT_SIZE);
      l1dfh_udvt.FHset_Modem.fh_set_h = 0;
   }
   else
   {  l1dfh_udvt.FHset_Modem.fh_set_l = 0;
      l1dfh_udvt.FHset_Modem.fh_set_h = 1 << ((MPLL_FH_idx%FH_table_UDVT_SIZE)-32);
   }
   MPLL_FH_idx++;

   FH_set_fhset( 0 , &l1dfh_udvt.FHset_Modem );

   HW_WRITE( TQ_BIAS_CONT, 0 );
   HW_WRITE( TDMA_FHSTR(0), 256 );
}
コード例 #14
0
ファイル: clock.c プロジェクト: mercurycc/cs452
int clk_disable( uint clk )
{
	ptr base = clk_getbase( clk );

	HW_WRITE( base, TIMER_CTRL_OFFSET, 0 );

	clkLastVal[ clk ] = 0;

	return ERR_NONE;
}
コード例 #15
0
/*************************************************************************
* FUNCTION
*  USC_Stop
*
* DESCRIPTION
*  This function stops the uscounter.
*
* PARAMETERS
*  none
*
* RETURNS
*  none
*
*************************************************************************/
void USC_Stop()
{
#ifdef ESIM_BUILD_CONFIG
    HW_WRITE(USCNT_CON, 1);
#else
    kal_uint32 SHOULD_NOT_STOP_US_COUNTER = 0;
    ASSERT(SHOULD_NOT_STOP_US_COUNTER);
    //DRV_WriteReg32(BASE_ADDR_MDTOPSM+0x80, 1);
#endif
}
コード例 #16
0
ファイル: uVtc.c プロジェクト: Nianze/TaikoGestureMaster
void uVtc_Disable(void)
{
	uio_handle Vtc_handle;

	assert(gVtcInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gVtcInfo, &Vtc_handle);
	assert(Vtc_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_CR , 0x0);

	uio_release_handle(&gVtcInfo,&Vtc_handle);
}
コード例 #17
0
ファイル: uTpg.c プロジェクト: Nianze/TaikoGestureMaster
void uTpg_Disable(void)
{
	uio_handle tpg_handle;

	assert(gTpgInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gTpgInfo, &tpg_handle);
	assert(tpg_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_CONTROL, TPG_RST_RESET);

	uio_release_handle(&gTpgInfo,&tpg_handle);
}
コード例 #18
0
ファイル: uVtc.c プロジェクト: Nianze/TaikoGestureMaster
void uVtc_Enable(void)
{
	uio_handle Vtc_handle;

	assert(gVtcInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gVtcInfo, &Vtc_handle);
	assert(Vtc_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_CR , 0x3F7FF0F); // Control register, has to be written at last.

	uio_release_handle(&gVtcInfo,&Vtc_handle);

}
コード例 #19
0
ファイル: uTpg.c プロジェクト: Nianze/TaikoGestureMaster
void uTpg_Enable(void)
{
	uio_handle tpg_handle;

	assert(gTpgInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gTpgInfo, &tpg_handle);
	assert(tpg_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_CONTROL, (TPG_CTL_EN_MASK | TPG_CTL_RUE_MASK));

	uio_release_handle(&gTpgInfo,&tpg_handle);

}
コード例 #20
0
ファイル: uVtc.c プロジェクト: Nianze/TaikoGestureMaster
void uVtc_Configure(VtcConfig *config)
{
	uio_handle Vtc_handle;
	//assert(config != NULL);
	assert(gVtcInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gVtcInfo, &Vtc_handle);
	assert(Vtc_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_ACT_SIZE, (config->vActive << SHIFT_16) | config->hActive);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_ENCODE  , 0x00000002);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_POL     , 0x0000003F);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_HSIZE   , config->hTotal);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_VSIZE   , config->vTotal);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_HSYNC   , (config->hSync_end << SHIFT_16) | config->hSync_start);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_VBLANKH  , (config->vBlankh_end << SHIFT_16) | config->vBlankh_start);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_VSYNC   , (config->vSync_end << SHIFT_16) | config->vSync_start);
	HW_WRITE(Vtc_handle.Control_bus_BaseAddress, VTC_VSYNCH   , (config->vSyncH_end << SHIFT_16) | config->vSyncH_start);

	uio_release_handle(&gVtcInfo,&Vtc_handle);

}
コード例 #21
0
ファイル: clock.c プロジェクト: mercurycc/cs452
int clk_reset( uint clk, uint initial )
{
	ptr base = clk_getbase( clk );
	uint ctrlVal = 0;
	int status;

	ctrlVal = HW_READ( base, TIMER_CTRL_OFFSET );

	status = clk_disable( clk );
	ASSERT( status == ERR_NONE );

	HW_WRITE( base, TIMER_LDR_OFFSET, initial );
	
	status = clk_enable_direct( clk, ctrlVal );
	ASSERT( status == ERR_NONE );

	return ERR_NONE;
}
コード例 #22
0
ファイル: console.c プロジェクト: mercurycc/cs452
/* Send one byte through the UART port.
   Set block to 1 to busy wait until ready bit is set.
*/
static inline int console_transmit( Console* cons, uchar data, uint blocking )
{
	ptr base = console_getbase( cons );

	do {
		if( console_ready_write( cons ) ){
			HW_WRITE( base, UART_DATA_OFFSET, data );
			cons->write_bytes += 1;
			break;
		} else if( blocking ){
			continue;
		} else {
			return ERR_CONSOLE_NOT_READY;
		}
	} while( 1 );

	return ERR_NONE;
}
コード例 #23
0
ファイル: uTpg.c プロジェクト: Nianze/TaikoGestureMaster
void uTpg_Configure(TpgConfig *config)
{
	uio_handle tpg_handle;
	//assert(config != NULL);
	assert(gTpgInfo.isInitialized == XIL_COMPONENT_IS_READY);

	uio_get_Handler(&gTpgInfo, &tpg_handle);
	assert(tpg_handle.IsReady == XIL_COMPONENT_IS_READY);

	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_PATTERN_CONTROL, config->pattern);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_MOTION_SPEED, config->motion_param);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_ACTIVE_SIZE, config->frm_height << SHIFT_16 | config->frm_width);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_ZPLATE_HOR_CONTROL, config->h_zplate);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_ZPLATE_VER_CONTROL, config->v_zplate);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_BOX_SIZE, config->box_size);
	HW_WRITE(tpg_handle.Control_bus_BaseAddress, TPG_BOX_COLOR, config->box_color);

	uio_release_handle(&gTpgInfo,&tpg_handle);

}
コード例 #24
0
ファイル: clock.c プロジェクト: mercurycc/cs452
int clk_enable( uint clk, uint mode, uint clksrc, uint initial )
{
	ptr base = clk_getbase( clk );
	uint control = 0;

	ASSERT( mode < CLK_MODE_COUNT &&
		clksrc < CLK_SRC_COUNT );

	base = clk_getbase( clk );
	control = TIMER_ENABLE_MASK;

	switch( mode ){
	case CLK_MODE_FREE_RUN:
		// Default
		break;
	case CLK_MODE_INTERRUPT:
		control |= TIMER_MODE_MASK;
		break;
	}

	switch( clksrc ){
	case CLK_SRC_2KHZ:
		// Default
		break;
	case CLK_SRC_508KHZ:
		control |= TIMER_CLKSEL_MASK;
		break;
	}
	
	HW_WRITE( base, TIMER_LDR_OFFSET, initial );

	/* Initialize clock book keeping */
	clkLastVal[ clk ] = initial;

	clk_enable_direct( clk, control );
	
	return ERR_NONE;
}
コード例 #25
0
/*************************************************************************
* FUNCTION
*  USC_Start
*
* DESCRIPTION
*  This function starts the uscounter.
*
* PARAMETERS
*  none
*
* RETURNS
*  none
*
*************************************************************************/
void USC_Start()
{

#ifdef ESIM_BUILD_CONFIG
    HW_WRITE(USCNT_CON, 1);
#elif !defined(__CENTRALIZED_SLEEP_MANAGER__)
#define FRC_CON                  (TOPSM_base+0x80)

#if defined(MT6290)
#define ALC_CON                  (0x90000000UL)
    DRV_Reg32(FRC_CON) = 0x72080001;
    DRV_Reg32(ALC_CON) = 0x00000001;
#elif defined(MT6595)||(defined(MT6752)&&defined(__MD1__))||defined(MT6735)
#define ALC_CON                  ((volatile kal_uint32*)BASE_ADDR_ALC)
    PDN_CLR(PDN_TOPSM);
    DRV_Reg32(FRC_CON) = 0x11530001;
    DRV_Reg32(ALC_CON) = 0x00000001;
#endif /* MTxxxx */

#else
    MD_TOPSM_EnableFRC();
#endif
}
コード例 #26
0
void L1D_Xmode_Latch(void)
{
   unsigned short d16;
   unsigned short ctrl       = 0x1C3F;                               // SCTRL_IMOD(0,29);
   unsigned long  data       = 0x0FBDD4D0;                           // CW251[D19]:DCXO_XMODE_LATCH = 0x1
   volatile long  addr;
   unsigned long  BSI_base80 = 0x83070000;
   unsigned long  dummy_read;

   /*   init BSI   */
   HW_WRITE( PDN_CLR2, PDN_CON_BSI );
   HW_WRITE( PDN_CLR4, PDN_CON_BSI );

   d16  = HW_READ( ((APBADDR)  (BSI_base80+0x0C08)) );        // BSI_IO_CON
   d16 &= ~( 0x1<<8 );                                        /* clear RESET_MODE (bit 8) */
   HW_WRITE( ((APBADDR)  (BSI_base80+0x0C08)), d16 );         // BSI_IO_CON

   /*   immediately send  BSI */
   HW_WRITE( ((APBADDR32)(BSI_base80+0x0000)), 0x0008001 );   // HW_WRITE( BSI_CON, SCTRL_IMOD_MAIN );
   addr = (long)((APBADDR)  (BSI_base80+0x0004));             // BSI_Dn_CON(0);
   HW_WRITE( (APBADDR)addr, ctrl );  addr += 4;
   HW_WRITE( (APBADDR32)(addr), (data) );                     // HW_WRITE_BSI_DATA( addr, data );

   dummy_read = HW_READ( (APBADDR32)(addr) );

   HW_WRITE( ((APBADDR)  (BSI_base80+0x0508)), 0x8000 );      // HW_WRITE( GSM_BSI_ACTUPT, 0x8000 );

   dummy_read = HW_READ( (APBADDR32)(addr) ); 
   (void)dummy_read;

   HW_WRITE( ((APBADDR32)(BSI_base80+0x0000)), 0x8401 );      // HW_WRITE( BSI_CON, SCTRL_IMOD_SEND );

   /*  immediately mode end  */
   HW_WRITE( ((APBADDR32)(BSI_base80+0x0000)), 0x0008001  );  // HW_WRITE( BSI_CON,  SCTRL_MAIN );
   HW_WRITE( ((APBADDR32)(BSI_base80+0x0500)), 0xFFFFFFFF );  // MT6280 is 42
   HW_WRITE( ((APBADDR32)(BSI_base80+0x0504)), 0x000003FF );

}
コード例 #27
0
/*************************************************************************
* FUNCTION
*  USC_Cal_32KFM
*
* DESCRIPTION
*  This function calibrates the uscounter.
*
* PARAMETERS
*  Cal_32K       -    32K crystal counts
*  Cal_26M       -    counts of 26M clock when 32K crystal count to Cal_32K
*
* RETURNS
*  none
*
*************************************************************************/
void USC_Cal_32KFM( kal_uint32 Cal_32K, kal_uint32 Cal_26M)
{
    double Ratio;
    Ratio = ((double)Cal_26M)* ( ((double)USCNT_FREQ) * ( (double)(1<<18) ) / 26000000 ) / ((double)Cal_32K);
    HW_WRITE(F32K_FM, (kal_uint32)(Ratio));
}
コード例 #28
0
/*************************************************************************
 * FUNCTION
 *    HW_TDMA_Start
 *
 * DESCRIPTION
 *    This function powers on TDMA module.
 *
 * PARAMETERS
 *
 * RETURNS
 *    None
 *
 * GLOBALS AFFECTED
 *
 *************************************************************************/
void HW_TDMA_Start(void)
{
   HW_WRITE( PDN_CLR2, PDN_CON_TDMA ); /*power on TDMA*/
}
コード例 #29
0
static void MD_DRV_L1D_PWR_SLEEP( void )
{
#if MD_DRV_IS_CHIP_MT6250 || MD_DRV_IS_CHIP_MT6280 || MD_DRV_IS_CHIP_MT6583_MD1 || MD_DRV_IS_CHIP_MT6583_MD2 || MD_DRV_IS_CHIP_MT6572 || MD_DRV_IS_CHIP_MT6290 || MD_DRV_IS_CHIP_MT6595 || MD_DRV_IS_CHIP_MT6752_MD1 || MD_DRV_IS_CHIP_MT6752_MD2 || MD_DRV_IS_CHIP_MT6735
   HW_WRITE( PDN_SET2,      SLPOFF&MODEMSYS_MASK );
   HW_WRITE( MD2G_PDN_SET0, SLPOFF&MD2G_MASK1    );
   HW_WRITE( MD2G_PDN_SET2, SLPOFF&MD2G_MASK2    );
   HW_WRITE( PDN_CLR2,      SLPON &MODEMSYS_MASK );
   HW_WRITE( MD2G_PDN_CLR0, SLPON &MD2G_MASK1    );
   HW_WRITE( MD2G_PDN_CLR2, SLPON &MD2G_MASK2    );
#elif MD_DRV_IS_CHIP_MT6575
   HW_WRITE( PDN_SET2,      SLPOFF&MCUSYS_MASK1  );
   HW_WRITE( PDN_SET3,      SLPOFF&MCUSYS_MASK2  );
   HW_WRITE( MD2G_PDN_SET1, SLPOFF&MD2G_MASK     );
   HW_WRITE( PDN_CLR2,      SLPON &MCUSYS_MASK1  );
   HW_WRITE( PDN_CLR3,      SLPON &MCUSYS_MASK2  );
   HW_WRITE( MD2G_PDN_CLR1, SLPON &MD2G_MASK     );
#elif MD_DRV_IS_CHIP_MT6573
   HW_WRITE( PDN_SET2,      SLPOFF&MCUSYS_MASK   );
   HW_WRITE( MD2G_PDN_SET1, SLPOFF&MD2G_MASK     );
   HW_WRITE( PDN_CLR2,      SLPON &MCUSYS_MASK   );
   HW_WRITE( MD2G_PDN_CLR1, SLPON &MD2G_MASK     );
   HW_WRITE( AP_PDN_CLR1,   SLPON &APMCUSYS_MASK );
#elif MD_DRV_IS_CHIP_MT6276
   HW_WRITE( PDN_SET2,      SLPOFF&MCUSYS_MASK   );
   HW_WRITE( MD2G_PDN_SET1, SLPOFF&MD2G_MASK     );
   HW_WRITE( PDN_CLR2,      SLPON &MCUSYS_MASK   );
   HW_WRITE( MD2G_PDN_CLR1, SLPON &MD2G_MASK     );
#else
   #error "Please check PDN related settings"
#endif
}
コード例 #30
0
/*************************************************************************
* FUNCTION
*  USC_Stop
*
* DESCRIPTION
*  This function stops the uscounter.
*
* PARAMETERS
*  none
*
* RETURNS
*  none
*
*************************************************************************/
void USC_Stop()
{
   HW_WRITE(USCNT_CON,USCNT_STOP_CODE);
}