From da5336648a1bc4a48bbcb8c2cc179ab962605cf0 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 19 Jun 2013 12:55:37 -0600 Subject: [PATCH] alarm/xf86-video-omapfb to 0.1.1.1-5 --- ...ge-CRTC-upper-limit-to-not-prune-lar.patch | 41 +++ ...al-size-when-configuring-framebuffer.patch | 32 ++ .../0003-force-plain-mode.patch | 31 ++ .../0004-blacklist-tv-out.patch | 33 ++ .../0005-Attempt-to-fix-VRFB.patch | 325 ++++++++++++++++++ ...mapfb-port-to-new-xserver-video-API.patch} | 64 ++-- alarm/xf86-video-omapfb/PKGBUILD | 28 +- 7 files changed, 528 insertions(+), 26 deletions(-) create mode 100644 alarm/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch create mode 100644 alarm/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch create mode 100644 alarm/xf86-video-omapfb/0003-force-plain-mode.patch create mode 100644 alarm/xf86-video-omapfb/0004-blacklist-tv-out.patch create mode 100644 alarm/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch rename alarm/xf86-video-omapfb/{xorg-api.patch => 0006-omapfb-port-to-new-xserver-video-API.patch} (80%) diff --git a/alarm/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch b/alarm/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch new file mode 100644 index 000000000..9fb01d438 --- /dev/null +++ b/alarm/xf86-video-omapfb/0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch @@ -0,0 +1,41 @@ +From 8fb7d0f99d4afbb574b30cb4f1e66a8f89d94ad5 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 26 Jan 2011 12:04:36 +0100 +Subject: [PATCH 1/6] Revert "Set a large CRTC upper limit to not prune larger + resolutions" + +Picture is garbled after switching resolutions, so revert it. +Virtual size too big, revert the commit 9c4d7592dcb7dc20a48a6f941d9d94bd73d34153. + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + src/omapfb-crtc.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c +index 9aaa52f..cbeff35 100644 +--- a/src/omapfb-crtc.c ++++ b/src/omapfb-crtc.c +@@ -190,13 +190,13 @@ OMAPFBCRTCInit(ScrnInfoPtr pScrn) + * In practise, this doesn't seem to be supported. + * (no way to setup the overlay offset/base address) + */ +- /* FIXME: figure out what makes sense here. A known max resolution? +- * framebuffer size? +- */ + xf86CrtcSetSizeRange(pScrn, +- 8, 8, 2048, 2048); ++ 8, 8, ++ ofb->state_info.xres_virtual, ++ ofb->state_info.yres_virtual); + + ofb->crtc = xf86CrtcCreate(pScrn, &OMAPFBCrtcFuncs); ++ + } + + +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch b/alarm/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch new file mode 100644 index 000000000..683a98983 --- /dev/null +++ b/alarm/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch @@ -0,0 +1,32 @@ +From 855c333ac0d16350f895f1d1b9391e9cbb0b6db4 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 26 Jan 2011 13:27:20 +0100 +Subject: [PATCH 2/6] Revert "Set virtual size when configuring framebuffer" + +Virtual size too big, so revert it. + +This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a. + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + src/omapfb-crtc.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c +index cbeff35..9655db2 100644 +--- a/src/omapfb-crtc.c ++++ b/src/omapfb-crtc.c +@@ -98,8 +98,6 @@ OMAPFBCrtcCommitChangeMode (xf86CrtcPtr crtc) + v = ofb->state_info; + v.xres = mode->HDisplay; + v.yres = mode->VDisplay; +- v.xres_virtual = crtc->scrn->virtualX; +- v.yres_virtual = crtc->scrn->virtualY; + v.activate = FB_ACTIVATE_NOW; + v.pixclock = KHZ2PICOS(mode->Clock ? mode->Clock : 56000); + v.left_margin = mode->HTotal - mode->HSyncEnd; +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/0003-force-plain-mode.patch b/alarm/xf86-video-omapfb/0003-force-plain-mode.patch new file mode 100644 index 000000000..67ea7c1a5 --- /dev/null +++ b/alarm/xf86-video-omapfb/0003-force-plain-mode.patch @@ -0,0 +1,31 @@ +From 252f44c072d3447a32127fc9afe5d0d40f3c510e Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 26 Jan 2011 13:20:20 +0100 +Subject: [PATCH 3/6] force 'plain' mode + +The new DSS mode breaks XV, so force plain mode + +Upstream-Status: Pending + +Signed-off-by: Koen Kooi +Signed-off-by: Martin Jansa +--- + src/omapfb-driver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c +index 018e040..48aa09c 100644 +--- a/src/omapfb-driver.c ++++ b/src/omapfb-driver.c +@@ -326,7 +326,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) + OMAPFBProbeController(ofb->ctrl_name); + + /* Do we have the DSS kernel API? */ +- if (stat(SYSFS_DSS_DIR, &st) == 0) { ++ if (0) { //stat(SYSFS_DSS_DIR, &st) == 0) { + ofb->dss = TRUE; + } else { + ofb->dss = FALSE; +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/0004-blacklist-tv-out.patch b/alarm/xf86-video-omapfb/0004-blacklist-tv-out.patch new file mode 100644 index 000000000..b0ac9a44c --- /dev/null +++ b/alarm/xf86-video-omapfb/0004-blacklist-tv-out.patch @@ -0,0 +1,33 @@ +From cfa46b67f59115f6d8ef9414af60380749ff3eb3 Mon Sep 17 00:00:00 2001 +From: Koen Kooi +Date: Wed, 26 Jan 2011 13:21:12 +0100 +Subject: [PATCH 4/6] blacklist tv out + +The tv-out gets added last and the driver tries to reconfigure dvi to TV resolutions, which fails. so blacklist it + +Upstream-Status: Pending + +Signed-off-by: Koen Kooi +Signed-off-by: Martin Jansa +--- + src/omapfb-output-dss.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c +index 6cc52de..83cb711 100644 +--- a/src/omapfb-output-dss.c ++++ b/src/omapfb-output-dss.c +@@ -205,6 +205,10 @@ OMAPFBDSSOutputDetect (xf86OutputPtr output) + if(ofb->timings[idx][0] == '\0') + return XF86OutputStatusDisconnected; + ++ // Hack to disable the tv out ++ if (strncmp(output->name, "tv", 2) == 0) ++ return XF86OutputStatusDisconnected; ++ + return XF86OutputStatusConnected; + } + +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch b/alarm/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch new file mode 100644 index 000000000..67b284023 --- /dev/null +++ b/alarm/xf86-video-omapfb/0005-Attempt-to-fix-VRFB.patch @@ -0,0 +1,325 @@ +From 8b1f697a60e35ab82fffdabfaefdb45e9a9df379 Mon Sep 17 00:00:00 2001 +From: Eino-Ville Talvala +Date: Tue, 23 Aug 2011 18:37:01 +0200 +Subject: [PATCH 5/6] Attempt to fix VRFB + +Upstream-Status: Pending + +http://dominion.thruhere.net/git/cgit.cgi/xf86-video-omapfb/commit/?h=koen/fixups&id=6833fc9f795265e4943d248103fbaf3463b515d6 + +Signed-off-by: Sebastian Krzyszkowiak +Signed-off-by: Martin Jansa +--- + src/image-format-conversions.c | 4 +-- + src/image-format-conversions.h | 2 +- + src/omapfb-driver.c | 28 +++++++++++++--- + src/omapfb-xv-blizzard.c | 1 + + src/omapfb-xv-generic.c | 72 +++++++++++++++++++++++++++++++++--------- + src/omapfb-xv.c | 3 ++ + 6 files changed, 88 insertions(+), 22 deletions(-) + +diff --git a/src/image-format-conversions.c b/src/image-format-conversions.c +index dcefa9b..d43427d 100644 +--- a/src/image-format-conversions.c ++++ b/src/image-format-conversions.c +@@ -38,13 +38,13 @@ + #include "image-format-conversions.h" + + /* Basic line-based copy for packed formats */ +-void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest) ++void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest) + { + int i; + int len = w * 2; + for (i = 0; i < h; i++) + { +- memcpy(dest + i * len, src + i * stride, len); ++ memcpy(dest + i * dst_stride, src + i * src_stride, len); + } + } + +diff --git a/src/image-format-conversions.h b/src/image-format-conversions.h +index 584896a..ba7caf2 100644 +--- a/src/image-format-conversions.h ++++ b/src/image-format-conversions.h +@@ -27,7 +27,7 @@ + #include + + /* Basic line-based copy for packed formats */ +-void packed_line_copy(int w, int h, int stride, uint8_t *src, uint8_t *dest); ++void packed_line_copy(int w, int h, int src_stride, int dst_stride, uint8_t *src, uint8_t *dest); + + /* Basic C implementation of YV12/I420 to UYVY conversion */ + void uv12_to_uyvy(int w, int h, int y_pitch, int uv_pitch, uint8_t *y_p, uint8_t *u_p, uint8_t *v_p, uint8_t *dest); +diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c +index 48aa09c..07989f5 100644 +--- a/src/omapfb-driver.c ++++ b/src/omapfb-driver.c +@@ -66,6 +66,7 @@ + #define OMAPFB_VERSION 1000 + #define OMAPFB_DRIVER_NAME "OMAPFB" + #define OMAPFB_NAME "omapfb" ++#define ENFORCE_MODES + + static Bool OMAPFBProbe(DriverPtr drv, int flags); + static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags); +@@ -105,11 +106,13 @@ static SymTabRec OMAPFBChipsets[] = { + typedef enum { + OPTION_ACCELMETHOD, + OPTION_FB, ++ OPTION_ROTATE, + } FBDevOpts; + + static const OptionInfoRec OMAPFBOptions[] = { + { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE }, + { OPTION_FB, "fb", OPTV_STRING, {0}, FALSE }, ++ { OPTION_ROTATE, "rotation", OPTV_STRING, {0}, FALSE }, + { -1, NULL, OPTV_NONE, {0}, FALSE } + }; + +@@ -286,6 +289,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) + { + OMAPFBPtr ofb; + EntityInfoPtr pEnt; ++ char *rotate; + rgb zeros = { 0, 0, 0 }; + struct stat st; + +@@ -379,6 +383,8 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags) + pScrn->progClock = TRUE; + pScrn->chipset = "omapfb"; + ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Rotate test version 0.02\n"); ++ + /* Start with configured virtual size */ + pScrn->virtualX = pScrn->display->virtualX; + pScrn->virtualY = pScrn->display->virtualY; +@@ -496,12 +502,21 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + ofb->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = OMAPFBCloseScreen; + ++ /* Enforce the default mode (this is silly I guess) */ ++#ifdef ENFORCE_MODES ++ //xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Enforcing modes\n"); ++ //set_mode(ofb, &ofb->default_mode); ++ //pScrn->displayWidth = ofb->fixed_info.line_length / ++ // (ofb->state_info.bits_per_pixel>>3); //ofb->state_info.xres; ++#endif ++ + /* Map our framebuffer memory */ ++ ofb->mem_info.size = ofb->fixed_info.line_length * ofb->state_info.yres; + ofb->fb = mmap (NULL, ofb->mem_info.size, + PROT_READ | PROT_WRITE, MAP_SHARED, + ofb->fd, 0); +- if (ofb->fb == NULL) { +- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed\n"); ++ if (ofb->fb == MAP_FAILED) { ++ xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); + return FALSE; + } + +@@ -578,8 +593,13 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + } else if (!ofb->dss) { + + ofb->plane_info.enabled = 1; +- ofb->plane_info.out_width = ofb->state_info.xres; +- ofb->plane_info.out_height = ofb->state_info.yres; ++ if (ofb->state_info.rotate == 0 || ofb->state_info.rotate == 2) { ++ ofb->plane_info.out_width = ofb->state_info.xres; ++ ofb->plane_info.out_height = ofb->state_info.yres; ++ } else { ++ ofb->plane_info.out_width = ofb->state_info.yres; ++ ofb->plane_info.out_height = ofb->state_info.xres; ++ } + + if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) { + xf86DrvMsg(scrnIndex, X_ERROR, +diff --git a/src/omapfb-xv-blizzard.c b/src/omapfb-xv-blizzard.c +index 406ffc6..b71d2aa 100644 +--- a/src/omapfb-xv-blizzard.c ++++ b/src/omapfb-xv-blizzard.c +@@ -220,6 +220,7 @@ int OMAPFBXVPutImageBlizzard (ScrnInfoPtr pScrn, + packed_line_copy(src_w & ~3, + src_h & ~3, + ((src_w + 1) & ~1) * 2, ++ ofb->port->fixed_info.line_length, + (uint8_t*)buf, + (uint8_t*)ofb->port->fb); + break; +diff --git a/src/omapfb-xv-generic.c b/src/omapfb-xv-generic.c +index e6f89fe..b33f344 100644 +--- a/src/omapfb-xv-generic.c ++++ b/src/omapfb-xv-generic.c +@@ -62,7 +62,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) + { + OMAPFBPtr ofb = OMAPFB(pScrn); + +- /* The memory size is already set in OMAPFBXVQueryImageAttributes */ ++ /* The memory size is already set before we get here */ + if (ioctl(ofb->port->fd, OMAPFB_SETUP_MEM, &ofb->port->mem_info) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to allocate video plane memory\n"); +@@ -73,19 +73,20 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) + ofb->port->fb = mmap (NULL, ofb->port->mem_info.size, + PROT_READ | PROT_WRITE, MAP_SHARED, + ofb->port->fd, 0); +- if (ofb->port->fb == NULL) { ++ if (ofb->port->fb == MAP_FAILED) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Mapping video memory failed\n"); + return XvBadAlloc; + } + + /* Update the state info */ ++ /* Let's not - it's bad + if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info)) + { + xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); + return XvBadAlloc; + } +- ++ */ + return Success; + } + +@@ -93,6 +94,7 @@ int OMAPXVAllocPlane(ScrnInfoPtr pScrn) + int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn) + { + OMAPFBPtr ofb = OMAPFB(pScrn); ++ int ret; + + if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info)) + { +@@ -104,6 +106,31 @@ int OMAPXVSetupVideoPlane(ScrnInfoPtr pScrn) + xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); + return XvBadAlloc; + } ++ /* Changing rotation/nonstd flags can change the fixed info! */ ++ if (ioctl (ofb->port->fd, FBIOGET_FSCREENINFO, &ofb->port->fixed_info)) ++ { ++ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); ++ return XvBadAlloc; ++ } ++ /* Correct fixed info requires recalculation of needed memory */ ++ ofb->port->mem_info.size = ofb->port->fixed_info.line_length * ofb->port->state_info.yres; ++ ++ /* Allocate buffer memory */ ++ ret = OMAPXVAllocPlane(pScrn); ++ if (ret != Success) ++ return ret; ++ ++ /* Workaround for reset of mode after memory allo */ ++ if (ioctl (ofb->port->fd, FBIOPUT_VSCREENINFO, &ofb->port->state_info)) ++ { ++ xf86Msg(X_ERROR, "%s: setting state info failed\n", __FUNCTION__); ++ return XvBadAlloc; ++ } ++ if (ioctl (ofb->port->fd, FBIOGET_VSCREENINFO, &ofb->port->state_info)) ++ { ++ xf86Msg(X_ERROR, "%s: Reading state info failed\n", __FUNCTION__); ++ return XvBadAlloc; ++ } + + if(ioctl(ofb->port->fd, OMAPFB_SETUP_PLANE, + &ofb->port->plane_info) != 0) { +@@ -124,6 +151,8 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, + DrawablePtr pDraw) + { + OMAPFBPtr ofb = OMAPFB(pScrn); ++ short drw_temp; ++ short rot_xres, rot_yres; + + if (!ofb->port->plane_info.enabled + || ofb->port->update_window.x != src_x +@@ -163,13 +192,6 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, + return Success; + } + +- /* If we don't have the plane running, enable it */ +- if (!ofb->port->plane_info.enabled) { +- ret = OMAPXVAllocPlane(pScrn); +- if (ret != Success) +- return ret; +- } +- + /* Set up the state info, xres and yres will be used for + * scaling to the values in the plane info struct + */ +@@ -179,12 +201,31 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, + ofb->port->state_info.yres_virtual = 0; + ofb->port->state_info.xoffset = 0; + ofb->port->state_info.yoffset = 0; +- ofb->port->state_info.rotate = 0; ++ //ofb->port->state_info.rotate = 0; + ofb->port->state_info.grayscale = 0; + ofb->port->state_info.activate = FB_ACTIVATE_NOW; + ofb->port->state_info.bits_per_pixel = 0; + ofb->port->state_info.nonstd = xv_to_omapfb_format(image); + ++ /* Plane info does not rotate with state_info */ ++ if (ofb->port->state_info.rotate == 1 || ++ ofb->port->state_info.rotate == 3) { ++ drw_temp = drw_x; ++ drw_x = drw_y; ++ drw_y = drw_temp; ++ ++ drw_temp = drw_w; ++ drw_w = drw_h; ++ drw_h = drw_temp; ++ ++ rot_xres = ofb->port->state_info.yres; ++ rot_yres = ofb->port->state_info.xres; ++ } else { ++ rot_xres = ofb->port->state_info.xres; ++ rot_yres = ofb->port->state_info.yres; ++ } ++ ++ + /* Set up the video plane info */ + ofb->port->plane_info.enabled = 1; + ofb->port->plane_info.pos_x = drw_x; +@@ -193,13 +234,13 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, + ofb->port->plane_info.out_height = drw_h & ~15; + + /* Cap output to screen size */ +- if (ofb->port->plane_info.out_width > ofb->state_info.xres) { ++ if (ofb->port->plane_info.out_width > rot_xres) { + ofb->port->plane_info.pos_x = 0; +- ofb->port->plane_info.out_width = ofb->state_info.xres; ++ ofb->port->plane_info.out_width = rot_xres; + } +- if (ofb->port->plane_info.out_height > ofb->state_info.yres) { ++ if (ofb->port->plane_info.out_height > rot_yres) { + ofb->port->plane_info.pos_y = 0; +- ofb->port->plane_info.out_height = ofb->state_info.yres; ++ ofb->port->plane_info.out_height = rot_yres; + } + + ret = OMAPXVSetupVideoPlane(pScrn); +@@ -223,6 +264,7 @@ int OMAPFBXVPutImageGeneric (ScrnInfoPtr pScrn, + packed_line_copy(src_w & ~15, + src_h & ~15, + ((src_w + 1) & ~1) * 2, ++ ofb->port->fixed_info.line_length, + (uint8_t*)buf, + (uint8_t*)ofb->port->fb); + break; +diff --git a/src/omapfb-xv.c b/src/omapfb-xv.c +index 1df651e..0fee2c6 100644 +--- a/src/omapfb-xv.c ++++ b/src/omapfb-xv.c +@@ -169,8 +169,11 @@ static int OMAPFBXVQueryImageAttributes (ScrnInfoPtr pScrn, + h = *height; + + w = (w + 1) & ~1; ++ ++ /* Can't calculate these here - don't know line length + ofb->port->mem_info.size = w << 1; + ofb->port->mem_info.size *= h; ++ */ + + return size; + } +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/xorg-api.patch b/alarm/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch similarity index 80% rename from alarm/xf86-video-omapfb/xorg-api.patch rename to alarm/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch index ab4386f2a..d56729987 100644 --- a/alarm/xf86-video-omapfb/xorg-api.patch +++ b/alarm/xf86-video-omapfb/0006-omapfb-port-to-new-xserver-video-API.patch @@ -1,6 +1,22 @@ -diff -urN a/src/compat-api.h b/src/compat-api.h ---- a/src/compat-api.h 1969-12-31 17:00:00.000000000 -0700 -+++ b/src/compat-api.h 2013-06-19 11:54:57.509601128 -0600 +From 803ecf2909949e6152f4a81b6cbb92a4430679ac Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Fri, 23 Nov 2012 00:31:06 +0100 +Subject: [PATCH 6/6] omapfb: port to new xserver video API + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + src/compat-api.h | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/omapfb-driver.c | 41 ++++++++++++----------- + 2 files changed, 118 insertions(+), 19 deletions(-) + create mode 100644 src/compat-api.h + +diff --git a/src/compat-api.h b/src/compat-api.h +new file mode 100644 +index 0000000..b1591b1 +--- /dev/null ++++ b/src/compat-api.h @@ -0,0 +1,96 @@ +/* + * Copyright 2012 Red Hat, Inc. @@ -98,9 +114,10 @@ diff -urN a/src/compat-api.h b/src/compat-api.h +#endif + +#endif -diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c ---- a/src/omapfb-driver.c 2011-03-27 21:59:56.000000000 -0600 -+++ b/src/omapfb-driver.c 2013-06-19 11:56:22.509162085 -0600 +diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c +index 07989f5..486ffa4 100644 +--- a/src/omapfb-driver.c ++++ b/src/omapfb-driver.c @@ -44,6 +44,8 @@ #include "exa.h" @@ -110,7 +127,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c #ifdef HAVE_XEXTPROTO_71 #include #else -@@ -69,10 +71,10 @@ +@@ -70,10 +72,10 @@ static Bool OMAPFBProbe(DriverPtr drv, int flags); static Bool OMAPFBPreInit(ScrnInfoPtr pScrn, int flags); @@ -125,7 +142,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c static Bool OMAPFBEnsureRec(ScrnInfoPtr pScrn) -@@ -475,7 +477,7 @@ +@@ -481,7 +483,7 @@ OMAPFBXvScreenInit(ScreenPtr pScreen) } static Bool @@ -134,7 +151,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; OMAPFBPtr ofb = OMAPFB(pScrn); -@@ -484,11 +486,11 @@ +@@ -490,11 +492,11 @@ OMAPFBCloseScreen(int scrnIndex, ScreenPtr pScreen) pScreen->CloseScreen = ofb->CloseScreen; @@ -148,16 +165,16 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; OMAPFBPtr ofb = OMAPFB(pScrn); -@@ -501,7 +503,7 @@ +@@ -516,7 +518,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) PROT_READ | PROT_WRITE, MAP_SHARED, ofb->fd, 0); - if (ofb->fb == NULL) { -- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed\n"); + if (ofb->fb == MAP_FAILED) { +- xf86DrvMsg(scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Mapping framebuffer memory failed, wanted %d bytes.\n", ofb->mem_info.size); return FALSE; } -@@ -511,7 +513,7 @@ +@@ -526,7 +528,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Only support TrueColor for now */ if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, pScrn->defaultVisual)) { @@ -166,7 +183,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c " for %d bits per pixel [1]\n", pScrn->bitsPerPixel); return FALSE; -@@ -519,7 +521,7 @@ +@@ -534,7 +536,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Set up pixmap depth information */ if (!miSetPixmapDepths()) { @@ -175,7 +192,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c return FALSE; } -@@ -531,7 +533,7 @@ +@@ -546,7 +548,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, pScrn->bitsPerPixel)) { @@ -184,7 +201,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c return FALSE; } -@@ -552,7 +554,7 @@ +@@ -567,7 +569,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Initialize XRender fallbacks */ if (!fbPictureInit(pScreen, NULL, 0)) { @@ -193,7 +210,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c return FALSE; } -@@ -564,7 +566,7 @@ +@@ -579,7 +581,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Initialize default colormap */ if (!miCreateDefColormap(pScreen)) { @@ -202,7 +219,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c "creating default colormap failed\n"); return FALSE; } -@@ -574,7 +576,7 @@ +@@ -589,7 +591,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* This is non-fatal since we might be running against older * kernel driver in which case we only do basic 2D stuff... */ @@ -211,8 +228,8 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c } else if (!ofb->dss) { ofb->plane_info.enabled = 1; -@@ -582,7 +584,7 @@ - ofb->plane_info.out_height = ofb->state_info.yres; +@@ -602,7 +604,7 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + } if (ioctl (ofb->fd, OMAPFB_SETUP_PLANE, &ofb->plane_info)) { - xf86DrvMsg(scrnIndex, X_ERROR, @@ -220,7 +237,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c "%s: Plane setup failed: %s\n", __FUNCTION__, strerror(errno)); return FALSE; -@@ -625,9 +627,10 @@ +@@ -645,9 +647,10 @@ OMAPFBScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return TRUE; } @@ -233,7 +250,7 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c } void -@@ -679,14 +682,14 @@ +@@ -699,14 +702,14 @@ OMAPFBPrintCapabilities(ScrnInfoPtr pScrn, /*** Unimplemented: */ static Bool @@ -250,3 +267,6 @@ diff -urN a/src/omapfb-driver.c b/src/omapfb-driver.c { xf86Msg(X_NOT_IMPLEMENTED, "%s\n", __FUNCTION__); } +-- +1.8.0 + diff --git a/alarm/xf86-video-omapfb/PKGBUILD b/alarm/xf86-video-omapfb/PKGBUILD index 23e6d6b07..6920c5374 100644 --- a/alarm/xf86-video-omapfb/PKGBUILD +++ b/alarm/xf86-video-omapfb/PKGBUILD @@ -6,20 +6,40 @@ buildarch=4 pkgname="xf86-video-omapfb" pkgver=0.1.1.1 -pkgrel=4 +pkgrel=5 arch=('armv7h') url="http://gitweb.pingu.fi/?p=xf86-video-omapfb.git" license=('GPL2') makedepends=('pkgconfig' 'xorg-server-devel' 'resourceproto' 'scrnsaverproto') options=('!libtool') source=("http://archlinuxarm.org/builder/src/xf86-video-omapfb_0.1.1.1.tar.gz" - "xorg-api.patch") + "0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch" + "0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch" + "0003-force-plain-mode.patch" + "0004-blacklist-tv-out.patch" + "0005-Attempt-to-fix-VRFB.patch" + "0006-omapfb-port-to-new-xserver-video-API.patch") md5sums=('a9bca5424bd76d53b78826f9d5fa4abe' - '30d0a22f99654dfa4c8249cd76ad6839') + 'f52826ee0feb5aefc92431df973a6ed2' + '22d822068b570115a4613b73cb719ffd' + '8e04b609ba12d094edecc2ada8335951' + '1abeb90f138fc86015960a9269612e91' + '2acd1c0448e4628353d084f0374c48b6' + '4094ad2bb96ecd5c6faf51f09a7ce65b') + +prepare() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 -i ../0001-Revert-Set-a-large-CRTC-upper-limit-to-not-prune-lar.patch + patch -p1 -i ../0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch + patch -p1 -i ../0003-force-plain-mode.patch + patch -p1 -i ../0004-blacklist-tv-out.patch + patch -p1 -i ../0005-Attempt-to-fix-VRFB.patch + patch -p1 -i ../0006-omapfb-port-to-new-xserver-video-API.patch +} build() { cd "${srcdir}/${pkgname}-${pkgver}" - patch -p1 -i ../xorg-api.patch + ./autogen.sh ./configure --prefix=/usr