mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +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-ld=gold"
|
||||
LD_OPTIM="$LD_OPTIM -Wl,--as-needed"
|
||||
|
||||
|
@ -6,7 +6,7 @@ else
|
||||
PROJECT="$PROJECT"
|
||||
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
|
||||
if [ -z "$ARCH" ]; then
|
||||
TARGET_ARCH="i386"
|
||||
@ -63,7 +63,6 @@ fi
|
||||
# set jpeg library depending on ARCH
|
||||
if [ "$TARGET_ARCH" = "i386" -o "$TARGET_ARCH" = "x86_64" ]; then
|
||||
LIBJPEG="libjpeg-turbo"
|
||||
# LIBJPEG="jpeg"
|
||||
else
|
||||
LIBJPEG="jpeg"
|
||||
fi
|
||||
|
23
config/path
23
config/path
@ -2,6 +2,11 @@ set -e
|
||||
|
||||
# determine architecture's family
|
||||
case $TARGET_ARCH in
|
||||
arm)
|
||||
TARGET_FAMILY=arm
|
||||
TARGET_ABI=eabi
|
||||
;;
|
||||
|
||||
i386)
|
||||
TARGET_FAMILY=i686
|
||||
;;
|
||||
@ -14,12 +19,16 @@ esac
|
||||
# determines TARGET_CPU, if not forced by user
|
||||
if [ -z "$TARGET_CPU" ]; then
|
||||
case $TARGET_ARCH in
|
||||
arm)
|
||||
TARGET_CPU=cortex-a8
|
||||
;;
|
||||
|
||||
i386)
|
||||
TARGET_CPU=i686
|
||||
;;
|
||||
|
||||
x86_64)
|
||||
TARGET_CPU=i686
|
||||
TARGET_CPU=core2
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
@ -34,7 +43,7 @@ fi
|
||||
ADDONS=addons
|
||||
|
||||
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
|
||||
TARGET_IMG=$ROOT/$TARGET
|
||||
@ -115,14 +124,20 @@ TARGET_LDFLAGS="$GCC_OPTIM $LD_OPTIM"
|
||||
case $TARGET_ARCH in
|
||||
i386)
|
||||
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"
|
||||
;;
|
||||
x86_64)
|
||||
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"
|
||||
;;
|
||||
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
|
||||
|
||||
TARGET_PKG_CONFIG_PATH=""
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
. config/options $1
|
||||
|
||||
strip_lto
|
||||
|
||||
export bash_cv_have_mbstate_t=set
|
||||
|
||||
export CC_FOR_BUILD="$HOST_CC"
|
||||
@ -38,5 +40,6 @@ mkdir -p objdir && cd objdir
|
||||
--without-x \
|
||||
--disable-tui \
|
||||
--disable-libada \
|
||||
--disable-werror \
|
||||
|
||||
make
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="w_scan"
|
||||
PKG_VERSION="20110206"
|
||||
PKG_VERSION="20110306"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
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_VERSION="1_45_0"
|
||||
PKG_VERSION="1_46_0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="glib"
|
||||
PKG_VERSION="2.28.1"
|
||||
PKG_VERSION="2.28.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="ncurses"
|
||||
PKG_VERSION="5.7"
|
||||
PKG_VERSION="5.8"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
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_SITE="http://www.mesa3d.org/"
|
||||
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_BUILD_DEPENDS="toolchain Python makedepend libxml2-host talloc expat glproto dri2proto libdrm libXext libXdamage libXfixes libXxf86vm libxcb libX11"
|
||||
PKG_DEPENDS="libXdamage libdrm expat libXext 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_SECTION="graphics"
|
||||
PKG_SHORTDESC="mesa: 3-D graphics library with OpenGL API"
|
||||
@ -36,6 +36,6 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
if [ "$MESA_MASTER" = "yes" ]; then
|
||||
PKG_VERSION="20110110"
|
||||
PKG_VERSION="0f84dda"
|
||||
PKG_URL="$OPENELEC_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
|
||||
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_VERSION="2.4.23"
|
||||
PKG_VERSION="2.4.24"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="libjpeg-turbo"
|
||||
PKG_VERSION="1.0.1"
|
||||
PKG_VERSION="1.1.0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="wlan-firmware"
|
||||
PKG_VERSION="0.0.1"
|
||||
PKG_VERSION="0.0.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
|
@ -25,8 +25,18 @@
|
||||
export INSTALL=$(kernel_path)
|
||||
$SCRIPTS/install busybox-initramfs
|
||||
|
||||
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||
$SCRIPTS/build u-boot
|
||||
KERNEL_IMAGE="uImage"
|
||||
else
|
||||
KERNEL_IMAGE="bzImage"
|
||||
fi
|
||||
|
||||
unset LDFLAGS
|
||||
|
||||
# dont build parallel
|
||||
MAKEFLAGS=-j1
|
||||
|
||||
cd $(kernel_path)
|
||||
rm -rf 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/*/source
|
||||
|
||||
make bzImage
|
||||
make $KERNEL_IMAGE
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="linux"
|
||||
PKG_VERSION="2.6.38-rc7"
|
||||
PKG_VERSION="2.6.38-rc8"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
@ -37,6 +37,6 @@ PKG_IS_ADDON="no"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
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"
|
||||
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"?>
|
||||
<addon id="os.openelec.settings"
|
||||
name="OpenELEC OS Settings"
|
||||
version="0.0.5"
|
||||
version="0.0.6"
|
||||
provider-name="openelec.tv">
|
||||
<requires>
|
||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||
|
@ -27,7 +27,7 @@ __author__ = "OpenELEC"
|
||||
__url__ = "http://www.openelec.tv"
|
||||
__svn_url__ = ""
|
||||
__credits__ = ""
|
||||
__version__ = "0.0.5"
|
||||
__version__ = "0.0.6"
|
||||
__XBMC_Revision__ = "22240"
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id='os.openelec.settings')
|
||||
|
@ -6,7 +6,7 @@
|
||||
<string id="2010">Toetsenbord</string>
|
||||
<string id="2011">Toetsenbord layout</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="2051">Te gebruiken LCD Driver</string>
|
||||
<string id="2060">Services na slaapstand</string>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<string id="2010">Keyboard</string>
|
||||
<string id="2011">Keyboardlayout</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="2051">LCD Driver to use</string>
|
||||
<string id="2060">Wakeup</string>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<string id="2010">Clavier</string>
|
||||
<string id="2011">Clavier</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="2051">Pilote LCD</string>
|
||||
<string id="2060">Retour de veille</string>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<string id="2010">Tastatur</string>
|
||||
<string id="2011">Tastaturlayout</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="2051">LCD Treiber</string>
|
||||
<string id="2060">Beim Aufwachen</string>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<string id="2010">Tastatur</string>
|
||||
<string id="2011">Språklayout</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="2051">LCD Driver</string>
|
||||
<string id="2060">Vekke</string>
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
<!-- SYSTEM -->
|
||||
<category label="2000">
|
||||
<!-- <setting label="2010" type="lsep"/> -->
|
||||
<!-- <setting type="sep" /> -->
|
||||
<!-- <setting id="X11_KEYMAP" type="labelenum" label="2011" values="ch|de|fr|uk|us" sort="yes" default="us"/> -->
|
||||
<setting label="2010" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<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 type="sep" />
|
||||
<setting id="UPDATE_AUTO" type="labelenum" label="2021" values="no|manual|auto" sort="yes" default="manual" />
|
||||
@ -44,11 +44,11 @@
|
||||
</category>
|
||||
|
||||
<!-- TV-SERVER -->
|
||||
<category label="4100">
|
||||
<setting label="4110" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="TVHEADEND_START" type="bool" label="4111" default="false" />
|
||||
</category>
|
||||
<!-- <category label="4100"> -->
|
||||
<!-- <setting label="4110" type="lsep"/> -->
|
||||
<!-- <setting type="sep" /> -->
|
||||
<!-- <setting id="TVHEADEND_START" type="bool" label="4111" default="false" /> -->
|
||||
<!-- </category> -->
|
||||
|
||||
<!-- SAMBA -->
|
||||
<category label="5000">
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-theme-Confluence"
|
||||
PKG_VERSION="Dharma-10.1-c8405db"
|
||||
PKG_VERSION="10.1-Dharma"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc"
|
||||
PKG_VERSION="Dharma-10.1-c8405db"
|
||||
PKG_VERSION="10.1-Dharma"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
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
|
||||
TEMP=`echo "$(cat /sys/class/thermal/thermal_zone0/temp)/1000" |bc`
|
||||
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 -n4 | 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);}'`
|
||||
fi
|
||||
|
||||
echo "${TEMP} C"
|
||||
|
@ -22,14 +22,13 @@
|
||||
|
||||
. /etc/profile
|
||||
|
||||
OPENELEC_SETTINGS="$HOME/.xbmc/userdata/addon_data/os.openelec.settings/settings.xml"
|
||||
|
||||
case "$1" in
|
||||
thaw|resume)
|
||||
(
|
||||
if [ -f "$OPENELEC_SETTINGS" ]; then
|
||||
VIDEODBUPDATE=`grep WAKEUP_VIDEODBUPDATE $OPENELEC_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
if [ "$VIDEODBUPDATE" = "true" ]; then
|
||||
if [ -f /var/config/settings.conf ]; then
|
||||
. /var/config/settings.conf
|
||||
|
||||
if [ "$WAKEUP_VIDEODBUPDATE" = "true" ]; then
|
||||
usleep 5000000
|
||||
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(video)"
|
||||
fi
|
||||
|
@ -22,14 +22,13 @@
|
||||
|
||||
. /etc/profile
|
||||
|
||||
OPENELEC_SETTINGS="$HOME/.xbmc/userdata/addon_data/os.openelec.settings/settings.xml"
|
||||
|
||||
case "$1" in
|
||||
thaw|resume)
|
||||
(
|
||||
if [ -f "$OPENELEC_SETTINGS" ]; then
|
||||
MUSICDBUPDATE=`grep WAKEUP_MUSICDBUPDATE $OPENELEC_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
if [ "$MUSICDBUPDATE" = "true" ]; then
|
||||
if [ -f /var/config/settings.conf ]; then
|
||||
. /var/config/settings.conf
|
||||
|
||||
if [ "$WAKEUP_MUSICDBUPDATE" = "true" ]; then
|
||||
usleep 5000000
|
||||
xbmc-send --host=127.0.0.1 -a "UpdateLibrary(music)"
|
||||
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