diff options
author | Dave Airlie <airlied@redhat.com> | 2022-10-05 10:56:11 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2022-10-05 10:56:11 +1000 |
commit | 6859f8542bea09a184c63e23f4e36ca6f256380a (patch) | |
tree | d738bf89174e085f5c40c5bb6e8c7d7c4d3bebfd /drivers/gpu/drm/tiny/bochs.c | |
parent | 725737e7c21d2d25a4312c2aaa82a52bd03e3126 (diff) | |
parent | 65898687cf7392c372ea8d04a88617e2cb794465 (diff) |
Merge branch 'drm-next' of git://anongit.freedesktop.org/git/drm/drmdrm-next-6.1-merged
Test merge into Linus master.
Diffstat (limited to 'drivers/gpu/drm/tiny/bochs.c')
-rw-r--r-- | drivers/gpu/drm/tiny/bochs.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c index 82364a0a7b18..a51262289aef 100644 --- a/drivers/gpu/drm/tiny/bochs.c +++ b/drivers/gpu/drm/tiny/bochs.c @@ -309,6 +309,8 @@ static void bochs_hw_fini(struct drm_device *dev) static void bochs_hw_blank(struct bochs_device *bochs, bool blank) { DRM_DEBUG_DRIVER("hw_blank %d\n", blank); + /* enable color bit (so VGA_IS1_RC access works) */ + bochs_vga_writeb(bochs, VGA_MIS_W, VGA_MIS_COLOR); /* discard ar_flip_flop */ (void)bochs_vga_readb(bochs, VGA_IS1_RC); /* blank or unblank; we need only update index and set 0x20 */ @@ -583,13 +585,17 @@ static int bochs_load(struct drm_device *dev) ret = drmm_vram_helper_init(dev, bochs->fb_base, bochs->fb_size); if (ret) - return ret; + goto err_hw_fini; ret = bochs_kms_init(bochs); if (ret) - return ret; + goto err_hw_fini; return 0; + +err_hw_fini: + bochs_hw_fini(dev); + return ret; } DEFINE_DRM_GEM_FOPS(bochs_fops); @@ -664,11 +670,13 @@ static int bochs_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent ret = drm_dev_register(dev, 0); if (ret) - goto err_free_dev; + goto err_hw_fini; drm_fbdev_generic_setup(dev, 32); return ret; +err_hw_fini: + bochs_hw_fini(dev); err_free_dev: drm_dev_put(dev); return ret; |