示例#1
0
uint8_t serial_recv(uint8_t ch) {
	(void) ch;

	mutex_lock(&serial_lock);

	while(mmio_r32(UART_FR(UART0)) & (1 << 4))
		;
	register uint8_t t = (uint8_t) mmio_r32(UART_DR(UART0));

	mutex_lock(&serial_lock);
	return t;
}
示例#2
0
void serial_send(uint8_t ch, uint8_t v) {
	(void) ch;

	mutex_lock(&serial_lock);

	while(mmio_r32(UART_FR(UART0)) & (1 << 5))
		;
	mmio_w32(UART_DR(UART0), v);

	mutex_unlock(&serial_lock);
}
示例#3
0
文件: lfb.c 项目: WareX97/aPlus
int lfb_init() {
    int i;
    uint32_t* p = (uint32_t*) &lfbio;

    for(i = 0; i < sizeof(lfbio); i += sizeof(uint32_t))
        mmio_w32(LFBIO_BASE + i, *p++);

    mail_send(LFBIO_BASE, LFBIO_BOX);
    mail_recv(LFBIO_BOX);


    mbd->lfb.width = mmio_r32(LFBIO_BASE + 0);
    mbd->lfb.height = mmio_r32(LFBIO_BASE + 4);
    mbd->lfb.pitch = mmio_r32(LFBIO_BASE + 16);
    mbd->lfb.depth = mmio_r32(LFBIO_BASE + 20);    
    mbd->lfb.base = mmio_r32(LFBIO_BASE + 32);
    mbd->lfb.size = mmio_r32(LFBIO_BASE + 36);

#ifdef DEBUG
    memset((void*) mbd->lfb.base, 0xFF, mbd->lfb.size);
#endif

    kprintf(LOG "lfb: %dx%dx%d at 0x%x\n", mbd->lfb.width, mbd->lfb.height, mbd->lfb.depth, mbd->lfb.base);

    return 0;
}
示例#4
0
long timer_getticks() {
	return mmio_r32(TIMER_BASE + TIMER_TICK);
}