kexts: fbcon: implement VGA text mode tty driver
This commit is contained in:
@@ -62,6 +62,30 @@ static kern_status_t qemufb_probe(struct pci_driver *driver, struct device *dev)
|
||||
|
||||
fb->fb_ops = &qemufb_ops;
|
||||
|
||||
uint32_t mmio_base = pci_device_read_field(dev, PCI_REG_BAR2, 4);
|
||||
uint16_t *mmio = vm_phys_to_virt(mmio_base);
|
||||
|
||||
struct framebuffer_varinfo *varinfo = &fb->fb_varinfo;
|
||||
struct framebuffer_fixedinfo *fixedinfo = &fb->fb_fixedinfo;
|
||||
|
||||
varinfo->fb_flags = FB_MODE_RGB;
|
||||
varinfo->fb_xres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_XRES)];
|
||||
varinfo->fb_yres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_YRES)];
|
||||
varinfo->fb_bpp = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_BPP)];
|
||||
fixedinfo->fb_baseptr = pci_device_read_field(dev, PCI_REG_BAR0, 4);
|
||||
|
||||
if (!varinfo->fb_xres) {
|
||||
/* no mode data. assume that we're in VGA text mode */
|
||||
varinfo->fb_xres = 640;
|
||||
varinfo->fb_yres = 400;
|
||||
varinfo->fb_bpp = 16;
|
||||
varinfo->fb_flags = FB_MODE_VGATEXT;
|
||||
varinfo->fb_xcells = 80;
|
||||
varinfo->fb_ycells = 25;
|
||||
varinfo->fb_stride = 80 * 25 * 2;
|
||||
fixedinfo->fb_baseptr = 0xb8000;
|
||||
}
|
||||
|
||||
return device_register(dev, pci_driver_base(qemufb_driver), NULL);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user