diff --git a/src/arch/amd64/fb.c b/src/arch/amd64/fb.c index 5e9ea5e..ab15dd6 100644 --- a/src/arch/amd64/fb.c +++ b/src/arch/amd64/fb.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "bindings.h" @@ -34,11 +35,11 @@ static uint16_t read(uint16_t value) { return inw(DATA); } -int is_available(void) { - return (read(INDEX_ID) >= 0xB0C4); +static int is_available(void) { + return (read(INDEX_ID) == 0xB0C5); } -void set_mode(uint16_t width, uint16_t height, uint16_t bit_depth, int lfb, int clear) { +static void set_mode(uint16_t width, uint16_t height, uint16_t bit_depth, int lfb, int clear) { write(INDEX_ENABLE, DATA_DISP_DISABLE); write(INDEX_XRES, width); write(INDEX_YRES, height); @@ -48,13 +49,16 @@ void set_mode(uint16_t width, uint16_t height, uint16_t bit_depth, int lfb, int (clear ? 0 : DATA_NO_CLEAR_MEM)); } -void set_bank(uint16_t bank) { - write(INDEX_BANK, bank); -} +//static void set_bank(uint16_t bank) { +// write(INDEX_BANK, bank); +//} int fb_init(uint16_t width, uint16_t height) { set_mode(width, height, 32, true, true); + if (!is_available()) + panic("bochs framebuffer not avaliable"); + return 0; }