Date: Tuesday, November 22, 2016 @ 05:28:19 Author: lcarlier Revision: 281794
archrelease: copy trunk to staging-i686, staging-x86_64 Added: xf86-video-fbdev/repos/staging-i686/ xf86-video-fbdev/repos/staging-i686/PKGBUILD (from rev 281793, xf86-video-fbdev/trunk/PKGBUILD) xf86-video-fbdev/repos/staging-i686/git-fixes.patch (from rev 281793, xf86-video-fbdev/trunk/git-fixes.patch) xf86-video-fbdev/repos/staging-x86_64/ xf86-video-fbdev/repos/staging-x86_64/PKGBUILD (from rev 281793, xf86-video-fbdev/trunk/PKGBUILD) xf86-video-fbdev/repos/staging-x86_64/git-fixes.patch (from rev 281793, xf86-video-fbdev/trunk/git-fixes.patch) --------------------------------+ staging-i686/PKGBUILD | 36 ++++ staging-i686/git-fixes.patch | 307 +++++++++++++++++++++++++++++++++++++++ staging-x86_64/PKGBUILD | 36 ++++ staging-x86_64/git-fixes.patch | 307 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 686 insertions(+) Copied: xf86-video-fbdev/repos/staging-i686/PKGBUILD (from rev 281793, xf86-video-fbdev/trunk/PKGBUILD) =================================================================== --- staging-i686/PKGBUILD (rev 0) +++ staging-i686/PKGBUILD 2016-11-22 05:28:19 UTC (rev 281794) @@ -0,0 +1,36 @@ +# $Id$ +#Maintainer: Jan de Groot <j...@archlinux.org> + +pkgname=xf86-video-fbdev +pkgver=0.4.4 +pkgrel=6 +pkgdesc="X.org framebuffer video driver" +arch=(i686 x86_64) +license=('custom') +url="https://xorg.freedesktop.org/" +depends=('glibc') +makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=23') +conflicts=('xorg-server<1.19' 'X-ABI-VIDEODRV_VERSION<23' 'X-ABI-VIDEODRV_VERSION>=24') +groups=('xorg-drivers') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + git-fixes.patch) +sha256sums=('9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b' + 'cbf66effa928b57610eb85441bc81dda337f03a1a8de37aa63eea78501dd072c') + +prepare() { + cd ${pkgname}-${pkgver} + patch -Np1 -i ../git-fixes.patch +} + +build() { + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr + make +} + +package() { + cd ${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} Copied: xf86-video-fbdev/repos/staging-i686/git-fixes.patch (from rev 281793, xf86-video-fbdev/trunk/git-fixes.patch) =================================================================== --- staging-i686/git-fixes.patch (rev 0) +++ staging-i686/git-fixes.patch 2016-11-22 05:28:19 UTC (rev 281794) @@ -0,0 +1,307 @@ +From dd1cf1028c3f0de77d075c4a169011518baab0f4 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Fri, 21 Mar 2014 12:20:01 -0400 +Subject: [PATCH 1/4] Default to 32bpp if the console is 8bpp (and we weren't + told otherwise) + +You can still override this on the command line or in the config file. +Without this we'll come up at 8bpp on matroxfb (and probably others), +which among other things breaks the default desktop since gnome-shell +wants GLX and GLX doesn't support pseudocolor anymore. + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/src/fbdev.c b/src/fbdev.c +index f5a7378..a73565f 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -38,6 +38,9 @@ + #include <pciaccess.h> + #endif + ++/* for xf86{Depth,FbBpp}. i am a terrible person, and i am sorry. */ ++#include "xf86Priv.h" ++ + static Bool debug = 0; + + #define TRACE_ENTER(str) \ +@@ -427,6 +430,29 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev"))) + return FALSE; + default_depth = fbdevHWGetDepth(pScrn,&fbbpp); ++ ++ if (default_depth == 8) do { ++ /* trust the command line */ ++ if (xf86FbBpp > 0 || xf86Depth > 0) ++ break; ++ ++ /* trust the config file's Screen stanza */ ++ if (pScrn->confScreen->defaultfbbpp > 0 || ++ pScrn->confScreen->defaultdepth > 0) ++ break; ++ ++ /* trust our Device stanza in the config file */ ++ if (xf86FindOption(fPtr->pEnt->device->options, "DefaultDepth") || ++ xf86FindOption(fPtr->pEnt->device->options, "DefaultFbBpp")) ++ break; ++ ++ /* otherwise, lol no */ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Console is 8bpp, defaulting to 32bpp\n"); ++ default_depth = 24; ++ fbbpp = 32; ++ } while (0); ++ + if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp, + Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32)) + return FALSE; +-- +2.10.2 + + +From 2673e727063fe28310836f1e6e9eda552930218a Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Wed, 21 May 2014 09:49:56 -0400 +Subject: [PATCH 2/4] Use own thunk functions instead of fbdevHW*Weak + +I plan to remove the Weak functions from a future server. + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 71 insertions(+), 15 deletions(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index a73565f..5e38da4 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -233,6 +233,35 @@ FBDevIdentify(int flags) + xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets); + } + ++static Bool ++fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode) ++{ ++ return fbdevHWSwitchMode(pScrn, mode); ++} ++ ++static void ++fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y) ++{ ++ fbdevHWAdjustFrame(pScrn, x, y); ++} ++ ++static Bool ++fbdevEnterVT(ScrnInfoPtr pScrn) ++{ ++ return fbdevHWEnterVT(pScrn); ++} ++ ++static void ++fbdevLeaveVT(ScrnInfoPtr pScrn) ++{ ++ fbdevHWLeaveVT(pScrn); ++} ++ ++static ModeStatus ++fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags) ++{ ++ return fbdevHWValidMode(pScrn, mode, verbose, flags); ++} + + #ifdef XSERVER_LIBPCIACCESS + static Bool FBDevPciProbe(DriverPtr drv, int entity_num, +@@ -258,11 +287,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, + "claimed PCI slot %d@%d:%d:%d\n", +@@ -375,11 +404,11 @@ FBDevProbe(DriverPtr drv, int flags) + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "using %s\n", dev ? dev : "default device"); +@@ -632,6 +661,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + return TRUE; + } + ++static void ++fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdateRotatePacked(pScreen, pBuf); ++} ++ ++static void ++fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdatePacked(pScreen, pBuf); ++} + + static Bool + FBDevCreateScreenResources(ScreenPtr pScreen) +@@ -651,7 +691,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) + pPixmap = pScreen->GetScreenPixmap(pScreen); + + if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? +- shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), ++ fbdevUpdateRotatePacked : fbdevUpdatePacked, + FBDevWindowLinear, fPtr->rotate, NULL)) { + return FALSE; + } +@@ -675,6 +715,23 @@ FBDevShadowInit(ScreenPtr pScreen) + return TRUE; + } + ++static void ++fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis) ++{ ++ fbdevHWLoadPalette(pScrn, num, i, col, pVis); ++} ++ ++static void ++fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags) ++{ ++ fbdevHWDPMSSet(pScrn, mode, flags); ++} ++ ++static Bool ++fbdevSaveScreen(ScreenPtr pScreen, int mode) ++{ ++ return fbdevHWSaveScreen(pScreen, mode); ++} + + static Bool + FBDevScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -909,13 +966,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + return FALSE; + } + flags = CMAP_PALETTED_TRUECOLOR; +- if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(), +- NULL, flags)) ++ if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags)) + return FALSE; + +- xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0); ++ xf86DPMSInit(pScreen, fbdevDPMSSet, 0); + +- pScreen->SaveScreen = fbdevHWSaveScreenWeak(); ++ pScreen->SaveScreen = fbdevSaveScreen; + + /* Wrap the current CloseScreen function */ + fPtr->CloseScreen = pScreen->CloseScreen; +-- +2.10.2 + + +From ae0aeffae6657464f610da13e7b3349d0d97e81b Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Mon, 11 Aug 2014 12:07:54 -0400 +Subject: [PATCH 3/4] Pass the pci device (if any) through to fbdevhw in probe + and preinit + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index 5e38da4..dcfed28 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -280,7 +280,7 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, + pScrn->entityInstanceList[0]); + + device = xf86FindOptionValue(devSection->options, "fbdev"); +- if (fbdevHWProbe(NULL, device, NULL)) { ++ if (fbdevHWProbe(dev, device, NULL)) { + pScrn->driverVersion = FBDEV_VERSION; + pScrn->driverName = FBDEV_DRIVER_NAME; + pScrn->name = FBDEV_NAME; +@@ -427,6 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + int default_depth, fbbpp; + const char *s; + int type; ++ void *pci_dev; + + if (flags & PROBE_DETECT) return FALSE; + +@@ -454,9 +455,14 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + "xf86RegisterResources() found resource conflicts\n"); + return FALSE; + } ++#else ++ if (fPtr->pEnt->location.type == BUS_PCI) ++ pci_dev = fPtr->pEnt->location.id.pci; + #endif + /* open device */ +- if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev"))) ++ if (!fbdevHWInit(pScrn, pci_dev, ++ xf86FindOptionValue(fPtr->pEnt->device->options, ++ "fbdev"))) + return FALSE; + default_depth = fbdevHWGetDepth(pScrn,&fbbpp); + +-- +2.10.2 + + +From 66e7909bfefd93c05aa37d0cadccc5348f0382be Mon Sep 17 00:00:00 2001 +From: Pascal Terjan <pter...@google.com> +Date: Fri, 22 Jan 2016 00:26:22 +0000 +Subject: [PATCH 4/4] Initialize pci_dev + +Else it is read before initialization if XSERVER_LIBPCIACCESS is not +defined or location.type is not BUS_PCI. + +Noticed when I got a segfault where it was 0x1 while doing some tests on +arm. + +Signed-off-by: Pascal Terjan <pter...@google.com> +Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> +--- + src/fbdev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index dcfed28..2c658fe 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -427,7 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + int default_depth, fbbpp; + const char *s; + int type; +- void *pci_dev; ++ void *pci_dev = NULL; + + if (flags & PROBE_DETECT) return FALSE; + +-- +2.10.2 + Copied: xf86-video-fbdev/repos/staging-x86_64/PKGBUILD (from rev 281793, xf86-video-fbdev/trunk/PKGBUILD) =================================================================== --- staging-x86_64/PKGBUILD (rev 0) +++ staging-x86_64/PKGBUILD 2016-11-22 05:28:19 UTC (rev 281794) @@ -0,0 +1,36 @@ +# $Id$ +#Maintainer: Jan de Groot <j...@archlinux.org> + +pkgname=xf86-video-fbdev +pkgver=0.4.4 +pkgrel=6 +pkgdesc="X.org framebuffer video driver" +arch=(i686 x86_64) +license=('custom') +url="https://xorg.freedesktop.org/" +depends=('glibc') +makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=23') +conflicts=('xorg-server<1.19' 'X-ABI-VIDEODRV_VERSION<23' 'X-ABI-VIDEODRV_VERSION>=24') +groups=('xorg-drivers') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + git-fixes.patch) +sha256sums=('9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b' + 'cbf66effa928b57610eb85441bc81dda337f03a1a8de37aa63eea78501dd072c') + +prepare() { + cd ${pkgname}-${pkgver} + patch -Np1 -i ../git-fixes.patch +} + +build() { + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr + make +} + +package() { + cd ${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} Copied: xf86-video-fbdev/repos/staging-x86_64/git-fixes.patch (from rev 281793, xf86-video-fbdev/trunk/git-fixes.patch) =================================================================== --- staging-x86_64/git-fixes.patch (rev 0) +++ staging-x86_64/git-fixes.patch 2016-11-22 05:28:19 UTC (rev 281794) @@ -0,0 +1,307 @@ +From dd1cf1028c3f0de77d075c4a169011518baab0f4 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Fri, 21 Mar 2014 12:20:01 -0400 +Subject: [PATCH 1/4] Default to 32bpp if the console is 8bpp (and we weren't + told otherwise) + +You can still override this on the command line or in the config file. +Without this we'll come up at 8bpp on matroxfb (and probably others), +which among other things breaks the default desktop since gnome-shell +wants GLX and GLX doesn't support pseudocolor anymore. + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/src/fbdev.c b/src/fbdev.c +index f5a7378..a73565f 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -38,6 +38,9 @@ + #include <pciaccess.h> + #endif + ++/* for xf86{Depth,FbBpp}. i am a terrible person, and i am sorry. */ ++#include "xf86Priv.h" ++ + static Bool debug = 0; + + #define TRACE_ENTER(str) \ +@@ -427,6 +430,29 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev"))) + return FALSE; + default_depth = fbdevHWGetDepth(pScrn,&fbbpp); ++ ++ if (default_depth == 8) do { ++ /* trust the command line */ ++ if (xf86FbBpp > 0 || xf86Depth > 0) ++ break; ++ ++ /* trust the config file's Screen stanza */ ++ if (pScrn->confScreen->defaultfbbpp > 0 || ++ pScrn->confScreen->defaultdepth > 0) ++ break; ++ ++ /* trust our Device stanza in the config file */ ++ if (xf86FindOption(fPtr->pEnt->device->options, "DefaultDepth") || ++ xf86FindOption(fPtr->pEnt->device->options, "DefaultFbBpp")) ++ break; ++ ++ /* otherwise, lol no */ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Console is 8bpp, defaulting to 32bpp\n"); ++ default_depth = 24; ++ fbbpp = 32; ++ } while (0); ++ + if (!xf86SetDepthBpp(pScrn, default_depth, default_depth, fbbpp, + Support24bppFb | Support32bppFb | SupportConvert32to24 | SupportConvert24to32)) + return FALSE; +-- +2.10.2 + + +From 2673e727063fe28310836f1e6e9eda552930218a Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Wed, 21 May 2014 09:49:56 -0400 +Subject: [PATCH 2/4] Use own thunk functions instead of fbdevHW*Weak + +I plan to remove the Weak functions from a future server. + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 71 insertions(+), 15 deletions(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index a73565f..5e38da4 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -233,6 +233,35 @@ FBDevIdentify(int flags) + xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets); + } + ++static Bool ++fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode) ++{ ++ return fbdevHWSwitchMode(pScrn, mode); ++} ++ ++static void ++fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y) ++{ ++ fbdevHWAdjustFrame(pScrn, x, y); ++} ++ ++static Bool ++fbdevEnterVT(ScrnInfoPtr pScrn) ++{ ++ return fbdevHWEnterVT(pScrn); ++} ++ ++static void ++fbdevLeaveVT(ScrnInfoPtr pScrn) ++{ ++ fbdevHWLeaveVT(pScrn); ++} ++ ++static ModeStatus ++fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags) ++{ ++ return fbdevHWValidMode(pScrn, mode, verbose, flags); ++} + + #ifdef XSERVER_LIBPCIACCESS + static Bool FBDevPciProbe(DriverPtr drv, int entity_num, +@@ -258,11 +287,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, + "claimed PCI slot %d@%d:%d:%d\n", +@@ -375,11 +404,11 @@ FBDevProbe(DriverPtr drv, int flags) + pScrn->Probe = FBDevProbe; + pScrn->PreInit = FBDevPreInit; + pScrn->ScreenInit = FBDevScreenInit; +- pScrn->SwitchMode = fbdevHWSwitchModeWeak(); +- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak(); +- pScrn->EnterVT = fbdevHWEnterVTWeak(); +- pScrn->LeaveVT = fbdevHWLeaveVTWeak(); +- pScrn->ValidMode = fbdevHWValidModeWeak(); ++ pScrn->SwitchMode = fbdevSwitchMode; ++ pScrn->AdjustFrame = fbdevAdjustFrame; ++ pScrn->EnterVT = fbdevEnterVT; ++ pScrn->LeaveVT = fbdevLeaveVT; ++ pScrn->ValidMode = fbdevValidMode; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "using %s\n", dev ? dev : "default device"); +@@ -632,6 +661,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + return TRUE; + } + ++static void ++fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdateRotatePacked(pScreen, pBuf); ++} ++ ++static void ++fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf) ++{ ++ shadowUpdatePacked(pScreen, pBuf); ++} + + static Bool + FBDevCreateScreenResources(ScreenPtr pScreen) +@@ -651,7 +691,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen) + pPixmap = pScreen->GetScreenPixmap(pScreen); + + if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ? +- shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), ++ fbdevUpdateRotatePacked : fbdevUpdatePacked, + FBDevWindowLinear, fPtr->rotate, NULL)) { + return FALSE; + } +@@ -675,6 +715,23 @@ FBDevShadowInit(ScreenPtr pScreen) + return TRUE; + } + ++static void ++fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis) ++{ ++ fbdevHWLoadPalette(pScrn, num, i, col, pVis); ++} ++ ++static void ++fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags) ++{ ++ fbdevHWDPMSSet(pScrn, mode, flags); ++} ++ ++static Bool ++fbdevSaveScreen(ScreenPtr pScreen, int mode) ++{ ++ return fbdevHWSaveScreen(pScreen, mode); ++} + + static Bool + FBDevScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -909,13 +966,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + return FALSE; + } + flags = CMAP_PALETTED_TRUECOLOR; +- if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(), +- NULL, flags)) ++ if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags)) + return FALSE; + +- xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0); ++ xf86DPMSInit(pScreen, fbdevDPMSSet, 0); + +- pScreen->SaveScreen = fbdevHWSaveScreenWeak(); ++ pScreen->SaveScreen = fbdevSaveScreen; + + /* Wrap the current CloseScreen function */ + fPtr->CloseScreen = pScreen->CloseScreen; +-- +2.10.2 + + +From ae0aeffae6657464f610da13e7b3349d0d97e81b Mon Sep 17 00:00:00 2001 +From: Adam Jackson <a...@redhat.com> +Date: Mon, 11 Aug 2014 12:07:54 -0400 +Subject: [PATCH 3/4] Pass the pci device (if any) through to fbdevhw in probe + and preinit + +Signed-off-by: Adam Jackson <a...@redhat.com> +--- + src/fbdev.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index 5e38da4..dcfed28 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -280,7 +280,7 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num, + pScrn->entityInstanceList[0]); + + device = xf86FindOptionValue(devSection->options, "fbdev"); +- if (fbdevHWProbe(NULL, device, NULL)) { ++ if (fbdevHWProbe(dev, device, NULL)) { + pScrn->driverVersion = FBDEV_VERSION; + pScrn->driverName = FBDEV_DRIVER_NAME; + pScrn->name = FBDEV_NAME; +@@ -427,6 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + int default_depth, fbbpp; + const char *s; + int type; ++ void *pci_dev; + + if (flags & PROBE_DETECT) return FALSE; + +@@ -454,9 +455,14 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + "xf86RegisterResources() found resource conflicts\n"); + return FALSE; + } ++#else ++ if (fPtr->pEnt->location.type == BUS_PCI) ++ pci_dev = fPtr->pEnt->location.id.pci; + #endif + /* open device */ +- if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(fPtr->pEnt->device->options,"fbdev"))) ++ if (!fbdevHWInit(pScrn, pci_dev, ++ xf86FindOptionValue(fPtr->pEnt->device->options, ++ "fbdev"))) + return FALSE; + default_depth = fbdevHWGetDepth(pScrn,&fbbpp); + +-- +2.10.2 + + +From 66e7909bfefd93c05aa37d0cadccc5348f0382be Mon Sep 17 00:00:00 2001 +From: Pascal Terjan <pter...@google.com> +Date: Fri, 22 Jan 2016 00:26:22 +0000 +Subject: [PATCH 4/4] Initialize pci_dev + +Else it is read before initialization if XSERVER_LIBPCIACCESS is not +defined or location.type is not BUS_PCI. + +Noticed when I got a segfault where it was 0x1 while doing some tests on +arm. + +Signed-off-by: Pascal Terjan <pter...@google.com> +Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> +--- + src/fbdev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fbdev.c b/src/fbdev.c +index dcfed28..2c658fe 100644 +--- a/src/fbdev.c ++++ b/src/fbdev.c +@@ -427,7 +427,7 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags) + int default_depth, fbbpp; + const char *s; + int type; +- void *pci_dev; ++ void *pci_dev = NULL; + + if (flags & PROBE_DETECT) return FALSE; + +-- +2.10.2 +