dev: start implementing framebuffer devices

This commit is contained in:
2023-06-06 22:01:17 +01:00
parent 81533a1cff
commit cb220452db
7 changed files with 177 additions and 13 deletions

View File

@@ -0,0 +1,8 @@
name: vgafb
description: |
Generic VGA driver.
id: net.doorstuck.socks.vgafb
license: BSD-3-Clause
copyright: Copyright © Max Wash 2023
sources:
- main.c

View File

@@ -0,0 +1,36 @@
#include <socks/printk.h>
#include <socks/device.h>
#include <socks/kext.h>
#include <socks/libc/stdio.h>
static struct driver *vga_driver = NULL;
static struct framebuffer_device *vgafb = NULL;
static kern_status_t online(struct kext *self)
{
vga_driver = driver_create(self, "vgafb");
if (!vga_driver) {
return KERN_NO_MEMORY;
}
driver_register(vga_driver);
struct framebuffer_device *fb = framebuffer_device_create();
struct device *fb_base = framebuffer_device_base(fb);
snprintf(fb_base->dev_name, sizeof fb_base->dev_name, "vgafb");
kern_status_t status = device_register(fb_base, vga_driver, misc_device());
if (status != KERN_OK) {
driver_unregister(vga_driver);
driver_destroy(vga_driver);
return status;
}
vgafb = fb;
return KERN_OK;
}
DEFINE_KEXT("net.doorstuck.socks.vgafb",
online, NULL,
KEXT_NO_DEPENDENCIES);