diff options
author | Freya Murphy <freya@freyacat.org> | 2025-04-17 09:26:49 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-17 09:26:49 -0400 |
commit | 485c33eb10b4d877632676ee1bd8d8bdef821cfe (patch) | |
tree | 48dbeedfa846c633c7f93ffb368a07e09f4dee1b /kernel | |
parent | font rending in framebuffer yay!! (diff) | |
download | comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.gz comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.bz2 comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.zip |
fmt
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/drivers/gpu.c | 4 | ||||
-rw-r--r-- | kernel/drivers/gpu/bochs.c | 64 | ||||
-rw-r--r-- | kernel/include/comus/drivers/gpu/bochs.h | 3 | ||||
-rw-r--r-- | kernel/include/comus/term.h | 3 | ||||
-rw-r--r-- | kernel/term.c | 5 |
5 files changed, 43 insertions, 36 deletions
diff --git a/kernel/drivers/gpu.c b/kernel/drivers/gpu.c index 7ecdada..730fa42 100644 --- a/kernel/drivers/gpu.c +++ b/kernel/drivers/gpu.c @@ -13,9 +13,7 @@ enum gpu_type { static enum gpu_type type = GPU_UNSET; -static const char *gpu_type_str[N_GPU_TYPE] = { - "Unknown", "Bochs" -}; +static const char *gpu_type_str[N_GPU_TYPE] = { "Unknown", "Bochs" }; struct psf2_font { uint8_t magic[4]; diff --git a/kernel/drivers/gpu/bochs.c b/kernel/drivers/gpu/bochs.c index 5b0f1fc..a100908 100644 --- a/kernel/drivers/gpu/bochs.c +++ b/kernel/drivers/gpu/bochs.c @@ -4,27 +4,27 @@ #include <comus/drivers/pci.h> #include <comus/drivers/gpu/bochs.h> -#define INDEX 0x1CE -#define DATA 0x1CF +#define INDEX 0x1CE +#define DATA 0x1CF -#define INDEX_ID 0 -#define INDEX_XRES 1 -#define INDEX_YRES 2 -#define INDEX_BPP 3 -#define INDEX_ENABLE 4 -#define INDEX_BANK 5 -#define INDEX_VIRT_WIDTH 6 -#define INDEX_VIRT_HEIGHT 7 -#define INDEX_X_OFFSET 8 -#define INDEX_Y_OFFSET 9 +#define INDEX_ID 0 +#define INDEX_XRES 1 +#define INDEX_YRES 2 +#define INDEX_BPP 3 +#define INDEX_ENABLE 4 +#define INDEX_BANK 5 +#define INDEX_VIRT_WIDTH 6 +#define INDEX_VIRT_HEIGHT 7 +#define INDEX_X_OFFSET 8 +#define INDEX_Y_OFFSET 9 -#define DATA_DISP_DISABLE 0x00 -#define DATA_DISP_ENABLE 0x01 -#define DATA_LFB_ENABLE 0x40 -#define DATA_NO_CLEAR_MEM 0x80 +#define DATA_DISP_DISABLE 0x00 +#define DATA_DISP_ENABLE 0x01 +#define DATA_LFB_ENABLE 0x40 +#define DATA_NO_CLEAR_MEM 0x80 -#define BOCHS_PCI_VENDOR 0x1234 -#define BOCHS_PCI_DEVICE 0x1111 +#define BOCHS_PCI_VENDOR 0x1234 +#define BOCHS_PCI_DEVICE 0x1111 #define BOCHS_WIDTH 1024 #define BOCHS_HEIGHT 768 @@ -35,33 +35,39 @@ static uint16_t width = BOCHS_WIDTH; static uint16_t height = BOCHS_HEIGHT; static uint8_t bit_depth = BOCHS_BIT_DEPTH; -static void write(uint16_t index, uint16_t data) { +static void write(uint16_t index, uint16_t data) +{ outw(INDEX, index); outw(DATA, data); } -static uint16_t read(uint16_t value) { +static uint16_t read(uint16_t value) +{ outw(INDEX, value); return inw(DATA); } -static int is_available(void) { +static int is_available(void) +{ return (read(INDEX_ID) == 0xB0C5); } -static 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); write(INDEX_BPP, bit_depth); - write(INDEX_ENABLE, DATA_DISP_ENABLE | - (lfb ? DATA_LFB_ENABLE : 0) | - (clear ? 0 : DATA_NO_CLEAR_MEM)); + write(INDEX_ENABLE, DATA_DISP_ENABLE | (lfb ? DATA_LFB_ENABLE : 0) | + (clear ? 0 : DATA_NO_CLEAR_MEM)); } -int bochs_init(void) { - struct pci_device bochs = {0}; - bool found = pci_findby_id(&bochs, BOCHS_PCI_DEVICE, BOCHS_PCI_VENDOR, NULL); +int bochs_init(void) +{ + struct pci_device bochs = { 0 }; + bool found = + pci_findby_id(&bochs, BOCHS_PCI_DEVICE, BOCHS_PCI_VENDOR, NULL); if (!found) return 1; @@ -70,7 +76,7 @@ int bochs_init(void) { return 1; uint32_t bar0 = pci_rcfg_d(bochs, PCI_BAR0_D); - uint32_t *addr = (uint32_t *) (uintptr_t) bar0; + uint32_t *addr = (uint32_t *)(uintptr_t)bar0; framebuffer = kmapaddr(addr, NULL, width * height * bit_depth, F_WRITEABLE); return 0; diff --git a/kernel/include/comus/drivers/gpu/bochs.h b/kernel/include/comus/drivers/gpu/bochs.h index 5933a3a..31aa740 100644 --- a/kernel/include/comus/drivers/gpu/bochs.h +++ b/kernel/include/comus/drivers/gpu/bochs.h @@ -35,6 +35,7 @@ uint8_t bochs_bit_depth(void); /** * Sets the pixel at a given position */ -void bochs_set_pixel(uint32_t x, uint32_t y, uint32_t r, uint32_t g, uint32_t b); +void bochs_set_pixel(uint32_t x, uint32_t y, uint32_t r, uint32_t g, + uint32_t b); #endif /* bochs.h */ diff --git a/kernel/include/comus/term.h b/kernel/include/comus/term.h index 2d39915..6ac77e4 100644 --- a/kernel/include/comus/term.h +++ b/kernel/include/comus/term.h @@ -80,6 +80,7 @@ void term_scroll(uint16_t lines); /** * Switch terminal handler */ -void term_switch_handler(uint16_t width, uint16_t height, void (*draw_char)(char c, uint16_t x, uint16_t y)); +void term_switch_handler(uint16_t width, uint16_t height, + void (*draw_char)(char c, uint16_t x, uint16_t y)); #endif /* term.h */ diff --git a/kernel/term.c b/kernel/term.c index e40e0fe..101805f 100644 --- a/kernel/term.c +++ b/kernel/term.c @@ -19,7 +19,7 @@ static uint16_t x = 0; static uint16_t y = 0; #define BUFY(y) ((buffer_line + (y)) % TERM_MAX_HEIGHT) -#define BUFIDX(x,y) ((x) + (BUFY(y) * TERM_MAX_WIDTH)) +#define BUFIDX(x, y) ((x) + (BUFY(y) * TERM_MAX_WIDTH)) static void buffer_check(void) { @@ -160,7 +160,8 @@ void term_scroll(uint16_t lines) term_redraw(); } -void term_switch_handler(uint16_t w, uint16_t h, void (*fn)(char c, uint16_t x, uint16_t y)) +void term_switch_handler(uint16_t w, uint16_t h, + void (*fn)(char c, uint16_t x, uint16_t y)) { draw_char = fn; width = w % TERM_MAX_WIDTH; |