Пример #1
0
/*
 *  カーネル起動時のバーナー出力用の初期化
 */
void
st16c2550_init(void)
{

    st16c2550_init_siopinib(get_siopinib(1));
#if TNUM_SIOP > 2
    st16c2550_init_siopinib(get_siopinib(2));
#endif /* TNUM_SIOP > 2 */

}
Пример #2
0
/*
 *  シリアルI/Oポートへのポーリングでの出力
 */
void
scif_pol_putc(char c, ID siopid)
{
	const SIOPINIB *p_siopinib;
	uint16_t fsrval;
	SIL_PRE_LOC;

	p_siopinib = get_siopinib(siopid);

	while(1) {
		/*
		 *  リエントラントにするため、全割込みロック状態にする。
		 */
		SIL_LOC_INT();

		fsrval = sil_reh_mem((uint16_t *)((uint8_t *)p_siopinib->port + REG_SCFSR));
		if (fsrval & SCFSR_TDFE) {
			sil_wrb_mem((uint8_t *)p_siopinib->port + REG_SCFTDR, c);
			sil_wrh_mem((uint16_t *)((uint8_t *)p_siopinib->port + REG_SCFSR), ~(SCFSR_TEND | SCFSR_TDFE));
			/*
			 *  リターンする前に全割込みロックフラグを元の状態に戻す。
			 */
			SIL_UNL_INT();
			return;
		} else {
			/*
			 *  ここで全割込みロックを解除して、割込みを受け付ける。
			 */
			SIL_UNL_INT();
		}
	}
}
Пример #3
0
/*
 *  カーネル起動時のバナー出力用の初期化
 */
void 
uart_init(void)
{
    int i;
	/*
	 * すべてのuartを初期化する。id は1からTNUM_SIOP_UARTまで。
	 */
	for ( i=1; i<=TNUM_SIOP_UART; i++ )
	    uart_init_siopinib(get_siopinib(i));
}
Пример #4
0
/*
 * カーネル起動時のバーナ出力用の初期化
 */
void
scif_init(ID siopid)
{
	SIOPCB		  *p_siopcb   = get_siopcb(siopid);
	const SIOPINIB  *p_siopinib = get_siopinib(siopid);
	/*  この時点では、p_siopcb->p_siopinibは初期化されていない  */

	if (!(p_siopcb->is_initialized)) {
		scif_init_siopinib(p_siopinib);
		p_siopcb->is_initialized = true;
	}
}
Пример #5
0
/*
 *  シリアルI/Oポートへのポーリングでの出力
 */
void
st16c2550_pol_putc(char c, ID siopid)
{
    const SIOPINIB *siopinib;

    siopinib = get_siopinib(siopid);

    while((st16c_read(siopinib->reg_base, ST16C_LSR) & LSR_TX_EMPTY)
            != LSR_TX_EMPTY)
        ;
    st16c_write(siopinib->reg_base, ST16C_THR, c);
}
Пример #6
0
/*
 *  シリアルI/Oポートへのポーリングでの出力
 */
void
uart_pol_putc(char c, ID siopid)
{
    const SIOPINIB *siopinib;
    
    siopinib = get_siopinib(siopid);
    
    while((uart_read(siopinib->reg_base, UART_LSR) & LSR_TX_EMPTY)
          != LSR_TX_EMPTY)
        ;
    uart_write(siopinib->reg_base, UART_THR, c);
}
Пример #7
0
/*
 *  H8S 内蔵 SCI 用ポーリング出力 (LOGTASK_PORTID専用、sys_putcで利用)
 */
void
h8s_sci_putchar_pol( char c )
{
	const SIOPINIB  *siopinib = get_siopinib( LOGTASK_PORTID );

	/* TDRE が 1 になるまで待つ */
	while ( !(h8s_sci_reb( siopinib->reg_base, (UW) SSR ) & TDRE ) );

	h8s_sci_wrb( siopinib->reg_base, (UW) TDR, (UB) c );

	/* TDREクリア */
	h8s_sci_and( siopinib, (UW) SSR, (UB) ~TDRE );

	/* TEND が 1 になるまで待つ */
	while ( !(h8s_sci_reb( siopinib->reg_base, (UW) SSR ) & TEND ) );
}
Пример #8
0
/*
 *  カーネル起動時のバーナー出力用の初期化
 */
void
h8s_sci_init(void)
{
	h8s_sci_init_siopinib( get_siopinib(1) );
}