kexts: qemufb: update fb_baseptr in qemu_set_varinfo
This commit is contained in:
@@ -32,6 +32,7 @@ static inline uint16_t dispi_mmio_offset(int index)
|
|||||||
|
|
||||||
static kern_status_t qemufb_set_varinfo(struct device *dev, const struct framebuffer_varinfo *varinfo)
|
static kern_status_t qemufb_set_varinfo(struct device *dev, const struct framebuffer_varinfo *varinfo)
|
||||||
{
|
{
|
||||||
|
struct framebuffer_device *fbdev = FRAMEBUFFER_DEVICE(dev);
|
||||||
uint32_t mmio_base = pci_device_read_field(dev, PCI_REG_BAR2, 4);
|
uint32_t mmio_base = pci_device_read_field(dev, PCI_REG_BAR2, 4);
|
||||||
uint16_t *mmio = vm_phys_to_virt(mmio_base);
|
uint16_t *mmio = vm_phys_to_virt(mmio_base);
|
||||||
|
|
||||||
@@ -47,6 +48,8 @@ static kern_status_t qemufb_set_varinfo(struct device *dev, const struct framebu
|
|||||||
return KERN_UNSUPPORTED;
|
return KERN_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fbdev->fb_fixedinfo.fb_baseptr = pci_device_read_field(dev, PCI_REG_BAR0, 4) & ~(VM_PAGE_SIZE - 1);
|
||||||
|
|
||||||
return KERN_OK;
|
return KERN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +75,8 @@ static kern_status_t qemufb_probe(struct pci_driver *driver, struct device *dev)
|
|||||||
varinfo->fb_xres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_XRES)];
|
varinfo->fb_xres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_XRES)];
|
||||||
varinfo->fb_yres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_YRES)];
|
varinfo->fb_yres = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_YRES)];
|
||||||
varinfo->fb_bpp = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_BPP)];
|
varinfo->fb_bpp = mmio[dispi_mmio_offset(VBE_DISPI_INDEX_BPP)];
|
||||||
fixedinfo->fb_baseptr = pci_device_read_field(dev, PCI_REG_BAR0, 4);
|
varinfo->fb_stride = varinfo->fb_bpp / 8;
|
||||||
|
fixedinfo->fb_baseptr = pci_device_read_field(dev, PCI_REG_BAR0, 4) & (VM_PAGE_SIZE - 1);
|
||||||
|
|
||||||
if (!varinfo->fb_xres) {
|
if (!varinfo->fb_xres) {
|
||||||
/* no mode data. assume that we're in VGA text mode */
|
/* no mode data. assume that we're in VGA text mode */
|
||||||
|
|||||||
Reference in New Issue
Block a user