Give the DDX a way to know whether non-pci platform devices are completely broken or not. For xserver prior to the fix, the DDX should not claim a platform device in platformProbe(), as the server will fallback to old ->Probe(), which will fail if the device is already claimed. Meaning that a user could not make things work even with a .conf file to explicitly specify the driver to use.
Idea suggested by Hans de Goede. Signed-off-by: Rob Clark <[email protected]> Reviewed-by: Hans de Goede <[email protected]> --- hw/xfree86/common/xf86Init.c | 10 +++++++++- hw/xfree86/common/xf86str.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index 5a45004..9b6a8b5 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -546,10 +546,18 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) if (xf86DriverList[i]->Identify != NULL) xf86DriverList[i]->Identify(0); - if (xf86DriverList[i]->driverFunc) + if (xf86DriverList[i]->driverFunc) { xf86DriverList[i]->driverFunc(NULL, GET_REQUIRED_HW_INTERFACES, &flags); + /* also let the driver know that it is safe to + * allow platformProbe() to claim the device + * if it is a non-pci platform device: + */ + xf86DriverList[i]->driverFunc(NULL, + SERVER_SUPPORTS_NON_PCI_PLATFORM_DEVS, + NULL); + } if (NEED_IO_ENABLED(flags)) want_hw_access = TRUE; diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h index a81e886..6f27f18 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h @@ -258,6 +258,7 @@ typedef enum { RR_GET_MODE_MM, GET_REQUIRED_HW_INTERFACES = 10, SUPPORTS_SERVER_FDS = 11, + SERVER_SUPPORTS_NON_PCI_PLATFORM_DEVS = 12, } xorgDriverFuncOp; typedef Bool xorgDriverFuncProc(ScrnInfoPtr, xorgDriverFuncOp, void *); -- 1.9.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
