mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge branch 'master' into openelec-pvr-master
Conflicts: projects/ATV/options projects/Generic/options projects/ION/options projects/Intel/options
This commit is contained in:
commit
db9948d859
@ -25,4 +25,3 @@ GCC_OPTIM="$GCC_OPTIM -flto"
|
|||||||
LD_OPTIM="$LD_OPTIM -fuse-linker-plugin"
|
LD_OPTIM="$LD_OPTIM -fuse-linker-plugin"
|
||||||
LD_OPTIM="$LD_OPTIM -fuse-ld=gold"
|
LD_OPTIM="$LD_OPTIM -fuse-ld=gold"
|
||||||
LD_OPTIM="$LD_OPTIM -Wl,--as-needed"
|
LD_OPTIM="$LD_OPTIM -Wl,--as-needed"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ else
|
|||||||
PROJECT="$PROJECT"
|
PROJECT="$PROJECT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# determines TARGET_ARCH, if not forced by user (i386 / x86_64 / powerpc)
|
# determines TARGET_ARCH, if not forced by user (i386 / x86_64 / arm)
|
||||||
# default is i386
|
# default is i386
|
||||||
if [ -z "$ARCH" ]; then
|
if [ -z "$ARCH" ]; then
|
||||||
TARGET_ARCH="i386"
|
TARGET_ARCH="i386"
|
||||||
@ -63,7 +63,6 @@ fi
|
|||||||
# set jpeg library depending on ARCH
|
# set jpeg library depending on ARCH
|
||||||
if [ "$TARGET_ARCH" = "i386" -o "$TARGET_ARCH" = "x86_64" ]; then
|
if [ "$TARGET_ARCH" = "i386" -o "$TARGET_ARCH" = "x86_64" ]; then
|
||||||
LIBJPEG="libjpeg-turbo"
|
LIBJPEG="libjpeg-turbo"
|
||||||
# LIBJPEG="jpeg"
|
|
||||||
else
|
else
|
||||||
LIBJPEG="jpeg"
|
LIBJPEG="jpeg"
|
||||||
fi
|
fi
|
||||||
|
23
config/path
23
config/path
@ -2,6 +2,11 @@ set -e
|
|||||||
|
|
||||||
# determine architecture's family
|
# determine architecture's family
|
||||||
case $TARGET_ARCH in
|
case $TARGET_ARCH in
|
||||||
|
arm)
|
||||||
|
TARGET_FAMILY=arm
|
||||||
|
TARGET_ABI=eabi
|
||||||
|
;;
|
||||||
|
|
||||||
i386)
|
i386)
|
||||||
TARGET_FAMILY=i686
|
TARGET_FAMILY=i686
|
||||||
;;
|
;;
|
||||||
@ -14,12 +19,16 @@ esac
|
|||||||
# determines TARGET_CPU, if not forced by user
|
# determines TARGET_CPU, if not forced by user
|
||||||
if [ -z "$TARGET_CPU" ]; then
|
if [ -z "$TARGET_CPU" ]; then
|
||||||
case $TARGET_ARCH in
|
case $TARGET_ARCH in
|
||||||
|
arm)
|
||||||
|
TARGET_CPU=cortex-a8
|
||||||
|
;;
|
||||||
|
|
||||||
i386)
|
i386)
|
||||||
TARGET_CPU=i686
|
TARGET_CPU=i686
|
||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64)
|
x86_64)
|
||||||
TARGET_CPU=i686
|
TARGET_CPU=core2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
@ -34,7 +43,7 @@ fi
|
|||||||
ADDONS=addons
|
ADDONS=addons
|
||||||
|
|
||||||
HOST_NAME=`$SCRIPTS/configtools/config.guess`
|
HOST_NAME=`$SCRIPTS/configtools/config.guess`
|
||||||
TARGET_NAME=$TARGET_FAMILY-openelec-linux-gnu
|
TARGET_NAME=${TARGET_FAMILY}-openelec-linux-gnu${TARGET_ABI}
|
||||||
|
|
||||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION
|
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION
|
||||||
TARGET_IMG=$ROOT/$TARGET
|
TARGET_IMG=$ROOT/$TARGET
|
||||||
@ -115,14 +124,20 @@ TARGET_LDFLAGS="$GCC_OPTIM $LD_OPTIM"
|
|||||||
case $TARGET_ARCH in
|
case $TARGET_ARCH in
|
||||||
i386)
|
i386)
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -march=$TARGET_CPU -m32"
|
TARGET_CFLAGS="$TARGET_CFLAGS -march=$TARGET_CPU -m32"
|
||||||
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -march=$TARGET_CPU -m32"
|
TARGET_CXXFLAGS="$TARGET_CFLAGS"
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -march=$TARGET_CPU -m32"
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -march=$TARGET_CPU -m32"
|
||||||
;;
|
;;
|
||||||
x86_64)
|
x86_64)
|
||||||
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC -march=$TARGET_CPU -m64"
|
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC -march=$TARGET_CPU -m64"
|
||||||
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fPIC -march=$TARGET_CPU -m64"
|
TARGET_CXXFLAGS="$TARGET_CFLAGS"
|
||||||
TARGET_LDFLAGS="$TARGET_LDFLAGS -fPIC -march=$TARGET_CPU -m64"
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -fPIC -march=$TARGET_CPU -m64"
|
||||||
;;
|
;;
|
||||||
|
arm)
|
||||||
|
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC -mcpu=$TARGET_CPU"
|
||||||
|
[ -n "$TARGET_FPU" ] && TARGET_CFLAGS="$TARGET_CFLAGS -mfpu=$TARGET_FPU"
|
||||||
|
TARGET_CXXFLAGS="$TARGET_CFLAGS"
|
||||||
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -fPIC -mcpu=$TARGET_CPU"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
TARGET_PKG_CONFIG_PATH=""
|
TARGET_PKG_CONFIG_PATH=""
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
. config/options $1
|
. config/options $1
|
||||||
|
|
||||||
|
strip_lto
|
||||||
|
|
||||||
export bash_cv_have_mbstate_t=set
|
export bash_cv_have_mbstate_t=set
|
||||||
|
|
||||||
export CC_FOR_BUILD="$HOST_CC"
|
export CC_FOR_BUILD="$HOST_CC"
|
||||||
@ -38,5 +40,6 @@ mkdir -p objdir && cd objdir
|
|||||||
--without-x \
|
--without-x \
|
||||||
--disable-tui \
|
--disable-tui \
|
||||||
--disable-libada \
|
--disable-libada \
|
||||||
|
--disable-werror \
|
||||||
|
|
||||||
make
|
make
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="w_scan"
|
PKG_NAME="w_scan"
|
||||||
PKG_VERSION="20110206"
|
PKG_VERSION="20110306"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
diff -Naur w_scan-20110206/countries.c w_scan-20110206.patch/countries.c
|
|
||||||
--- w_scan-20110206/countries.c 2011-02-05 20:03:50.000000000 +0100
|
|
||||||
+++ w_scan-20110206.patch/countries.c 2011-02-21 23:21:51.194553010 +0100
|
|
||||||
@@ -31,7 +31,6 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
-#include <linux/videodev.h>
|
|
||||||
#include <linux/dvb/frontend.h>
|
|
||||||
|
|
||||||
#ifdef VDRVERSNUM
|
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="boost"
|
PKG_NAME="boost"
|
||||||
PKG_VERSION="1_45_0"
|
PKG_VERSION="1_46_0"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="glib"
|
PKG_NAME="glib"
|
||||||
PKG_VERSION="2.28.1"
|
PKG_VERSION="2.28.2"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="LGPL"
|
PKG_LICENSE="LGPL"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="ncurses"
|
PKG_NAME="ncurses"
|
||||||
PKG_VERSION="5.7"
|
PKG_VERSION="5.8"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="MIT"
|
PKG_LICENSE="MIT"
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# This file is part of OpenELEC - http://www.openelec.tv
|
|
||||||
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
|
|
||||||
#
|
|
||||||
# This Program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This Program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
. config/options $1
|
|
||||||
|
|
||||||
mkdir -p $INSTALL/usr/lib
|
|
||||||
cp -P $PKG_BUILD/libtalloc.so* $INSTALL/usr/lib
|
|
@ -1,36 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# This file is part of OpenELEC - http://www.openelec.tv
|
|
||||||
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
|
|
||||||
#
|
|
||||||
# This Program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This Program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
|
||||||
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
# http://www.gnu.org/copyleft/gpl.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
PKG_NAME="talloc"
|
|
||||||
PKG_VERSION="2.0.1"
|
|
||||||
PKG_REV="1"
|
|
||||||
PKG_ARCH="any"
|
|
||||||
PKG_LICENSE="LGPL"
|
|
||||||
PKG_SITE="http://www.samba.org"
|
|
||||||
PKG_URL="http://samba.org/ftp/talloc/$PKG_NAME-$PKG_VERSION.tar.gz"
|
|
||||||
PKG_DEPENDS=""
|
|
||||||
PKG_BUILD_DEPENDS="toolchain"
|
|
||||||
PKG_PRIORITY="optional"
|
|
||||||
PKG_SECTION="devel"
|
|
||||||
PKG_SHORTDESC="talloc: talloc is a hierarchical, reference counted memory pool system with destructors."
|
|
||||||
PKG_LONGDESC="talloc is a hierarchical, reference counted memory pool system with destructors. It is the core memory allocator used in Samba."
|
|
||||||
PKG_IS_ADDON="no"
|
|
||||||
|
|
||||||
PKG_AUTORECONF="no"
|
|
@ -25,8 +25,8 @@ PKG_ARCH="any"
|
|||||||
PKG_LICENSE="OSS"
|
PKG_LICENSE="OSS"
|
||||||
PKG_SITE="http://www.mesa3d.org/"
|
PKG_SITE="http://www.mesa3d.org/"
|
||||||
PKG_URL="ftp://ftp.freedesktop.org/pub/mesa/$PKG_VERSION/MesaLib-$PKG_VERSION.tar.bz2"
|
PKG_URL="ftp://ftp.freedesktop.org/pub/mesa/$PKG_VERSION/MesaLib-$PKG_VERSION.tar.bz2"
|
||||||
PKG_DEPENDS="libXdamage libdrm talloc expat libXext libXfixes libXxf86vm libxcb libX11"
|
PKG_DEPENDS="libXdamage libdrm expat libXext libXfixes libXxf86vm libxcb libX11"
|
||||||
PKG_BUILD_DEPENDS="toolchain Python makedepend libxml2-host talloc expat glproto dri2proto libdrm libXext libXdamage libXfixes libXxf86vm libxcb libX11"
|
PKG_BUILD_DEPENDS="toolchain Python makedepend libxml2-host expat glproto dri2proto libdrm libXext libXdamage libXfixes libXxf86vm libxcb libX11"
|
||||||
PKG_PRIORITY="optional"
|
PKG_PRIORITY="optional"
|
||||||
PKG_SECTION="graphics"
|
PKG_SECTION="graphics"
|
||||||
PKG_SHORTDESC="mesa: 3-D graphics library with OpenGL API"
|
PKG_SHORTDESC="mesa: 3-D graphics library with OpenGL API"
|
||||||
@ -36,6 +36,6 @@ PKG_IS_ADDON="no"
|
|||||||
PKG_AUTORECONF="yes"
|
PKG_AUTORECONF="yes"
|
||||||
|
|
||||||
if [ "$MESA_MASTER" = "yes" ]; then
|
if [ "$MESA_MASTER" = "yes" ]; then
|
||||||
PKG_VERSION="20110110"
|
PKG_VERSION="0f84dda"
|
||||||
PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||||
fi
|
fi
|
||||||
|
15
packages/graphics/Mesa/patches/Mesa-7.10.1-__atom.patch
Normal file
15
packages/graphics/Mesa/patches/Mesa-7.10.1-__atom.patch
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/r200/r200_cmdbuf.c Mesa-7.10.1-new/src/mesa/drivers/dri/r200/r200_cmdbuf.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/r200/r200_cmdbuf.c 2011-03-02 17:30:39.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/r200/r200_cmdbuf.c 2011-03-02 17:31:59.000000000 -0800
|
||||||
|
@@ -47,9 +47,8 @@
|
||||||
|
*/
|
||||||
|
#define insert_at_tail_if(atom_list, atom) \
|
||||||
|
do { \
|
||||||
|
- struct radeon_state_atom* __atom = (atom); \
|
||||||
|
- if (__atom->check) \
|
||||||
|
- insert_at_tail((atom_list), __atom); \
|
||||||
|
+ if ((atom)->check) \
|
||||||
|
+ insert_at_tail((atom_list), (atom)); \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
void r200SetUpAtomList( r200ContextPtr rmesa )
|
208
packages/graphics/Mesa/patches/Mesa-7.10.1-libdrm_nouveau.patch
Normal file
208
packages/graphics/Mesa/patches/Mesa-7.10.1-libdrm_nouveau.patch
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
diff -Naur Mesa-7.10.1-old/src/gallium/drivers/nv50/nv50_context.h Mesa-7.10.1-new/src/gallium/drivers/nv50/nv50_context.h
|
||||||
|
--- Mesa-7.10.1-old/src/gallium/drivers/nv50/nv50_context.h 2010-12-15 15:02:44.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/gallium/drivers/nv50/nv50_context.h 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -15,6 +15,8 @@
|
||||||
|
|
||||||
|
#include "nouveau/nouveau_winsys.h"
|
||||||
|
#include "nouveau/nouveau_gldefs.h"
|
||||||
|
+/* Hack to silence warnings caused by nouveau/nouveau_stateobj.h using BEGIN_BIND marcro */
|
||||||
|
+#include <nouveau/nv04_pushbuf.h>
|
||||||
|
#include "nouveau/nouveau_stateobj.h"
|
||||||
|
#include "nv50_reg.h"
|
||||||
|
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/gallium/drivers/nvfx/nv04_2d.c Mesa-7.10.1-new/src/gallium/drivers/nvfx/nv04_2d.c
|
||||||
|
--- Mesa-7.10.1-old/src/gallium/drivers/nvfx/nv04_2d.c 2011-01-25 15:52:45.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/gallium/drivers/nvfx/nv04_2d.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -39,6 +39,7 @@
|
||||||
|
#include <nouveau/nouveau_bo.h>
|
||||||
|
#include <nouveau/nouveau_notifier.h>
|
||||||
|
#include <nouveau/nouveau_grobj.h>
|
||||||
|
+#include <nouveau/nv04_pushbuf.h>
|
||||||
|
#include "nv04_2d.h"
|
||||||
|
|
||||||
|
#include "nouveau/nv_object.xml.h"
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/gallium/drivers/nvfx/nvfx_buffer.c Mesa-7.10.1-new/src/gallium/drivers/nvfx/nvfx_buffer.c
|
||||||
|
--- Mesa-7.10.1-old/src/gallium/drivers/nvfx/nvfx_buffer.c 2010-12-15 15:02:44.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/gallium/drivers/nvfx/nvfx_buffer.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -1,4 +1,3 @@
|
||||||
|
-
|
||||||
|
#include "util/u_inlines.h"
|
||||||
|
#include "util/u_memory.h"
|
||||||
|
#include "util/u_math.h"
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/gallium/drivers/nvfx/nvfx_screen.c Mesa-7.10.1-new/src/gallium/drivers/nvfx/nvfx_screen.c
|
||||||
|
--- Mesa-7.10.1-old/src/gallium/drivers/nvfx/nvfx_screen.c 2011-01-25 15:52:45.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/gallium/drivers/nvfx/nvfx_screen.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -10,6 +10,8 @@
|
||||||
|
#include "nvfx_resource.h"
|
||||||
|
#include "nvfx_tex.h"
|
||||||
|
|
||||||
|
+#include "nouveau/nv04_pushbuf.h"
|
||||||
|
+
|
||||||
|
#define NV30_3D_CHIPSET_3X_MASK 0x00000003
|
||||||
|
#define NV34_3D_CHIPSET_3X_MASK 0x00000010
|
||||||
|
#define NV35_3D_CHIPSET_3X_MASK 0x000001e0
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv04_driver.h Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv04_driver.h
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv04_driver.h 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv04_driver.h 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#define __NV04_DRIVER_H__
|
||||||
|
|
||||||
|
#include "nv04_context.h"
|
||||||
|
+#include "nv04_pushbuf.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
NOUVEAU_STATE_BLEND = NUM_NOUVEAU_STATE,
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_render.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_render.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_render.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_render.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include "nouveau_driver.h"
|
||||||
|
#include "nouveau_context.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
#define NUM_VERTEX_ATTRS 8
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_fb.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_fb.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_fb.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv_object.xml.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
static inline unsigned
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_frag.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_frag.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_frag.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
#define RC_IN_SHIFT_A 24
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_raster.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_raster.c 2011-01-25 15:52:45.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_raster.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_tex.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_tex.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_tex.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "nouveau_texture.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv10_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_render.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_render.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_render.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_render.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include "nouveau_driver.h"
|
||||||
|
#include "nouveau_context.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
#define NUM_VERTEX_ATTRS 16
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_fb.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_fb.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_fb.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_fb.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
static inline unsigned
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_frag.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_frag.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_frag.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_frag.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include "nouveau_context.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -28,6 +28,7 @@
|
||||||
|
#include "nouveau_context.h"
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_raster.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_raster.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_raster.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_raster.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_tex.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_tex.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_tex.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_tex.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "nouveau_texture.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
diff -Naur Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c
|
||||||
|
--- Mesa-7.10.1-old/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c 2010-12-14 13:43:15.000000000 -0800
|
||||||
|
+++ Mesa-7.10.1-new/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c 2011-03-02 17:31:09.000000000 -0800
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include "nouveau_gldefs.h"
|
||||||
|
#include "nouveau_util.h"
|
||||||
|
#include "nv20_3d.xml.h"
|
||||||
|
+#include "nv04_driver.h"
|
||||||
|
#include "nv10_driver.h"
|
||||||
|
#include "nv20_driver.h"
|
||||||
|
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="libdrm"
|
PKG_NAME="libdrm"
|
||||||
PKG_VERSION="2.4.23"
|
PKG_VERSION="2.4.24"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="libjpeg-turbo"
|
PKG_NAME="libjpeg-turbo"
|
||||||
PKG_VERSION="1.0.1"
|
PKG_VERSION="1.1.0"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="wlan-firmware"
|
PKG_NAME="wlan-firmware"
|
||||||
PKG_VERSION="0.0.1"
|
PKG_VERSION="0.0.2"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="Free-to-use"
|
PKG_LICENSE="Free-to-use"
|
||||||
|
@ -25,8 +25,18 @@
|
|||||||
export INSTALL=$(kernel_path)
|
export INSTALL=$(kernel_path)
|
||||||
$SCRIPTS/install busybox-initramfs
|
$SCRIPTS/install busybox-initramfs
|
||||||
|
|
||||||
|
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||||
|
$SCRIPTS/build u-boot
|
||||||
|
KERNEL_IMAGE="uImage"
|
||||||
|
else
|
||||||
|
KERNEL_IMAGE="bzImage"
|
||||||
|
fi
|
||||||
|
|
||||||
unset LDFLAGS
|
unset LDFLAGS
|
||||||
|
|
||||||
|
# dont build parallel
|
||||||
|
MAKEFLAGS=-j1
|
||||||
|
|
||||||
cd $(kernel_path)
|
cd $(kernel_path)
|
||||||
rm -rf modules
|
rm -rf modules
|
||||||
mkdir -p modules
|
mkdir -p modules
|
||||||
@ -36,5 +46,5 @@ make INSTALL_MOD_PATH=modules DEPMOD="$ROOT/$TOOLCHAIN/sbin/depmod" modules_inst
|
|||||||
rm -f modules/lib/modules/*/build
|
rm -f modules/lib/modules/*/build
|
||||||
rm -f modules/lib/modules/*/source
|
rm -f modules/lib/modules/*/source
|
||||||
|
|
||||||
make bzImage
|
make $KERNEL_IMAGE
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="linux"
|
PKG_NAME="linux"
|
||||||
PKG_VERSION="2.6.38-rc7"
|
PKG_VERSION="2.6.38-rc8"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
@ -37,6 +37,6 @@ PKG_IS_ADDON="no"
|
|||||||
PKG_AUTORECONF="no"
|
PKG_AUTORECONF="no"
|
||||||
|
|
||||||
if [ "$LINUX_NEXT" = "yes" ]; then
|
if [ "$LINUX_NEXT" = "yes" ]; then
|
||||||
PKG_VERSION="2.6.37"
|
PKG_VERSION="2.6.38-rc7"
|
||||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v2.6/testing/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
PKG_URL="http://www.kernel.org/pub/linux/kernel/v2.6/testing/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||||
fi
|
fi
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.37/2.6.37-ck2/patches/
|
|
||||||
|
|
||||||
2.6.37-sched-bfs-363.patch
|
|
||||||
2637-bfs363-nonhotplug_fix.patch
|
|
||||||
sched-add-above-background-load-function.patch
|
|
||||||
mm-zero_swappiness.patch
|
|
||||||
mm-enable_swaptoken_only_when_swap_full.patch
|
|
||||||
mm-drop_swap_cache_aggressively.patch
|
|
||||||
mm-kswapd_inherit_prio-1.patch
|
|
||||||
mm-background_scan.patch
|
|
||||||
mm-idleprio_prio-1.patch
|
|
||||||
mm-lru_cache_add_lru_tail.patch
|
|
||||||
mm-decrease_default_dirty_ratio.patch
|
|
||||||
kconfig-expose_vmsplit_option.patch
|
|
||||||
hz-default_1000.patch
|
|
||||||
hz-no_default_250.patch
|
|
||||||
hz-raise_max.patch
|
|
||||||
preempt-desktop-tune.patch
|
|
||||||
cpufreq-bfs_tweaks.patch
|
|
||||||
ck2-version.patch
|
|
File diff suppressed because it is too large
Load Diff
@ -1,60 +0,0 @@
|
|||||||
Fix a failure to build if CPU hotplug is disabled with BFS.
|
|
||||||
|
|
||||||
-ck
|
|
||||||
|
|
||||||
---
|
|
||||||
kernel/sched_bfs.c | 34 +++++++++++++++++-----------------
|
|
||||||
1 file changed, 17 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/kernel/sched_bfs.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/sched_bfs.c 2011-02-14 09:50:24.351252002 +1100
|
|
||||||
+++ linux-2.6.37-ck2/kernel/sched_bfs.c 2011-02-14 09:53:53.820252000 +1100
|
|
||||||
@@ -4812,6 +4812,23 @@
|
|
||||||
grq_unlock_irqrestore(&flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Ensures that the idle task is using init_mm right before its cpu goes
|
|
||||||
+ * offline.
|
|
||||||
+ */
|
|
||||||
+void idle_task_exit(void)
|
|
||||||
+{
|
|
||||||
+ struct mm_struct *mm = current->active_mm;
|
|
||||||
+
|
|
||||||
+ BUG_ON(cpu_online(smp_processor_id()));
|
|
||||||
+
|
|
||||||
+ if (mm != &init_mm)
|
|
||||||
+ switch_mm(mm, &init_mm, current);
|
|
||||||
+ mmdrop(mm);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#endif /* CONFIG_HOTPLUG_CPU */
|
|
||||||
+
|
|
||||||
void sched_set_stop_task(int cpu, struct task_struct *stop)
|
|
||||||
{
|
|
||||||
struct sched_param stop_param = { .sched_priority = STOP_PRIO };
|
|
||||||
@@ -4841,23 +4858,6 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-/*
|
|
||||||
- * Ensures that the idle task is using init_mm right before its cpu goes
|
|
||||||
- * offline.
|
|
||||||
- */
|
|
||||||
-void idle_task_exit(void)
|
|
||||||
-{
|
|
||||||
- struct mm_struct *mm = current->active_mm;
|
|
||||||
-
|
|
||||||
- BUG_ON(cpu_online(smp_processor_id()));
|
|
||||||
-
|
|
||||||
- if (mm != &init_mm)
|
|
||||||
- switch_mm(mm, &init_mm, current);
|
|
||||||
- mmdrop(mm);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-#endif /* CONFIG_HOTPLUG_CPU */
|
|
||||||
-
|
|
||||||
#if defined(CONFIG_SCHED_DEBUG) && defined(CONFIG_SYSCTL)
|
|
||||||
|
|
||||||
static struct ctl_table sd_ctl_dir[] = {
|
|
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
Makefile | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/Makefile
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/Makefile 2011-01-06 14:04:07.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/Makefile 2011-02-14 10:11:20.469252000 +1100
|
|
||||||
@@ -10,6 +10,10 @@
|
|
||||||
# Comments in this file are targeted only to the developer, do not
|
|
||||||
# expect to learn how to build the kernel reading this file.
|
|
||||||
|
|
||||||
+CKVERSION = -ck2
|
|
||||||
+CKNAME = BFS Powered
|
|
||||||
+EXTRAVERSION := $(EXTRAVERSION)$(CKVERSION)
|
|
||||||
+
|
|
||||||
# Do not:
|
|
||||||
# o use make's built-in rules and variables
|
|
||||||
# (this increases performance and avoids hard-to-debug behaviour);
|
|
@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
drivers/cpufreq/cpufreq_ondemand.c | 10 +++++-----
|
|
||||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/drivers/cpufreq/cpufreq_ondemand.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/drivers/cpufreq/cpufreq_ondemand.c 2011-01-06 14:04:08.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/drivers/cpufreq/cpufreq_ondemand.c 2011-02-14 10:11:11.438252001 +1100
|
|
||||||
@@ -28,12 +28,12 @@
|
|
||||||
* It helps to keep variable names smaller, simpler
|
|
||||||
*/
|
|
||||||
|
|
||||||
-#define DEF_FREQUENCY_DOWN_DIFFERENTIAL (10)
|
|
||||||
-#define DEF_FREQUENCY_UP_THRESHOLD (80)
|
|
||||||
+#define DEF_FREQUENCY_DOWN_DIFFERENTIAL (17)
|
|
||||||
+#define DEF_FREQUENCY_UP_THRESHOLD (63)
|
|
||||||
#define DEF_SAMPLING_DOWN_FACTOR (1)
|
|
||||||
#define MAX_SAMPLING_DOWN_FACTOR (100000)
|
|
||||||
#define MICRO_FREQUENCY_DOWN_DIFFERENTIAL (3)
|
|
||||||
-#define MICRO_FREQUENCY_UP_THRESHOLD (95)
|
|
||||||
+#define MICRO_FREQUENCY_UP_THRESHOLD (80)
|
|
||||||
#define MICRO_FREQUENCY_MIN_SAMPLE_RATE (10000)
|
|
||||||
#define MIN_FREQUENCY_UP_THRESHOLD (11)
|
|
||||||
#define MAX_FREQUENCY_UP_THRESHOLD (100)
|
|
||||||
@@ -513,10 +513,10 @@
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Every sampling_rate, we check, if current idle time is less
|
|
||||||
- * than 20% (default), then we try to increase frequency
|
|
||||||
+ * than 37% (default), then we try to increase frequency
|
|
||||||
* Every sampling_rate, we look for a the lowest
|
|
||||||
* frequency which can sustain the load while keeping idle time over
|
|
||||||
- * 30%. If such a frequency exist, we try to decrease to this frequency.
|
|
||||||
+ * 50%. If such a frequency exist, we try to decrease to this frequency.
|
|
||||||
*
|
|
||||||
* Any frequency increase takes it to the maximum frequency.
|
|
||||||
* Frequency reduction happens at minimum steps of
|
|
@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
kernel/Kconfig.hz | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/kernel/Kconfig.hz
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/Kconfig.hz 2009-06-10 13:05:27.000000000 +1000
|
|
||||||
+++ linux-2.6.37-ck2/kernel/Kconfig.hz 2011-02-14 10:11:10.474252000 +1100
|
|
||||||
@@ -4,7 +4,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Timer frequency"
|
|
||||||
- default HZ_250
|
|
||||||
+ default HZ_1000
|
|
||||||
help
|
|
||||||
Allows the configuration of the timer frequency. It is customary
|
|
||||||
to have the timer interrupt run at 1000 Hz but 100 Hz may be more
|
|
@ -1,47 +0,0 @@
|
|||||||
---
|
|
||||||
kernel/Kconfig.hz | 17 ++++++++++-------
|
|
||||||
1 file changed, 10 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/kernel/Kconfig.hz
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/Kconfig.hz 2011-02-14 10:11:10.474252000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/kernel/Kconfig.hz 2011-02-14 10:11:10.702252000 +1100
|
|
||||||
@@ -23,13 +23,14 @@
|
|
||||||
with lots of processors that may show reduced performance if
|
|
||||||
too many timer interrupts are occurring.
|
|
||||||
|
|
||||||
- config HZ_250
|
|
||||||
+ config HZ_250_NODEFAULT
|
|
||||||
bool "250 HZ"
|
|
||||||
help
|
|
||||||
- 250 Hz is a good compromise choice allowing server performance
|
|
||||||
- while also showing good interactive responsiveness even
|
|
||||||
- on SMP and NUMA systems. If you are going to be using NTSC video
|
|
||||||
- or multimedia, selected 300Hz instead.
|
|
||||||
+ 250 HZ is a lousy compromise choice allowing server interactivity
|
|
||||||
+ while also showing desktop throughput and no extra power saving on
|
|
||||||
+ laptops. No good for anything.
|
|
||||||
+
|
|
||||||
+ Recommend 100 or 1000 instead.
|
|
||||||
|
|
||||||
config HZ_300
|
|
||||||
bool "300 HZ"
|
|
||||||
@@ -43,14 +44,16 @@
|
|
||||||
bool "1000 HZ"
|
|
||||||
help
|
|
||||||
1000 Hz is the preferred choice for desktop systems and other
|
|
||||||
- systems requiring fast interactive responses to events.
|
|
||||||
+ systems requiring fast interactive responses to events. Laptops
|
|
||||||
+ can also benefit from this choice without sacrificing battery life
|
|
||||||
+ if dynticks is also enabled.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config HZ
|
|
||||||
int
|
|
||||||
default 100 if HZ_100
|
|
||||||
- default 250 if HZ_250
|
|
||||||
+ default 250 if HZ_250_NODEFAULT
|
|
||||||
default 300 if HZ_300
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
|
|
@ -1,174 +0,0 @@
|
|||||||
---
|
|
||||||
arch/x86/kernel/cpu/proc.c | 2 -
|
|
||||||
arch/x86/kernel/smpboot.c | 2 -
|
|
||||||
include/linux/nfsd/stats.h | 4 +-
|
|
||||||
include/net/inet_timewait_sock.h | 10 ++++--
|
|
||||||
init/calibrate.c | 2 -
|
|
||||||
kernel/Kconfig.hz | 64 +++++++++++++++++++++++++++++++++++++++
|
|
||||||
6 files changed, 76 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/arch/x86/kernel/cpu/proc.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/arch/x86/kernel/cpu/proc.c 2009-12-03 21:39:58.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/arch/x86/kernel/cpu/proc.c 2011-02-14 10:11:10.919252001 +1100
|
|
||||||
@@ -109,7 +109,7 @@
|
|
||||||
|
|
||||||
seq_printf(m, "\nbogomips\t: %lu.%02lu\n",
|
|
||||||
c->loops_per_jiffy/(500000/HZ),
|
|
||||||
- (c->loops_per_jiffy/(5000/HZ)) % 100);
|
|
||||||
+ (c->loops_per_jiffy * 10 /(50000/HZ)) % 100);
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
|
||||||
if (c->x86_tlbsize > 0)
|
|
||||||
Index: linux-2.6.37-ck2/arch/x86/kernel/smpboot.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/arch/x86/kernel/smpboot.c 2011-01-06 14:04:08.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/arch/x86/kernel/smpboot.c 2011-02-14 10:11:10.920252001 +1100
|
|
||||||
@@ -497,7 +497,7 @@
|
|
||||||
"Total of %d processors activated (%lu.%02lu BogoMIPS).\n",
|
|
||||||
num_online_cpus(),
|
|
||||||
bogosum/(500000/HZ),
|
|
||||||
- (bogosum/(5000/HZ))%100);
|
|
||||||
+ (bogosum * 10/(50000/HZ))%100);
|
|
||||||
|
|
||||||
pr_debug("Before bogocount - setting activated=1.\n");
|
|
||||||
}
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/nfsd/stats.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/nfsd/stats.h 2009-06-10 13:05:27.000000000 +1000
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/nfsd/stats.h 2011-02-14 10:11:10.920252001 +1100
|
|
||||||
@@ -11,8 +11,8 @@
|
|
||||||
|
|
||||||
#include <linux/nfs4.h>
|
|
||||||
|
|
||||||
-/* thread usage wraps very million seconds (approx one fortnight) */
|
|
||||||
-#define NFSD_USAGE_WRAP (HZ*1000000)
|
|
||||||
+/* thread usage wraps every one hundred thousand seconds (approx one day) */
|
|
||||||
+#define NFSD_USAGE_WRAP (HZ*100000)
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/net/inet_timewait_sock.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/net/inet_timewait_sock.h 2010-08-02 11:12:25.000000000 +1000
|
|
||||||
+++ linux-2.6.37-ck2/include/net/inet_timewait_sock.h 2011-02-14 10:11:10.920252001 +1100
|
|
||||||
@@ -39,8 +39,8 @@
|
|
||||||
* If time > 4sec, it is "slow" path, no recycling is required,
|
|
||||||
* so that we select tick to get range about 4 seconds.
|
|
||||||
*/
|
|
||||||
-#if HZ <= 16 || HZ > 4096
|
|
||||||
-# error Unsupported: HZ <= 16 or HZ > 4096
|
|
||||||
+#if HZ <= 16 || HZ > 16384
|
|
||||||
+# error Unsupported: HZ <= 16 or HZ > 16384
|
|
||||||
#elif HZ <= 32
|
|
||||||
# define INET_TWDR_RECYCLE_TICK (5 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
#elif HZ <= 64
|
|
||||||
@@ -55,8 +55,12 @@
|
|
||||||
# define INET_TWDR_RECYCLE_TICK (10 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
#elif HZ <= 2048
|
|
||||||
# define INET_TWDR_RECYCLE_TICK (11 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
-#else
|
|
||||||
+#elif HZ <= 4096
|
|
||||||
# define INET_TWDR_RECYCLE_TICK (12 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
+#elif HZ <= 8192
|
|
||||||
+# define INET_TWDR_RECYCLE_TICK (13 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
+#else
|
|
||||||
+# define INET_TWDR_RECYCLE_TICK (14 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* TIME_WAIT reaping mechanism. */
|
|
||||||
Index: linux-2.6.37-ck2/init/calibrate.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/init/calibrate.c 2010-02-25 21:51:52.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/init/calibrate.c 2011-02-14 10:11:10.921252001 +1100
|
|
||||||
@@ -176,7 +176,7 @@
|
|
||||||
if (!printed)
|
|
||||||
pr_cont("%lu.%02lu BogoMIPS (lpj=%lu)\n",
|
|
||||||
loops_per_jiffy/(500000/HZ),
|
|
||||||
- (loops_per_jiffy/(5000/HZ)) % 100, loops_per_jiffy);
|
|
||||||
+ (loops_per_jiffy * 10 /(50000/HZ)) % 100, loops_per_jiffy);
|
|
||||||
|
|
||||||
printed = true;
|
|
||||||
}
|
|
||||||
Index: linux-2.6.37-ck2/kernel/Kconfig.hz
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/Kconfig.hz 2011-02-14 10:11:10.702252000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/kernel/Kconfig.hz 2011-02-14 10:11:10.921252001 +1100
|
|
||||||
@@ -48,6 +48,63 @@
|
|
||||||
can also benefit from this choice without sacrificing battery life
|
|
||||||
if dynticks is also enabled.
|
|
||||||
|
|
||||||
+ config HZ_1500
|
|
||||||
+ bool "1500 HZ"
|
|
||||||
+ help
|
|
||||||
+ 1500 Hz is an insane value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_2000
|
|
||||||
+ bool "2000 HZ"
|
|
||||||
+ help
|
|
||||||
+ 2000 Hz is an insane value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_3000
|
|
||||||
+ bool "3000 HZ"
|
|
||||||
+ help
|
|
||||||
+ 3000 Hz is an insane value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_4000
|
|
||||||
+ bool "4000 HZ"
|
|
||||||
+ help
|
|
||||||
+ 4000 Hz is an insane value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_5000
|
|
||||||
+ bool "5000 HZ"
|
|
||||||
+ help
|
|
||||||
+ 5000 Hz is an obscene value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_7500
|
|
||||||
+ bool "7500 HZ"
|
|
||||||
+ help
|
|
||||||
+ 7500 Hz is an obscene value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+ config HZ_10000
|
|
||||||
+ bool "10000 HZ"
|
|
||||||
+ help
|
|
||||||
+ 10000 Hz is an obscene value to use to run broken software that is Hz
|
|
||||||
+ limited.
|
|
||||||
+
|
|
||||||
+ Being over 1000, driver breakage is likely.
|
|
||||||
+
|
|
||||||
+
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config HZ
|
|
||||||
@@ -56,6 +113,13 @@
|
|
||||||
default 250 if HZ_250_NODEFAULT
|
|
||||||
default 300 if HZ_300
|
|
||||||
default 1000 if HZ_1000
|
|
||||||
+ default 1500 if HZ_1500
|
|
||||||
+ default 2000 if HZ_2000
|
|
||||||
+ default 3000 if HZ_3000
|
|
||||||
+ default 4000 if HZ_4000
|
|
||||||
+ default 5000 if HZ_5000
|
|
||||||
+ default 7500 if HZ_7500
|
|
||||||
+ default 10000 if HZ_10000
|
|
||||||
|
|
||||||
config SCHED_HRTICK
|
|
||||||
def_bool HIGH_RES_TIMERS && (!SMP || USE_GENERIC_SMP_HELPERS)
|
|
@ -1,40 +0,0 @@
|
|||||||
---
|
|
||||||
arch/x86/Kconfig | 12 ++++++------
|
|
||||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/arch/x86/Kconfig
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/arch/x86/Kconfig 2011-01-06 14:04:08.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/arch/x86/Kconfig 2011-02-14 10:11:10.260252001 +1100
|
|
||||||
@@ -1046,7 +1046,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
depends on EXPERIMENTAL
|
|
||||||
- prompt "Memory split" if EMBEDDED
|
|
||||||
+ prompt "Memory split"
|
|
||||||
default VMSPLIT_3G
|
|
||||||
depends on X86_32
|
|
||||||
---help---
|
|
||||||
@@ -1066,17 +1066,17 @@
|
|
||||||
option alone!
|
|
||||||
|
|
||||||
config VMSPLIT_3G
|
|
||||||
- bool "3G/1G user/kernel split"
|
|
||||||
+ bool "Default 896MB lowmem (3G/1G user/kernel split)"
|
|
||||||
config VMSPLIT_3G_OPT
|
|
||||||
depends on !X86_PAE
|
|
||||||
- bool "3G/1G user/kernel split (for full 1G low memory)"
|
|
||||||
+ bool "1GB lowmem (3G/1G user/kernel split)"
|
|
||||||
config VMSPLIT_2G
|
|
||||||
- bool "2G/2G user/kernel split"
|
|
||||||
+ bool "2GB lowmem (2G/2G user/kernel split)"
|
|
||||||
config VMSPLIT_2G_OPT
|
|
||||||
depends on !X86_PAE
|
|
||||||
- bool "2G/2G user/kernel split (for full 2G low memory)"
|
|
||||||
+ bool "2GB lowmem (2G/2G user/kernel split)"
|
|
||||||
config VMSPLIT_1G
|
|
||||||
- bool "1G/3G user/kernel split"
|
|
||||||
+ bool "3GB lowmem (1G/3G user/kernel split)"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config PAGE_OFFSET
|
|
@ -1,69 +0,0 @@
|
|||||||
---
|
|
||||||
mm/vmscan.c | 33 ++++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 32 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/mm/vmscan.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/vmscan.c 2011-02-14 10:11:00.986252001 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/vmscan.c 2011-02-14 10:11:01.254252001 +1100
|
|
||||||
@@ -1855,6 +1855,33 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * Helper functions to adjust nice level of kswapd, based on the priority of
|
|
||||||
+ * the task (p) that called it. If it is already higher priority we do not
|
|
||||||
+ * demote its nice level since it is still working on behalf of a higher
|
|
||||||
+ * priority task. With kernel threads we leave it at nice 0.
|
|
||||||
+ *
|
|
||||||
+ * We don't ever run kswapd real time, so if a real time task calls kswapd we
|
|
||||||
+ * set it to highest SCHED_NORMAL priority.
|
|
||||||
+ */
|
|
||||||
+static inline int effective_sc_prio(struct task_struct *p)
|
|
||||||
+{
|
|
||||||
+ if (likely(p->mm)) {
|
|
||||||
+ if (rt_task(p))
|
|
||||||
+ return -20;
|
|
||||||
+ return task_nice(p);
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void set_kswapd_nice(struct task_struct *kswapd, int active)
|
|
||||||
+{
|
|
||||||
+ long nice = effective_sc_prio(current);
|
|
||||||
+
|
|
||||||
+ if (task_nice(kswapd) > nice || !active)
|
|
||||||
+ set_user_nice(kswapd, nice);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* This is the direct reclaim path, for page-allocating processes. We only
|
|
||||||
* try to reclaim pages from zones which will satisfy the caller's allocation
|
|
||||||
* request.
|
|
||||||
@@ -2457,6 +2484,7 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ set_user_nice(tsk, 0);
|
|
||||||
order = pgdat->kswapd_max_order;
|
|
||||||
}
|
|
||||||
finish_wait(&pgdat->kswapd_wait, &wait);
|
|
||||||
@@ -2483,6 +2511,7 @@
|
|
||||||
void wakeup_kswapd(struct zone *zone, int order)
|
|
||||||
{
|
|
||||||
pg_data_t *pgdat;
|
|
||||||
+ int active;
|
|
||||||
|
|
||||||
if (!populated_zone(zone))
|
|
||||||
return;
|
|
||||||
@@ -2495,7 +2524,9 @@
|
|
||||||
trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order);
|
|
||||||
if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
|
|
||||||
return;
|
|
||||||
- if (!waitqueue_active(&pgdat->kswapd_wait))
|
|
||||||
+ active = waitqueue_active(&pgdat->kswapd_wait);
|
|
||||||
+ set_kswapd_nice(pgdat->kswapd, active);
|
|
||||||
+ if (!active)
|
|
||||||
return;
|
|
||||||
wake_up_interruptible(&pgdat->kswapd_wait);
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
The default dirty ratio is chosen to be a compromise between throughput and
|
|
||||||
overall system latency. On a desktop, if an application writes to disk a lot,
|
|
||||||
that application should be the one to slow down rather than the desktop as a
|
|
||||||
whole. At higher dirty ratio settings, an application could write a lot to
|
|
||||||
disk and then happily use lots of CPU time after that while the rest of the
|
|
||||||
system is busy waiting on that naughty applications disk writes to complete
|
|
||||||
before anything else happening.
|
|
||||||
|
|
||||||
Lower ratios mean that the application that do a lot of disk writes end up
|
|
||||||
being responsible for their own actions and they're the ones that slow down
|
|
||||||
rather than the system in general.
|
|
||||||
|
|
||||||
This does decrease overall write throughput slightly, but to the benefit of
|
|
||||||
the latency of the system as a whole.
|
|
||||||
|
|
||||||
-ck
|
|
||||||
|
|
||||||
---
|
|
||||||
mm/page-writeback.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/mm/page-writeback.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/page-writeback.c 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/page-writeback.c 2011-02-14 10:11:10.037252000 +1100
|
|
||||||
@@ -78,7 +78,7 @@
|
|
||||||
/*
|
|
||||||
* The generator of dirty data starts writeback at this percentage
|
|
||||||
*/
|
|
||||||
-int vm_dirty_ratio = 20;
|
|
||||||
+int vm_dirty_ratio = 5;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* vm_dirty_bytes starts at 0 (disabled) so that it is a function of
|
|
@ -1,87 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/swap.h | 2 +-
|
|
||||||
mm/memory.c | 2 +-
|
|
||||||
mm/swapfile.c | 9 ++++-----
|
|
||||||
mm/vmscan.c | 2 +-
|
|
||||||
4 files changed, 7 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/swap.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/swap.h 2011-02-14 10:11:00.763252001 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/swap.h 2011-02-14 10:11:00.982252001 +1100
|
|
||||||
@@ -192,7 +192,7 @@
|
|
||||||
int next; /* swapfile to be used next */
|
|
||||||
};
|
|
||||||
|
|
||||||
-/* Swap 50% full? Release swapcache more aggressively.. */
|
|
||||||
+/* Swap 50% full? */
|
|
||||||
#define vm_swap_full() (nr_swap_pages*2 < total_swap_pages)
|
|
||||||
|
|
||||||
/* linux/mm/page_alloc.c */
|
|
||||||
Index: linux-2.6.37-ck2/mm/memory.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/memory.c 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/memory.c 2011-02-14 10:11:00.984252001 +1100
|
|
||||||
@@ -2754,7 +2754,7 @@
|
|
||||||
mem_cgroup_commit_charge_swapin(page, ptr);
|
|
||||||
|
|
||||||
swap_free(entry);
|
|
||||||
- if (vm_swap_full() || (vma->vm_flags & VM_LOCKED) || PageMlocked(page))
|
|
||||||
+ if ((vma->vm_flags & VM_LOCKED) || PageMlocked(page))
|
|
||||||
try_to_free_swap(page);
|
|
||||||
unlock_page(page);
|
|
||||||
if (swapcache) {
|
|
||||||
Index: linux-2.6.37-ck2/mm/swapfile.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/swapfile.c 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/swapfile.c 2011-02-14 10:11:00.985252001 +1100
|
|
||||||
@@ -321,7 +321,7 @@
|
|
||||||
scan_base = offset = si->lowest_bit;
|
|
||||||
|
|
||||||
/* reuse swap entry of cache-only swap if not busy. */
|
|
||||||
- if (vm_swap_full() && si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
+ if (si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
int swap_was_freed;
|
|
||||||
spin_unlock(&swap_lock);
|
|
||||||
swap_was_freed = __try_to_reclaim_swap(si, offset);
|
|
||||||
@@ -410,7 +410,7 @@
|
|
||||||
spin_lock(&swap_lock);
|
|
||||||
goto checks;
|
|
||||||
}
|
|
||||||
- if (vm_swap_full() && si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
+ if (si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
spin_lock(&swap_lock);
|
|
||||||
goto checks;
|
|
||||||
}
|
|
||||||
@@ -425,7 +425,7 @@
|
|
||||||
spin_lock(&swap_lock);
|
|
||||||
goto checks;
|
|
||||||
}
|
|
||||||
- if (vm_swap_full() && si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
+ if (si->swap_map[offset] == SWAP_HAS_CACHE) {
|
|
||||||
spin_lock(&swap_lock);
|
|
||||||
goto checks;
|
|
||||||
}
|
|
||||||
@@ -739,8 +739,7 @@
|
|
||||||
* Not mapped elsewhere, or swap space full? Free it!
|
|
||||||
* Also recheck PageSwapCache now page is locked (above).
|
|
||||||
*/
|
|
||||||
- if (PageSwapCache(page) && !PageWriteback(page) &&
|
|
||||||
- (!page_mapped(page) || vm_swap_full())) {
|
|
||||||
+ if (PageSwapCache(page) && !PageWriteback(page)) {
|
|
||||||
delete_from_swap_cache(page);
|
|
||||||
SetPageDirty(page);
|
|
||||||
}
|
|
||||||
Index: linux-2.6.37-ck2/mm/vmscan.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/vmscan.c 2011-02-14 10:11:00.536252000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/vmscan.c 2011-02-14 10:11:00.986252001 +1100
|
|
||||||
@@ -900,7 +900,7 @@
|
|
||||||
|
|
||||||
activate_locked:
|
|
||||||
/* Not a candidate for swapping, so reclaim swap space. */
|
|
||||||
- if (PageSwapCache(page) && vm_swap_full())
|
|
||||||
+ if (PageSwapCache(page))
|
|
||||||
try_to_free_swap(page);
|
|
||||||
VM_BUG_ON(PageActive(page));
|
|
||||||
SetPageActive(page);
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/swap.h | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/swap.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/swap.h 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/swap.h 2011-02-14 10:11:00.763252001 +1100
|
|
||||||
@@ -348,9 +348,10 @@
|
|
||||||
extern void grab_swap_token(struct mm_struct *);
|
|
||||||
extern void __put_swap_token(struct mm_struct *);
|
|
||||||
|
|
||||||
+/* Only allow swap token to have effect if swap is full */
|
|
||||||
static inline int has_swap_token(struct mm_struct *mm)
|
|
||||||
{
|
|
||||||
- return (mm == swap_token_mm);
|
|
||||||
+ return (mm == swap_token_mm && vm_swap_full());
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void put_swap_token(struct mm_struct *mm)
|
|
@ -1,137 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/mmzone.h | 6 +++++-
|
|
||||||
mm/vmscan.c | 42 ++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 47 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/mmzone.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/mmzone.h 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/mmzone.h 2011-02-14 10:11:01.470252001 +1100
|
|
||||||
@@ -15,6 +15,7 @@
|
|
||||||
#include <linux/seqlock.h>
|
|
||||||
#include <linux/nodemask.h>
|
|
||||||
#include <linux/pageblock-flags.h>
|
|
||||||
+#include <linux/timer.h>
|
|
||||||
#include <generated/bounds.h>
|
|
||||||
#include <asm/atomic.h>
|
|
||||||
#include <asm/page.h>
|
|
||||||
@@ -161,12 +162,14 @@
|
|
||||||
WMARK_MIN,
|
|
||||||
WMARK_LOW,
|
|
||||||
WMARK_HIGH,
|
|
||||||
+ WMARK_LOTS,
|
|
||||||
NR_WMARK
|
|
||||||
};
|
|
||||||
|
|
||||||
#define min_wmark_pages(z) (z->watermark[WMARK_MIN])
|
|
||||||
#define low_wmark_pages(z) (z->watermark[WMARK_LOW])
|
|
||||||
#define high_wmark_pages(z) (z->watermark[WMARK_HIGH])
|
|
||||||
+#define lots_wmark_pages(z) (z->watermark[WMARK_LOTS])
|
|
||||||
|
|
||||||
struct per_cpu_pages {
|
|
||||||
int count; /* number of pages in the list */
|
|
||||||
@@ -343,7 +346,7 @@
|
|
||||||
ZONE_PADDING(_pad1_)
|
|
||||||
|
|
||||||
/* Fields commonly accessed by the page reclaim scanner */
|
|
||||||
- spinlock_t lru_lock;
|
|
||||||
+ spinlock_t lru_lock;
|
|
||||||
struct zone_lru {
|
|
||||||
struct list_head list;
|
|
||||||
} lru[NR_LRU_LISTS];
|
|
||||||
@@ -645,6 +648,7 @@
|
|
||||||
wait_queue_head_t kswapd_wait;
|
|
||||||
struct task_struct *kswapd;
|
|
||||||
int kswapd_max_order;
|
|
||||||
+ struct timer_list watermark_timer;
|
|
||||||
} pg_data_t;
|
|
||||||
|
|
||||||
#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
|
|
||||||
Index: linux-2.6.37-ck2/mm/vmscan.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/vmscan.c 2011-02-14 10:11:01.254252001 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/vmscan.c 2011-02-14 10:11:01.471252001 +1100
|
|
||||||
@@ -36,6 +36,7 @@
|
|
||||||
#include <linux/rwsem.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/kthread.h>
|
|
||||||
+#include <linux/timer.h>
|
|
||||||
#include <linux/freezer.h>
|
|
||||||
#include <linux/memcontrol.h>
|
|
||||||
#include <linux/delayacct.h>
|
|
||||||
@@ -2398,6 +2399,8 @@
|
|
||||||
return sc.nr_reclaimed;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#define WT_EXPIRY (HZ * 5) /* Time to wakeup watermark_timer */
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* The background pageout daemon, started as a kernel thread
|
|
||||||
* from the init process.
|
|
||||||
@@ -2448,6 +2451,8 @@
|
|
||||||
unsigned long new_order;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ /* kswapd has been busy so delay watermark_timer */
|
|
||||||
+ mod_timer(&pgdat->watermark_timer, jiffies + WT_EXPIRY);
|
|
||||||
prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE);
|
|
||||||
new_order = pgdat->kswapd_max_order;
|
|
||||||
pgdat->kswapd_max_order = 0;
|
|
||||||
@@ -2632,20 +2637,57 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * We wake up kswapd every WT_EXPIRY till free ram is above pages_lots
|
|
||||||
+ */
|
|
||||||
+static void watermark_wakeup(unsigned long data)
|
|
||||||
+{
|
|
||||||
+ pg_data_t *pgdat = (pg_data_t *)data;
|
|
||||||
+ struct timer_list *wt = &pgdat->watermark_timer;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ if (!waitqueue_active(&pgdat->kswapd_wait) || above_background_load())
|
|
||||||
+ goto out;
|
|
||||||
+ for (i = pgdat->nr_zones - 1; i >= 0; i--) {
|
|
||||||
+ struct zone *z = pgdat->node_zones + i;
|
|
||||||
+
|
|
||||||
+ if (!populated_zone(z) || is_highmem(z)) {
|
|
||||||
+ /* We are better off leaving highmem full */
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+ if (!zone_watermark_ok(z, 0, lots_wmark_pages(z), 0, 0)) {
|
|
||||||
+ wake_up_interruptible(&pgdat->kswapd_wait);
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+out:
|
|
||||||
+ mod_timer(wt, jiffies + WT_EXPIRY);
|
|
||||||
+ return;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* This kswapd start function will be called by init and node-hot-add.
|
|
||||||
* On node-hot-add, kswapd will moved to proper cpus if cpus are hot-added.
|
|
||||||
*/
|
|
||||||
int kswapd_run(int nid)
|
|
||||||
{
|
|
||||||
pg_data_t *pgdat = NODE_DATA(nid);
|
|
||||||
+ struct timer_list *wt;
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
if (pgdat->kswapd)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
+ wt = &pgdat->watermark_timer;
|
|
||||||
+ init_timer(wt);
|
|
||||||
+ wt->data = (unsigned long)pgdat;
|
|
||||||
+ wt->function = watermark_wakeup;
|
|
||||||
+ wt->expires = jiffies + WT_EXPIRY;
|
|
||||||
+ add_timer(wt);
|
|
||||||
+
|
|
||||||
pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid);
|
|
||||||
if (IS_ERR(pgdat->kswapd)) {
|
|
||||||
/* failure at boot is fatal */
|
|
||||||
+ del_timer(wt);
|
|
||||||
BUG_ON(system_state == SYSTEM_BOOTING);
|
|
||||||
printk("Failed to start kswapd on node %d\n",nid);
|
|
||||||
ret = -1;
|
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/sched.h | 2 +-
|
|
||||||
mm/vmscan.c | 2 ++
|
|
||||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck1/include/linux/sched.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck1.orig/include/linux/sched.h 2011-01-06 14:07:19.971048973 +1100
|
|
||||||
+++ linux-2.6.37-ck1/include/linux/sched.h 2011-01-06 14:07:58.442334300 +1100
|
|
||||||
@@ -38,9 +38,9 @@
|
|
||||||
#define SCHED_BATCH 3
|
|
||||||
/* SCHED_ISO: Implemented on BFS only */
|
|
||||||
#define SCHED_IDLE 5
|
|
||||||
+#define SCHED_IDLEPRIO SCHED_IDLE
|
|
||||||
#ifdef CONFIG_SCHED_BFS
|
|
||||||
#define SCHED_ISO 4
|
|
||||||
-#define SCHED_IDLEPRIO SCHED_IDLE
|
|
||||||
#define SCHED_MAX (SCHED_IDLEPRIO)
|
|
||||||
#define SCHED_RANGE(policy) ((policy) <= SCHED_MAX)
|
|
||||||
#endif
|
|
||||||
Index: linux-2.6.37-ck1/mm/vmscan.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck1.orig/mm/vmscan.c 2011-01-06 14:07:58.305326159 +1100
|
|
||||||
+++ linux-2.6.37-ck1/mm/vmscan.c 2011-01-06 14:07:58.443334359 +1100
|
|
||||||
@@ -1874,6 +1874,8 @@ static inline int effective_sc_prio(stru
|
|
||||||
if (likely(p->mm)) {
|
|
||||||
if (rt_task(p))
|
|
||||||
return -20;
|
|
||||||
+ if (p->policy == SCHED_IDLEPRIO)
|
|
||||||
+ return 19;
|
|
||||||
return task_nice(p);
|
|
||||||
}
|
|
||||||
return 0;
|
|
@ -1,250 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/mm_inline.h | 14 +++++++++++-
|
|
||||||
include/linux/swap.h | 8 ++++++-
|
|
||||||
mm/filemap.c | 50 +++++++++++++++++++++++++++++++++++++++-------
|
|
||||||
mm/swap.c | 30 ++++++++++++++++++++++-----
|
|
||||||
4 files changed, 86 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/mm_inline.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/mm_inline.h 2009-12-03 21:40:09.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/mm_inline.h 2011-02-14 10:11:09.770252000 +1100
|
|
||||||
@@ -20,14 +20,24 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
-add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l)
|
|
||||||
+__add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l, int tail)
|
|
||||||
{
|
|
||||||
- list_add(&page->lru, &zone->lru[l].list);
|
|
||||||
+ /* See if this should be added to the tail of this lru list */
|
|
||||||
+ if (tail)
|
|
||||||
+ list_add_tail(&page->lru, &zone->lru[l].list);
|
|
||||||
+ else
|
|
||||||
+ list_add(&page->lru, &zone->lru[l].list);
|
|
||||||
__inc_zone_state(zone, NR_LRU_BASE + l);
|
|
||||||
mem_cgroup_add_lru_list(page, l);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
||||||
+add_page_to_lru_list(struct zone *zone, struct page *page, enum lru_list l)
|
|
||||||
+{
|
|
||||||
+ __add_page_to_lru_list(zone, page, l, 0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline void
|
|
||||||
del_page_from_lru_list(struct zone *zone, struct page *page, enum lru_list l)
|
|
||||||
{
|
|
||||||
list_del(&page->lru);
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/swap.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/swap.h 2011-02-14 10:11:00.982252001 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/swap.h 2011-02-14 10:11:09.770252000 +1100
|
|
||||||
@@ -206,6 +206,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
/* linux/mm/swap.c */
|
|
||||||
+extern void ____lru_cache_add(struct page *, enum lru_list lru, int tail);
|
|
||||||
extern void __lru_cache_add(struct page *, enum lru_list lru);
|
|
||||||
extern void lru_cache_add_lru(struct page *, enum lru_list lru);
|
|
||||||
extern void activate_page(struct page *);
|
|
||||||
@@ -226,9 +227,14 @@
|
|
||||||
__lru_cache_add(page, LRU_INACTIVE_ANON);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline void lru_cache_add_file_tail(struct page *page, int tail)
|
|
||||||
+{
|
|
||||||
+ ____lru_cache_add(page, LRU_INACTIVE_FILE, tail);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static inline void lru_cache_add_file(struct page *page)
|
|
||||||
{
|
|
||||||
- __lru_cache_add(page, LRU_INACTIVE_FILE);
|
|
||||||
+ ____lru_cache_add(page, LRU_INACTIVE_FILE, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LRU Isolation modes. */
|
|
||||||
Index: linux-2.6.37-ck2/mm/filemap.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/filemap.c 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/filemap.c 2011-02-14 10:11:09.772252000 +1100
|
|
||||||
@@ -439,8 +439,8 @@
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(add_to_page_cache_locked);
|
|
||||||
|
|
||||||
-int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
|
|
||||||
- pgoff_t offset, gfp_t gfp_mask)
|
|
||||||
+int __add_to_page_cache_lru(struct page *page, struct address_space *mapping,
|
|
||||||
+ pgoff_t offset, gfp_t gfp_mask, int tail)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
@@ -456,12 +456,18 @@
|
|
||||||
ret = add_to_page_cache(page, mapping, offset, gfp_mask);
|
|
||||||
if (ret == 0) {
|
|
||||||
if (page_is_file_cache(page))
|
|
||||||
- lru_cache_add_file(page);
|
|
||||||
+ lru_cache_add_file_tail(page, tail);
|
|
||||||
else
|
|
||||||
lru_cache_add_anon(page);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
|
|
||||||
+ pgoff_t offset, gfp_t gfp_mask)
|
|
||||||
+{
|
|
||||||
+ return __add_to_page_cache_lru(page, mapping, offset, gfp_mask, 0);
|
|
||||||
+}
|
|
||||||
EXPORT_SYMBOL_GPL(add_to_page_cache_lru);
|
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA
|
|
||||||
@@ -968,6 +974,28 @@
|
|
||||||
ra->ra_pages /= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline int nr_mapped(void)
|
|
||||||
+{
|
|
||||||
+ return global_page_state(NR_FILE_MAPPED) +
|
|
||||||
+ global_page_state(NR_ANON_PAGES);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * This examines how large in pages a file size is and returns 1 if it is
|
|
||||||
+ * more than half the unmapped ram. Avoid doing read_page_state which is
|
|
||||||
+ * expensive unless we already know it is likely to be large enough.
|
|
||||||
+ */
|
|
||||||
+static int large_isize(unsigned long nr_pages)
|
|
||||||
+{
|
|
||||||
+ if (nr_pages * 6 > vm_total_pages) {
|
|
||||||
+ unsigned long unmapped_ram = vm_total_pages - nr_mapped();
|
|
||||||
+
|
|
||||||
+ if (nr_pages * 2 > unmapped_ram)
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* do_generic_file_read - generic file read routine
|
|
||||||
* @filp: the file to read
|
|
||||||
@@ -992,7 +1020,7 @@
|
|
||||||
pgoff_t prev_index;
|
|
||||||
unsigned long offset; /* offset into pagecache page */
|
|
||||||
unsigned int prev_offset;
|
|
||||||
- int error;
|
|
||||||
+ int error, tail = 0;
|
|
||||||
|
|
||||||
index = *ppos >> PAGE_CACHE_SHIFT;
|
|
||||||
prev_index = ra->prev_pos >> PAGE_CACHE_SHIFT;
|
|
||||||
@@ -1003,7 +1031,7 @@
|
|
||||||
for (;;) {
|
|
||||||
struct page *page;
|
|
||||||
pgoff_t end_index;
|
|
||||||
- loff_t isize;
|
|
||||||
+ loff_t isize = 0;
|
|
||||||
unsigned long nr, ret;
|
|
||||||
|
|
||||||
cond_resched();
|
|
||||||
@@ -1177,8 +1205,16 @@
|
|
||||||
desc->error = -ENOMEM;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
- error = add_to_page_cache_lru(page, mapping,
|
|
||||||
- index, GFP_KERNEL);
|
|
||||||
+ /*
|
|
||||||
+ * If we know the file is large we add the pages read to the
|
|
||||||
+ * end of the lru as we're unlikely to be able to cache the
|
|
||||||
+ * whole file in ram so make those pages the first to be
|
|
||||||
+ * dropped if not referenced soon.
|
|
||||||
+ */
|
|
||||||
+ if (large_isize(end_index))
|
|
||||||
+ tail = 1;
|
|
||||||
+ error = __add_to_page_cache_lru(page, mapping,
|
|
||||||
+ index, GFP_KERNEL, tail);
|
|
||||||
if (error) {
|
|
||||||
page_cache_release(page);
|
|
||||||
if (error == -EEXIST)
|
|
||||||
Index: linux-2.6.37-ck2/mm/swap.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/mm/swap.c 2011-01-06 14:04:10.000000000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/mm/swap.c 2011-02-14 10:11:09.772252000 +1100
|
|
||||||
@@ -215,15 +215,23 @@
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(mark_page_accessed);
|
|
||||||
|
|
||||||
-void __lru_cache_add(struct page *page, enum lru_list lru)
|
|
||||||
+void ______pagevec_lru_add(struct pagevec *pvec, enum lru_list lru, int tail);
|
|
||||||
+
|
|
||||||
+void ____lru_cache_add(struct page *page, enum lru_list lru, int tail)
|
|
||||||
{
|
|
||||||
struct pagevec *pvec = &get_cpu_var(lru_add_pvecs)[lru];
|
|
||||||
|
|
||||||
page_cache_get(page);
|
|
||||||
if (!pagevec_add(pvec, page))
|
|
||||||
- ____pagevec_lru_add(pvec, lru);
|
|
||||||
+ ______pagevec_lru_add(pvec, lru, tail);
|
|
||||||
put_cpu_var(lru_add_pvecs);
|
|
||||||
}
|
|
||||||
+EXPORT_SYMBOL(____lru_cache_add);
|
|
||||||
+
|
|
||||||
+void __lru_cache_add(struct page *page, enum lru_list lru)
|
|
||||||
+{
|
|
||||||
+ ____lru_cache_add(page, lru, 0);
|
|
||||||
+}
|
|
||||||
EXPORT_SYMBOL(__lru_cache_add);
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -231,7 +239,7 @@
|
|
||||||
* @page: the page to be added to the LRU.
|
|
||||||
* @lru: the LRU list to which the page is added.
|
|
||||||
*/
|
|
||||||
-void lru_cache_add_lru(struct page *page, enum lru_list lru)
|
|
||||||
+void __lru_cache_add_lru(struct page *page, enum lru_list lru, int tail)
|
|
||||||
{
|
|
||||||
if (PageActive(page)) {
|
|
||||||
VM_BUG_ON(PageUnevictable(page));
|
|
||||||
@@ -242,7 +250,12 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
VM_BUG_ON(PageLRU(page) || PageActive(page) || PageUnevictable(page));
|
|
||||||
- __lru_cache_add(page, lru);
|
|
||||||
+ ____lru_cache_add(page, lru, tail);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void lru_cache_add_lru(struct page *page, enum lru_list lru)
|
|
||||||
+{
|
|
||||||
+ __lru_cache_add_lru(page, lru, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -403,7 +416,7 @@
|
|
||||||
* Add the passed pages to the LRU, then drop the caller's refcount
|
|
||||||
* on them. Reinitialises the caller's pagevec.
|
|
||||||
*/
|
|
||||||
-void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru)
|
|
||||||
+void ______pagevec_lru_add(struct pagevec *pvec, enum lru_list lru, int tail)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
struct zone *zone = NULL;
|
|
||||||
@@ -431,7 +444,7 @@
|
|
||||||
if (active)
|
|
||||||
SetPageActive(page);
|
|
||||||
update_page_reclaim_stat(zone, page, file, active);
|
|
||||||
- add_page_to_lru_list(zone, page, lru);
|
|
||||||
+ __add_page_to_lru_list(zone, page, lru, tail);
|
|
||||||
}
|
|
||||||
if (zone)
|
|
||||||
spin_unlock_irq(&zone->lru_lock);
|
|
||||||
@@ -439,6 +452,11 @@
|
|
||||||
pagevec_reinit(pvec);
|
|
||||||
}
|
|
||||||
|
|
||||||
+void ____pagevec_lru_add(struct pagevec *pvec, enum lru_list lru)
|
|
||||||
+{
|
|
||||||
+ ______pagevec_lru_add(pvec, lru, 0);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
EXPORT_SYMBOL(____pagevec_lru_add);
|
|
||||||
|
|
||||||
/*
|
|
@ -1,36 +0,0 @@
|
|||||||
---
|
|
||||||
kernel/Kconfig.preempt | 7 ++++---
|
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/kernel/Kconfig.preempt
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/Kconfig.preempt 2009-06-10 13:05:27.000000000 +1000
|
|
||||||
+++ linux-2.6.37-ck2/kernel/Kconfig.preempt 2011-02-14 10:11:11.217252001 +1100
|
|
||||||
@@ -1,7 +1,7 @@
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Preemption Model"
|
|
||||||
- default PREEMPT_NONE
|
|
||||||
+ default PREEMPT
|
|
||||||
|
|
||||||
config PREEMPT_NONE
|
|
||||||
bool "No Forced Preemption (Server)"
|
|
||||||
@@ -17,7 +17,7 @@
|
|
||||||
latencies.
|
|
||||||
|
|
||||||
config PREEMPT_VOLUNTARY
|
|
||||||
- bool "Voluntary Kernel Preemption (Desktop)"
|
|
||||||
+ bool "Voluntary Kernel Preemption (Nothing)"
|
|
||||||
help
|
|
||||||
This option reduces the latency of the kernel by adding more
|
|
||||||
"explicit preemption points" to the kernel code. These new
|
|
||||||
@@ -31,7 +31,8 @@
|
|
||||||
applications to run more 'smoothly' even when the system is
|
|
||||||
under load.
|
|
||||||
|
|
||||||
- Select this if you are building a kernel for a desktop system.
|
|
||||||
+ Select this for no system in particular (choose Preemptible
|
|
||||||
+ instead on a desktop if you know what's good for you).
|
|
||||||
|
|
||||||
config PREEMPT
|
|
||||||
bool "Preemptible Kernel (Low-Latency Desktop)"
|
|
@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
include/linux/sched.h | 7 +++++++
|
|
||||||
kernel/sched_bfs.c | 20 ++++++++++++++++++++
|
|
||||||
2 files changed, 27 insertions(+)
|
|
||||||
|
|
||||||
Index: linux-2.6.37-ck2/include/linux/sched.h
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/include/linux/sched.h 2011-02-14 09:47:50.988252000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/include/linux/sched.h 2011-02-14 10:11:00.292251999 +1100
|
|
||||||
@@ -1558,6 +1558,7 @@
|
|
||||||
return (p->policy == SCHED_ISO);
|
|
||||||
}
|
|
||||||
extern void remove_cpu(unsigned long cpu);
|
|
||||||
+extern int above_background_load(void);
|
|
||||||
#else /* CFS */
|
|
||||||
extern int runqueue_is_locked(int cpu);
|
|
||||||
#define tsk_seruntime(t) ((t)->se.sum_exec_runtime)
|
|
||||||
@@ -1581,6 +1582,12 @@
|
|
||||||
static inline void remove_cpu(unsigned long cpu)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+/* Anyone feel like implementing this? */
|
|
||||||
+static inline int above_background_load(void)
|
|
||||||
+{
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
#endif /* CONFIG_SCHED_BFS */
|
|
||||||
|
|
||||||
/* Future-safe accessor for struct task_struct's cpus_allowed. */
|
|
||||||
Index: linux-2.6.37-ck2/kernel/sched_bfs.c
|
|
||||||
===================================================================
|
|
||||||
--- linux-2.6.37-ck2.orig/kernel/sched_bfs.c 2011-02-14 09:53:53.820252000 +1100
|
|
||||||
+++ linux-2.6.37-ck2/kernel/sched_bfs.c 2011-02-14 10:11:00.294252001 +1100
|
|
||||||
@@ -559,6 +559,26 @@
|
|
||||||
grq_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Look for any tasks *anywhere* that are running nice 0 or better. We do
|
|
||||||
+ * this lockless for overhead reasons since the occasional wrong result
|
|
||||||
+ * is harmless.
|
|
||||||
+ */
|
|
||||||
+int above_background_load(void)
|
|
||||||
+{
|
|
||||||
+ struct task_struct *cpu_curr;
|
|
||||||
+ unsigned long cpu;
|
|
||||||
+
|
|
||||||
+ for_each_online_cpu(cpu) {
|
|
||||||
+ cpu_curr = cpu_rq(cpu)->curr;
|
|
||||||
+ if (unlikely(!cpu_curr))
|
|
||||||
+ continue;
|
|
||||||
+ if (PRIO_TO_NICE(cpu_curr->static_prio) < 1)
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#ifndef __ARCH_WANT_UNLOCKED_CTXSW
|
|
||||||
static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next)
|
|
||||||
{
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,123 @@
|
|||||||
|
Adding HDMI type in dss_features , overlay and
|
||||||
|
the manager so that HDMI type of display will be recognized.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
arch/arm/plat-omap/include/plat/display.h | 1 +
|
||||||
|
drivers/video/omap2/dss/display.c | 2 ++
|
||||||
|
drivers/video/omap2/dss/dss_features.c | 2 +-
|
||||||
|
drivers/video/omap2/dss/manager.c | 9 +++++++--
|
||||||
|
drivers/video/omap2/dss/overlay.c | 6 ++++--
|
||||||
|
5 files changed, 15 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h
|
||||||
|
index e81ca66..5e04ddc 100644
|
||||||
|
--- a/arch/arm/plat-omap/include/plat/display.h
|
||||||
|
+++ b/arch/arm/plat-omap/include/plat/display.h
|
||||||
|
@@ -58,6 +58,7 @@ enum omap_display_type {
|
||||||
|
OMAP_DISPLAY_TYPE_SDI = 1 << 2,
|
||||||
|
OMAP_DISPLAY_TYPE_DSI = 1 << 3,
|
||||||
|
OMAP_DISPLAY_TYPE_VENC = 1 << 4,
|
||||||
|
+ OMAP_DISPLAY_TYPE_HDMI = 1 << 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum omap_plane {
|
||||||
|
diff --git a/drivers/video/omap2/dss/display.c b/drivers/video/omap2/dss/display.c
|
||||||
|
index 7d96b72..c40bcbd 100644
|
||||||
|
--- a/drivers/video/omap2/dss/display.c
|
||||||
|
+++ b/drivers/video/omap2/dss/display.c
|
||||||
|
@@ -342,6 +342,7 @@ int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev)
|
||||||
|
return 16;
|
||||||
|
case OMAP_DISPLAY_TYPE_VENC:
|
||||||
|
case OMAP_DISPLAY_TYPE_SDI:
|
||||||
|
+ case OMAP_DISPLAY_TYPE_HDMI:
|
||||||
|
return 24;
|
||||||
|
default:
|
||||||
|
BUG();
|
||||||
|
@@ -368,6 +369,7 @@ bool dss_use_replication(struct omap_dss_device *dssdev,
|
||||||
|
case OMAP_DISPLAY_TYPE_DPI:
|
||||||
|
bpp = dssdev->phy.dpi.data_lines;
|
||||||
|
break;
|
||||||
|
+ case OMAP_DISPLAY_TYPE_HDMI:
|
||||||
|
case OMAP_DISPLAY_TYPE_VENC:
|
||||||
|
case OMAP_DISPLAY_TYPE_SDI:
|
||||||
|
bpp = 24;
|
||||||
|
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c
|
||||||
|
index 6eb6ec6..86dc848 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dss_features.c
|
||||||
|
+++ b/drivers/video/omap2/dss/dss_features.c
|
||||||
|
@@ -115,7 +115,7 @@ static const enum omap_display_type omap4_dss_supported_displays[] = {
|
||||||
|
OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI,
|
||||||
|
|
||||||
|
/* OMAP_DSS_CHANNEL_DIGIT */
|
||||||
|
- OMAP_DISPLAY_TYPE_VENC,
|
||||||
|
+ OMAP_DISPLAY_TYPE_VENC | OMAP_DISPLAY_TYPE_HDMI,
|
||||||
|
|
||||||
|
/* OMAP_DSS_CHANNEL_LCD2 */
|
||||||
|
OMAP_DISPLAY_TYPE_DPI | OMAP_DISPLAY_TYPE_DBI |
|
||||||
|
diff --git a/drivers/video/omap2/dss/manager.c b/drivers/video/omap2/dss/manager.c
|
||||||
|
index 1f53bf2..bcd37ec 100644
|
||||||
|
--- a/drivers/video/omap2/dss/manager.c
|
||||||
|
+++ b/drivers/video/omap2/dss/manager.c
|
||||||
|
@@ -515,6 +515,8 @@ static int dss_mgr_wait_for_vsync(struct omap_overlay_manager *mgr)
|
||||||
|
|
||||||
|
if (mgr->device->type == OMAP_DISPLAY_TYPE_VENC) {
|
||||||
|
irq = DISPC_IRQ_EVSYNC_ODD;
|
||||||
|
+ } else if (mgr->device->type == OMAP_DISPLAY_TYPE_HDMI) {
|
||||||
|
+ irq = DISPC_IRQ_EVSYNC_EVEN;
|
||||||
|
} else {
|
||||||
|
if (mgr->id == OMAP_DSS_CHANNEL_LCD)
|
||||||
|
irq = DISPC_IRQ_VSYNC;
|
||||||
|
@@ -536,7 +538,8 @@ static int dss_mgr_wait_for_go(struct omap_overlay_manager *mgr)
|
||||||
|
if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- if (dssdev->type == OMAP_DISPLAY_TYPE_VENC) {
|
||||||
|
+ if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
|
||||||
|
+ || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
|
||||||
|
irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
|
||||||
|
} else {
|
||||||
|
if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
|
||||||
|
@@ -613,7 +616,8 @@ int dss_mgr_wait_for_go_ovl(struct omap_overlay *ovl)
|
||||||
|
if (!dssdev || dssdev->state != OMAP_DSS_DISPLAY_ACTIVE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
- if (dssdev->type == OMAP_DISPLAY_TYPE_VENC) {
|
||||||
|
+ if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
|
||||||
|
+ || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
|
||||||
|
irq = DISPC_IRQ_EVSYNC_ODD | DISPC_IRQ_EVSYNC_EVEN;
|
||||||
|
} else {
|
||||||
|
if (dssdev->caps & OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
|
||||||
|
@@ -1377,6 +1381,7 @@ static int omap_dss_mgr_apply(struct omap_overlay_manager *mgr)
|
||||||
|
case OMAP_DISPLAY_TYPE_DBI:
|
||||||
|
case OMAP_DISPLAY_TYPE_SDI:
|
||||||
|
case OMAP_DISPLAY_TYPE_VENC:
|
||||||
|
+ case OMAP_DISPLAY_TYPE_HDMI:
|
||||||
|
default_get_overlay_fifo_thresholds(ovl->id, size,
|
||||||
|
&oc->burst_size, &oc->fifo_low,
|
||||||
|
&oc->fifo_high);
|
||||||
|
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c
|
||||||
|
index 996e9a4..f1aca6d 100644
|
||||||
|
--- a/drivers/video/omap2/dss/overlay.c
|
||||||
|
+++ b/drivers/video/omap2/dss/overlay.c
|
||||||
|
@@ -679,7 +679,8 @@ void dss_recheck_connections(struct omap_dss_device *dssdev, bool force)
|
||||||
|
lcd2_mgr->set_device(lcd2_mgr, dssdev);
|
||||||
|
mgr = lcd2_mgr;
|
||||||
|
}
|
||||||
|
- } else if (dssdev->type != OMAP_DISPLAY_TYPE_VENC) {
|
||||||
|
+ } else if (dssdev->type != OMAP_DISPLAY_TYPE_VENC
|
||||||
|
+ && dssdev->type != OMAP_DISPLAY_TYPE_HDMI) {
|
||||||
|
if (!lcd_mgr->device || force) {
|
||||||
|
if (lcd_mgr->device)
|
||||||
|
lcd_mgr->unset_device(lcd_mgr);
|
||||||
|
@@ -688,7 +689,8 @@ void dss_recheck_connections(struct omap_dss_device *dssdev, bool force)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (dssdev->type == OMAP_DISPLAY_TYPE_VENC) {
|
||||||
|
+ if (dssdev->type == OMAP_DISPLAY_TYPE_VENC
|
||||||
|
+ || dssdev->type == OMAP_DISPLAY_TYPE_HDMI) {
|
||||||
|
if (!tv_mgr->device || force) {
|
||||||
|
if (tv_mgr->device)
|
||||||
|
tv_mgr->unset_device(tv_mgr);
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,47 @@
|
|||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/dss.c | 5 +++++
|
||||||
|
drivers/video/omap2/dss/dss.h | 6 ++++++
|
||||||
|
2 files changed, 11 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
|
||||||
|
index aed9345..0be83c8 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dss.c
|
||||||
|
+++ b/drivers/video/omap2/dss/dss.c
|
||||||
|
@@ -605,6 +605,11 @@ void dss_set_dac_pwrdn_bgz(bool enable)
|
||||||
|
REG_FLD_MOD(DSS_CONTROL, enable, 5, 5); /* DAC Power-Down Control */
|
||||||
|
}
|
||||||
|
|
||||||
|
+void dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select hdmi)
|
||||||
|
+{
|
||||||
|
+ REG_FLD_MOD(DSS_CONTROL, hdmi, 15, 15); /* VENC_HDMI_SWITCH */
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int dss_init(void)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
|
||||||
|
index b845468..c2c0fcf 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dss.h
|
||||||
|
+++ b/drivers/video/omap2/dss/dss.h
|
||||||
|
@@ -132,6 +132,11 @@ struct dss_clk_source_name {
|
||||||
|
const char *clksrc_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
+enum dss_hdmi_venc_clk_source_select {
|
||||||
|
+ DSS_VENC_TV_CLK = 0,
|
||||||
|
+ DSS_HDMI_M_PCLK = 1,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct dss_clock_info {
|
||||||
|
/* rates that we get with dividers below */
|
||||||
|
unsigned long fck;
|
||||||
|
@@ -220,6 +225,7 @@ void dss_recheck_connections(struct omap_dss_device *dssdev, bool force);
|
||||||
|
int dss_init_platform_driver(void);
|
||||||
|
void dss_uninit_platform_driver(void);
|
||||||
|
|
||||||
|
+void dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select);
|
||||||
|
void dss_save_context(void);
|
||||||
|
void dss_restore_context(void);
|
||||||
|
void dss_clk_enable(enum dss_clock clks);
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,46 @@
|
|||||||
|
Adding function to reset/set gamma table bit for TV interface
|
||||||
|
currentl only support for disabled is added.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/dispc.c | 13 +++++++++++++
|
||||||
|
drivers/video/omap2/dss/dss.h | 1 +
|
||||||
|
2 files changed, 14 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
|
||||||
|
index b8c576a..9b86f5f 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dispc.c
|
||||||
|
+++ b/drivers/video/omap2/dss/dispc.c
|
||||||
|
@@ -1008,6 +1008,19 @@ void dispc_set_burst_size(enum omap_plane plane,
|
||||||
|
enable_clocks(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void dispc_enable_gamma_table(bool enable)
|
||||||
|
+{
|
||||||
|
+ /* This is partially implemented to support only
|
||||||
|
+ * disabling of the gamma table.
|
||||||
|
+ */
|
||||||
|
+ if (enable) {
|
||||||
|
+ DSSWARN("Gamma table enabling for TV not yet supported");
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ REG_FLD_MOD(DISPC_CONFIG, enable, 9, 9);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void _dispc_set_vid_color_conv(enum omap_plane plane, bool enable)
|
||||||
|
{
|
||||||
|
u32 val;
|
||||||
|
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
|
||||||
|
index c2c0fcf..9f563a6 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dss.h
|
||||||
|
+++ b/drivers/video/omap2/dss/dss.h
|
||||||
|
@@ -376,6 +376,7 @@ void dispc_set_plane_size(enum omap_plane plane, u16 width, u16 height);
|
||||||
|
void dispc_set_channel_out(enum omap_plane plane,
|
||||||
|
enum omap_channel channel_out);
|
||||||
|
|
||||||
|
+void dispc_enable_gamma_table(bool enable);
|
||||||
|
int dispc_setup_plane(enum omap_plane plane,
|
||||||
|
u32 paddr, u16 screen_width,
|
||||||
|
u16 pos_x, u16 pos_y,
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,431 @@
|
|||||||
|
Adding the hdmi interface driver header file (hdmi.h) to the dss driver.
|
||||||
|
Register and structure declaration done here.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/hdmi.h | 415 ++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 files changed, 415 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 drivers/video/omap2/dss/hdmi.h
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/hdmi.h b/drivers/video/omap2/dss/hdmi.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..9887ab9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/video/omap2/dss/hdmi.h
|
||||||
|
@@ -0,0 +1,415 @@
|
||||||
|
+/*
|
||||||
|
+ * hdmi.h
|
||||||
|
+ *
|
||||||
|
+ * HDMI driver definition for TI OMAP4 processors.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or modify it
|
||||||
|
+ * under the terms of the GNU General Public License version 2 as published by
|
||||||
|
+ * the Free Software Foundation.
|
||||||
|
+ *
|
||||||
|
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
+ * more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License along with
|
||||||
|
+ * this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifndef _OMAP4_DSS_HDMI_H_
|
||||||
|
+#define _OMAP4_DSS_HDMI_H_
|
||||||
|
+
|
||||||
|
+#include <linux/string.h>
|
||||||
|
+#include <plat/display.h>
|
||||||
|
+
|
||||||
|
+#define HDMI_WP 0x0
|
||||||
|
+#define HDMI_CORE_SYS 0x400
|
||||||
|
+#define HDMI_CORE_AV 0x900
|
||||||
|
+#define HDMI_PLLCTRL 0x200
|
||||||
|
+#define HDMI_PHY 0x300
|
||||||
|
+
|
||||||
|
+struct hdmi_reg { u16 idx; };
|
||||||
|
+
|
||||||
|
+#define HDMI_REG(idx) ((const struct hdmi_reg) { idx })
|
||||||
|
+
|
||||||
|
+/* HDMI Wrapper */
|
||||||
|
+#define HDMI_WP_REG(idx) HDMI_REG(HDMI_WP + idx)
|
||||||
|
+
|
||||||
|
+#define HDMI_WP_REVISION HDMI_WP_REG(0x0)
|
||||||
|
+#define HDMI_WP_SYSCONFIG HDMI_WP_REG(0x10)
|
||||||
|
+#define HDMI_WP_IRQSTATUS_RAW HDMI_WP_REG(0x24)
|
||||||
|
+#define HDMI_WP_IRQSTATUS HDMI_WP_REG(0x28)
|
||||||
|
+#define HDMI_WP_PWR_CTRL HDMI_WP_REG(0x40)
|
||||||
|
+#define HDMI_WP_IRQENABLE_SET HDMI_WP_REG(0x2C)
|
||||||
|
+#define HDMI_WP_VIDEO_CFG HDMI_WP_REG(0x50)
|
||||||
|
+#define HDMI_WP_VIDEO_SIZE HDMI_WP_REG(0x60)
|
||||||
|
+#define HDMI_WP_VIDEO_TIMING_H HDMI_WP_REG(0x68)
|
||||||
|
+#define HDMI_WP_VIDEO_TIMING_V HDMI_WP_REG(0x6C)
|
||||||
|
+#define HDMI_WP_WP_CLK HDMI_WP_REG(0x70)
|
||||||
|
+
|
||||||
|
+/* HDMI IP Core System */
|
||||||
|
+#define HDMI_CORE_SYS_REG(idx) HDMI_REG(HDMI_CORE_SYS + idx)
|
||||||
|
+
|
||||||
|
+#define HDMI_CORE_SYS_VND_IDL HDMI_CORE_SYS_REG(0x0)
|
||||||
|
+#define HDMI_CORE_SYS_DEV_IDL HDMI_CORE_SYS_REG(0x8)
|
||||||
|
+#define HDMI_CORE_SYS_DEV_IDH HDMI_CORE_SYS_REG(0xC)
|
||||||
|
+#define HDMI_CORE_SYS_DEV_REV HDMI_CORE_SYS_REG(0x10)
|
||||||
|
+#define HDMI_CORE_SYS_SRST HDMI_CORE_SYS_REG(0x14)
|
||||||
|
+#define HDMI_CORE_CTRL1 HDMI_CORE_SYS_REG(0x20)
|
||||||
|
+#define HDMI_CORE_SYS_SYS_STAT HDMI_CORE_SYS_REG(0x24)
|
||||||
|
+#define HDMI_CORE_SYS_VID_ACEN HDMI_CORE_SYS_REG(0x124)
|
||||||
|
+#define HDMI_CORE_SYS_VID_MODE HDMI_CORE_SYS_REG(0x128)
|
||||||
|
+#define HDMI_CORE_SYS_INTR_STATE HDMI_CORE_SYS_REG(0x1C0)
|
||||||
|
+#define HDMI_CORE_SYS_INTR1 HDMI_CORE_SYS_REG(0x1C4)
|
||||||
|
+#define HDMI_CORE_SYS_INTR2 HDMI_CORE_SYS_REG(0x1C8)
|
||||||
|
+#define HDMI_CORE_SYS_INTR3 HDMI_CORE_SYS_REG(0x1CC)
|
||||||
|
+#define HDMI_CORE_SYS_INTR4 HDMI_CORE_SYS_REG(0x1D0)
|
||||||
|
+#define HDMI_CORE_SYS_UMASK1 HDMI_CORE_SYS_REG(0x1D4)
|
||||||
|
+#define HDMI_CORE_SYS_TMDS_CTRL HDMI_CORE_SYS_REG(0x208)
|
||||||
|
+#define HDMI_CORE_SYS_DE_DLY HDMI_CORE_SYS_REG(0xC8)
|
||||||
|
+#define HDMI_CORE_SYS_DE_CTRL HDMI_CORE_SYS_REG(0xCC)
|
||||||
|
+#define HDMI_CORE_SYS_DE_TOP HDMI_CORE_SYS_REG(0xD0)
|
||||||
|
+#define HDMI_CORE_SYS_DE_CNTL HDMI_CORE_SYS_REG(0xD8)
|
||||||
|
+#define HDMI_CORE_SYS_DE_CNTH HDMI_CORE_SYS_REG(0xDC)
|
||||||
|
+#define HDMI_CORE_SYS_DE_LINL HDMI_CORE_SYS_REG(0xE0)
|
||||||
|
+#define HDMI_CORE_SYS_DE_LINH_1 HDMI_CORE_SYS_REG(0xE4)
|
||||||
|
+#define HDMI_CORE_CTRL1_VEN_FOLLOWVSYNC 0x1
|
||||||
|
+#define HDMI_CORE_CTRL1_HEN_FOLLOWHSYNC 0x1
|
||||||
|
+#define HDMI_CORE_CTRL1_BSEL_24BITBUS 0x1
|
||||||
|
+#define HDMI_CORE_CTRL1_EDGE_RISINGEDGE 0x1
|
||||||
|
+
|
||||||
|
+/* HDMI DDC E-DID */
|
||||||
|
+#define HDMI_CORE_DDC_CMD HDMI_CORE_SYS_REG(0x3CC)
|
||||||
|
+#define HDMI_CORE_DDC_STATUS HDMI_CORE_SYS_REG(0x3C8)
|
||||||
|
+#define HDMI_CORE_DDC_ADDR HDMI_CORE_SYS_REG(0x3B4)
|
||||||
|
+#define HDMI_CORE_DDC_OFFSET HDMI_CORE_SYS_REG(0x3BC)
|
||||||
|
+#define HDMI_CORE_DDC_COUNT1 HDMI_CORE_SYS_REG(0x3C0)
|
||||||
|
+#define HDMI_CORE_DDC_COUNT2 HDMI_CORE_SYS_REG(0x3C4)
|
||||||
|
+#define HDMI_CORE_DDC_DATA HDMI_CORE_SYS_REG(0x3D0)
|
||||||
|
+#define HDMI_CORE_DDC_SEGM HDMI_CORE_SYS_REG(0x3B8)
|
||||||
|
+
|
||||||
|
+/* HDMI IP Core Audio Video */
|
||||||
|
+#define HDMI_CORE_AV_REG(idx) HDMI_REG(HDMI_CORE_AV + idx)
|
||||||
|
+
|
||||||
|
+#define HDMI_CORE_AV_HDMI_CTRL HDMI_CORE_AV_REG(0xBC)
|
||||||
|
+#define HDMI_CORE_AV_DPD HDMI_CORE_AV_REG(0xF4)
|
||||||
|
+#define HDMI_CORE_AV_PB_CTRL1 HDMI_CORE_AV_REG(0xF8)
|
||||||
|
+#define HDMI_CORE_AV_PB_CTRL2 HDMI_CORE_AV_REG(0xFC)
|
||||||
|
+#define HDMI_CORE_AV_AVI_TYPE HDMI_CORE_AV_REG(0x100)
|
||||||
|
+#define HDMI_CORE_AV_AVI_VERS HDMI_CORE_AV_REG(0x104)
|
||||||
|
+#define HDMI_CORE_AV_AVI_LEN HDMI_CORE_AV_REG(0x108)
|
||||||
|
+#define HDMI_CORE_AV_AVI_CHSUM HDMI_CORE_AV_REG(0x10C)
|
||||||
|
+#define HDMI_CORE_AV_AVI_DBYTE(n) HDMI_CORE_AV_REG(n * 4 + 0x110)
|
||||||
|
+#define HDMI_CORE_AV_AVI_DBYTE_NELEMS HDMI_CORE_AV_REG(15)
|
||||||
|
+#define HDMI_CORE_AV_SPD_DBYTE HDMI_CORE_AV_REG(0x190)
|
||||||
|
+#define HDMI_CORE_AV_SPD_DBYTE_NELEMS HDMI_CORE_AV_REG(27)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_DBYTE HDMI_CORE_AV_REG(0x290)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_DBYTE_NELEMS HDMI_CORE_AV_REG(27)
|
||||||
|
+#define HDMI_CORE_AV_GEN_DBYTE HDMI_CORE_AV_REG(0x300)
|
||||||
|
+#define HDMI_CORE_AV_GEN_DBYTE_NELEMS HDMI_CORE_AV_REG(31)
|
||||||
|
+#define HDMI_CORE_AV_GEN2_DBYTE HDMI_CORE_AV_REG(0x380)
|
||||||
|
+#define HDMI_CORE_AV_GEN2_DBYTE_NELEMS HDMI_CORE_AV_REG(31)
|
||||||
|
+#define HDMI_CORE_AV_ACR_CTRL HDMI_CORE_AV_REG(0x4)
|
||||||
|
+#define HDMI_CORE_AV_FREQ_SVAL HDMI_CORE_AV_REG(0x8)
|
||||||
|
+#define HDMI_CORE_AV_N_SVAL1 HDMI_CORE_AV_REG(0xC)
|
||||||
|
+#define HDMI_CORE_AV_N_SVAL2 HDMI_CORE_AV_REG(0x10)
|
||||||
|
+#define HDMI_CORE_AV_N_SVAL3 HDMI_CORE_AV_REG(0x14)
|
||||||
|
+#define HDMI_CORE_AV_CTS_SVAL1 HDMI_CORE_AV_REG(0x18)
|
||||||
|
+#define HDMI_CORE_AV_CTS_SVAL2 HDMI_CORE_AV_REG(0x1C)
|
||||||
|
+#define HDMI_CORE_AV_CTS_SVAL3 HDMI_CORE_AV_REG(0x20)
|
||||||
|
+#define HDMI_CORE_AV_CTS_HVAL1 HDMI_CORE_AV_REG(0x24)
|
||||||
|
+#define HDMI_CORE_AV_CTS_HVAL2 HDMI_CORE_AV_REG(0x28)
|
||||||
|
+#define HDMI_CORE_AV_CTS_HVAL3 HDMI_CORE_AV_REG(0x2C)
|
||||||
|
+#define HDMI_CORE_AV_AUD_MODE HDMI_CORE_AV_REG(0x50)
|
||||||
|
+#define HDMI_CORE_AV_SPDIF_CTRL HDMI_CORE_AV_REG(0x54)
|
||||||
|
+#define HDMI_CORE_AV_HW_SPDIF_FS HDMI_CORE_AV_REG(0x60)
|
||||||
|
+#define HDMI_CORE_AV_SWAP_I2S HDMI_CORE_AV_REG(0x64)
|
||||||
|
+#define HDMI_CORE_AV_SPDIF_ERTH HDMI_CORE_AV_REG(0x6C)
|
||||||
|
+#define HDMI_CORE_AV_I2S_IN_MAP HDMI_CORE_AV_REG(0x70)
|
||||||
|
+#define HDMI_CORE_AV_I2S_IN_CTRL HDMI_CORE_AV_REG(0x74)
|
||||||
|
+#define HDMI_CORE_AV_I2S_CHST0 HDMI_CORE_AV_REG(0x78)
|
||||||
|
+#define HDMI_CORE_AV_I2S_CHST1 HDMI_CORE_AV_REG(0x7C)
|
||||||
|
+#define HDMI_CORE_AV_I2S_CHST2 HDMI_CORE_AV_REG(0x80)
|
||||||
|
+#define HDMI_CORE_AV_I2S_CHST4 HDMI_CORE_AV_REG(0x84)
|
||||||
|
+#define HDMI_CORE_AV_I2S_CHST5 HDMI_CORE_AV_REG(0x88)
|
||||||
|
+#define HDMI_CORE_AV_ASRC HDMI_CORE_AV_REG(0x8C)
|
||||||
|
+#define HDMI_CORE_AV_I2S_IN_LEN HDMI_CORE_AV_REG(0x90)
|
||||||
|
+#define HDMI_CORE_AV_HDMI_CTRL HDMI_CORE_AV_REG(0xBC)
|
||||||
|
+#define HDMI_CORE_AV_AUDO_TXSTAT HDMI_CORE_AV_REG(0xC0)
|
||||||
|
+#define HDMI_CORE_AV_AUD_PAR_BUSCLK_1 HDMI_CORE_AV_REG(0xCC)
|
||||||
|
+#define HDMI_CORE_AV_AUD_PAR_BUSCLK_2 HDMI_CORE_AV_REG(0xD0)
|
||||||
|
+#define HDMI_CORE_AV_AUD_PAR_BUSCLK_3 HDMI_CORE_AV_REG(0xD4)
|
||||||
|
+#define HDMI_CORE_AV_TEST_TXCTRL HDMI_CORE_AV_REG(0xF0)
|
||||||
|
+#define HDMI_CORE_AV_DPD HDMI_CORE_AV_REG(0xF4)
|
||||||
|
+#define HDMI_CORE_AV_PB_CTRL1 HDMI_CORE_AV_REG(0xF8)
|
||||||
|
+#define HDMI_CORE_AV_PB_CTRL2 HDMI_CORE_AV_REG(0xFC)
|
||||||
|
+#define HDMI_CORE_AV_AVI_TYPE HDMI_CORE_AV_REG(0x100)
|
||||||
|
+#define HDMI_CORE_AV_AVI_VERS HDMI_CORE_AV_REG(0x104)
|
||||||
|
+#define HDMI_CORE_AV_AVI_LEN HDMI_CORE_AV_REG(0x108)
|
||||||
|
+#define HDMI_CORE_AV_AVI_CHSUM HDMI_CORE_AV_REG(0x10C)
|
||||||
|
+#define HDMI_CORE_AV_SPD_TYPE HDMI_CORE_AV_REG(0x180)
|
||||||
|
+#define HDMI_CORE_AV_SPD_VERS HDMI_CORE_AV_REG(0x184)
|
||||||
|
+#define HDMI_CORE_AV_SPD_LEN HDMI_CORE_AV_REG(0x188)
|
||||||
|
+#define HDMI_CORE_AV_SPD_CHSUM HDMI_CORE_AV_REG(0x18C)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_TYPE HDMI_CORE_AV_REG(0x280)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_VERS HDMI_CORE_AV_REG(0x284)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_LEN HDMI_CORE_AV_REG(0x288)
|
||||||
|
+#define HDMI_CORE_AV_MPEG_CHSUM HDMI_CORE_AV_REG(0x28C)
|
||||||
|
+#define HDMI_CORE_AV_CP_BYTE1 HDMI_CORE_AV_REG(0x37C)
|
||||||
|
+#define HDMI_CORE_AV_CEC_ADDR_ID HDMI_CORE_AV_REG(0x3FC)
|
||||||
|
+#define HDMI_CORE_AV_SPD_DBYTE_ELSIZE 0x4
|
||||||
|
+#define HDMI_CORE_AV_GEN2_DBYTE_ELSIZE 0x4
|
||||||
|
+#define HDMI_CORE_AV_MPEG_DBYTE_ELSIZE 0x4
|
||||||
|
+#define HDMI_CORE_AV_GEN_DBYTE_ELSIZE 0x4
|
||||||
|
+
|
||||||
|
+/* PLL */
|
||||||
|
+#define HDMI_PLL_REG(idx) HDMI_REG(HDMI_PLLCTRL + idx)
|
||||||
|
+
|
||||||
|
+#define PLLCTRL_PLL_CONTROL HDMI_PLL_REG(0x0)
|
||||||
|
+#define PLLCTRL_PLL_STATUS HDMI_PLL_REG(0x4)
|
||||||
|
+#define PLLCTRL_PLL_GO HDMI_PLL_REG(0x8)
|
||||||
|
+#define PLLCTRL_CFG1 HDMI_PLL_REG(0xC)
|
||||||
|
+#define PLLCTRL_CFG2 HDMI_PLL_REG(0x10)
|
||||||
|
+#define PLLCTRL_CFG3 HDMI_PLL_REG(0x14)
|
||||||
|
+#define PLLCTRL_CFG4 HDMI_PLL_REG(0x20)
|
||||||
|
+
|
||||||
|
+/* HDMI PHY */
|
||||||
|
+#define HDMI_PHY_REG(idx) HDMI_REG(HDMI_PHY + idx)
|
||||||
|
+
|
||||||
|
+#define HDMI_TXPHY_TX_CTRL HDMI_PHY_REG(0x0)
|
||||||
|
+#define HDMI_TXPHY_DIGITAL_CTRL HDMI_PHY_REG(0x4)
|
||||||
|
+#define HDMI_TXPHY_POWER_CTRL HDMI_PHY_REG(0x8)
|
||||||
|
+#define HDMI_TXPHY_PAD_CFG_CTRL HDMI_PHY_REG(0xC)
|
||||||
|
+
|
||||||
|
+/* HDMI EDID Length */
|
||||||
|
+#define HDMI_EDID_MAX_LENGTH 256
|
||||||
|
+#define EDID_TIMING_DESCRIPTOR_SIZE 0x12
|
||||||
|
+#define EDID_DESCRIPTOR_BLOCK0_ADDRESS 0x36
|
||||||
|
+#define EDID_DESCRIPTOR_BLOCK1_ADDRESS 0x80
|
||||||
|
+#define EDID_SIZE_BLOCK0_TIMING_DESCRIPTOR 4
|
||||||
|
+#define EDID_SIZE_BLOCK1_TIMING_DESCRIPTOR 4
|
||||||
|
+
|
||||||
|
+#define OMAP_HDMI_TIMINGS_NB 34
|
||||||
|
+
|
||||||
|
+#define REG_FLD_MOD(idx, val, start, end) \
|
||||||
|
+ hdmi_write_reg(idx, FLD_MOD(hdmi_read_reg(idx), val, start, end))
|
||||||
|
+#define REG_GET(idx, start, end) \
|
||||||
|
+ FLD_GET(hdmi_read_reg(idx), start, end)
|
||||||
|
+
|
||||||
|
+/* HDMI timing structure */
|
||||||
|
+struct hdmi_timings {
|
||||||
|
+ struct omap_video_timings timings;
|
||||||
|
+ int vsync_pol;
|
||||||
|
+ int hsync_pol;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_phy_pwr {
|
||||||
|
+ HDMI_PHYPWRCMD_OFF = 0,
|
||||||
|
+ HDMI_PHYPWRCMD_LDOON = 1,
|
||||||
|
+ HDMI_PHYPWRCMD_TXON = 2
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_pll_pwr {
|
||||||
|
+ HDMI_PLLPWRCMD_ALLOFF = 0,
|
||||||
|
+ HDMI_PLLPWRCMD_PLLONLY = 1,
|
||||||
|
+ HDMI_PLLPWRCMD_BOTHON_ALLCLKS = 2,
|
||||||
|
+ HDMI_PLLPWRCMD_BOTHON_NOPHYCLK = 3
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_clk_refsel {
|
||||||
|
+ HDMI_REFSEL_PCLK = 0,
|
||||||
|
+ HDMI_REFSEL_REF1 = 1,
|
||||||
|
+ HDMI_REFSEL_REF2 = 2,
|
||||||
|
+ HDMI_REFSEL_SYSCLK = 3
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_inputbus_width {
|
||||||
|
+ HDMI_INPUT_8BIT = 0,
|
||||||
|
+ HDMI_INPUT_10BIT = 1,
|
||||||
|
+ HDMI_INPUT_12BIT = 2
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_dither_trunc {
|
||||||
|
+ HDMI_OUTPUTTRUNCATION_8BIT = 0,
|
||||||
|
+ HDMI_OUTPUTTRUNCATION_10BIT = 1,
|
||||||
|
+ HDMI_OUTPUTTRUNCATION_12BIT = 2,
|
||||||
|
+ HDMI_OUTPUTDITHER_8BIT = 3,
|
||||||
|
+ HDMI_OUTPUTDITHER_10BIT = 4,
|
||||||
|
+ HDMI_OUTPUTDITHER_12BIT = 5
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_deepcolor_ed {
|
||||||
|
+ HDMI_DEEPCOLORPACKECTDISABLE = 0,
|
||||||
|
+ HDMI_DEEPCOLORPACKECTENABLE = 1
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_packet_mode {
|
||||||
|
+ HDMI_PACKETMODERESERVEDVALUE = 0,
|
||||||
|
+ HDMI_PACKETMODE24BITPERPIXEL = 4,
|
||||||
|
+ HDMI_PACKETMODE30BITPERPIXEL = 5,
|
||||||
|
+ HDMI_PACKETMODE36BITPERPIXEL = 6,
|
||||||
|
+ HDMI_PACKETMODE48BITPERPIXEL = 7
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_hdmi_dvi {
|
||||||
|
+ HDMI_DVI = 0,
|
||||||
|
+ HDMI_HDMI = 1
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_tclkselclkmult {
|
||||||
|
+ HDMI_FPLL05IDCK = 0,
|
||||||
|
+ HDMI_FPLL10IDCK = 1,
|
||||||
|
+ HDMI_FPLL20IDCK = 2,
|
||||||
|
+ HDMI_FPLL40IDCK = 3
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_core_packet_ctrl {
|
||||||
|
+ HDMI_PACKETENABLE = 1,
|
||||||
|
+ HDMI_PACKETDISABLE = 0,
|
||||||
|
+ HDMI_PACKETREPEATON = 1,
|
||||||
|
+ HDMI_PACKETREPEATOFF = 0
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* INFOFRAME_AVI_ definitions */
|
||||||
|
+enum hdmi_core_infoframe {
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1Y_RGB = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1Y_YUV422 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1Y_YUV444 = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1A_ACTIVE_FORMAT_OFF = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1A_ACTIVE_FORMAT_ON = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1B_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1B_VERT = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1B_HORI = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1B_VERTHORI = 3,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1S_0 = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1S_1 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB1S_2 = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2C_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2C_ITU601 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2C_ITU709 = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2C_EC_EXTENDED = 3,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2M_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2M_43 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2M_169 = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2R_SAME = 8,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2R_43 = 9,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2R_169 = 10,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB2R_149 = 11,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3ITC_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3ITC_YES = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3EC_XVYUV601 = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3EC_XVYUV709 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3Q_DEFAULT = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3Q_LR = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3Q_FR = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3SC_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3SC_HORI = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3SC_VERT = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB3SC_HORIVERT = 3,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_NO = 0,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_2 = 1,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_3 = 2,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_4 = 3,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_5 = 4,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_6 = 5,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_7 = 6,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_8 = 7,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_9 = 8,
|
||||||
|
+ HDMI_INFOFRAME_AVI_DB5PR_10 = 9
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum hdmi_packing_mode {
|
||||||
|
+ HDMI_PACK_10b_RGB_YUV444 = 0,
|
||||||
|
+ HDMI_PACK_24b_RGB_YUV444_YUV422 = 1,
|
||||||
|
+ HDMI_PACK_20b_YUV422 = 2,
|
||||||
|
+ HDMI_PACK_ALREADYPACKED = 7
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_core_video_config {
|
||||||
|
+ enum hdmi_core_inputbus_width ip_bus_width;
|
||||||
|
+ enum hdmi_core_dither_trunc op_dither_truc;
|
||||||
|
+ enum hdmi_core_deepcolor_ed deep_color_pkt;
|
||||||
|
+ enum hdmi_core_packet_mode pkt_mode;
|
||||||
|
+ enum hdmi_core_hdmi_dvi hdmi_dvi;
|
||||||
|
+ enum hdmi_core_tclkselclkmult tclk_sel_clkmult;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * Refer to section 8.2 in HDMI 1.3 specification for
|
||||||
|
+ * details about infoframe databytes
|
||||||
|
+ */
|
||||||
|
+struct hdmi_core_infoframe_avi {
|
||||||
|
+ u8 db1_format;
|
||||||
|
+ /* Y0, Y1 rgb,yCbCr */
|
||||||
|
+ u8 db1_active_info;
|
||||||
|
+ /* A0 Active information Present */
|
||||||
|
+ u8 db1_bar_info_dv;
|
||||||
|
+ /* B0, B1 Bar info data valid */
|
||||||
|
+ u8 db1_scan_info;
|
||||||
|
+ /* S0, S1 scan information */
|
||||||
|
+ u8 db2_colorimetry;
|
||||||
|
+ /* C0, C1 colorimetry */
|
||||||
|
+ u8 db2_aspect_ratio;
|
||||||
|
+ /* M0, M1 Aspect ratio (4:3, 16:9) */
|
||||||
|
+ u8 db2_active_fmt_ar;
|
||||||
|
+ /* R0...R3 Active format aspect ratio */
|
||||||
|
+ u8 db3_itc;
|
||||||
|
+ /* ITC IT content. */
|
||||||
|
+ u8 db3_ec;
|
||||||
|
+ /* EC0, EC1, EC2 Extended colorimetry */
|
||||||
|
+ u8 db3_q_range;
|
||||||
|
+ /* Q1, Q0 Quantization range */
|
||||||
|
+ u8 db3_nup_scaling;
|
||||||
|
+ /* SC1, SC0 Non-uniform picture scaling */
|
||||||
|
+ u8 db4_videocode;
|
||||||
|
+ /* VIC0..6 Video format identification */
|
||||||
|
+ u8 db5_pixel_repeat;
|
||||||
|
+ /* PR0..PR3 Pixel repetition factor */
|
||||||
|
+ u16 db6_7_line_eoftop;
|
||||||
|
+ /* Line number end of top bar */
|
||||||
|
+ u16 db8_9_line_sofbottom;
|
||||||
|
+ /* Line number start of bottom bar */
|
||||||
|
+ u16 db10_11_pixel_eofleft;
|
||||||
|
+ /* Pixel number end of left bar */
|
||||||
|
+ u16 db12_13_pixel_sofright;
|
||||||
|
+ /* Pixel number start of right bar */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_core_packet_enable_repeat {
|
||||||
|
+ u32 audio_pkt;
|
||||||
|
+ u32 audio_pkt_repeat;
|
||||||
|
+ u32 avi_infoframe;
|
||||||
|
+ u32 avi_infoframe_repeat;
|
||||||
|
+ u32 gen_cntrl_pkt;
|
||||||
|
+ u32 gen_cntrl_pkt_repeat;
|
||||||
|
+ u32 generic_pkt;
|
||||||
|
+ u32 generic_pkt_repeat;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_video_format {
|
||||||
|
+ enum hdmi_packing_mode packing_mode;
|
||||||
|
+ u32 y_res; /* Line per panel */
|
||||||
|
+ u32 x_res; /* pixel per line */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_video_interface {
|
||||||
|
+ int vsp; /* Vsync polarity */
|
||||||
|
+ int hsp; /* Hsync polarity */
|
||||||
|
+ int interlacing;
|
||||||
|
+ int tm; /* Timing mode */
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_cm {
|
||||||
|
+ int code;
|
||||||
|
+ int mode;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+struct hdmi_config {
|
||||||
|
+ struct hdmi_timings timings;
|
||||||
|
+ u16 interlace;
|
||||||
|
+ struct hdmi_cm cm;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
-- 1.5.6.3
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,252 @@
|
|||||||
|
The panel driver(hdmi_omap4_panel.c) in omap2/dss acts as a controller
|
||||||
|
to manage the enable and disable requests and synchronize audio and video.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/dss.h | 2 +
|
||||||
|
drivers/video/omap2/dss/hdmi_omap4_panel.c | 222 ++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 224 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 drivers/video/omap2/dss/hdmi_omap4_panel.c
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
|
||||||
|
index 6bf923c..05ccd00 100644
|
||||||
|
--- a/drivers/video/omap2/dss/dss.h
|
||||||
|
+++ b/drivers/video/omap2/dss/dss.h
|
||||||
|
@@ -483,6 +483,8 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev);
|
||||||
|
void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev);
|
||||||
|
int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev,
|
||||||
|
struct omap_video_timings *timings);
|
||||||
|
+int hdmi_panel_init(void);
|
||||||
|
+void hdmi_panel_exit(void);
|
||||||
|
|
||||||
|
/* RFBI */
|
||||||
|
#ifdef CONFIG_OMAP2_DSS_RFBI
|
||||||
|
diff --git a/drivers/video/omap2/dss/hdmi_omap4_panel.c b/drivers/video/omap2/dss/hdmi_omap4_panel.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..ffb5de9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drivers/video/omap2/dss/hdmi_omap4_panel.c
|
||||||
|
@@ -0,0 +1,222 @@
|
||||||
|
+/*
|
||||||
|
+ * hdmi_omap4_panel.c
|
||||||
|
+ *
|
||||||
|
+ * HDMI library support functions for TI OMAP4 processors.
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||||
|
+ * Authors: Mythri P k <mythripk@ti.com>
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or modify it
|
||||||
|
+ * under the terms of the GNU General Public License version 2 as published by
|
||||||
|
+ * the Free Software Foundation.
|
||||||
|
+ *
|
||||||
|
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
+ * more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License along with
|
||||||
|
+ * this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <linux/kernel.h>
|
||||||
|
+#include <linux/err.h>
|
||||||
|
+#include <linux/io.h>
|
||||||
|
+#include <linux/mutex.h>
|
||||||
|
+#include <linux/module.h>
|
||||||
|
+#include <plat/display.h>
|
||||||
|
+
|
||||||
|
+#include "dss.h"
|
||||||
|
+
|
||||||
|
+static struct {
|
||||||
|
+ struct mutex hdmi_lock;
|
||||||
|
+} hdmi;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static int hdmi_panel_probe(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ DSSDBG("ENTER hdmi_panel_probe\n");
|
||||||
|
+
|
||||||
|
+ dssdev->panel.config = OMAP_DSS_LCD_TFT |
|
||||||
|
+ OMAP_DSS_LCD_IVS | OMAP_DSS_LCD_IHS;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Initialize the timings to 640 * 480
|
||||||
|
+ * This is only for framebuffer update not for TV timing setting
|
||||||
|
+ * Setting TV timing will be done only on enable
|
||||||
|
+ */
|
||||||
|
+ dssdev->panel.timings.x_res = 640;
|
||||||
|
+ dssdev->panel.timings.y_res = 480;
|
||||||
|
+
|
||||||
|
+ DSSDBG("hdmi_panel_probe x_res= %d y_res = %d\n",
|
||||||
|
+ dssdev->panel.timings.x_res,
|
||||||
|
+ dssdev->panel.timings.y_res);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void hdmi_panel_remove(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int hdmi_panel_enable(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ int r = 0;
|
||||||
|
+ DSSDBG("ENTER hdmi_panel_enable\n");
|
||||||
|
+
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ if (dssdev->state != OMAP_DSS_DISPLAY_DISABLED) {
|
||||||
|
+ r = -EINVAL;
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ r = omapdss_hdmi_display_enable(dssdev);
|
||||||
|
+ if (r) {
|
||||||
|
+ DSSERR("failed to power on\n");
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void hdmi_panel_disable(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE)
|
||||||
|
+ omapdss_hdmi_display_disable(dssdev);
|
||||||
|
+
|
||||||
|
+ dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
|
||||||
|
+
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int hdmi_panel_suspend(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ int r = 0;
|
||||||
|
+
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ if (dssdev->state != OMAP_DSS_DISPLAY_ACTIVE) {
|
||||||
|
+ r = -EINVAL;
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ dssdev->state = OMAP_DSS_DISPLAY_SUSPENDED;
|
||||||
|
+
|
||||||
|
+ omapdss_hdmi_display_disable(dssdev);
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int hdmi_panel_resume(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ int r = 0;
|
||||||
|
+
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ if (dssdev->state != OMAP_DSS_DISPLAY_SUSPENDED) {
|
||||||
|
+ r = -EINVAL;
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ r = omapdss_hdmi_display_enable(dssdev);
|
||||||
|
+ if (r) {
|
||||||
|
+ DSSERR("failed to power on\n");
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
|
||||||
|
+
|
||||||
|
+err:
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void hdmi_get_timings(struct omap_dss_device *dssdev,
|
||||||
|
+ struct omap_video_timings *timings)
|
||||||
|
+{
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ *timings = dssdev->panel.timings;
|
||||||
|
+
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void hdmi_set_timings(struct omap_dss_device *dssdev,
|
||||||
|
+ struct omap_video_timings *timings)
|
||||||
|
+{
|
||||||
|
+ DSSDBG("hdmi_set_timings\n");
|
||||||
|
+
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ dssdev->panel.timings = *timings;
|
||||||
|
+
|
||||||
|
+ if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
|
||||||
|
+ /* turn the hdmi off and on to get new timings to use */
|
||||||
|
+ omapdss_hdmi_display_disable(dssdev);
|
||||||
|
+ omapdss_hdmi_display_set_timing(dssdev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int hdmi_check_timings(struct omap_dss_device *dssdev,
|
||||||
|
+ struct omap_video_timings *timings)
|
||||||
|
+{
|
||||||
|
+ int r = 0;
|
||||||
|
+
|
||||||
|
+ DSSDBG("hdmi_check_timings\n");
|
||||||
|
+
|
||||||
|
+ mutex_lock(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ r = omapdss_hdmi_display_check_timing(dssdev, timings);
|
||||||
|
+ if (r) {
|
||||||
|
+ DSSERR("Timing cannot be applied\n");
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+err:
|
||||||
|
+ mutex_unlock(&hdmi.hdmi_lock);
|
||||||
|
+ return r;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct omap_dss_driver hdmi_driver = {
|
||||||
|
+ .probe = hdmi_panel_probe,
|
||||||
|
+ .remove = hdmi_panel_remove,
|
||||||
|
+ .enable = hdmi_panel_enable,
|
||||||
|
+ .disable = hdmi_panel_disable,
|
||||||
|
+ .suspend = hdmi_panel_suspend,
|
||||||
|
+ .resume = hdmi_panel_resume,
|
||||||
|
+ .get_timings = hdmi_get_timings,
|
||||||
|
+ .set_timings = hdmi_set_timings,
|
||||||
|
+ .check_timings = hdmi_check_timings,
|
||||||
|
+ .driver = {
|
||||||
|
+ .name = "hdmi_panel",
|
||||||
|
+ .owner = THIS_MODULE,
|
||||||
|
+ },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+int hdmi_panel_init(void)
|
||||||
|
+{
|
||||||
|
+ mutex_init(&hdmi.hdmi_lock);
|
||||||
|
+
|
||||||
|
+ omap_dss_register_driver(&hdmi_driver);
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void hdmi_panel_exit(void)
|
||||||
|
+{
|
||||||
|
+ omap_dss_unregister_driver(&hdmi_driver);
|
||||||
|
+
|
||||||
|
+}
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,36 @@
|
|||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/Kconfig | 8 ++++++++
|
||||||
|
drivers/video/omap2/dss/Makefile | 2 ++
|
||||||
|
2 files changed, 10 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/Kconfig b/drivers/video/omap2/dss/Kconfig
|
||||||
|
index db01473..bfc5da0 100644
|
||||||
|
--- a/drivers/video/omap2/dss/Kconfig
|
||||||
|
+++ b/drivers/video/omap2/dss/Kconfig
|
||||||
|
@@ -60,6 +60,14 @@ config OMAP2_DSS_VENC
|
||||||
|
help
|
||||||
|
OMAP Video Encoder support for S-Video and composite TV-out.
|
||||||
|
|
||||||
|
+config OMAP4_DSS_HDMI
|
||||||
|
+ bool "HDMI support"
|
||||||
|
+ depends on ARCH_OMAP4
|
||||||
|
+ default y
|
||||||
|
+ help
|
||||||
|
+ HDMI Interface. This adds the High Definition Multimedia Interface.
|
||||||
|
+ See http://www.hdmi.org/ for HDMI specification.
|
||||||
|
+
|
||||||
|
config OMAP2_DSS_SDI
|
||||||
|
bool "SDI support"
|
||||||
|
depends on ARCH_OMAP3
|
||||||
|
diff --git a/drivers/video/omap2/dss/Makefile b/drivers/video/omap2/dss/Makefile
|
||||||
|
index 7db17b5..10d9d3b 100644
|
||||||
|
--- a/drivers/video/omap2/dss/Makefile
|
||||||
|
+++ b/drivers/video/omap2/dss/Makefile
|
||||||
|
@@ -5,3 +5,5 @@ omapdss-$(CONFIG_OMAP2_DSS_RFBI) += rfbi.o
|
||||||
|
omapdss-$(CONFIG_OMAP2_DSS_VENC) += venc.o
|
||||||
|
omapdss-$(CONFIG_OMAP2_DSS_SDI) += sdi.o
|
||||||
|
omapdss-$(CONFIG_OMAP2_DSS_DSI) += dsi.o
|
||||||
|
+omapdss-$(CONFIG_OMAP4_DSS_HDMI) += hdmi.o \
|
||||||
|
+ hdmi_omap4_panel.o
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,43 @@
|
|||||||
|
calling the platform registration of HDMI driver from core
|
||||||
|
during initialization.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
drivers/video/omap2/dss/core.c | 9 +++++++++
|
||||||
|
1 files changed, 9 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c
|
||||||
|
index c2f930b..1aa2ed1 100644
|
||||||
|
--- a/drivers/video/omap2/dss/core.c
|
||||||
|
+++ b/drivers/video/omap2/dss/core.c
|
||||||
|
@@ -209,6 +209,12 @@ static int omap_dss_probe(struct platform_device *pdev)
|
||||||
|
goto err_dsi;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ r = hdmi_init_platform_driver();
|
||||||
|
+ if (r) {
|
||||||
|
+ DSSERR("Failed to initialize hdmi\n");
|
||||||
|
+ goto err_hdmi;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
r = dss_initialize_debugfs();
|
||||||
|
if (r)
|
||||||
|
goto err_debugfs;
|
||||||
|
@@ -238,6 +244,8 @@ static int omap_dss_probe(struct platform_device *pdev)
|
||||||
|
err_register:
|
||||||
|
dss_uninitialize_debugfs();
|
||||||
|
err_debugfs:
|
||||||
|
+ hdmi_uninit_platform_driver();
|
||||||
|
+err_hdmi:
|
||||||
|
dsi_uninit_platform_driver();
|
||||||
|
err_dsi:
|
||||||
|
venc_uninit_platform_driver();
|
||||||
|
@@ -263,6 +271,7 @@ static int omap_dss_remove(struct platform_device *pdev)
|
||||||
|
dispc_uninit_platform_driver();
|
||||||
|
rfbi_uninit_platform_driver();
|
||||||
|
dsi_uninit_platform_driver();
|
||||||
|
+ hdmi_uninit_platform_driver();
|
||||||
|
dss_uninit_platform_driver();
|
||||||
|
|
||||||
|
dss_uninit_overlays(pdev);
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,118 @@
|
|||||||
|
Adding board file structure for display which adds the display
|
||||||
|
structure with HDMI as the default driver when the display init
|
||||||
|
is called.
|
||||||
|
HDMI GPIO configurations are also done in this file.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-omap2/board-4430sdp.c | 75 +++++++++++++++++++++++++++++++++++
|
||||||
|
1 files changed, 75 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
|
||||||
|
index 85805d4..f5fcc5f 100644
|
||||||
|
--- a/arch/arm/mach-omap2/board-4430sdp.c
|
||||||
|
+++ b/arch/arm/mach-omap2/board-4430sdp.c
|
||||||
|
@@ -36,6 +36,7 @@
|
||||||
|
#include <plat/usb.h>
|
||||||
|
#include <plat/mmc.h>
|
||||||
|
#include <plat/omap4-keypad.h>
|
||||||
|
+#include <plat/display.h>
|
||||||
|
|
||||||
|
#include "mux.h"
|
||||||
|
#include "hsmmc.h"
|
||||||
|
@@ -47,6 +48,8 @@
|
||||||
|
#define ETH_KS8851_QUART 138
|
||||||
|
#define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
|
||||||
|
#define OMAP4_SFH7741_ENABLE_GPIO 188
|
||||||
|
+#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
|
||||||
|
+#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
|
||||||
|
|
||||||
|
static const int sdp4430_keymap[] = {
|
||||||
|
KEY(0, 0, KEY_E),
|
||||||
|
@@ -620,6 +623,76 @@ static void __init omap_sfh7741prox_init(void)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void sdp4430_hdmi_mux_init(void)
|
||||||
|
+{
|
||||||
|
+ /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
|
||||||
|
+ omap_mux_init_signal("hdmi_hpd",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ omap_mux_init_signal("hdmi_cec",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
|
||||||
|
+ omap_mux_init_signal("hdmi_ddc_scl",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ omap_mux_init_signal("hdmi_ddc_sda",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ int status;
|
||||||
|
+
|
||||||
|
+ status = gpio_request_one(HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH,
|
||||||
|
+ "hdmi_gpio_hpd");
|
||||||
|
+ if (status) {
|
||||||
|
+ pr_err("Cannot request GPIO %d\n", HDMI_GPIO_HPD);
|
||||||
|
+ return status;
|
||||||
|
+ }
|
||||||
|
+ status = gpio_request_one(HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH,
|
||||||
|
+ "hdmi_gpio_ls_oe");
|
||||||
|
+ if (status) {
|
||||||
|
+ pr_err("Cannot request GPIO %d\n", HDMI_GPIO_LS_OE);
|
||||||
|
+ goto error1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+error1:
|
||||||
|
+ gpio_free(HDMI_GPIO_HPD);
|
||||||
|
+
|
||||||
|
+ return status;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ gpio_free(HDMI_GPIO_LS_OE);
|
||||||
|
+ gpio_free(HDMI_GPIO_HPD);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct omap_dss_device sdp4430_hdmi_device = {
|
||||||
|
+ .name = "hdmi",
|
||||||
|
+ .driver_name = "hdmi_panel",
|
||||||
|
+ .type = OMAP_DISPLAY_TYPE_HDMI,
|
||||||
|
+ .platform_enable = sdp4430_panel_enable_hdmi,
|
||||||
|
+ .platform_disable = sdp4430_panel_disable_hdmi,
|
||||||
|
+ .channel = OMAP_DSS_CHANNEL_DIGIT,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct omap_dss_device *sdp4430_dss_devices[] = {
|
||||||
|
+ &sdp4430_hdmi_device,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct omap_dss_board_info sdp4430_dss_data = {
|
||||||
|
+ .num_devices = ARRAY_SIZE(sdp4430_dss_devices),
|
||||||
|
+ .devices = sdp4430_dss_devices,
|
||||||
|
+ .default_device = &sdp4430_hdmi_device,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+void omap_4430sdp_display_init(void)
|
||||||
|
+{
|
||||||
|
+ sdp4430_hdmi_mux_init();
|
||||||
|
+ omap_display_init(&sdp4430_dss_data);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
static struct omap_board_mux board_mux[] __initdata = {
|
||||||
|
OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||||
|
@@ -661,6 +734,8 @@ static void __init omap_4430sdp_init(void)
|
||||||
|
status = omap4_keyboard_init(&sdp4430_keypad_data);
|
||||||
|
if (status)
|
||||||
|
pr_err("Keypad initialization failed: %d\n", status);
|
||||||
|
+
|
||||||
|
+ omap_4430sdp_display_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap_4430sdp_map_io(void)
|
||||||
|
-- 1.5.6.3
|
@ -0,0 +1,117 @@
|
|||||||
|
Adding board file structure for display which adds the display
|
||||||
|
structure with HDMI as the default driver when the display init
|
||||||
|
is called.
|
||||||
|
HDMI GPIO configurations are also done in this file.
|
||||||
|
|
||||||
|
Signed-off-by: Mythri P K <mythripk@ti.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-omap2/board-omap4panda.c | 74 ++++++++++++++++++++++++++++++++
|
||||||
|
1 files changed, 74 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
|
||||||
|
index a94ce07..4869c0f 100644
|
||||||
|
--- a/arch/arm/mach-omap2/board-omap4panda.c
|
||||||
|
+++ b/arch/arm/mach-omap2/board-omap4panda.c
|
||||||
|
@@ -34,6 +34,7 @@
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
+#include <plat/display.h>
|
||||||
|
|
||||||
|
#include <plat/board.h>
|
||||||
|
#include <plat/common.h>
|
||||||
|
@@ -49,6 +50,8 @@
|
||||||
|
#define GPIO_HUB_NRESET 62
|
||||||
|
#define GPIO_WIFI_PMENA 43
|
||||||
|
#define GPIO_WIFI_IRQ 53
|
||||||
|
+#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
|
||||||
|
+#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
|
||||||
|
|
||||||
|
/* wl127x BT, FM, GPS connectivity chip */
|
||||||
|
static int wl1271_gpios[] = {46, -1, -1};
|
||||||
|
@@ -467,6 +470,76 @@ static struct omap_board_mux board_mux[] __initdata = {
|
||||||
|
#define board_mux NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+static void sdp4430_hdmi_mux_init(void)
|
||||||
|
+{
|
||||||
|
+ /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
|
||||||
|
+ omap_mux_init_signal("hdmi_hpd",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ omap_mux_init_signal("hdmi_cec",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
|
||||||
|
+ omap_mux_init_signal("hdmi_ddc_scl",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+ omap_mux_init_signal("hdmi_ddc_sda",
|
||||||
|
+ OMAP_PIN_INPUT_PULLUP);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ int status;
|
||||||
|
+
|
||||||
|
+ status = gpio_request_one(HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH,
|
||||||
|
+ "hdmi_gpio_hpd");
|
||||||
|
+ if (status) {
|
||||||
|
+ pr_err("Cannot request GPIO %d\n", HDMI_GPIO_HPD);
|
||||||
|
+ return status;
|
||||||
|
+ }
|
||||||
|
+ status = gpio_request_one(HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH,
|
||||||
|
+ "hdmi_gpio_ls_oe");
|
||||||
|
+ if (status) {
|
||||||
|
+ pr_err("Cannot request GPIO %d\n", HDMI_GPIO_LS_OE);
|
||||||
|
+ goto error1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+error1:
|
||||||
|
+ gpio_free(HDMI_GPIO_HPD);
|
||||||
|
+
|
||||||
|
+ return status;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
|
||||||
|
+{
|
||||||
|
+ gpio_free(HDMI_GPIO_LS_OE);
|
||||||
|
+ gpio_free(HDMI_GPIO_HPD);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct omap_dss_device sdp4430_hdmi_device = {
|
||||||
|
+ .name = "hdmi",
|
||||||
|
+ .driver_name = "hdmi_panel",
|
||||||
|
+ .type = OMAP_DISPLAY_TYPE_HDMI,
|
||||||
|
+ .platform_enable = sdp4430_panel_enable_hdmi,
|
||||||
|
+ .platform_disable = sdp4430_panel_disable_hdmi,
|
||||||
|
+ .channel = OMAP_DSS_CHANNEL_DIGIT,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct omap_dss_device *sdp4430_dss_devices[] = {
|
||||||
|
+ &sdp4430_hdmi_device,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct omap_dss_board_info sdp4430_dss_data = {
|
||||||
|
+ .num_devices = ARRAY_SIZE(sdp4430_dss_devices),
|
||||||
|
+ .devices = sdp4430_dss_devices,
|
||||||
|
+ .default_device = &sdp4430_hdmi_device,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+void omap_panda_display_init(void)
|
||||||
|
+{
|
||||||
|
+ sdp4430_hdmi_mux_init();
|
||||||
|
+ omap_display_init(&sdp4430_dss_data);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void __init omap4_panda_init(void)
|
||||||
|
{
|
||||||
|
int package = OMAP_PACKAGE_CBS;
|
||||||
|
@@ -485,6 +558,7 @@ static void __init omap4_panda_init(void)
|
||||||
|
omap4_twl6030_hsmmc_init(mmc);
|
||||||
|
omap4_ehci_init();
|
||||||
|
usb_musb_init(&musb_board_data);
|
||||||
|
+ omap_panda_display_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap4_panda_map_io(void)
|
||||||
|
-- 1.5.6.3
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="os.openelec.settings"
|
<addon id="os.openelec.settings"
|
||||||
name="OpenELEC OS Settings"
|
name="OpenELEC OS Settings"
|
||||||
version="0.0.5"
|
version="0.0.6"
|
||||||
provider-name="openelec.tv">
|
provider-name="openelec.tv">
|
||||||
<requires>
|
<requires>
|
||||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||||
|
@ -27,7 +27,7 @@ __author__ = "OpenELEC"
|
|||||||
__url__ = "http://www.openelec.tv"
|
__url__ = "http://www.openelec.tv"
|
||||||
__svn_url__ = ""
|
__svn_url__ = ""
|
||||||
__credits__ = ""
|
__credits__ = ""
|
||||||
__version__ = "0.0.5"
|
__version__ = "0.0.6"
|
||||||
__XBMC_Revision__ = "22240"
|
__XBMC_Revision__ = "22240"
|
||||||
|
|
||||||
__settings__ = xbmcaddon.Addon(id='os.openelec.settings')
|
__settings__ = xbmcaddon.Addon(id='os.openelec.settings')
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<string id="2010">Toetsenbord</string>
|
<string id="2010">Toetsenbord</string>
|
||||||
<string id="2011">Toetsenbord layout</string>
|
<string id="2011">Toetsenbord layout</string>
|
||||||
<string id="2020">Systeem update</string>
|
<string id="2020">Systeem update</string>
|
||||||
<string id="2021">Auto update</string>
|
<string id="2021">Systeem update</string>
|
||||||
<string id="2050">LCD/VFD Driver</string>
|
<string id="2050">LCD/VFD Driver</string>
|
||||||
<string id="2051">Te gebruiken LCD Driver</string>
|
<string id="2051">Te gebruiken LCD Driver</string>
|
||||||
<string id="2060">Services na slaapstand</string>
|
<string id="2060">Services na slaapstand</string>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<string id="2010">Keyboard</string>
|
<string id="2010">Keyboard</string>
|
||||||
<string id="2011">Keyboardlayout</string>
|
<string id="2011">Keyboardlayout</string>
|
||||||
<string id="2020">System Update</string>
|
<string id="2020">System Update</string>
|
||||||
<string id="2021">Auto update</string>
|
<string id="2021">System Update</string>
|
||||||
<string id="2050">LCD/VFD</string>
|
<string id="2050">LCD/VFD</string>
|
||||||
<string id="2051">LCD Driver to use</string>
|
<string id="2051">LCD Driver to use</string>
|
||||||
<string id="2060">Wakeup</string>
|
<string id="2060">Wakeup</string>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<string id="2010">Clavier</string>
|
<string id="2010">Clavier</string>
|
||||||
<string id="2011">Clavier</string>
|
<string id="2011">Clavier</string>
|
||||||
<string id="2020">Mise à jour du système</string>
|
<string id="2020">Mise à jour du système</string>
|
||||||
<string id="2021">Mise à jour automatique</string>
|
<string id="2021">Mise à jour du système</string>
|
||||||
<string id="2050">LCD/VFD</string>
|
<string id="2050">LCD/VFD</string>
|
||||||
<string id="2051">Pilote LCD</string>
|
<string id="2051">Pilote LCD</string>
|
||||||
<string id="2060">Retour de veille</string>
|
<string id="2060">Retour de veille</string>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<string id="2010">Tastatur</string>
|
<string id="2010">Tastatur</string>
|
||||||
<string id="2011">Tastaturlayout</string>
|
<string id="2011">Tastaturlayout</string>
|
||||||
<string id="2020">System Aktualisierung</string>
|
<string id="2020">System Aktualisierung</string>
|
||||||
<string id="2021">Automatische Aktualisierung</string>
|
<string id="2021">System Aktualisierung</string>
|
||||||
<string id="2050">LCD/VFD</string>
|
<string id="2050">LCD/VFD</string>
|
||||||
<string id="2051">LCD Treiber</string>
|
<string id="2051">LCD Treiber</string>
|
||||||
<string id="2060">Beim Aufwachen</string>
|
<string id="2060">Beim Aufwachen</string>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<string id="2010">Tastatur</string>
|
<string id="2010">Tastatur</string>
|
||||||
<string id="2011">Språklayout</string>
|
<string id="2011">Språklayout</string>
|
||||||
<string id="2020">Systemoppdateringer</string>
|
<string id="2020">Systemoppdateringer</string>
|
||||||
<string id="2021">Oppdater Automatisk</string>
|
<string id="2021">Systemoppdateringer</string>
|
||||||
<string id="2050">LCD/VFD</string>
|
<string id="2050">LCD/VFD</string>
|
||||||
<string id="2051">LCD Driver</string>
|
<string id="2051">LCD Driver</string>
|
||||||
<string id="2060">Vekke</string>
|
<string id="2060">Vekke</string>
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
<!-- SYSTEM -->
|
<!-- SYSTEM -->
|
||||||
<category label="2000">
|
<category label="2000">
|
||||||
<!-- <setting label="2010" type="lsep"/> -->
|
<setting label="2010" type="lsep"/>
|
||||||
<!-- <setting type="sep" /> -->
|
<setting type="sep" />
|
||||||
<!-- <setting id="X11_KEYMAP" type="labelenum" label="2011" values="ch|de|fr|uk|us" sort="yes" default="us"/> -->
|
<setting id="X11_KEYMAP" type="labelenum" label="2011" values="ad|af|al|am|ara|at|az|ba|bd|be|bg|br|bt|bw|by|ca|cd|ch|cn|cz|de|dk|ee|epo|es|et|fi|fo|fr|gb|gr|hr|hu|ie|il|in|iq|ir|is|it|jp|ke|kg|kh|kr|kz|la|latam|latin|lk|lt|lv|ma|mao|me|mk|ml|mm|mn|mt|mv|ng|nl|no|np|pc|pk|pl|pt|ro|rs|ru|se|si|sk|sn|sy|th|tj|tm|tr|tz|ua|us|uz|vn|za" sort="yes" default="us"/>
|
||||||
<setting label="2020" type="lsep"/>
|
<setting label="2020" type="lsep"/>
|
||||||
<setting type="sep" />
|
<setting type="sep" />
|
||||||
<setting id="UPDATE_AUTO" type="labelenum" label="2021" values="no|manual|auto" sort="yes" default="manual" />
|
<setting id="UPDATE_AUTO" type="labelenum" label="2021" values="no|manual|auto" sort="yes" default="manual" />
|
||||||
@ -44,11 +44,11 @@
|
|||||||
</category>
|
</category>
|
||||||
|
|
||||||
<!-- TV-SERVER -->
|
<!-- TV-SERVER -->
|
||||||
<category label="4100">
|
<!-- <category label="4100"> -->
|
||||||
<setting label="4110" type="lsep"/>
|
<!-- <setting label="4110" type="lsep"/> -->
|
||||||
<setting type="sep" />
|
<!-- <setting type="sep" /> -->
|
||||||
<setting id="TVHEADEND_START" type="bool" label="4111" default="false" />
|
<!-- <setting id="TVHEADEND_START" type="bool" label="4111" default="false" /> -->
|
||||||
</category>
|
<!-- </category> -->
|
||||||
|
|
||||||
<!-- SAMBA -->
|
<!-- SAMBA -->
|
||||||
<category label="5000">
|
<category label="5000">
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="xbmc-theme-Confluence"
|
PKG_NAME="xbmc-theme-Confluence"
|
||||||
PKG_VERSION="Dharma-10.1-c8405db"
|
PKG_VERSION="10.1-Dharma"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
PKG_NAME="xbmc"
|
PKG_NAME="xbmc"
|
||||||
PKG_VERSION="Dharma-10.1-c8405db"
|
PKG_VERSION="10.1-Dharma"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
diff -Naur xbmc-Dharma-10.1-c8405db/configure.in xbmc-Dharma-10.1-c8405db.patch/configure.in
|
||||||
|
--- xbmc-Dharma-10.1-c8405db/configure.in 2011-02-15 13:30:17.000000000 +0100
|
||||||
|
+++ xbmc-Dharma-10.1-c8405db.patch/configure.in 2011-03-06 21:19:57.004648466 +0100
|
||||||
|
@@ -448,30 +448,6 @@
|
||||||
|
LIBS="$LIBS -framework CoreFoundation"
|
||||||
|
LIBS="$LIBS -framework DiskArbitration"
|
||||||
|
LIBS="$LIBS -framework ApplicationServices"
|
||||||
|
-elif expr "X$host_cpu" : 'Xarm.*' > /dev/null; then
|
||||||
|
- use_arch=arm
|
||||||
|
- CFLAGS="$CFLAGS -mfloat-abi=softfp -mno-apcs-stack-check"
|
||||||
|
- CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp -mno-apcs-stack-check"
|
||||||
|
- FFMPEG_EXTRACFLAGS="-mfloat-abi=softfp"
|
||||||
|
- if test "$use_tegra" = "yes"; then
|
||||||
|
- # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support
|
||||||
|
- SAVE_CFLAGS="$CFLAGS"
|
||||||
|
- CFLAGS="-mfpu=vfpv3-d16"
|
||||||
|
- AC_COMPILE_IFELSE(
|
||||||
|
- [int foo;],
|
||||||
|
- [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
|
||||||
|
- CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
|
||||||
|
- FFMPEG_EXTRACFLAGS+=" -mtune=cortex-a9 -mfpu=vfpv3-d16"
|
||||||
|
- use_cpu=cortex-a9],
|
||||||
|
- [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
|
||||||
|
- CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
|
||||||
|
- use_cpu=cortex-a8])
|
||||||
|
- else
|
||||||
|
- # Compile for ARMv7a architecture, CortexA8 cpu and NEON coprocessor
|
||||||
|
- CFLAGS+=" -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad"
|
||||||
|
- CXXFLAGS+=" -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad"
|
||||||
|
- FFMPEG_EXTRACFLAGS+=" -mfpu=neon"
|
||||||
|
- fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
@@ -1646,6 +1622,7 @@
|
||||||
|
--disable-static \
|
||||||
|
`if test "$use_debug" = "no"; then echo --disable-debug; fi` \
|
||||||
|
`if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
|
||||||
|
+ `if test -n "$host_alias"; then echo --cross-prefix="${host_alias}-"; fi`\
|
||||||
|
`if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
|
||||||
|
`if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
|
||||||
|
--target-os=$(tolower $(uname -s)) \
|
||||||
|
diff -Naur xbmc-Dharma-10.1-c8405db/Makefile.in xbmc-Dharma-10.1-c8405db.patch/Makefile.in
|
||||||
|
--- xbmc-Dharma-10.1-c8405db/Makefile.in 2011-02-15 13:30:17.000000000 +0100
|
||||||
|
+++ xbmc-Dharma-10.1-c8405db.patch/Makefile.in 2011-03-04 19:52:52.500328225 +0100
|
||||||
|
@@ -467,8 +467,8 @@
|
||||||
|
xbmc/cores/DllLoader/exports/exports.a
|
||||||
|
|
||||||
|
ifeq (arm, $(ARCH))
|
||||||
|
-# Force external python2.5 for now!
|
||||||
|
-LIBS +=-lpython2.5
|
||||||
|
+# Force external python2.6 for now!
|
||||||
|
+LIBS +=-lpython2.6
|
||||||
|
endif
|
||||||
|
|
||||||
|
xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC)
|
@ -1,15 +0,0 @@
|
|||||||
diff -Naur xbmc-Dharma-10.1-c8405db/Makefile.in xbmc-Dharma-10.1-c8405db.patch/Makefile.in
|
|
||||||
--- xbmc-Dharma-10.1-c8405db/Makefile.in 2011-02-15 13:30:17.000000000 +0100
|
|
||||||
+++ xbmc-Dharma-10.1-c8405db.patch/Makefile.in 2011-02-15 13:55:18.511016755 +0100
|
|
||||||
@@ -466,11 +466,6 @@
|
|
||||||
xbmc/cores/DllLoader/exports/util/exports_utils.a \
|
|
||||||
xbmc/cores/DllLoader/exports/exports.a
|
|
||||||
|
|
||||||
-ifeq (arm, $(ARCH))
|
|
||||||
-# Force external python2.5 for now!
|
|
||||||
-LIBS +=-lpython2.5
|
|
||||||
-endif
|
|
||||||
-
|
|
||||||
xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC)
|
|
||||||
ifeq ($(findstring osx,$(ARCH)), osx)
|
|
||||||
$(CXX) $(LDFLAGS) -o xbmc.bin -Wl,-all_load,-ObjC $(DYNOBJSXBMC) $(OBJSXBMC) $(LIBS) -rdynamic
|
|
@ -25,8 +25,7 @@ TEMP="0"
|
|||||||
if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
|
if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
|
||||||
TEMP=`echo "$(cat /sys/class/thermal/thermal_zone0/temp)/1000" |bc`
|
TEMP=`echo "$(cat /sys/class/thermal/thermal_zone0/temp)/1000" |bc`
|
||||||
elif [ -f /usr/bin/sensors ]; then
|
elif [ -f /usr/bin/sensors ]; then
|
||||||
# TEMP=`/usr/bin/sensors -u | head -6 |grep "temp1_input"| awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}'`
|
TEMP=`/usr/bin/sensors -u | tail -n6 | grep temp1_input | awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}'`
|
||||||
TEMP=`/usr/bin/sensors -u | tail -n4 | grep temp1_input | awk '{print $2 }' |awk '{printf("%d\n",$1 + 0.5);}'`
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${TEMP} C"
|
echo "${TEMP} C"
|
||||||
|
@ -22,14 +22,13 @@
|
|||||||
|
|
||||||
. /etc/profile
|
. /etc/profile
|
||||||
|
|
||||||
OPENELEC_SETTINGS="$HOME/.xbmc/userdata/addon_data/os.openelec.settings/settings.xml"
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
thaw|resume)
|
thaw|resume)
|
||||||
(
|
(
|
||||||
if [ -f "$OPENELEC_SETTINGS" ]; then
|
if [ -f /var/config/settings.conf ]; then
|
||||||
VIDEODBUPDATE=`grep WAKEUP_VIDEODBUPDATE $OPENELEC_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
. /var/config/settings.conf
|
||||||
if [ "$VIDEODBUPDATE" = "true" ]; then
|
|
||||||
|
if [ "$WAKEUP_VIDEODBUPDATE" = "true" ]; then
|
||||||
usleep 5000000
|
usleep 5000000
|
||||||
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(video)"
|
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(video)"
|
||||||
fi
|
fi
|
||||||
|
@ -22,14 +22,13 @@
|
|||||||
|
|
||||||
. /etc/profile
|
. /etc/profile
|
||||||
|
|
||||||
OPENELEC_SETTINGS="$HOME/.xbmc/userdata/addon_data/os.openelec.settings/settings.xml"
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
thaw|resume)
|
thaw|resume)
|
||||||
(
|
(
|
||||||
if [ -f "$OPENELEC_SETTINGS" ]; then
|
if [ -f /var/config/settings.conf ]; then
|
||||||
MUSICDBUPDATE=`grep WAKEUP_MUSICDBUPDATE $OPENELEC_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
. /var/config/settings.conf
|
||||||
if [ "$MUSICDBUPDATE" = "true" ]; then
|
|
||||||
|
if [ "$WAKEUP_MUSICDBUPDATE" = "true" ]; then
|
||||||
usleep 5000000
|
usleep 5000000
|
||||||
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(music)"
|
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(music)"
|
||||||
fi
|
fi
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user