summaryrefslogtreecommitdiff
path: root/kernel/drivers
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-17 09:26:49 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-17 09:26:49 -0400
commit485c33eb10b4d877632676ee1bd8d8bdef821cfe (patch)
tree48dbeedfa846c633c7f93ffb368a07e09f4dee1b /kernel/drivers
parentfont rending in framebuffer yay!! (diff)
downloadcomus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.gz
comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.tar.bz2
comus-485c33eb10b4d877632676ee1bd8d8bdef821cfe.zip
fmt
Diffstat (limited to 'kernel/drivers')
-rw-r--r--kernel/drivers/gpu.c4
-rw-r--r--kernel/drivers/gpu/bochs.c64
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;