xfree86: Make adding unclaimed devices as GPU devices a separate step
This is primarily a preparation patch for fixing the xserver exiting with a "no screens found" error even though there are supported video cards, due to the server not recognizing any card as the primary card. This also fixes the (mostly theoretical) case of a platformBus capable driver adding a device as GPUscreen before a driver which only supports the old PCI probe method gets a chance to claim it as a normal screen. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
b72d161cad
commit
7121b03d32
|
@ -125,6 +125,10 @@ xf86BusConfig(void)
|
||||||
xf86CallDriverProbe(xf86DriverList[i], FALSE);
|
xf86CallDriverProbe(xf86DriverList[i], FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < xf86NumDrivers; i++) {
|
||||||
|
xf86platformAddGPUDevices(xf86DriverList[i]);
|
||||||
|
}
|
||||||
|
|
||||||
/* If nothing was detected, return now */
|
/* If nothing was detected, return now */
|
||||||
if (xf86NumScreens == 0) {
|
if (xf86NumScreens == 0) {
|
||||||
xf86Msg(X_ERROR, "No devices detected.\n");
|
xf86Msg(X_ERROR, "No devices detected.\n");
|
||||||
|
|
|
@ -475,6 +475,21 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||||
isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0);
|
isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return foundScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
xf86platformAddGPUDevices(DriverPtr drvp)
|
||||||
|
{
|
||||||
|
Bool foundScreen = FALSE;
|
||||||
|
GDevPtr *devList;
|
||||||
|
int j;
|
||||||
|
|
||||||
|
if (!drvp->platformProbe)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
xf86MatchDevice(drvp->driverName, &devList);
|
||||||
|
|
||||||
/* if autoaddgpu devices is enabled then go find any unclaimed platform
|
/* if autoaddgpu devices is enabled then go find any unclaimed platform
|
||||||
* devices and add them as GPU screens */
|
* devices and add them as GPU screens */
|
||||||
if (xf86Info.autoAddGPU) {
|
if (xf86Info.autoAddGPU) {
|
||||||
|
|
|
@ -41,6 +41,7 @@ struct xf86_platform_device {
|
||||||
#ifdef XSERVER_PLATFORM_BUS
|
#ifdef XSERVER_PLATFORM_BUS
|
||||||
int xf86platformProbe(void);
|
int xf86platformProbe(void);
|
||||||
int xf86platformProbeDev(DriverPtr drvp);
|
int xf86platformProbeDev(DriverPtr drvp);
|
||||||
|
int xf86platformAddGPUDevices(DriverPtr drvp);
|
||||||
|
|
||||||
extern int xf86_num_platform_devices;
|
extern int xf86_num_platform_devices;
|
||||||
extern struct xf86_platform_device *xf86_platform_devices;
|
extern struct xf86_platform_device *xf86_platform_devices;
|
||||||
|
@ -156,6 +157,11 @@ xf86PlatformMatchDriver(char *matches[], int nmatches);
|
||||||
|
|
||||||
extern void xf86platformVTProbe(void);
|
extern void xf86platformVTProbe(void);
|
||||||
extern void xf86platformPrimary(void);
|
extern void xf86platformPrimary(void);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue