diff options
author | Tiago Vignatti <tiago.vignatti@nokia.com> | 2010-05-12 13:03:14 +0300 |
---|---|---|
committer | Tiago Vignatti <tiago.vignatti@nokia.com> | 2010-08-26 18:17:12 +0300 |
commit | 65466652936bbb2706be455d0a416bcf08e88f66 (patch) | |
tree | 23c01650d7d147d72b67d2ae40cefadbbeacb9fd | |
parent | 7fbf3e7cf4b261194faad747e0bf59d528df6d91 (diff) |
xfree86: vgaarb: fix device decoding interface to send resources type properly
Right now, when there is more than one vide card on the machine, we're
adopting a pessimistic approach and setting all cards to decode VGA legacy
address.
Some cards may want to skip the arbitration and the only way to do so is
through pci_device_vgaarb_decodes. Therefore, send the desired kind of
resource instead force the worst case.
Note that xf86VGAarbiterDeviceDecodes is not being used so far by any
open-source driver. Even so, API break.
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
-rw-r--r-- | hw/xfree86/common/xf86VGAarbiter.c | 5 | ||||
-rw-r--r-- | hw/xfree86/common/xf86VGAarbiter.h | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c index 9c03bcf87..4f46059c3 100644 --- a/hw/xfree86/common/xf86VGAarbiter.c +++ b/hw/xfree86/common/xf86VGAarbiter.c @@ -138,11 +138,12 @@ xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn) } void -xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn) +xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc) { if (vga_no_arb) return; - pci_device_vgaarb_decodes(VGA_ARB_RSRC_LEGACY_MEM | VGA_ARB_RSRC_LEGACY_IO); + pci_device_vgaarb_set_target(pScrn->vgaDev); + pci_device_vgaarb_decodes(rsrc); } Bool diff --git a/hw/xfree86/common/xf86VGAarbiter.h b/hw/xfree86/common/xf86VGAarbiter.h index 904b6b079..de104a914 100644 --- a/hw/xfree86/common/xf86VGAarbiter.h +++ b/hw/xfree86/common/xf86VGAarbiter.h @@ -40,7 +40,7 @@ extern void xf86VGAarbiterUnlock(ScrnInfoPtr pScrn); /* allow a driver to remove itself from arbiter - really should be * done in the kernel though */ -extern _X_EXPORT void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn); +extern _X_EXPORT void xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc); /* DRI and arbiter are really not possible together, * you really want to remove the card from arbitration if you can */ extern _X_EXPORT Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen); |