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/drivers | |
parent | font rending in framebuffer yay!! (diff) | |
download | comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.gz comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.bz2 comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.zip |
fmt
Diffstat (limited to 'kernel/drivers')
-rw-r--r-- | kernel/drivers/gpu.c | 4 | ||||
-rw-r--r-- | kernel/drivers/gpu/bochs.c | 64 |
2 files changed, 36 insertions, 32 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; |