core/linux-cubox Enable iwMMXt support and 2 fb patches

This commit is contained in:
Dave Higham 2012-11-20 08:06:44 -06:00
parent fb06e45dac
commit 86a1804f45
4 changed files with 81 additions and 5 deletions

View file

@ -8,7 +8,7 @@ pkgname=('linux-cubox' 'linux-headers-cubox')
_kernelname=${pkgname#linux}
_basekernel=3.5
pkgver=${_basekernel}.7
pkgrel=4
pkgrel=5
cryptover=1.4
arch=('arm')
url="http://www.kernel.org/"
@ -17,10 +17,14 @@ makedepends=('xmlto' 'docbook-xsl' 'uboot-mkimage' 'git' 'python2')
options=('!strip')
source=('config'
'change-default-console-loglevel.patch'
"http://download.gna.org/cryptodev-linux/cryptodev-linux-${cryptover}.tar.gz")
md5sums=('64f271dbdde04963c91092c88bce50e8'
"http://download.gna.org/cryptodev-linux/cryptodev-linux-${cryptover}.tar.gz"
'dovefb_patch1'.patch
'dovefb_patch2'.patch)
md5sums=('6b1ace88a0a286654f6075d1def3c0bc'
'9d3c56a4b999c8bfbd4018089a62f662'
'7b0ac1c0a88d8fbe7316db02f21666e6')
'7b0ac1c0a88d8fbe7316db02f21666e6'
'f1a0a82c5a957c45d3a118e4f7c2a80e'
'778d87956820ce7bffe8bb1a45416d2e')
__gitroot="git://github.com/vDorst/linux.git"
__gitname="linux"
@ -45,6 +49,10 @@ build() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
#video patches
patch -Np1 -i "${srcdir}/dovefb_patch1.patch"
patch -Np1 -i "${srcdir}/dovefb_patch2.patch"
cat "${srcdir}/config" > ./.config
# set extraversion to pkgrel

View file

@ -318,7 +318,7 @@ CONFIG_PLAT_ORION=y
#
# Processor Type
#
# CONFIG_CPU_PJ4 is not set
CONFIG_CPU_PJ4=y
CONFIG_CPU_V7=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y

View file

@ -0,0 +1,54 @@
From: Jean-Francois Moine <moinejf@free.fr>
Date: Thu Nov 15 18:14:43 CET 2012
Stop the dovefb irq's after video display
This patch is to be applied to René van Dorst's linux kernel
git://github.com/vDorst/linux.git
branch
CuBox-v3.5.7-Patched
diff --git a/drivers/video/dovefb/dovefb_ovly.c b/drivers/video/dovefb/dovefb_ovly.c
index 68cfdd2..d640ac7 100644
--- a/drivers/video/dovefb/dovefb_ovly.c
+++ b/drivers/video/dovefb/dovefb_ovly.c
@@ -322,7 +322,7 @@ static int dovefb_ovly_ioctl(struct fb_info *fi, unsigned int cmd,
{
void __user *argp = (void __user *)arg;
struct dovefb_layer_info *dfli = fi->par;
- u32 x;
+ u32 x, irq_ena;
int vmode = 0;
int gfx_on = 1;
int vid_on = 1;
@@ -528,19 +528,19 @@ static int dovefb_ovly_ioctl(struct fb_info *fi, unsigned int cmd,
case DOVEFB_IOCTL_SWITCH_VID_OVLY:
if (copy_from_user(&vid_on, argp, sizeof(int)))
return -EFAULT;
+ x = readl(dfli->reg_base + LCD_SPU_DMA_CTRL0);
+ irq_ena = readl(dfli->reg_base + SPU_IRQ_ENA);
if (0 == vid_on) {
- x = readl(dfli->reg_base + LCD_SPU_DMA_CTRL0) &
- ~CFG_DMA_ENA_MASK;
- writel(x, dfli->reg_base + LCD_SPU_DMA_CTRL0);
+ x &= ~CFG_DMA_ENA_MASK;
+ irq_ena &= ~(DOVEFB_VID_INT_MASK | DOVEFB_VSYNC_INT_MASK);
} else {
- x = readl(dfli->reg_base + LCD_SPU_DMA_CTRL0) |
- CFG_DMA_ENA(0x1);
- writel(x, dfli->reg_base + LCD_SPU_DMA_CTRL0);
+ x |= CFG_DMA_ENA(0x1);
+
/* Enable VID & VSync. */
- x = readl(dfli->reg_base + SPU_IRQ_ENA) |
- DOVEFB_VID_INT_MASK | DOVEFB_VSYNC_INT_MASK;
- writel(x, dfli->reg_base + SPU_IRQ_ENA);
+ irq_ena |= DOVEFB_VID_INT_MASK | DOVEFB_VSYNC_INT_MASK;
}
+ writel(x, dfli->reg_base + LCD_SPU_DMA_CTRL0);
+ writel(irq_ena, dfli->reg_base + SPU_IRQ_ENA);
break;
case DOVEFB_IOCTL_SWITCH_GRA_OVLY:
if (copy_from_user(&gfx_on, argp, sizeof(int)))

View file

@ -0,0 +1,14 @@
diff -upr linux-a/drivers/video/dovefb/dovefb_ovly.c linux-b/drivers/video/dovefb/dovefb_ovly.c
--- linux-a/drivers/video/dovefb/dovefb_ovly.c 2012-11-16 05:47:41.682464311 -0600
+++ linux-b/drivers/video/dovefb/dovefb_ovly.c 2012-11-16 05:41:41.217634544 -0600
@@ -284,7 +284,9 @@ static int check_surface(struct fb_info
(dfli->surface.viewPortInfo.srcWidth != new_info->srcWidth ||
dfli->surface.viewPortInfo.srcHeight != new_info->srcHeight ||
dfli->surface.viewPortInfo.zoomXSize != new_info->zoomXSize ||
- dfli->surface.viewPortInfo.zoomYSize != new_info->zoomYSize)) {
+ dfli->surface.viewPortInfo.zoomYSize != new_info->zoomYSize ||
+ dfli->surface.viewPortInfo.ycPitch != new_info->ycPitch ||
+ dfli->surface.viewPortInfo.uvPitch != new_info->uvPitch)) {
var->xres = new_info->srcWidth;
var->yres = new_info->srcHeight;
var->xres_virtual = new_info->srcWidth;