diff options
author | Dave Airlie <airlied@redhat.com> | 2011-10-05 15:12:43 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-02-16 18:41:22 +0000 |
commit | ce7b289ab19e7838a20208a345929589c7b752dc (patch) | |
tree | ba23cf426d46a793beae091cc214fba50ede0fbc | |
parent | cc00491b3eca16b2e2bdb48fa3d8e5ffba7a9671 (diff) |
fixup device open
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/driver.c | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/driver.c b/src/driver.c index 7060d37..03aa027 100644 --- a/src/driver.c +++ b/src/driver.c @@ -379,7 +379,7 @@ PreInit(ScrnInfoPtr pScrn, int flags) rgb defaultWeight = { 0, 0, 0 }; EntityInfoPtr pEnt; EntPtr msEnt = NULL; - char *BusID; + char *BusID, *devicename; if (pScrn->numEntities != 1) return FALSE; @@ -421,22 +421,6 @@ PreInit(ScrnInfoPtr pScrn, int flags) } } - BusID = malloc(64); - sprintf(BusID, "PCI:%d:%d:%d", -#if XSERVER_LIBPCIACCESS - ((ms->PciInfo->domain << 8) | ms->PciInfo->bus), - ms->PciInfo->dev, ms->PciInfo->func -#else - ((pciConfigPtr) ms->PciInfo->thisCard)->busnum, - ((pciConfigPtr) ms->PciInfo->thisCard)->devnum, - ((pciConfigPtr) ms->PciInfo->thisCard)->funcnum -#endif - ); - - ms->fd = drmOpen(NULL, BusID); - if (ms->fd < 0) - return FALSE; - pScrn->monitor = pScrn->confScreen->monitor; pScrn->progClock = TRUE; pScrn->rgbBits = 8; @@ -459,11 +443,6 @@ PreInit(ScrnInfoPtr pScrn, int flags) } xf86PrintDepthBpp(pScrn); - if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) - return FALSE; - if (!xf86SetDefaultVisual(pScrn, -1)) - return FALSE; - /* Process the options */ xf86CollectOptions(pScrn, NULL); if (!(ms->Options = malloc(sizeof(Options)))) @@ -471,6 +450,35 @@ PreInit(ScrnInfoPtr pScrn, int flags) memcpy(ms->Options, Options, sizeof(Options)); xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, ms->Options); + devicename = xf86GetOptValString(ms->Options, OPTION_DEVICE_PATH); + if (!devicename) { + BusID = malloc(64); + sprintf(BusID, "PCI:%d:%d:%d", +#if XSERVER_LIBPCIACCESS + ((ms->PciInfo->domain << 8) | ms->PciInfo->bus), + ms->PciInfo->dev, ms->PciInfo->func +#else + ((pciConfigPtr) ms->PciInfo->thisCard)->busnum, + ((pciConfigPtr) ms->PciInfo->thisCard)->devnum, + ((pciConfigPtr) ms->PciInfo->thisCard)->funcnum +#endif + ); + + ms->fd = drmOpen(NULL, BusID); + } else { + ms->fd = open(devicename, O_RDWR, 0); + } + if (ms->fd < 0) + return FALSE; + + + + + if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) + return FALSE; + if (!xf86SetDefaultVisual(pScrn, -1)) + return FALSE; + if (xf86ReturnOptValBool(ms->Options, OPTION_SW_CURSOR, FALSE)) { ms->SWCursor = TRUE; } |