Beispiel #1
0
void arch_post_mm_init(void)
{
	if (config.cpu_active == 1) {
		/* Initialize IRQ routing */
		irq_init(IRQ_COUNT, IRQ_COUNT);
		
		/* hard clock */
		i8254_init();
		
#if (defined(CONFIG_FB) || defined(CONFIG_EGA))
		bool bfb = false;
#endif
		
#ifdef CONFIG_FB
		bfb = bfb_init();
#endif
		
#ifdef CONFIG_EGA
		if (!bfb) {
			outdev_t *egadev = ega_init(EGA_BASE, EGA_VIDEORAM);
			if (egadev)
				stdout_wire(egadev);
		}
#endif
		
		/* Merge all memory zones to 1 big zone */
		zone_merge_all();
	}
}
Beispiel #2
0
static void raspberrypi_output_init(void)
{
#ifdef CONFIG_FB
	fb_properties_t prop;
	if (bcm2835_fb_init(&prop)) {
		outdev_t *fb_dev = fb_init(&prop);
		if (fb_dev)
			stdout_wire(fb_dev);
	}
#endif

#ifdef CONFIG_PL011_UART
	if (pl011_uart_init(&raspi.uart, BCM2835_UART_IRQ,
			    BCM2835_UART0_BASE_ADDRESS))
		stdout_wire(&raspi.uart.outdev);
#endif
}
Beispiel #3
0
bool bfb_init(void)
{
	if ((bfb_addr == 0) || (bfb_width == 0) || (bfb_height == 0) ||
	    (bfb_bpp == 0) || (bfb_scanline == 0))
		return false;
	
	fb_properties_t bfb_props = {
		.addr = bfb_addr,
		.offset = 0,
		.x = bfb_width,
		.y = bfb_height,
		.scan = bfb_scanline
	};
	
	switch (bfb_bpp) {
	case 8:
		bfb_props.visual = VISUAL_INDIRECT_8;
		break;
	case 16:
		if ((bfb_red_pos == 10) && (bfb_red_size == 5) &&
		    (bfb_green_pos == 5) && (bfb_green_size == 5) &&
		    (bfb_blue_pos == 0) && (bfb_blue_size == 5))
			bfb_props.visual = VISUAL_RGB_5_5_5_LE;
		else
			bfb_props.visual = VISUAL_RGB_5_6_5_LE;
		break;
	case 24:
		bfb_props.visual = VISUAL_BGR_8_8_8;
		break;
	case 32:
		bfb_props.visual = VISUAL_BGR_8_8_8_0;
		break;
	default:
		LOG("Unsupported bits per pixel.");
		return false;
	}
	
	outdev_t *fbdev = fb_init(&bfb_props);
	if (!fbdev)
		return false;
	
	stdout_wire(fbdev);
	return true;
}
Beispiel #4
0
void malta_output_init(void)
{
	outdev_initialize("yamon", &yamon_outdev, &yamon_outdev_ops);
	stdout_wire(&yamon_outdev);
}