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(); } }
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 }
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; }
void malta_output_init(void) { outdev_initialize("yamon", &yamon_outdev, &yamon_outdev_ops); stdout_wire(&yamon_outdev); }