summaryrefslogtreecommitdiff
path: root/kernel/drivers/gpu/gop.c
blob: 47da952b836950702caf6e30e75385a6ec9efa5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <lib.h>
#include <comus/asm.h>
#include <comus/drivers/gpu.h>
#include <comus/drivers/gpu/gop.h>
#include <comus/efi.h>
#include <efi.h>

struct gpu gop_dev = { 0 };

static EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;

int gop_init(struct gpu **gpu_dev)
{
	gop = efi_get_gop();
	if (gop == NULL || gop->Mode == NULL)
		return 1;

	gop_dev.name = "GOP";
	gop_dev.width = gop->Mode->Info->HorizontalResolution;
	gop_dev.height = gop->Mode->Info->VerticalResolution;
	gop_dev.bit_depth = 32; // we only allow 8bit color in efi/gop.c
	gop_dev.framebuffer = kmapaddr((void *)gop->Mode->FrameBufferBase, NULL,
								   gop->Mode->FrameBufferSize, F_WRITEABLE);
	*gpu_dev = &gop_dev;

	return 1;
}