diff --git a/vmwgfx_drv.c b/vmwgfx_drv.c index d37714c..1438f77 100644 --- a/vmwgfx_drv.c +++ b/vmwgfx_drv.c @@ -231,6 +231,8 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) dev_priv->mmio_size = vmw_read(dev_priv, SVGA_REG_MEM_SIZE); dev_priv->fb_max_width = vmw_read(dev_priv, SVGA_REG_MAX_WIDTH); dev_priv->fb_max_height = vmw_read(dev_priv, SVGA_REG_MAX_HEIGHT); + if (dev_priv->mmio_start == 0) + dev_priv->mmio_start = vmw_read(dev_priv, SVGA_REG_MEM_START); mutex_unlock(&dev_priv->hw_mutex); @@ -307,7 +309,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) ret = drm_irq_install(dev); if (unlikely(ret != 0)) { DRM_ERROR("Failed installing irq: %d\n", ret); - goto out_no_irq; + // goto out_no_irq; } ret = pci_request_regions(dev->pdev, "vmwgfx probe"); diff --git a/vmwgfx_fb.c b/vmwgfx_fb.c index 4dfdf7c..b4ff7dd 100644 --- a/vmwgfx_fb.c +++ b/vmwgfx_fb.c @@ -187,6 +187,7 @@ static int vmw_fb_set_par(struct fb_info *info) } else { vmw_write(vmw_priv, SVGA_REG_WIDTH, info->var.xres); vmw_write(vmw_priv, SVGA_REG_HEIGHT, info->var.yres); + vmw_write(vmw_priv, SVGA_REG_ENABLE, 1); /* TODO check if pitch and offset changes */ } @@ -440,7 +441,8 @@ int vmw_fb_init(struct vmw_private *vmw_priv) vmw_write(vmw_priv, SVGA_REG_WIDTH, fb_width); vmw_write(vmw_priv, SVGA_REG_HEIGHT, fb_height); vmw_write(vmw_priv, SVGA_REG_BITS_PER_PIXEL, fb_bbp); - vmw_write(vmw_priv, SVGA_REG_DEPTH, fb_depth); + vmw_write(vmw_priv, SVGA_REG_DEPTH, 32); + vmw_write(vmw_priv, SVGA_REG_ENABLE, 1); vmw_write(vmw_priv, SVGA_REG_RED_MASK, 0x00ff0000); vmw_write(vmw_priv, SVGA_REG_GREEN_MASK, 0x0000ff00); vmw_write(vmw_priv, SVGA_REG_BLUE_MASK, 0x000000ff);