M7350v1_en_gpl

This commit is contained in:
T
2024-09-09 08:52:07 +00:00
commit f9cc65cfda
65988 changed files with 26357421 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- event devices (evdev) input driver"
DESCRIPTION = "evdev is an Xorg input driver for Linux's generic event \
devices. It therefore supports all input devices that the kernel knows \
about, including most mice and keyboards. \
\
The evdev driver can serve as both a pointer and a keyboard input \
device, and may be used as both the core keyboard and the core pointer. \
Multiple input devices are supported by multiple instances of this \
driver, with one Load directive for evdev in the Module section of your \
xorg.conf for each input device that will use this driver. "
LIC_FILES_CHKSUM = "file://COPYING;md5=fefe33b1cf0cacba0e72e3b0fa0f0e16"
PR = "${INC_PR}.0"
SRC_URI[md5sum] = "f33fe9413bde68936d8909206a13e8a1"
SRC_URI[sha256sum] = "b0e7f3991a8183a4743196c3e16d7184d439b80bf43653aa2f45b0756a6753ac"

View File

@@ -0,0 +1,15 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- keyboard input driver"
DESCRIPTION = "keyboard is an Xorg input driver for keyboards. The \
driver supports the standard OS-provided keyboard interface. The driver \
functions as a keyboard input device, and may be used as the X server's \
core keyboard."
LIC_FILES_CHKSUM = "file://COPYING;md5=ea2099d24ac9e316a6d4b9f20b3d4e10"
PR = "${INC_PR}.0"
SRC_URI[md5sum] = "e2abe9f13e526a73cb68a7d257546eba"
SRC_URI[sha256sum] = "c46c790fec905d696573b7a374b10ab8b4389112a8f69993fe011006c99e858e"

View File

@@ -0,0 +1,16 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- keyboard input driver"
DESCRIPTION = "keyboard is an Xorg input driver for keyboards. The \
driver supports the standard OS-provided keyboard interface. The driver \
functions as a keyboard input device, and may be used as the X server's \
core keyboard."
SRCREV = "3e28d68b50d291938734e9684b8296ca864f3892"
PV = "1.3.2+git${SRCPV}"
PR = "${INC_PR}.0"
SRC_URI = "git://anongit.freedesktop.org/git/xorg/driver/xf86-input-keyboard;protocol=git"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,21 @@
Unbreak the linux mouse driver by using config.h
RP - 4/11/07
Upstream-Status: Pending
Index: git/src/lnx_mouse.c
===================================================================
--- git.orig/src/lnx_mouse.c 2008-11-04 23:46:05.000000000 +0000
+++ git/src/lnx_mouse.c 2008-11-04 23:46:15.000000000 +0000
@@ -3,8 +3,8 @@
* Copyright 1999 by The XFree86 Project, Inc.
*/
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
+#ifdef HAVE_CONFIG_H
+#include <config.h>
#endif
#include <X11/X.h>

View File

@@ -0,0 +1,16 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- mouse input driver"
DESCRIPTION = "mouse is an Xorg input driver for mice. The driver \
supports most available mouse types and interfaces. The mouse driver \
functions as a pointer input device, and may be used as the X server's \
core pointer. Multiple mice are supported by multiple instances of this \
driver."
LIC_FILES_CHKSUM = "file://COPYING;md5=237eb1d1a602d29ef2af62d8fba60f19"
PR = "${INC_PR}.0"
SRC_URI[md5sum] = "13276d780b8ef3a82088f009185bf42b"
SRC_URI[sha256sum] = "d2c5b4b9bf03f8f7ef7b37bab25197d3f99a4d889c61bb67a68df33ec2c2ff12"

View File

@@ -0,0 +1,18 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- mouse input driver"
DESCRIPTION = "mouse is an Xorg input driver for mice. The driver \
supports most available mouse types and interfaces. The mouse driver \
functions as a pointer input device, and may be used as the X server's \
core pointer. Multiple mice are supported by multiple instances of this \
driver."
SRCREV = "ea5cfe804e112f320f14ad896c7802d53551d3e6"
PV = "1.3.0+git${SRCPV}"
PR = "${INC_PR}.0"
SRC_URI = "git://anongit.freedesktop.org/git/xorg/driver/xf86-input-mouse;protocol=git \
file://unbreak.patch"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,25 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- synaptics touchpad input driver"
DESCRIPTION = "synaptics is an Xorg input driver for the touchpads from \
Synaptics Incorporated. Even though these touchpads (by default, \
operating in a compatibility mode emulating a standard mouse) can be \
handled by the normal evdev or mouse drivers, this driver allows more \
advanced features of the touchpad to become available."
LIC_FILES_CHKSUM = "file://COPYING;md5=e395e21f3c21d4fc3a243783e85e9ab5"
PR = "${INC_PR}.0"
SRC_URI[md5sum] = "41ee749ecbfef98f7fba708cb2afae87"
SRC_URI[sha256sum] = "95cc5399fc49c9a35b02c2272cd99b8438f4609b219278c66a79e74c916a1c4e"
DEPENDS += "libxi"
#
# the xorg-synaptics.pc has hardcoded sdkdir=/usr/include/xorg, which is not correct
# for cross compiling, so pass the correct sdkdir as include path
#
EXTRA_OEMAKE += " sdkdir=${STAGING_INCDIR}/xorg "

View File

@@ -0,0 +1,18 @@
require xorg-driver-input.inc
SUMMARY = "X.Org X server -- synaptics touchpad input driver"
DESCRIPTION = "synaptics is an Xorg input driver for the touchpads from \
Synaptics Incorporated. Even though these touchpads (by default, \
operating in a compatibility mode emulating a standard mouse) can be \
handled by the normal evdev or mouse drivers, this driver allows more \
advanced features of the touchpad to become available."
SRCREV = "934bc0012f948c52aadc8eda912f7728fb7394a2"
PV = "0.15.2+git${SRCPV}"
PR = "${INC_PR}.0"
SRC_URI = "git://anongit.freedesktop.org/git/xorg/driver/xf86-input-synaptics;protocol=git"
S = "${WORKDIR}/git"
DEPENDS += "libxi"

View File

@@ -0,0 +1,13 @@
require xorg-driver-input.inc
DESCRIPTION = "X.Org X server -- VMWare mouse input driver"
PR = "${INC_PR}.0"
RDEPENDS_${PN} += "xf86-input-mouse"
LIC_FILES_CHKSUM = "file://COPYING;md5=622841c068a9d7625fbfe7acffb1a8fc"
SRC_URI[md5sum] = "dc77181330f983c7d0ec1ea1592c2ca7"
SRC_URI[sha256sum] = "00e5d527a0d97e6b2a6e8c519e1339427e66fa0a43af026858655c7c62bd9e35"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'

View File

@@ -0,0 +1,8 @@
require xorg-driver-video.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=d8cbd99fff773f92e844948f74ef0df8"
DESCRIPTION = "X.Org X server -- fbdev display driver"
PR = "${INC_PR}.0"
SRC_URI[md5sum] = "53a533d9e0c2da50962282526bace074"
SRC_URI[sha256sum] = "93b271b4b41d7e5ca108849a583b9523e96c51813d046282285355b7001f82d5"

View File

@@ -0,0 +1,25 @@
require xorg-driver-video.inc
SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
the driver supports hardware accelerated 3D via the Direct Rendering \
Infrastructure (DRI)."
LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
PR = "${INC_PR}.0"
DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
virtual/libgl xineramaproto xf86driproto libpciaccess"
SRC_URI[md5sum] = "6d7b1f199dba5820f250888b136186ff"
SRC_URI[sha256sum] = "8b8450f2a2cc52ef31a83414e2f290e748a956690e11b41759d5650aaedc4387"
EXTRA_OECONF += "--disable-xvmc"
# --enable-kms-only option is required by ROOTLESS_X
EXTRA_OECONF += '${@base_conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}'
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'

View File

@@ -0,0 +1,23 @@
require xorg-driver-video.inc
SUMMARY = "X.Org X server -- Intel integrated graphics chipsets driver"
DESCRIPTION = "intel is an Xorg driver for Intel integrated graphics \
chipsets. The driver supports depths 8, 15, 16 and 24. On some chipsets, \
the driver supports hardware accelerated 3D via the Direct Rendering \
Infrastructure (DRI)."
DEPENDS += "virtual/libx11 libxvmc drm dri2proto glproto \
virtual/libgl xineramaproto libpciaccess"
SRCREV = "87ea531c5dc5b39809395b277c330854aaaaf019"
PV = "2.10.0+git${SRCPV}"
PR = "${INC_PR}.0"
EXTRA_OECONF += "--disable-xvmc --enable-dri --disable-static"
SRC_URI = "git://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel;protocol=git"
S = "${WORKDIR}/git"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'

View File

@@ -0,0 +1,325 @@
From 9f034f7a83751e4d1bbff6dd742d54bd96d38230 Mon Sep 17 00:00:00 2001
From: Eino-Ville Talvala <talvala@stanford.edu>
Date: Tue, 23 Aug 2011 18:37:01 +0200
Subject: [PATCH] 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 <dos@dosowisko.net>
---
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 <stdint.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);
/* 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.7.5.4

View File

@@ -0,0 +1,27 @@
commit 05efb061f1945425d214ff6b6050883e6d8633bf
Author: Koen Kooi <koen@dominion.thruhere.net>
Date: Wed Jan 26 13:21:12 2011 +0100
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 <koen@dominion.thruhere.net>
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;
}

View File

@@ -0,0 +1,25 @@
commit d28a36bbadc360a9409bf9832f1d4171d7c33dad
Author: Koen Kooi <koen@dominion.thruhere.net>
Date: Wed Jan 26 13:20:20 2011 +0100
force 'plain' mode
The new DSS mode breaks XV, so force plain mode
Upstream-Status: Pending
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
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;

View File

@@ -0,0 +1,34 @@
commit 031516123d25a12808ab4e56ea8deda74946cdcd
Author: Koen Kooi <koen@dominion.thruhere.net>
Date: Wed Jan 26 12:04:36 2011 +0100
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
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);
+
}

View File

@@ -0,0 +1,25 @@
commit cbae688d7df59938ccb4af534ec2ff75cbbe9221
Author: Koen Kooi <koen@dominion.thruhere.net>
Date: Wed Jan 26 13:27:20 2011 +0100
Revert "Set virtual size when configuring framebuffer"
Virtual size too big, so revert it.
This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a.
Upstream-Status: Pending
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;

View File

@@ -0,0 +1,148 @@
Upstream-Status: Pending
--- /tmp/image-format-conversions.h 2009-02-03 10:18:04.000000000 +0100
+++ git/src/image-format-conversions.h 2009-02-03 10:19:18.000000000 +0100
@@ -30,6 +30,8 @@
/* 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);
+/* NEON implementation of YV12/I420 to UYVY conversion */
+void uv12_to_uyvy_neon(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);
#endif /* __IMAGE_FORMAT_CONVERSIONS_H__ */
--- /tmp/image-format-conversions.c 2009-02-03 10:18:04.000000000 +0100
+++ git/src/image-format-conversions.c 2009-02-03 10:16:47.000000000 +0100
@@ -2,6 +2,7 @@
* Copyright 2008 Kalle Vahlman, <zuh@iki.fi>
* Ilpo Ruotsalainen, <lonewolf@iki.fi>
* Tuomas Kulve, <tuomas.kulve@movial.com>
+ * Ian Rickards, <ian.rickards@arm.com>
*
*
* Permission to use, copy, modify, distribute and sell this software and its
@@ -89,3 +90,104 @@
}
}
+void uv12_to_uyvy_neon(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)
+{
+ int x, y;
+ uint8_t *dest_even = dest;
+ uint8_t *dest_odd = dest + w * 2;
+ uint8_t *y_p_even = y_p;
+ uint8_t *y_p_odd = y_p + y_pitch;
+
+ /*ErrorF("in uv12_to_uyvy, w: %d, pitch: %d\n", w, pitch);*/
+ if (w<16)
+ {
+ for (y=0; y<h; y+=2)
+ {
+ for (x=0; x<w; x+=2)
+ {
+ /* Output two 2x1 macroblocks to form a 2x2 block from input */
+ uint8_t u_val = *u_p++;
+ uint8_t v_val = *v_p++;
+
+ /* Even row, first pixel */
+ *dest_even++ = u_val;
+ *dest_even++ = *y_p_even++;
+
+ /* Even row, second pixel */
+ *dest_even++ = v_val;
+ *dest_even++ = *y_p_even++;
+
+ /* Odd row, first pixel */
+ *dest_odd++ = u_val;
+ *dest_odd++ = *y_p_odd++;
+
+ /* Odd row, second pixel */
+ *dest_odd++ = v_val;
+ *dest_odd++ = *y_p_odd++;
+ }
+
+ dest_even += w * 2;
+ dest_odd += w * 2;
+
+ u_p += ((uv_pitch << 1) - w) >> 1;
+ v_p += ((uv_pitch << 1) - w) >> 1;
+
+ y_p_even += (y_pitch - w) + y_pitch;
+ y_p_odd += (y_pitch - w) + y_pitch;
+ }
+ }
+ else
+ {
+ for (y=0; y<h; y+=2)
+ {
+ x=w;
+ do {
+ // avoid using d8-d15 (q4-q7) aapcs callee-save registers
+ asm volatile (
+ "1:\n\t"
+ "vld1.u8 {d0}, [%[u_p]]!\n\t"
+ "sub %[x],%[x],#16\n\t"
+ "cmp %[x],#16\n\t"
+ "vld1.u8 {d1}, [%[v_p]]!\n\t"
+ "vld1.u8 {q1}, [%[y_p_even]]!\n\t"
+ "vzip.u8 d0, d1\n\t"
+ "vld1.u8 {q2}, [%[y_p_odd]]!\n\t"
+ // use 2-element struct stores to zip up y with y&v
+ "vst2.u8 {q0,q1}, [%[dest_even]]!\n\t"
+ "vmov.u8 q1, q2\n\t"
+ "vst2.u8 {q0,q1}, [%[dest_odd]]!\n\t"
+ "bhs 1b\n\t"
+ : [u_p] "+r" (u_p), [v_p] "+r" (v_p), [y_p_even] "+r" (y_p_even), [y_p_odd] "+r" (y_p_odd),
+ [dest_even] "+r" (dest_even), [dest_odd] "+r" (dest_odd),
+ [x] "+r" (x)
+ :
+ : "cc", "memory", "d0","d1","d2","d3","d4","d5"
+ );
+ if (x!=0)
+ {
+ // overlap final 16-pixel block to process requested width exactly
+ x = 16-x;
+ u_p -= x/2;
+ v_p -= x/2;
+ y_p_even -= x;
+ y_p_odd -= x;
+ dest_even -= x*2;
+ dest_odd -= x*2;
+ x = 16;
+ // do another 16-pixel block
+ }
+ }
+ while (x!=0);
+
+ dest_even += w * 2;
+ dest_odd += w * 2;
+
+ u_p += ((uv_pitch << 1) - w) >> 1;
+ v_p += ((uv_pitch << 1) - w) >> 1;
+
+ y_p_even += (y_pitch - w) + y_pitch;
+ y_p_odd += (y_pitch - w) + y_pitch;
+ }
+ }
+}
+
--- /tmp/omapfb-xv-generic.c 2009-02-03 10:52:18.000000000 +0100
+++ git/src/omapfb-xv-generic.c 2009-02-03 10:52:24.000000000 +0100
@@ -240,7 +240,7 @@
uint8_t *yb = buf;
uint8_t *ub = yb + (src_y_pitch * src_h);
uint8_t *vb = ub + (src_uv_pitch * (src_h / 2));
- uv12_to_uyvy(src_w & ~15,
+ uv12_to_uyvy_neon(src_w & ~15,
src_h & ~15,
src_y_pitch,
src_uv_pitch,
@@ -256,7 +256,7 @@
uint8_t *yb = buf;
uint8_t *vb = yb + (src_y_pitch * src_h);
uint8_t *ub = vb + (src_uv_pitch * (src_h / 2));
- uv12_to_uyvy(src_w & ~15,
+ uv12_to_uyvy_neon(src_w & ~15,
src_h & ~15,
src_y_pitch,
src_uv_pitch,

View File

@@ -0,0 +1,32 @@
require xorg-driver-video.inc
SUMMARY = "X.Org X server -- Texas Instruments OMAP framebuffer driver"
DESCRIPTION = "omapfb driver supports the basic Texas Instruments OMAP \
framebuffer."
LICENSE = "MIT-X & GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=63e2cbac53863f60e2f43343fb34367f"
DEPENDS += "virtual/libx11"
SRCREV = "28c006c94e57ea71df11ec4fff79d7ffcfc4860f"
PR = "${INC_PR}.6"
PV = "0.1.1+gitr${SRCPV}"
SRC_URI = "git://git.pingu.fi/xf86-video-omapfb;protocol=http \
file://omap-revert-set-CRTC-limit.patch \
file://omap-revert-set-virtual-size.patch \
file://omap-force-plain-mode.patch \
file://omap-blacklist-tv-out.patch \
file://0004-Attempt-to-fix-VRFB.patch \
"
S = "${WORKDIR}/git"
EXTRA_OECONF_armv7a = " --enable-neon "
CFLAGS += " -I${STAGING_INCDIR}/xorg "
# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay)
do_compile_prepend_armv7a () {
sed -i -e s:fb1:fb2:g ${S}/src/omapfb-xv.c
}

View File

@@ -0,0 +1,22 @@
require xorg-driver-video.inc
LIC_FILES_CHKSUM = "file://COPYING;md5=e5418e7a75e21268637984e70265e146"
EXTRA_OECONF += "--disable-xvmc"
SUMMARY = "X.Org X server -- Generic Vesa video driver"
DESCRIPTION = "vesa is an Xorg driver for generic VESA video cards. It \
can drive most VESA-compatible video cards, but only makes use of the \
basic standard VESA core that is common to these cards. The driver \
supports depths 8, 15 16 and 24."
PR = "${INC_PR}.0"
DEPENDS += "virtual/libx11 libxvmc drm xf86driproto glproto \
virtual/libgl xineramaproto xf86driproto libpciaccess"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
SRC_URI[md5sum] = "07fa32958aff9b463dd3af5481ef6626"
SRC_URI[sha256sum] = "8ed85a0e94523539d81d5ae6639fa22ceb1c1e3baf89128915db65d4d2900d7a"

View File

@@ -0,0 +1,17 @@
require xorg-driver-video.inc
SUMMARY = "X.Org X server -- VMware SVGA display driver"
DESCRIPTION = "vmware is an Xorg driver for VMware virtual video cards."
LIC_FILES_CHKSUM = "file://COPYING;md5=5fcd7d437a959a15fbee8707747c6b53"
DEPENDS += "virtual/libx11 libxvmc drm glproto \
virtual/libgl xineramaproto libpciaccess"
PR = "${INC_PR}.0"
COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
SRC_URI[md5sum] = "579bee487309b1bdc8329bf627d43413"
SRC_URI[sha256sum] = "b24a7cb2d87e416561e25122eab2cd48fc64a2ba105238456eefef16f29f38a3"

View File

@@ -0,0 +1,33 @@
DESCRIPTION = "X driver"
HOMEPAGE = "http://www.x.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11/drivers"
LICENSE = "MIT-X"
PE = "2"
INC_PR = "r17"
DEPENDS = "virtual/xserver xproto randrproto util-macros"
SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2"
S = "${WORKDIR}/${BPN}-${PV}"
FILES_${PN} += " ${libdir}/xorg/modules/drivers/*.so"
FILES_${PN}-dbg += " ${libdir}/xorg/modules/drivers/.debug"
inherit autotools pkgconfig
# AC_CHECK_FILE doesn't work when cross compiling, so we create a replacement
# macro that simply assumes the test succeeds.
do_configure_prepend () {
echo 'AC_DEFUN(CC_AC_CHECK_FILE, $2)' > configure.ac.new
sed 's/AC_CHECK_FILE/CC_AC_CHECK_FILE/g' configure.ac >> configure.ac.new
mv configure.ac.new configure.ac
}
# FIXME: We don't want to include the libtool archives (*.la) from modules
# directory, as they serve no useful purpose. Upstream should fix Makefile.am
do_install_append() {
find ${D}${libdir}/xorg/modules -regex ".*\.la$" | xargs rm -f --
}

View File

@@ -0,0 +1,6 @@
include xorg-driver-common.inc
DEPENDS += "inputproto kbproto "
FILES_${PN} += " ${libdir}/xorg/modules/input/*.so"
FILES_${PN}-dbg += " ${libdir}/xorg/modules/input/.debug"

View File

@@ -0,0 +1,4 @@
include xorg-driver-common.inc
DEPENDS =+ "renderproto videoproto xextproto fontsproto"