コード例 #1
0
ファイル: prc_timer.c プロジェクト: huchunxu/asp
/*
 *  タイマの起動処理
 */
void
target_timer_initialize(intptr_t exinf)
{
	CLOCK    cyc;
	uint32_t tmp;

#ifdef SYSTIC_USE_CALIBRATION
	/* CALIBRATIONレジスタの値を使用 */
	cyc = (sil_rew_mem((void *)SYSTIC_CALIBRATION) & SYSTIC_TENMS) / 10;
#else 
	cyc = TO_CLOCK(TIC_NUME, TIC_DENO) - 1;
#endif /* SYSTIC_USE_CALIBRATION */

	/* 停止 */
	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
	tmp &= ~SYSTIC_ENABLE;
	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);

	sil_wrw_mem((void *)SYSTIC_RELOAD_VALUE, cyc);
	sil_wrw_mem((void *)SYSTIC_CURRENT_VALUE, cyc);

	tmp = sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);

#ifdef SYSTIC_USE_STCLK
	/* 外部クロックの使用 */
	tmp |= SYSTIC_ENABLE;
#else
	/* プロセッサクロックの使用 */
	tmp |= SYSTIC_ENABLE|SYSTIC_CLKSOURCE;
#endif /* SYSTIC_USE_STCLK */

	sil_wrw_mem((void *)SYSTIC_CONTROL_STATUS, tmp);
}
コード例 #2
0
void Buzzer(uint8_t buzzer)
{
	if (buzzer == BUZZER_ON){
		sil_wrw_mem((void *)FIO2SET0,sil_rew_mem((void *)FIO2SET0) | (0x1<<1) ); /*p2.0 high*/
	}else {
		sil_wrw_mem((void *)FIO2CLR0,sil_rew_mem((void *)FIO2CLR0) | (0x1<<1) ); /*p2.0 low*/
	}
}
コード例 #3
0
ファイル: nios2.c プロジェクト: inouema/toppers
/*                                                                             
 *  受信した文字の取り出し                                                     
 */
Inline UB
uart_getchar(SIOPCB *siopcb)
{
#ifndef USE_JTAG_UART
	return((UB)(sil_rew_mem((VP)UART_RXDATA)));
#else
	return((UB)(sil_rew_mem((VP)JTAG_UART_DATA)));
#endif /* USE_JTAG_UART	*/
}
コード例 #4
0
void Buzzer_Init(void)
{
	sil_wrw_mem((void *)SCS,sil_rew_mem((void *)SCS)|0x00000001);                /*set GPIOx to use Fast I/O */
	sil_wrw_mem((void *)PINSEL10,0);                                             /*ETM interface is disabled. must set this*/

	sil_wrw_mem((void *)PINSEL4,sil_rew_mem((void *)PINSEL4) & (~(0x3<<2)) );    /*set GPIOx to use Fast I/O */
	sil_wrw_mem((void *)PINMODE4,sil_rew_mem((void *)PINMODE4) & (~(0x3<<2)) );  /*p2.0 pull up*/
	sil_wrw_mem((void *)FIO2DIR0,sil_rew_mem((void *)FIO2DIR0) | (0x1<<1) );     /*p2.0 output*/
}
コード例 #5
0
ファイル: pl310.c プロジェクト: takahashim/asp_arch_arm_gcc
void
pl310_init(uint32_t aux_val, uint32_t aux_mask)
{
	uint32_t tmp;
	uint32_t aux;
	uint32_t cache_id;
	uint32_t prefetch;
	uint32_t prefetch_val = 0;    
	uint32_t power;
	int ways;

	/* L2キャッシュがすでにオンになっているか確認する */
	tmp = sil_rew_mem((void*)(RMA1_L2CACHE_BASE + PL310_CTRL));

	/* L2キャッシュが無効の場合のみ初期化を実施する */
	if ( !(tmp & 1) ) {
		cache_id = sil_rew_mem((void*)(RMA1_L2CACHE_BASE + PL310_CACHE_ID));
		aux = sil_rew_mem((void*)(RMA1_L2CACHE_BASE + PL310_AUX_CTRL));
		prefetch = sil_rew_mem((void*)(RMA1_L2CACHE_BASE + PL310_PREFETCH_CTRL));
		power = sil_rew_mem((void*)(RMA1_L2CACHE_BASE + PL310_POWER_CTRL));

		if (aux & (1 << 16)) {
			ways = 16;
		}
		else {
			ways = 8;
		}

		aux_val |= 1 << 22;
        
		aux_val |= 1 << 29;
		prefetch_val |= 1 << 29;

		aux_val |= 1 << 28;
		prefetch_val |= 1 << 28;


		if ((cache_id & 0x3f) > 0x6) {
			prefetch_val |= 1 << 30;
		}
                
		pl310_way_mask = (1 << ways) - 1;

		aux &= aux_mask;
		aux |= aux_val;
		prefetch |= prefetch_val;

		sil_wrw_mem((void*)(RMA1_L2CACHE_BASE + PL310_AUX_CTRL), aux);
		sil_wrw_mem((void*)(RMA1_L2CACHE_BASE + PL310_PREFETCH_CTRL), prefetch);
		sil_wrw_mem((void*)(RMA1_L2CACHE_BASE + PL310_POWER_CTRL), power);
        
		pl310_inv_all();
        
		sil_wrw_mem((void*)(RMA1_L2CACHE_BASE + PL310_CTRL), 1);
	}    
}
コード例 #6
0
ファイル: nios2.c プロジェクト: inouema/toppers
/*                                                                             
 * 文字を送信できるか?                                                         
 */
Inline BOOL
uart_putready(SIOPCB *siopcb)
{
#ifndef USE_JTAG_UART		
	return((sil_rew_mem((VP)UART_STATUS) & UART_STATUS_TRDY) != 0);
#else
	return((sil_rew_mem(
		(VP)JTAG_UART_CONTROL) & JTAG_UART_CONTROL_WSAPCE) > 0);
#endif /* USE_JTAG_UART	*/
}
コード例 #7
0
ファイル: nios2.c プロジェクト: inouema/toppers
/*                                                                             
 *  受信割込み禁止                                                             
 */
Inline void
uart_disable_rcv(SIOPCB *siopcb)
{
#ifndef USE_JTAG_UART	
	sil_wrw_mem((VP)UART_CONTROL,
				sil_rew_mem((VP)UART_CONTROL)&~UART_STATUS_RRDY);
#else
	sil_wrw_mem((VP)JTAG_UART_CONTROL,
				sil_rew_mem((VP)JTAG_UART_CONTROL)&~JTAG_UART_CONTROL_RIE);
#endif /* USE_JTAG_UART	*/	
}
コード例 #8
0
ファイル: nios2.c プロジェクト: inouema/toppers
/*                                                                             
 *  送信割込み禁止                                                             
 */
Inline void
uart_disable_send(SIOPCB *siopcb)
{
#ifndef USE_JTAG_UART
	sil_wrw_mem((VP)UART_CONTROL,
				sil_rew_mem((VP)UART_CONTROL)&~UART_CONTROL_ITRD);
#else
	sil_wrw_mem((VP)JTAG_UART_CONTROL,
				sil_rew_mem((VP)JTAG_UART_CONTROL)&~JTAG_UART_CONTROL_WIE);
#endif /* USE_JTAG_UART	*/
}
コード例 #9
0
void  UART_PrintChar (uint8_t ch)
{
	#if  UART_PORT == 1
		while (!(sil_rew_mem((void *)U1LSR) & 0x20));  /* wait until U1THR is empty.*/
		sil_wrw_mem((void *)U1THR, ch);
	#elif UART_PORT == 0
		while (!(sil_rew_mem((void *)U0LSR) & 0x20));  /* wait until U1THR is empty.*/
		sil_wrw_mem((void *)U0THR, ch);
	#endif

}
コード例 #10
0
ファイル: nios2.c プロジェクト: inouema/toppers
/*
 * 文字を受信したか?                                                       
 */
Inline BOOL
uart_getready(SIOPCB *siopcb)
{
#ifndef USE_JTAG_UART
	return((sil_rew_mem((VP)UART_STATUS) &
			UART_STATUS_RRDY) != 0);
#else
	UW tmp = sil_rew_mem((VP)JTAG_UART_DATA);
	jtag_uart_buf = (UB)tmp;	
	return ((tmp & JTAG_UART_DATA_RVALID) != 0);
#endif /* USE_JTAG_UART	*/	
}
コード例 #11
0
void timer2_capinit(void)
{
	sil_wrw_mem(PCONP,sil_rew_mem(PCONP)|(1<<22));/*power on timer2*/
	sil_wrw_mem(PCLKSEL1,(PCLKSEL1&(~(0x3<<12)))|(0x1<<12));/*pclk of timer is cclk*/
	sil_wrw_mem(PINSEL0,sil_rew_mem(PINSEL0)|(0x3<<8)); /*p0.4 as cap2*/
	sil_wrw_mem(T2PR,0);                      /*prescale counter is 0*/
    sil_wrw_mem(T2IR,0xff);                   /*reset the interrupts*/
    sil_wrw_mem(T2TCR,0x02);                   /*disable and reset counter*/
    sil_wrw_mem(T2CTCR,0x00);                 /*timer mode,capture on rising edge CAP2.0 for TIMER2*/
    sil_wrw_mem(T2MCR,0x00);                  /*disable match control*/
    sil_wrw_mem(T2CCR,0x05);                  /*capture rising and falling edge cr0 load TC and generate interrupt*/
    sil_wrw_mem(T2TCR,0x01);                   /*start counter*/
}
コード例 #12
0
void LED_Init(void)
{
	sil_wrw_mem((void *)SCS,sil_rew_mem((void *)SCS)|0x00000001);                /*set GPIOx to use Fast I/O */
	/* P3[20] - p3[27] =>LEDS as GPIOs*/
	sil_wrw_mem((void *)PINSEL7,sil_rew_mem((void *)PINSEL7)&0xff0000ff);

	/*select P320 - P327  pull_up*/
	sil_wrw_mem((void *)PINMODE7,sil_rew_mem((void *)PINSEL7)&0xff0000ff);

	/* P320-P327 as output */
	sil_wrw_mem((void *)FIO3DIR2,sil_rew_mem((void *)FIO3DIR2)|0x000000f0);
	sil_wrw_mem((void *)FIO3DIR3,sil_rew_mem((void *)FIO3DIR3)|0x0000000f);
}
コード例 #13
0
ファイル: lpc2300.c プロジェクト: inouema/toppers
/*
 *  受信割込み禁止
 */
Inline void
uart_disable_rcv(SIOPCB *siopcb)
{
	unsigned long tmp = sil_rew_mem((VP)(siopcb->siopinib->uart_base+TOFF_UART_IER));
	tmp &= ~US_ERXI;
    sil_wrw_mem((VP)(siopcb->siopinib->uart_base+TOFF_UART_IER), tmp);
}
コード例 #14
0
ファイル: microblaze.c プロジェクト: inouema/toppers
/*
 * 文字を受信したか?                                                       
 */
Inline BOOL
uart_getready(SIOPCB *siopcb)
{
    return((sil_rew_mem((VP)UARTLITE_SRREG) &
            UARTLITE_RX_FIFO_VALID_DATA) != 0);

}
コード例 #15
0
/*
 *  ターゲット依存の初期化
 */
void
target_initialize(void)
{
	uint32_t	reg;

	/*
	 *  チップ依存の初期化
	 */
	chip_initialize();
	
	/*
	 *  Emulation Baseboardの割込みモードの設定
	 */
	sil_wrw_mem(EB_SYS_LOCK, EB_SYS_LOCK_UNLOCK);	/* ロック解除 */

	reg = sil_rew_mem(EB_SYS_PLD_CTRL1);
	reg &= ~EB_SYS_PLD_CTRL1_INTMODE_MASK;
	reg |= EB_SYS_PLD_CTRL1_INTMODE_NEW_NODCC;
	sil_wrw_mem(EB_SYS_PLD_CTRL1, reg);

	sil_wrw_mem(EB_SYS_LOCK, EB_SYS_LOCK_LOCK);		/* ロック */
	
	/*
	 *  UARTを初期化
	 */
#ifndef TOPPERS_OMIT_TECS
	tPutLogCT11MPCore_initialize();
#endif /* TOPPERS_OMIT_TECS */
}
コード例 #16
0
/*
 *  CPUインタフェースの初期化
 */
void
gicc_initialize(void)
{
	/*
	 *  CPUインタフェースをディスエーブル
	 */
	sil_wrw_mem(GICC_CTLR, GICC_CTLR_DISABLE);

	/*
	 *  割込み優先度マスクを最低優先度に設定
	 */
	gicc_set_priority((GIC_PRI_LEVEL - 1) << GIC_PRI_SHIFT);

	/*
	 *  割込み優先度の全ビット有効に
	 */
	sil_wrw_mem(GICC_BPR, 0U);

	/*
	 *  アクティブな割込みがあれば,EOIによりクリアする
	 */
	sil_wrw_mem(GICC_EOIR, sil_rew_mem(GICC_IAR));

	/*
	 *  CPUインタフェースをイネーブル
	 */
#ifdef TOPPERS_SAFEG_SECURE
	sil_wrw_mem(GICC_CTLR, (GICC_CTLR_FIQEN|GICC_CTLR_ENABLEGRP1
												|GICC_CTLR_ENABLEGRP0));
#else /* TOPPERS_SAFEG_SECURE */
	sil_wrw_mem(GICC_CTLR, GICC_CTLR_ENABLE);
#endif /* TOPPERS_SAFEG_SECURE */
}
コード例 #17
0
ファイル: lpc2300.c プロジェクト: inouema/toppers
/*
 *  送信割込み許可
 */
Inline void
uart_enable_send(SIOPCB *siopcb)
{
	unsigned long tmp = sil_rew_mem((VP)(siopcb->siopinib->uart_base+TOFF_UART_IER));
	tmp |= US_ETXI;
    sil_wrw_mem((VP)(siopcb->siopinib->uart_base+TOFF_UART_IER), tmp);
}
コード例 #18
0
ERCD RTC_Stop(void)
{
	/*disable rtc clock*/
	sil_wrw_mem((void *)RTC_CCR,sil_rew_mem((void *)PCONP)&(~(1<<0)));

	return ERCD_OK;
}
コード例 #19
0
ERCD RTC_SetTime(RTCTime Time)
{
	/*ctc reset*/
	sil_wrw_mem((void *)RTC_CCR,sil_rew_mem((void *)RTC_CCR)|(1<<1));
	/*RTC current time set*/
	sil_wrw_mem((void *)RTC_SEC, Time.RTC_Sec);
	sil_wrw_mem((void *)RTC_MIN, Time.RTC_Min);
	sil_wrw_mem((void *)RTC_HOUR, Time.RTC_Hour);
	sil_wrw_mem((void *)RTC_DOM, Time.RTC_Mday);
	sil_wrw_mem((void *)RTC_DOW, Time.RTC_Wday);
	sil_wrw_mem((void *)RTC_DOY, Time.RTC_Yday);
	sil_wrw_mem((void *)RTC_MONTH, Time.RTC_Mon);
	sil_wrw_mem((void *)RTC_YEAR, Time.RTC_Year);
    /*ctc start*/
    sil_wrw_mem((void *)RTC_CCR,sil_rew_mem((void *)RTC_CCR)&(~(1<<1)));

    return ERCD_OK;
}
コード例 #20
0
ファイル: sys_config.c プロジェクト: koban/Uzume-Aqua548
/*
 *  ターゲットシステム依存の初期化
 */
void
sys_initialize()
{
	/*
	 *  プロセッサ識別のための変数の初期化
	 */
	board_id = ((UINT)(sil_rew_mem((VP) TADR_BOARD_REG0)) & 0x1f);
	board_addr = (VP)(board_id << 24);

	/*
	 *  割込み関連の初期化
	 *
	 *  すべての割込みをマスク・クリアし,割込みベクトルを設定する.
	 */
	dga_write((VP) TADR_DGA_CSR21, 0);
	dga_write((VP) TADR_DGA_CSR23, ~0);
	dga_write((VP) TADR_DGA_CSR19, (TVEC_G0I << 24) | (TVEC_G1I << 16)
					| (TVEC_SWI << 8) | TVEC_SPRI);

	/*
	 *  アボート割込みの設定(NMI)
	 *
	 *  アボート割込みの割込みレベルを設定し,要求をクリアした後,
	 *  マスクを解除する.
	 */
	dga_set_ilv((VP) TADR_DGA_CSR24, TBIT_ABTIL, TIRQ_NMI);
	dga_write((VP) TADR_DGA_CSR23, TBIT_ABT);
	dga_bit_or((VP) TADR_DGA_CSR21, TBIT_ABT);

	/*
	 *  メモリ領域の設定
	 *
	 *  ローカルメモリのVMEバス上での先頭アドレスとサイズ(16MB)
	 *  し,アクセスを受け付けるように設定する.また,VMEバスから
	 *  拡張アドレスアクセスを受け付けるようにに設定する.
	 */
	dga_write((VP) TADR_DGA_CSR4, (UW) board_addr | 0x00ff);
	dga_write((VP) TADR_DGA_CSR5, 0x0000012fu);

	/*
	 *  インタフェースレジスタ(IFR)の設定
	 *
	 *  インタフェースレジスタのベースアドレスを設定する.また,イ
	 *  ンタフェースレジスタ0のサービスリクエストフラグをクリア.
	 *  インタフェースレジスタ3にボードのID番号を設定.
	 */
	dga_write((VP) TADR_DGA_CSR3, (board_id << 4) | 0x3);
	dga_write((VP) TADR_DGA_IFR0, 0x80000000u);
	dga_write((VP) TADR_DGA_IFR3, board_id);

	/*
	 *  ラウンドロビンモードに設定(マルチプロセッサ対応)
	 */
	dga_write((VP) TADR_DGA_CSR1, (dga_read((VP) TADR_DGA_CSR1)
			& 0xffeffcff) | (1u << 20) | ((board_id % 4) << 8));
}
コード例 #21
0
/*
 *  タイマ割込みハンドラ
 */
void
target_timer_handler(void)
{
	/* probe_int のため,COUNTFLAGをクリア */
	(void)sil_rew_mem((void *)SYSTIC_CONTROL_STATUS);
	
	i_begin_int(INTNO_TIMER);
	signal_time();                    /* タイムティックの供給 */
	i_end_int(INTNO_TIMER);
}
コード例 #22
0
ファイル: sys_config.c プロジェクト: inouema/toppers
/*  割込みベクタの退避  */
void
load_vector(TMP_VECTOR *p) {
	UW *redboot_trap_vector = (UW *)VECTOR_TABLE_ADDR + TRAP8;
	UW *pirq5 = (UW *)VECTOR_TABLE_ADDR + IRQ_EXT5;
	
	/* ベクタテーブルの内、trapa命令分を退避 */
	memcpy(&(p->trap_vector), redboot_trap_vector, TRAP_VECTOR_SIZE*4);

	/*  IRQ5:Ethernet割込みの先頭アドレスを退避  */
	p->irq5 = sil_rew_mem((VP)pirq5);		
}
コード例 #23
0
ファイル: ns9360.c プロジェクト: zaurus04/cortexm3
/*
 * 文字を受信したか?
 */ 
Inline BOOL
uart_getready(SIOPCB *siopcb)
{
	VW	dt;
	
	if(0 != siopcb->rxfdb)
		return TRUE;
	
	dt = sil_rew_mem((VP)siopcb->siopinib->pSraReg);
	return(dt &(SCSRA_RFS | SCSRA_RRDY));
}
コード例 #24
0
ERCD RTC_Init(void)
{
	/*power on  the rtc*/
	sil_wrw_mem((void *)PCONP,sil_rew_mem((void *)PCONP)|(1<<9));
	/*don't compare seconds*/
	sil_wrw_mem((void *)RTC_AMR, 0x01);
	sil_wrw_mem((void *)RTC_CIIR, 0x0);
	sil_wrw_mem((void *)RTC_CISS, 0x0);
	/*RTC clock source select as RTC*/
	sil_wrw_mem((void *)RTC_CCR, 0x10);

    return ERCD_OK;
}
コード例 #25
0
ファイル: ns9360.c プロジェクト: zaurus04/cortexm3
/*
 *  受信した文字の取り出し
 */
Inline UB
uart_getchar(SIOPCB *siopcb)
{
	UW	dt;
	
	if(0 == siopcb->rxfdb)
	{
		siopcb->rxfdb = (sil_rew_mem((VP)siopcb->siopinib->pSraReg) >> 20) & 0x03;
		if(0 == siopcb->rxfdb)
			siopcb->rxfdb = 4;
		
		siopcb->rxbuf = sil_rew_mem((VP)siopcb->siopinib->pFifoReg);
	}
コード例 #26
0
/*
 *  SIOの割込みサービスルーチン
 */
void
int_timer2()
{
    SIOPCB *siopcb = &(siopcb_table[0]);

    sil_rew_mem((VP)(TADR_TC_BASE+TC_WINDOW*2+TOFF_TC_SR));
    if (uart_getready(siopcb)) {
        /*
         *  受信通知コールバックルーチンを呼び出す.
         */
        uart_ierdy_rcv(siopcb->exinf);
    }
}
コード例 #27
0
ファイル: gic.c プロジェクト: takahashim/asp_arch_arm_gcc
/*
 *  割込みコンフィギュレーション設定
 */
void
gicd_config(uint8_t id,  bool_t is_edge, bool_t is_1_n)
{
	uint16_t offset_addr;
	uint16_t offset_bit;
	uint32_t cfgr_reg_val;
	uint8_t  config;

	if (is_edge) {
		config = GICD_ICFGRn_EDGE;
	}
	else {
		config = GICD_ICFGRn_LEVEL;
	}

	if (is_1_n) {
		config |= GICD_ICFGRn_1_N;
	}
	else {
		config |= GICD_ICFGRn_N_N;
	}
	
	
	offset_addr = (id / 16) * 4;
	offset_bit  = (id % 16) * 2;

	cfgr_reg_val  = sil_rew_mem((void *)(GICD_ICFGRn + offset_addr));
	cfgr_reg_val &= ~(0x03U << offset_bit);
	cfgr_reg_val |= (0x03U & config) << offset_bit;
	sil_wrw_mem((void *)(GICD_ICFGRn + offset_addr), cfgr_reg_val);

#ifdef GIC_USE_FIQ
	offset_addr = (id / 32) * 4;
	offset_bit  = id % 32;

	sil_wrw_mem((void *)(GICD_IGROUPRn + offset_addr),
				sil_rew_mem((void *)(GICD_IGROUPRn+ offset_addr)) & ~(1 << offset_bit));
#endif /* GIC_USE_FIQ */
}
コード例 #28
0
ファイル: gic.c プロジェクト: takahashim/asp_arch_arm_gcc
/*
 *  DIC割込みターゲットの設定
 *  cpusはターゲットとするCPUのビットパターンで指定
 *   CPU0 : 0x01
 *   CPU1 : 0x02
 *   CPU2 : 0x04
 *   CPU3 : 0x08
 */
void
gicd_set_target(uint8_t id, uint8_t cpus)
{
	uint32_t offset_addr;
	uint32_t offset_bit;
	uint32_t itr_reg_val;

	offset_addr = (id / 4) * 4;
	offset_bit  = (id % 4) * 8;

	itr_reg_val  = sil_rew_mem((void *)(GICD_ITARGETSRn + offset_addr));
	itr_reg_val &= ~(0xf << offset_bit);
	itr_reg_val |= (cpus << offset_bit);
	sil_wrw_mem((void *)(GICD_ITARGETSRn + offset_addr), itr_reg_val);
}
コード例 #29
0
ファイル: gic.c プロジェクト: takahashim/asp_arch_arm_gcc
/*
 *  割込み優先度のセット
 *  内部表現で渡す.
 */
void
gicd_set_priority(uint8_t id, int pri)
{
	uint16_t offset_addr;
	uint16_t offset_bit;
	uint32_t pr_reg_val;

	offset_addr = (id / 4) * 4;
	offset_bit  = ((id % 4) * 8) + GICC_PMR_OFFSET;

	pr_reg_val  = sil_rew_mem((void *)(GICD_IPRIORITYRn + offset_addr));
	pr_reg_val &= ~(GICC_PMR_MASK << offset_bit);
	pr_reg_val |= (GICC_PMR_MASK & pri) << (offset_bit);
	sil_wrw_mem((void *)(GICD_IPRIORITYRn + offset_addr), pr_reg_val);
}
コード例 #30
0
ファイル: tUartPL011.c プロジェクト: ev3rt-git/ev3rt-hrp3
/*
 *  シリアルI/Oポートからのコールバックの禁止
 */
void
eSIOPort_disableCBR(CELLIDX idx, uint_t cbrtn)
{
	CELLCB		*p_cellcb = GET_CELLCB(idx);
	uint32_t	reg;

	reg = sil_rew_mem(UART_IMSC(ATTR_baseAddress));
	switch (cbrtn) {
	case SIOSendReady:
		reg &= ~UART_IMSC_TXIM;
		break;
	case SIOReceiveReady:
		reg &= ~UART_IMSC_RXIM;
		break;
	}
	sil_wrw_mem(UART_IMSC(ATTR_baseAddress), reg);
}