mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 21:26:49 +00:00
Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-next
Conflicts: packages/linux/meta packages/linux/patches/linux-3.2.28-071-silence_i915_agp-module-0.1.patch packages/linux/patches/linux-3.2.28-212-mantis_stb0899_faster_lock.patch packages/linux/patches/linux-3.2.30-071-silence_i915_agp-module-0.1.patch packages/linux/patches/linux-3.2.30-081-drm_cea_modes.patch packages/linux/patches/linux-3.2.30-201-add_Anysee_T2C_support-0.1.patch packages/linux/patches/linux-3.2.30-202-add_HVR930C_support-0.1.patch packages/linux/patches/linux-3.2.30-210-add_DVBSky_support.patch packages/linux/patches/linux-3.2.30-211-add_TeVii_s471_support.patch packages/linux/patches/linux-3.2.30-212-mantis_stb0899_faster_lock.patch packages/linux/patches/linux-3.2.30-213-cinergy_s2_usb_r2.patch packages/linux/patches/linux-3.2.30-251-acpi-5.0_support.patch packages/linux/patches/linux-3.2.30-920_add_rtl8168.patch packages/linux/patches/linux-3.2.30-990-xc5000_add_support_for_get_if_frequency.patch packages/linux/patches/linux-3.5.4-071-silence_i915_agp-module-0.1.patch packages/linux/patches/linux-3.5.4-212-mantis_stb0899_faster_lock.patch
This commit is contained in:
commit
63565f4d22
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-lib"
|
||||
PKG_VERSION="1.0.25"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-plugins"
|
||||
PKG_VERSION="1.0.25"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="alsa-utils"
|
||||
PKG_VERSION="1.0.25"
|
||||
PKG_VERSION="1.0.26"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sqlite"
|
||||
PKG_VERSION="autoconf-3071300"
|
||||
PKG_VERSION="autoconf-3071400"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="PublicDomain"
|
||||
|
40
packages/devel/readline/build
Executable file
40
packages/devel/readline/build
Executable file
@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2012 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, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
|
||||
cd $PKG_BUILD
|
||||
mkdir -p .build-target && cd .build-target
|
||||
../configure --host=$TARGET_NAME \
|
||||
--build=$HOST_NAME \
|
||||
--prefix=/usr \
|
||||
--exec-prefix=/usr \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--enable-shared \
|
||||
--disable-static \
|
||||
--with-curses \
|
||||
--without-purify
|
||||
|
||||
make
|
||||
|
||||
$MAKEINSTALL
|
32
packages/devel/readline/install
Executable file
32
packages/devel/readline/install
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2012 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, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
. config/options $1
|
||||
|
||||
mkdir -p $INSTALL/usr/lib
|
||||
cp -P $PKG_BUILD/.build-target/shlib/libreadline.so.6.2 $INSTALL/usr/lib
|
||||
ln -sf /usr/lib/libreadline.so.6.2 $INSTALL/usr/lib/libreadline.so.6
|
||||
ln -sf /usr/lib/libreadline.so.6 $INSTALL/usr/lib/libreadline.so
|
||||
|
||||
cp -P $PKG_BUILD/.build-target/shlib/libhistory.so.6.2 $INSTALL/usr/lib
|
||||
ln -sf /usr/lib/libhistory.so.6.2 $INSTALL/usr/lib/libhistory.so.6
|
||||
ln -sf /usr/lib/libhistory.so.6 $INSTALL/usr/lib/libhistory.so
|
@ -25,12 +25,12 @@ PKG_ARCH="any"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="http://www.gnu.org/readline"
|
||||
PKG_URL="ftp://ftp.gnu.org/gnu/readline/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS=""
|
||||
PKG_BUILD_DEPENDS="toolchain"
|
||||
PKG_DEPENDS="ncurses"
|
||||
PKG_BUILD_DEPENDS="toolchain ncurses"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="devel"
|
||||
PKG_SHORTDESC="readline: The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in."
|
||||
PKG_LONGDESC="The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in."
|
||||
PKG_IS_ADDON="no"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
PKG_AUTORECONF="no"
|
||||
|
@ -0,0 +1,36 @@
|
||||
diff -Naur readline-6.2-old/configure readline-6.2-new/configure
|
||||
--- a/configure 2010-11-14 14:48:06.000000000 -0800
|
||||
+++ b/configure 2012-05-02 19:38:49.000000000 -0700
|
||||
@@ -10450,10 +10450,10 @@
|
||||
$as_echo_n "checking configuration for building shared libraries... " >&6; }
|
||||
eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
|
||||
|
||||
-# case "$SHLIB_LIBS" in
|
||||
-# *curses*|*termcap*|*termlib*) ;;
|
||||
-# *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;;
|
||||
-# esac
|
||||
+ case "$SHLIB_LIBS" in
|
||||
+ *curses*|*termcap*|*termlib*) ;;
|
||||
+ *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;;
|
||||
+ esac
|
||||
|
||||
|
||||
|
||||
diff -Naur readline-6.2-old/configure.in readline-6.2-new/configure.in
|
||||
--- a/configure.in 2010-11-14 14:41:48.000000000 -0800
|
||||
+++ b/configure.in 2012-05-02 19:38:41.000000000 -0700
|
||||
@@ -214,10 +214,10 @@
|
||||
AC_MSG_CHECKING(configuration for building shared libraries)
|
||||
eval `TERMCAP_LIB=$TERMCAP_LIB ${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c ${host_cpu} -o ${host_os} -v ${host_vendor}`
|
||||
|
||||
-# case "$SHLIB_LIBS" in
|
||||
-# *curses*|*termcap*|*termlib*) ;;
|
||||
-# *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;;
|
||||
-# esac
|
||||
+ case "$SHLIB_LIBS" in
|
||||
+ *curses*|*termcap*|*termlib*) ;;
|
||||
+ *) SHLIB_LIBS="$SHLIB_LIBS $TERMCAP_LIB" ;;
|
||||
+ esac
|
||||
|
||||
AC_SUBST(SHOBJ_CC)
|
||||
AC_SUBST(SHOBJ_CFLAGS)
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="f20e9d7"
|
||||
PKG_VERSION="2997db1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
|
@ -21,7 +21,7 @@
|
||||
PKG_NAME="linux"
|
||||
PKG_VERSION="3.5.4"
|
||||
if [ "$LINUX" = "3.2" ]; then
|
||||
PKG_VERSION="3.2.28"
|
||||
PKG_VERSION="3.2.30"
|
||||
fi
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
|
@ -0,0 +1,12 @@
|
||||
diff -Naur linux-2.6.39-rc5/drivers/gpu/drm/i915/i915_drv.c linux-2.6.39-rc5.patch/drivers/gpu/drm/i915/i915_drv.c
|
||||
--- linux-2.6.39-rc5/drivers/gpu/drm/i915/i915_drv.c 2011-04-27 05:48:50.000000000 +0200
|
||||
+++ linux-2.6.39-rc5.patch/drivers/gpu/drm/i915/i915_drv.c 2011-04-29 02:51:28.773622809 +0200
|
||||
@@ -760,7 +760,7 @@
|
||||
static int __init i915_init(void)
|
||||
{
|
||||
if (!intel_agp_enabled) {
|
||||
- DRM_ERROR("drm/i915 can't work without intel_agp module!\n");
|
||||
+ DRM_INFO("drm/i915 can't work without intel_agp module!\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
358
packages/linux/patches/linux-3.2.30-081-drm_cea_modes.patch
Normal file
358
packages/linux/patches/linux-3.2.30-081-drm_cea_modes.patch
Normal file
@ -0,0 +1,358 @@
|
||||
diff -Naur linux-3.1.2/drivers/gpu/drm/drm_edid.c linux-3.1.2.patch/drivers/gpu/drm/drm_edid.c
|
||||
--- linux-3.1.2/drivers/gpu/drm/drm_edid.c 2011-11-21 23:47:46.000000000 +0100
|
||||
+++ linux-3.1.2.patch/drivers/gpu/drm/drm_edid.c 2011-11-23 00:35:54.444938016 +0100
|
||||
@@ -1318,6 +1318,7 @@
|
||||
|
||||
#define HDMI_IDENTIFIER 0x000C03
|
||||
#define AUDIO_BLOCK 0x01
|
||||
+#define VIDEO_BLOCK 0x02
|
||||
#define VENDOR_BLOCK 0x03
|
||||
#define EDID_BASIC_AUDIO (1 << 6)
|
||||
|
||||
@@ -1347,6 +1348,47 @@
|
||||
}
|
||||
EXPORT_SYMBOL(drm_find_cea_extension);
|
||||
|
||||
+static int
|
||||
+do_cea_modes (struct drm_connector *connector, u8 *db, u8 len)
|
||||
+{
|
||||
+ struct drm_device *dev = connector->dev;
|
||||
+ u8 * mode, cea_mode;
|
||||
+ int modes = 0;
|
||||
+
|
||||
+ for (mode = db; mode < db + len; mode++) {
|
||||
+ cea_mode = (*mode & 127) - 1; /* CEA modes are numbered 1..127 */
|
||||
+ if (cea_mode < drm_num_cea_modes) {
|
||||
+ struct drm_display_mode *newmode;
|
||||
+ newmode = drm_mode_duplicate(dev,
|
||||
+ &edid_cea_modes[cea_mode]);
|
||||
+ if (newmode) {
|
||||
+ drm_mode_probed_add(connector, newmode);
|
||||
+ modes++;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return modes;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+add_cea_modes(struct drm_connector *connector, struct edid *edid)
|
||||
+{
|
||||
+ u8 * cea = drm_find_cea_extension(edid);
|
||||
+ u8 * db, dbl;
|
||||
+ int modes = 0;
|
||||
+
|
||||
+ if (cea && cea[1] >= 3) {
|
||||
+ for (db = cea + 4; db < cea + cea[2]; db += dbl + 1) {
|
||||
+ dbl = db[0] & 0x1f;
|
||||
+ if (((db[0] & 0xe0) >> 5) == VIDEO_BLOCK)
|
||||
+ modes += do_cea_modes (connector, db+1, dbl);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return modes;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* drm_detect_hdmi_monitor - detect whether monitor is hdmi.
|
||||
* @edid: monitor EDID information
|
||||
@@ -1550,6 +1592,7 @@
|
||||
num_modes += add_standard_modes(connector, edid);
|
||||
num_modes += add_established_modes(connector, edid);
|
||||
num_modes += add_inferred_modes(connector, edid);
|
||||
+ num_modes += add_cea_modes(connector, edid);
|
||||
|
||||
if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
|
||||
edid_fixup_preferred(connector, quirks);
|
||||
diff -Naur linux-3.1.2/drivers/gpu/drm/drm_edid_modes.h linux-3.1.2.patch/drivers/gpu/drm/drm_edid_modes.h
|
||||
--- linux-3.1.2/drivers/gpu/drm/drm_edid_modes.h 2011-11-21 23:47:46.000000000 +0100
|
||||
+++ linux-3.1.2.patch/drivers/gpu/drm/drm_edid_modes.h 2011-11-23 00:31:42.218643364 +0100
|
||||
@@ -378,3 +378,287 @@
|
||||
{ 1920, 1440, 75, 0 },
|
||||
};
|
||||
static const int num_est3_modes = sizeof(est3_modes) / sizeof(est3_modes[0]);
|
||||
+
|
||||
+/*
|
||||
+ * Probably taken from CEA-861 spec.
|
||||
+ * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c.
|
||||
+ */
|
||||
+static const struct drm_display_mode edid_cea_modes[] = {
|
||||
+ /* 640x480@60Hz */
|
||||
+ { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
|
||||
+ 752, 800, 0, 480, 490, 492, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x480@60Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x480@60Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1280x720@60Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
|
||||
+ 1430, 1650, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080i@60Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008,
|
||||
+ 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x480i@60Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x480i@60Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x240@60Hz */
|
||||
+ { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 240, 244, 247, 262, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x240@60Hz */
|
||||
+ { DRM_MODE("1440x240", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 240, 244, 247, 262, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x480i@60Hz */
|
||||
+ { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956,
|
||||
+ 3204, 3432, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 2880x480i@60Hz */
|
||||
+ { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956,
|
||||
+ 3204, 3432, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 2880x240@60Hz */
|
||||
+ { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956,
|
||||
+ 3204, 3432, 0, 240, 244, 247, 262, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x240@60Hz */
|
||||
+ { DRM_MODE("2880x240", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2956,
|
||||
+ 3204, 3432, 0, 240, 244, 247, 262, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x480@60Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472,
|
||||
+ 1596, 1716, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x480@60Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1472,
|
||||
+ 1596, 1716, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1920x1080@60Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
|
||||
+ 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 720x576@50Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x576@50Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1280x720@50Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1720,
|
||||
+ 1760, 1980, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080i@50Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448,
|
||||
+ 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x576i@50Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x576i@50Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x288@50Hz */
|
||||
+ { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 288, 290, 293, 312, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x288@50Hz */
|
||||
+ { DRM_MODE("1440x288", DRM_MODE_TYPE_DRIVER, 27000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 288, 290, 293, 312, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x576i@50Hz */
|
||||
+ { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928,
|
||||
+ 3180, 3456, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 2880x576i@50Hz */
|
||||
+ { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928,
|
||||
+ 3180, 3456, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 2880x288@50Hz */
|
||||
+ { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928,
|
||||
+ 3180, 3456, 0, 288, 290, 293, 312, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x288@50Hz */
|
||||
+ { DRM_MODE("2880x288", DRM_MODE_TYPE_DRIVER, 54000, 2880, 2928,
|
||||
+ 3180, 3456, 0, 288, 290, 293, 312, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x576@50Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464,
|
||||
+ 1592, 1728, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x576@50Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464,
|
||||
+ 1592, 1728, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1920x1080@50Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448,
|
||||
+ 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080@24Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2558,
|
||||
+ 2602, 2750, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080@25Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2448,
|
||||
+ 2492, 2640, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080@30Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 74250, 1920, 2008,
|
||||
+ 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 2880x480@60Hz */
|
||||
+ { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944,
|
||||
+ 3192, 3432, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x480@60Hz */
|
||||
+ { DRM_MODE("2880x480", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2944,
|
||||
+ 3192, 3432, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x576@50Hz */
|
||||
+ { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928,
|
||||
+ 3184, 3456, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 2880x576@50Hz */
|
||||
+ { DRM_MODE("2880x576", DRM_MODE_TYPE_DRIVER, 108000, 2880, 2928,
|
||||
+ 3184, 3456, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1920x1080i@50Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 72000, 1920, 1952,
|
||||
+ 2120, 2304, 0, 1080, 1126, 1136, 1250, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1920x1080i@100Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2448,
|
||||
+ 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1280x720@100Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1720,
|
||||
+ 1760, 1980, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 720x576@100Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x576@100Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 54000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x576i@100Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x576i@100Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1920x1080i@120Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
|
||||
+ 2052, 2200, 0, 1080, 1084, 1094, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1280x720@120Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 148500, 1280, 1390,
|
||||
+ 1430, 1650, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 720x480@120Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x480@120Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 54000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x480i@120Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x480i@120Hz */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 54000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 720x576@200Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x576@200Hz */
|
||||
+ { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 108000, 720, 732,
|
||||
+ 796, 864, 0, 576, 581, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x576i@200Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x576i@200Hz */
|
||||
+ { DRM_MODE("1440x576", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1464,
|
||||
+ 1590, 1728, 0, 576, 580, 586, 625, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 720x480@240Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 720x480@240Hz */
|
||||
+ { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 108000, 720, 736,
|
||||
+ 798, 858, 0, 480, 489, 495, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC) },
|
||||
+ /* 1440x480i@240 */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1440x480i@240 */
|
||||
+ { DRM_MODE("1440x480", DRM_MODE_TYPE_DRIVER, 108000, 1440, 1478,
|
||||
+ 1602, 1716, 0, 480, 488, 494, 525, 0,
|
||||
+ DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC |
|
||||
+ DRM_MODE_FLAG_INTERLACE) },
|
||||
+ /* 1280x720@24Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 59400, 1280, 3040,
|
||||
+ 3080, 3300, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1280x720@25Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3700,
|
||||
+ 3740, 3960, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1280x720@30Hz */
|
||||
+ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 3040,
|
||||
+ 3080, 3300, 0, 720, 725, 730, 750, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080@120Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2008,
|
||||
+ 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+ /* 1920x1080@100Hz */
|
||||
+ { DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 297000, 1920, 2448,
|
||||
+ 2492, 2640, 0, 1080, 1084, 1094, 1125, 0,
|
||||
+ DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
|
||||
+};
|
||||
+static const int drm_num_cea_modes =
|
||||
+ sizeof (edid_cea_modes) / sizeof (edid_cea_modes[0]);
|
@ -0,0 +1,845 @@
|
||||
diff -Naur linux-3.2.1/drivers/media/common/tuners/tda18212.c linux-3.2.1.patch/drivers/media/common/tuners/tda18212.c
|
||||
--- linux-3.2.1/drivers/media/common/tuners/tda18212.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/common/tuners/tda18212.c 2012-01-22 16:07:33.176264363 +0100
|
||||
@@ -25,6 +25,8 @@
|
||||
struct tda18212_priv {
|
||||
struct tda18212_config *cfg;
|
||||
struct i2c_adapter *i2c;
|
||||
+
|
||||
+ u32 if_frequency;
|
||||
};
|
||||
|
||||
#define dbg(fmt, arg...) \
|
||||
@@ -136,12 +138,24 @@
|
||||
int ret, i;
|
||||
u32 if_khz;
|
||||
u8 buf[9];
|
||||
+ #define DVBT_6 0
|
||||
+ #define DVBT_7 1
|
||||
+ #define DVBT_8 2
|
||||
+ #define DVBT2_6 3
|
||||
+ #define DVBT2_7 4
|
||||
+ #define DVBT2_8 5
|
||||
+ #define DVBC_6 6
|
||||
+ #define DVBC_8 7
|
||||
static const u8 bw_params[][3] = {
|
||||
- /* 0f 13 23 */
|
||||
- { 0xb3, 0x20, 0x03 }, /* DVB-T 6 MHz */
|
||||
- { 0xb3, 0x31, 0x01 }, /* DVB-T 7 MHz */
|
||||
- { 0xb3, 0x22, 0x01 }, /* DVB-T 8 MHz */
|
||||
- { 0x92, 0x53, 0x03 }, /* DVB-C */
|
||||
+ /* reg: 0f 13 23 */
|
||||
+ [DVBT_6] = { 0xb3, 0x20, 0x03 },
|
||||
+ [DVBT_7] = { 0xb3, 0x31, 0x01 },
|
||||
+ [DVBT_8] = { 0xb3, 0x22, 0x01 },
|
||||
+ [DVBT2_6] = { 0xbc, 0x20, 0x03 },
|
||||
+ [DVBT2_7] = { 0xbc, 0x72, 0x03 },
|
||||
+ [DVBT2_8] = { 0xbc, 0x22, 0x01 },
|
||||
+ [DVBC_6] = { 0x92, 0x50, 0x03 },
|
||||
+ [DVBC_8] = { 0x92, 0x53, 0x03 },
|
||||
};
|
||||
|
||||
dbg("delsys=%d RF=%d BW=%d\n",
|
||||
@@ -155,15 +169,34 @@
|
||||
switch (c->bandwidth_hz) {
|
||||
case 6000000:
|
||||
if_khz = priv->cfg->if_dvbt_6;
|
||||
- i = 0;
|
||||
+ i = DVBT_6;
|
||||
break;
|
||||
case 7000000:
|
||||
if_khz = priv->cfg->if_dvbt_7;
|
||||
- i = 1;
|
||||
+ i = DVBT_7;
|
||||
break;
|
||||
case 8000000:
|
||||
if_khz = priv->cfg->if_dvbt_8;
|
||||
- i = 2;
|
||||
+ i = DVBT_8;
|
||||
+ break;
|
||||
+ default:
|
||||
+ ret = -EINVAL;
|
||||
+ goto error;
|
||||
+ }
|
||||
+ break;
|
||||
+ case SYS_DVBT2:
|
||||
+ switch (c->bandwidth_hz) {
|
||||
+ case 6000000:
|
||||
+ if_khz = priv->cfg->if_dvbt2_6;
|
||||
+ i = DVBT2_6;
|
||||
+ break;
|
||||
+ case 7000000:
|
||||
+ if_khz = priv->cfg->if_dvbt2_7;
|
||||
+ i = DVBT2_7;
|
||||
+ break;
|
||||
+ case 8000000:
|
||||
+ if_khz = priv->cfg->if_dvbt2_8;
|
||||
+ i = DVBT2_8;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
@@ -172,7 +205,7 @@
|
||||
break;
|
||||
case SYS_DVBC_ANNEX_AC:
|
||||
if_khz = priv->cfg->if_dvbc;
|
||||
- i = 3;
|
||||
+ i = DVBC_8;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
@@ -194,7 +227,7 @@
|
||||
buf[0] = 0x02;
|
||||
buf[1] = bw_params[i][1];
|
||||
buf[2] = 0x03; /* default value */
|
||||
- buf[3] = if_khz / 50;
|
||||
+ buf[3] = DIV_ROUND_CLOSEST(if_khz, 50);
|
||||
buf[4] = ((c->frequency / 1000) >> 16) & 0xff;
|
||||
buf[5] = ((c->frequency / 1000) >> 8) & 0xff;
|
||||
buf[6] = ((c->frequency / 1000) >> 0) & 0xff;
|
||||
@@ -204,6 +237,9 @@
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
+ /* actual IF rounded as it is on register */
|
||||
+ priv->if_frequency = buf[3] * 50 * 1000;
|
||||
+
|
||||
exit:
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 0); /* close I2C-gate */
|
||||
@@ -215,6 +251,15 @@
|
||||
goto exit;
|
||||
}
|
||||
|
||||
+static int tda18212_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
|
||||
+{
|
||||
+ struct tda18212_priv *priv = fe->tuner_priv;
|
||||
+
|
||||
+ *frequency = priv->if_frequency;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int tda18212_release(struct dvb_frontend *fe)
|
||||
{
|
||||
kfree(fe->tuner_priv);
|
||||
@@ -234,6 +279,7 @@
|
||||
.release = tda18212_release,
|
||||
|
||||
.set_params = tda18212_set_params,
|
||||
+ .get_if_frequency = tda18212_get_if_frequency,
|
||||
};
|
||||
|
||||
struct dvb_frontend *tda18212_attach(struct dvb_frontend *fe,
|
||||
diff -Naur linux-3.2.1/drivers/media/common/tuners/tda18212.h linux-3.2.1.patch/drivers/media/common/tuners/tda18212.h
|
||||
--- linux-3.2.1/drivers/media/common/tuners/tda18212.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/common/tuners/tda18212.h 2012-01-22 16:07:33.176264363 +0100
|
||||
@@ -29,6 +29,10 @@
|
||||
u16 if_dvbt_6;
|
||||
u16 if_dvbt_7;
|
||||
u16 if_dvbt_8;
|
||||
+ u16 if_dvbt2_5;
|
||||
+ u16 if_dvbt2_6;
|
||||
+ u16 if_dvbt2_7;
|
||||
+ u16 if_dvbt2_8;
|
||||
u16 if_dvbc;
|
||||
};
|
||||
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/dvb-usb/anysee.c linux-3.2.1.patch/drivers/media/dvb/dvb-usb/anysee.c
|
||||
--- linux-3.2.1/drivers/media/dvb/dvb-usb/anysee.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/dvb-usb/anysee.c 2012-01-22 16:09:04.983927302 +0100
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "stv0900.h"
|
||||
#include "stv6110.h"
|
||||
#include "isl6423.h"
|
||||
+#include "cxd2820r.h"
|
||||
|
||||
/* debug */
|
||||
static int dvb_usb_anysee_debug;
|
||||
@@ -66,10 +67,12 @@
|
||||
if (mutex_lock_interruptible(&anysee_usb_mutex) < 0)
|
||||
return -EAGAIN;
|
||||
|
||||
+ deb_xfer(">>> ");
|
||||
+ debug_dump(buf, slen, deb_xfer);
|
||||
+
|
||||
/* We need receive one message more after dvb_usb_generic_rw due
|
||||
to weird transaction flow, which is 1 x send + 2 x receive. */
|
||||
ret = dvb_usb_generic_rw(d, buf, sizeof(buf), buf, sizeof(buf), 0);
|
||||
-
|
||||
if (!ret) {
|
||||
/* receive 2nd answer */
|
||||
ret = usb_bulk_msg(d->udev, usb_rcvbulkpipe(d->udev,
|
||||
@@ -79,7 +82,10 @@
|
||||
err("%s: recv bulk message failed: %d", __func__, ret);
|
||||
else {
|
||||
deb_xfer("<<< ");
|
||||
- debug_dump(buf, act_len, deb_xfer);
|
||||
+ debug_dump(buf, rlen, deb_xfer);
|
||||
+
|
||||
+ if (buf[63] != 0x4f)
|
||||
+ deb_info("%s: cmd failed\n", __func__);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,6 +135,29 @@
|
||||
return anysee_write_reg(d, reg, val);
|
||||
}
|
||||
|
||||
+/* read single register with mask */
|
||||
+static int anysee_rd_reg_mask(struct dvb_usb_device *d, u16 reg, u8 *val,
|
||||
+ u8 mask)
|
||||
+{
|
||||
+ int ret, i;
|
||||
+ u8 tmp;
|
||||
+
|
||||
+ ret = anysee_read_reg(d, reg, &tmp);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ tmp &= mask;
|
||||
+
|
||||
+ /* find position of the first bit */
|
||||
+ for (i = 0; i < 8; i++) {
|
||||
+ if ((mask >> i) & 0x01)
|
||||
+ break;
|
||||
+ }
|
||||
+ *val = tmp >> i;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int anysee_get_hw_info(struct dvb_usb_device *d, u8 *id)
|
||||
{
|
||||
u8 buf[] = {CMD_GET_HW_INFO};
|
||||
@@ -156,22 +185,6 @@
|
||||
return anysee_ctrl_msg(d, buf, sizeof(buf), NULL, 0);
|
||||
}
|
||||
|
||||
-static int anysee_init(struct dvb_usb_device *d)
|
||||
-{
|
||||
- int ret;
|
||||
- /* LED light */
|
||||
- ret = anysee_led_ctrl(d, 0x01, 0x03);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- /* enable IR */
|
||||
- ret = anysee_ir_ctrl(d, 1);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
/* I2C */
|
||||
static int anysee_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
|
||||
int num)
|
||||
@@ -297,7 +310,7 @@
|
||||
.pll_m = 12,
|
||||
.pll_p = 3,
|
||||
.pll_n = 1,
|
||||
- .output_mode = TDA10023_OUTPUT_MODE_PARALLEL_C,
|
||||
+ .output_mode = TDA10023_OUTPUT_MODE_PARALLEL_B,
|
||||
.deltaf = 0xba02,
|
||||
};
|
||||
|
||||
@@ -309,6 +322,17 @@
|
||||
.if_dvbc = 5000,
|
||||
};
|
||||
|
||||
+static struct tda18212_config anysee_tda18212_config2 = {
|
||||
+ .i2c_address = 0x60 /* (0xc0 >> 1) */,
|
||||
+ .if_dvbt_6 = 3550,
|
||||
+ .if_dvbt_7 = 3700,
|
||||
+ .if_dvbt_8 = 4150,
|
||||
+ .if_dvbt2_6 = 3250,
|
||||
+ .if_dvbt2_7 = 4000,
|
||||
+ .if_dvbt2_8 = 4000,
|
||||
+ .if_dvbc = 5000,
|
||||
+};
|
||||
+
|
||||
static struct cx24116_config anysee_cx24116_config = {
|
||||
.demod_address = (0xaa >> 1),
|
||||
.mpg_clk_pos_pol = 0x00,
|
||||
@@ -339,6 +363,18 @@
|
||||
.addr = (0x10 >> 1),
|
||||
};
|
||||
|
||||
+static struct cxd2820r_config anysee_cxd2820r_config = {
|
||||
+ .i2c_address = 0x6d, /* (0xda >> 1) */
|
||||
+ .ts_mode = 0x38,
|
||||
+ .if_dvbt_6 = 3550,
|
||||
+ .if_dvbt_7 = 3700,
|
||||
+ .if_dvbt_8 = 4150,
|
||||
+ .if_dvbt2_6 = 3250,
|
||||
+ .if_dvbt2_7 = 4000,
|
||||
+ .if_dvbt2_8 = 4000,
|
||||
+ .if_dvbc = 5000,
|
||||
+};
|
||||
+
|
||||
/*
|
||||
* New USB device strings: Mfr=1, Product=2, SerialNumber=0
|
||||
* Manufacturer: AMT.CO.KR
|
||||
@@ -421,6 +457,14 @@
|
||||
* IOA[7] TS 1=enabled
|
||||
* IOE[5] STV0903 1=enabled
|
||||
*
|
||||
+ * E7 T2C VID=1c73 PID=861f HW=20 FW=0.1 AMTCI=0.5 "anysee-E7T2C(LP)"
|
||||
+ * PCB: 508T2C (rev0.3)
|
||||
+ * parts: DNOQ44QCH106A(CXD2820R, TDA18212), TDA8024
|
||||
+ * OEA=80 OEB=00 OEC=03 OED=f7 OEE=ff
|
||||
+ * IOA=4d IOB=00 IOC=cc IOD=48 IOE=e4
|
||||
+ * IOA[7] TS 1=enabled
|
||||
+ * IOE[5] CXD2820R 1=enabled
|
||||
+ *
|
||||
* E7 PTC VID=1c73 PID=861f HW=21 FW=0.1 AMTCI=?? "anysee-E7PTC(LP)"
|
||||
* PCB: 508PTC (rev0.5)
|
||||
* parts: ZL10353, TDA10023, DNOD44CDH086A(TDA18212)
|
||||
@@ -437,7 +481,7 @@
|
||||
* IOD[6] ZL10353 1=enabled
|
||||
* IOE[0] IF 0=enabled
|
||||
*
|
||||
- * E7 S2 VID=1c73 PID=861f HW=22 FW=0.1 AMTCI=?? "anysee-E7PS2(LP)"
|
||||
+ * E7 PS2 VID=1c73 PID=861f HW=22 FW=0.1 AMTCI=?? "anysee-E7PS2(LP)"
|
||||
* PCB: 508PS2 (rev0.4)
|
||||
* parts: DNBU10512IST(STV0903, STV6110), ISL6423
|
||||
* OEA=80 OEB=00 OEC=03 OED=f7 OEE=ff
|
||||
@@ -446,6 +490,16 @@
|
||||
* IOE[5] STV0903 1=enabled
|
||||
*/
|
||||
|
||||
+
|
||||
+/* external I2C gate used for DNOD44CDH086A(TDA18212) tuner module */
|
||||
+static int anysee_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
+{
|
||||
+ struct dvb_usb_adapter *adap = fe->dvb->priv;
|
||||
+
|
||||
+ /* enable / disable tuner access on IOE[4] */
|
||||
+ return anysee_wr_reg_mask(adap->dev, REG_IOE, (enable << 4), 0x10);
|
||||
+}
|
||||
+
|
||||
static int anysee_frontend_ctrl(struct dvb_frontend *fe, int onoff)
|
||||
{
|
||||
struct dvb_usb_adapter *adap = fe->dvb->priv;
|
||||
@@ -577,7 +631,8 @@
|
||||
/* detect hardware only once */
|
||||
if (adap->fe_adap[0].fe == NULL) {
|
||||
/* Check which hardware we have.
|
||||
- * We must do this call two times to get reliable values (hw bug).
|
||||
+ * We must do this call two times to get reliable values
|
||||
+ * (hw/fw bug).
|
||||
*/
|
||||
ret = anysee_get_hw_info(adap->dev, hw_info);
|
||||
if (ret)
|
||||
@@ -606,14 +661,14 @@
|
||||
break;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[0].fe = dvb_attach(mt352_attach, &anysee_mt352_config,
|
||||
- &adap->dev->i2c_adap);
|
||||
+ adap->fe_adap[0].fe = dvb_attach(mt352_attach,
|
||||
+ &anysee_mt352_config, &adap->dev->i2c_adap);
|
||||
if (adap->fe_adap[0].fe)
|
||||
break;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[0].fe = dvb_attach(zl10353_attach, &anysee_zl10353_config,
|
||||
- &adap->dev->i2c_adap);
|
||||
+ adap->fe_adap[0].fe = dvb_attach(zl10353_attach,
|
||||
+ &anysee_zl10353_config, &adap->dev->i2c_adap);
|
||||
|
||||
break;
|
||||
case ANYSEE_HW_507CD: /* 6 */
|
||||
@@ -665,8 +720,8 @@
|
||||
goto error;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[0].fe = dvb_attach(cx24116_attach, &anysee_cx24116_config,
|
||||
- &adap->dev->i2c_adap);
|
||||
+ adap->fe_adap[0].fe = dvb_attach(cx24116_attach,
|
||||
+ &anysee_cx24116_config, &adap->dev->i2c_adap);
|
||||
|
||||
break;
|
||||
case ANYSEE_HW_507FA: /* 15 */
|
||||
@@ -747,17 +802,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ /* I2C gate for DNOD44CDH086A(TDA18212) tuner module */
|
||||
+ if (tmp == 0xc7) {
|
||||
+ if (adap->fe_adap[state->fe_id].fe)
|
||||
+ adap->fe_adap[state->fe_id].fe->ops.i2c_gate_ctrl =
|
||||
+ anysee_i2c_gate_ctrl;
|
||||
+ }
|
||||
+
|
||||
break;
|
||||
case ANYSEE_HW_508TC: /* 18 */
|
||||
case ANYSEE_HW_508PTC: /* 21 */
|
||||
/* E7 TC */
|
||||
/* E7 PTC */
|
||||
|
||||
- /* enable transport stream on IOA[7] */
|
||||
- ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80);
|
||||
- if (ret)
|
||||
- goto error;
|
||||
-
|
||||
if ((state->fe_id ^ dvb_usb_anysee_delsys) == 0) {
|
||||
/* disable DVB-T demod on IOD[6] */
|
||||
ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 6),
|
||||
@@ -772,7 +829,8 @@
|
||||
goto error;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[state->fe_id].fe = dvb_attach(tda10023_attach,
|
||||
+ adap->fe_adap[state->fe_id].fe =
|
||||
+ dvb_attach(tda10023_attach,
|
||||
&anysee_tda10023_tda18212_config,
|
||||
&adap->dev->i2c_adap, 0x48);
|
||||
} else {
|
||||
@@ -789,11 +847,19 @@
|
||||
goto error;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[state->fe_id].fe = dvb_attach(zl10353_attach,
|
||||
+ adap->fe_adap[state->fe_id].fe =
|
||||
+ dvb_attach(zl10353_attach,
|
||||
&anysee_zl10353_tda18212_config,
|
||||
&adap->dev->i2c_adap);
|
||||
}
|
||||
|
||||
+ /* I2C gate for DNOD44CDH086A(TDA18212) tuner module */
|
||||
+ if (adap->fe_adap[state->fe_id].fe)
|
||||
+ adap->fe_adap[state->fe_id].fe->ops.i2c_gate_ctrl =
|
||||
+ anysee_i2c_gate_ctrl;
|
||||
+
|
||||
+ state->has_ci = true;
|
||||
+
|
||||
break;
|
||||
case ANYSEE_HW_508S2: /* 19 */
|
||||
case ANYSEE_HW_508PS2: /* 22 */
|
||||
@@ -803,19 +869,35 @@
|
||||
if (state->fe_id)
|
||||
break;
|
||||
|
||||
- /* enable transport stream on IOA[7] */
|
||||
- ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80);
|
||||
+ /* enable DVB-S/S2 demod on IOE[5] */
|
||||
+ ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 5), 0x20);
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
- /* enable DVB-S/S2 demod on IOE[5] */
|
||||
+ /* attach demod */
|
||||
+ adap->fe_adap[0].fe = dvb_attach(stv0900_attach,
|
||||
+ &anysee_stv0900_config, &adap->dev->i2c_adap, 0);
|
||||
+
|
||||
+ state->has_ci = true;
|
||||
+
|
||||
+ break;
|
||||
+ case ANYSEE_HW_508T2C: /* 20 */
|
||||
+ /* E7 T2C */
|
||||
+
|
||||
+ if (state->fe_id)
|
||||
+ break;
|
||||
+
|
||||
+ /* enable DVB-T/T2/C demod on IOE[5] */
|
||||
ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 5), 0x20);
|
||||
if (ret)
|
||||
goto error;
|
||||
|
||||
/* attach demod */
|
||||
- adap->fe_adap[0].fe = dvb_attach(stv0900_attach, &anysee_stv0900_config,
|
||||
- &adap->dev->i2c_adap, 0);
|
||||
+ adap->fe_adap[state->fe_id].fe = dvb_attach(cxd2820r_attach,
|
||||
+ &anysee_cxd2820r_config, &adap->dev->i2c_adap,
|
||||
+ NULL);
|
||||
+
|
||||
+ state->has_ci = true;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -842,24 +924,26 @@
|
||||
/* E30 */
|
||||
|
||||
/* attach tuner */
|
||||
- fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, (0xc2 >> 1),
|
||||
- NULL, DVB_PLL_THOMSON_DTT7579);
|
||||
+ fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe,
|
||||
+ (0xc2 >> 1), NULL, DVB_PLL_THOMSON_DTT7579);
|
||||
|
||||
break;
|
||||
case ANYSEE_HW_507CD: /* 6 */
|
||||
/* E30 Plus */
|
||||
|
||||
/* attach tuner */
|
||||
- fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, (0xc2 >> 1),
|
||||
- &adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579);
|
||||
+ fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe,
|
||||
+ (0xc2 >> 1), &adap->dev->i2c_adap,
|
||||
+ DVB_PLL_THOMSON_DTT7579);
|
||||
|
||||
break;
|
||||
case ANYSEE_HW_507DC: /* 10 */
|
||||
/* E30 C Plus */
|
||||
|
||||
/* attach tuner */
|
||||
- fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, (0xc0 >> 1),
|
||||
- &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A);
|
||||
+ fe = dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe,
|
||||
+ (0xc0 >> 1), &adap->dev->i2c_adap,
|
||||
+ DVB_PLL_SAMSUNG_DTOS403IH102A);
|
||||
|
||||
break;
|
||||
case ANYSEE_HW_507SI: /* 11 */
|
||||
@@ -877,22 +961,12 @@
|
||||
/* Try first attach TDA18212 silicon tuner on IOE[4], if that
|
||||
* fails attach old simple PLL. */
|
||||
|
||||
- /* enable tuner on IOE[4] */
|
||||
- ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 4), 0x10);
|
||||
- if (ret)
|
||||
- goto error;
|
||||
-
|
||||
/* attach tuner */
|
||||
fe = dvb_attach(tda18212_attach, adap->fe_adap[state->fe_id].fe,
|
||||
&adap->dev->i2c_adap, &anysee_tda18212_config);
|
||||
if (fe)
|
||||
break;
|
||||
|
||||
- /* disable tuner on IOE[4] */
|
||||
- ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (0 << 4), 0x10);
|
||||
- if (ret)
|
||||
- goto error;
|
||||
-
|
||||
/* attach tuner */
|
||||
fe = dvb_attach(dvb_pll_attach, adap->fe_adap[state->fe_id].fe,
|
||||
(0xc0 >> 1), &adap->dev->i2c_adap,
|
||||
@@ -904,11 +978,6 @@
|
||||
/* E7 TC */
|
||||
/* E7 PTC */
|
||||
|
||||
- /* enable tuner on IOE[4] */
|
||||
- ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 4), 0x10);
|
||||
- if (ret)
|
||||
- goto error;
|
||||
-
|
||||
/* attach tuner */
|
||||
fe = dvb_attach(tda18212_attach, adap->fe_adap[state->fe_id].fe,
|
||||
&adap->dev->i2c_adap, &anysee_tda18212_config);
|
||||
@@ -930,6 +999,15 @@
|
||||
}
|
||||
|
||||
break;
|
||||
+
|
||||
+ case ANYSEE_HW_508T2C: /* 20 */
|
||||
+ /* E7 T2C */
|
||||
+
|
||||
+ /* attach tuner */
|
||||
+ fe = dvb_attach(tda18212_attach, adap->fe_adap[state->fe_id].fe,
|
||||
+ &adap->dev->i2c_adap, &anysee_tda18212_config2);
|
||||
+
|
||||
+ break;
|
||||
default:
|
||||
fe = NULL;
|
||||
}
|
||||
@@ -939,7 +1017,6 @@
|
||||
else
|
||||
ret = -ENODEV;
|
||||
|
||||
-error:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -969,6 +1046,201 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int anysee_ci_read_attribute_mem(struct dvb_ca_en50221 *ci, int slot,
|
||||
+ int addr)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+ u8 buf[] = {CMD_CI, 0x02, 0x40 | addr >> 8, addr & 0xff, 0x00, 1};
|
||||
+ u8 val;
|
||||
+
|
||||
+ ret = anysee_ctrl_msg(d, buf, sizeof(buf), &val, 1);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return val;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_write_attribute_mem(struct dvb_ca_en50221 *ci, int slot,
|
||||
+ int addr, u8 val)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+ u8 buf[] = {CMD_CI, 0x03, 0x40 | addr >> 8, addr & 0xff, 0x00, 1, val};
|
||||
+
|
||||
+ ret = anysee_ctrl_msg(d, buf, sizeof(buf), NULL, 0);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_read_cam_control(struct dvb_ca_en50221 *ci, int slot,
|
||||
+ u8 addr)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+ u8 buf[] = {CMD_CI, 0x04, 0x40, addr, 0x00, 1};
|
||||
+ u8 val;
|
||||
+
|
||||
+ ret = anysee_ctrl_msg(d, buf, sizeof(buf), &val, 1);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return val;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_write_cam_control(struct dvb_ca_en50221 *ci, int slot,
|
||||
+ u8 addr, u8 val)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+ u8 buf[] = {CMD_CI, 0x05, 0x40, addr, 0x00, 1, val};
|
||||
+
|
||||
+ ret = anysee_ctrl_msg(d, buf, sizeof(buf), NULL, 0);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+ struct anysee_state *state = d->priv;
|
||||
+
|
||||
+ state->ci_cam_ready = jiffies + msecs_to_jiffies(1000);
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOA, (0 << 7), 0x80);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ msleep(300);
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOA, (1 << 7), 0x80);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOA, (0 << 7), 0x80);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ msleep(30);
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOA, (1 << 7), 0x80);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOD, (0 << 1), 0x02);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot,
|
||||
+ int open)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = ci->data;
|
||||
+ struct anysee_state *state = d->priv;
|
||||
+ int ret;
|
||||
+ u8 tmp;
|
||||
+
|
||||
+ ret = anysee_rd_reg_mask(d, REG_IOC, &tmp, 0x40);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ if (tmp == 0) {
|
||||
+ ret = DVB_CA_EN50221_POLL_CAM_PRESENT;
|
||||
+ if (time_after(jiffies, state->ci_cam_ready))
|
||||
+ ret |= DVB_CA_EN50221_POLL_CAM_READY;
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int anysee_ci_init(struct dvb_usb_device *d)
|
||||
+{
|
||||
+ struct anysee_state *state = d->priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ state->ci.owner = THIS_MODULE;
|
||||
+ state->ci.read_attribute_mem = anysee_ci_read_attribute_mem;
|
||||
+ state->ci.write_attribute_mem = anysee_ci_write_attribute_mem;
|
||||
+ state->ci.read_cam_control = anysee_ci_read_cam_control;
|
||||
+ state->ci.write_cam_control = anysee_ci_write_cam_control;
|
||||
+ state->ci.slot_reset = anysee_ci_slot_reset;
|
||||
+ state->ci.slot_shutdown = anysee_ci_slot_shutdown;
|
||||
+ state->ci.slot_ts_enable = anysee_ci_slot_ts_enable;
|
||||
+ state->ci.poll_slot_status = anysee_ci_poll_slot_status;
|
||||
+ state->ci.data = d;
|
||||
+
|
||||
+ ret = anysee_wr_reg_mask(d, REG_IOA, (1 << 7), 0x80);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void anysee_ci_release(struct dvb_usb_device *d)
|
||||
+{
|
||||
+ struct anysee_state *state = d->priv;
|
||||
+
|
||||
+ /* detach CI */
|
||||
+ if (state->has_ci)
|
||||
+ dvb_ca_en50221_release(&state->ci);
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
+static int anysee_init(struct dvb_usb_device *d)
|
||||
+{
|
||||
+ struct anysee_state *state = d->priv;
|
||||
+ int ret;
|
||||
+
|
||||
+ /* LED light */
|
||||
+ ret = anysee_led_ctrl(d, 0x01, 0x03);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ /* enable IR */
|
||||
+ ret = anysee_ir_ctrl(d, 1);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ /* attach CI */
|
||||
+ if (state->has_ci) {
|
||||
+ ret = anysee_ci_init(d);
|
||||
+ if (ret) {
|
||||
+ state->has_ci = false;
|
||||
+ return ret;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* DVB USB Driver stuff */
|
||||
static struct dvb_usb_device_properties anysee_properties;
|
||||
|
||||
@@ -1010,6 +1282,16 @@
|
||||
return anysee_init(d);
|
||||
}
|
||||
|
||||
+static void anysee_disconnect(struct usb_interface *intf)
|
||||
+{
|
||||
+ struct dvb_usb_device *d = usb_get_intfdata(intf);
|
||||
+
|
||||
+ anysee_ci_release(d);
|
||||
+ dvb_usb_device_exit(intf);
|
||||
+
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
static struct usb_device_id anysee_table[] = {
|
||||
{ USB_DEVICE(USB_VID_CYPRESS, USB_PID_ANYSEE) },
|
||||
{ USB_DEVICE(USB_VID_AMT, USB_PID_ANYSEE) },
|
||||
@@ -1029,7 +1311,7 @@
|
||||
{
|
||||
.num_frontends = 2,
|
||||
.frontend_ctrl = anysee_frontend_ctrl,
|
||||
- .fe = {{
|
||||
+ .fe = { {
|
||||
.streaming_ctrl = anysee_streaming_ctrl,
|
||||
.frontend_attach = anysee_frontend_attach,
|
||||
.tuner_attach = anysee_tuner_attach,
|
||||
@@ -1057,7 +1339,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
- }},
|
||||
+ } },
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1087,7 +1369,7 @@
|
||||
static struct usb_driver anysee_driver = {
|
||||
.name = "dvb_usb_anysee",
|
||||
.probe = anysee_probe,
|
||||
- .disconnect = dvb_usb_device_exit,
|
||||
+ .disconnect = anysee_disconnect,
|
||||
.id_table = anysee_table,
|
||||
};
|
||||
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/dvb-usb/anysee.h linux-3.2.1.patch/drivers/media/dvb/dvb-usb/anysee.h
|
||||
--- linux-3.2.1/drivers/media/dvb/dvb-usb/anysee.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/dvb-usb/anysee.h 2012-01-22 16:07:33.178264400 +0100
|
||||
@@ -36,6 +36,7 @@
|
||||
|
||||
#define DVB_USB_LOG_PREFIX "anysee"
|
||||
#include "dvb-usb.h"
|
||||
+#include "dvb_ca_en50221.h"
|
||||
|
||||
#define deb_info(args...) dprintk(dvb_usb_anysee_debug, 0x01, args)
|
||||
#define deb_xfer(args...) dprintk(dvb_usb_anysee_debug, 0x02, args)
|
||||
@@ -54,12 +55,16 @@
|
||||
CMD_GET_IR_CODE = 0x41,
|
||||
CMD_GET_HW_INFO = 0x19,
|
||||
CMD_SMARTCARD = 0x34,
|
||||
+ CMD_CI = 0x37,
|
||||
};
|
||||
|
||||
struct anysee_state {
|
||||
u8 hw; /* PCB ID */
|
||||
u8 seq;
|
||||
u8 fe_id:1; /* frondend ID */
|
||||
+ u8 has_ci:1;
|
||||
+ struct dvb_ca_en50221 ci;
|
||||
+ unsigned long ci_cam_ready; /* jiffies */
|
||||
};
|
||||
|
||||
#define ANYSEE_HW_507T 2 /* E30 */
|
||||
@@ -69,6 +74,7 @@
|
||||
#define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */
|
||||
#define ANYSEE_HW_508TC 18 /* E7 TC */
|
||||
#define ANYSEE_HW_508S2 19 /* E7 S2 */
|
||||
+#define ANYSEE_HW_508T2C 20 /* E7 T2C */
|
||||
#define ANYSEE_HW_508PTC 21 /* E7 PTC Plus */
|
||||
#define ANYSEE_HW_508PS2 22 /* E7 PS2 Plus */
|
||||
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/dvb-usb/Kconfig linux-3.2.1.patch/drivers/media/dvb/dvb-usb/Kconfig
|
||||
--- linux-3.2.1/drivers/media/dvb/dvb-usb/Kconfig 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/dvb-usb/Kconfig 2012-01-22 16:07:33.179264419 +0100
|
||||
@@ -311,6 +311,7 @@
|
||||
select DVB_STV0900 if !DVB_FE_CUSTOMISE
|
||||
select DVB_STV6110 if !DVB_FE_CUSTOMISE
|
||||
select DVB_ISL6423 if !DVB_FE_CUSTOMISE
|
||||
+ select DVB_CXD2820R if !DVB_FE_CUSTOMISE
|
||||
help
|
||||
Say Y here to support the Anysee E30, Anysee E30 Plus or
|
||||
Anysee E30 C Plus DVB USB2.0 receiver.
|
@ -0,0 +1,649 @@
|
||||
diff -Naur linux-3.2.1/Documentation/DocBook/media/dvb/dvbproperty.xml linux-3.2.1.patch/Documentation/DocBook/media/dvb/dvbproperty.xml
|
||||
--- linux-3.2.1/Documentation/DocBook/media/dvb/dvbproperty.xml 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/Documentation/DocBook/media/dvb/dvbproperty.xml 2012-01-22 15:52:29.773509131 +0100
|
||||
@@ -311,6 +311,8 @@
|
||||
ROLLOFF_20,
|
||||
ROLLOFF_25,
|
||||
ROLLOFF_AUTO,
|
||||
+ ROLLOFF_15, /* DVB-C Annex A */
|
||||
+ ROLLOFF_13, /* DVB-C Annex C */
|
||||
} fe_rolloff_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
@@ -778,8 +780,10 @@
|
||||
<listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
|
||||
+ <listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
+ <para>The Rolloff of 0.15 (ROLLOFF_15) is assumed, as ITU-T J.83 Annex A is more common. For Annex C, rolloff should be 0.13 (ROLLOFF_13). All other values are invalid.</para>
|
||||
</section>
|
||||
<section id="dvbc-annex-b-params">
|
||||
<title>DVB-C Annex B delivery system</title>
|
||||
diff -Naur linux-3.2.1/Documentation/dvb/get_dvb_firmware linux-3.2.1.patch/Documentation/dvb/get_dvb_firmware
|
||||
--- linux-3.2.1/Documentation/dvb/get_dvb_firmware 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/Documentation/dvb/get_dvb_firmware 2012-01-22 15:38:50.939309809 +0100
|
||||
@@ -27,8 +27,8 @@
|
||||
"or51211", "or51132_qam", "or51132_vsb", "bluebird",
|
||||
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
|
||||
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
|
||||
- "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", "tda10071",
|
||||
- "it9135" );
|
||||
+ "lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
|
||||
+ "drxk_hauppauge_hvr930c", "tda10071", "it9135" );
|
||||
|
||||
# Check args
|
||||
syntax() if (scalar(@ARGV) != 1);
|
||||
@@ -643,6 +643,24 @@
|
||||
|
||||
"$fwfile"
|
||||
}
|
||||
+
|
||||
+sub drxk_hauppauge_hvr930c {
|
||||
+ my $url = "http://www.wintvcd.co.uk/drivers/";
|
||||
+ my $zipfile = "HVR-9x0_5_10_325_28153_SIGNED.zip";
|
||||
+ my $hash = "83ab82e7e9480ec8bf1ae0155ca63c88";
|
||||
+ my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
+ my $drvfile = "HVR-900/emOEM.sys";
|
||||
+ my $fwfile = "dvb-usb-hauppauge-hvr930c-drxk.fw";
|
||||
+
|
||||
+ checkstandard();
|
||||
+
|
||||
+ wgetfile($zipfile, $url . $zipfile);
|
||||
+ verify($zipfile, $hash);
|
||||
+ unzip($zipfile, $tmpdir);
|
||||
+ extract("$tmpdir/$drvfile", 0x117b0, 42692, "$fwfile");
|
||||
+
|
||||
+ "$fwfile"
|
||||
+}
|
||||
|
||||
sub drxk_terratec_h5 {
|
||||
my $url = "http://www.linuxtv.org/downloads/firmware/";
|
||||
diff -Naur linux-3.2.1/drivers/media/common/tuners/xc5000.c linux-3.2.1.patch/drivers/media/common/tuners/xc5000.c
|
||||
--- linux-3.2.1/drivers/media/common/tuners/xc5000.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/common/tuners/xc5000.c 2012-01-22 15:38:54.115367896 +0100
|
||||
@@ -628,20 +628,12 @@
|
||||
dprintk(1, "*** Quality (0:<8dB, 7:>56dB) = %d\n", quality);
|
||||
}
|
||||
|
||||
-/*
|
||||
- * As defined on EN 300 429, the DVB-C roll-off factor is 0.15.
|
||||
- * So, the amount of the needed bandwith is given by:
|
||||
- * Bw = Symbol_rate * (1 + 0.15)
|
||||
- * As such, the maximum symbol rate supported by 6 MHz is given by:
|
||||
- * max_symbol_rate = 6 MHz / 1.15 = 5217391 Bauds
|
||||
- */
|
||||
-#define MAX_SYMBOL_RATE_6MHz 5217391
|
||||
-
|
||||
static int xc5000_set_params(struct dvb_frontend *fe,
|
||||
struct dvb_frontend_parameters *params)
|
||||
{
|
||||
struct xc5000_priv *priv = fe->tuner_priv;
|
||||
int ret;
|
||||
+ u32 bw;
|
||||
|
||||
if (xc5000_is_firmware_loaded(fe) != XC_RESULT_SUCCESS) {
|
||||
if (xc_load_fw_and_init_tuner(fe) != XC_RESULT_SUCCESS) {
|
||||
@@ -684,8 +676,10 @@
|
||||
priv->freq_hz = params->frequency - 1750000;
|
||||
break;
|
||||
case BANDWIDTH_7_MHZ:
|
||||
- printk(KERN_ERR "xc5000 bandwidth 7MHz not supported\n");
|
||||
- return -EINVAL;
|
||||
+ priv->bandwidth = BANDWIDTH_7_MHZ;
|
||||
+ priv->video_standard = DTV7;
|
||||
+ priv->freq_hz = params->frequency - 2250000;
|
||||
+ break;
|
||||
case BANDWIDTH_8_MHZ:
|
||||
priv->bandwidth = BANDWIDTH_8_MHZ;
|
||||
priv->video_standard = DTV8;
|
||||
@@ -707,14 +701,26 @@
|
||||
dprintk(1, "%s() QAM modulation\n", __func__);
|
||||
priv->rf_mode = XC_RF_MODE_CABLE;
|
||||
/*
|
||||
- * Using a 8MHz bandwidth sometimes fail
|
||||
- * with 6MHz-spaced channels, due to inter-carrier
|
||||
- * interference. So, use DTV6 firmware
|
||||
+ * Using a higher bandwidth at the tuner filter may
|
||||
+ * allow inter-carrier interference.
|
||||
+ * So, determine the minimal channel spacing, in order
|
||||
+ * to better adjust the tuner filter.
|
||||
+ * According with ITU-T J.83, the bandwidth is given by:
|
||||
+ * bw = Simbol Rate * (1 + roll_off), where the roll_off
|
||||
+ * is equal to 0.15 for Annex A, and 0.13 for annex C
|
||||
*/
|
||||
- if (params->u.qam.symbol_rate <= MAX_SYMBOL_RATE_6MHz) {
|
||||
+ if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
|
||||
+ bw = (params->u.qam.symbol_rate * 13) / 10;
|
||||
+ else
|
||||
+ bw = (params->u.qam.symbol_rate * 15) / 10;
|
||||
+ if (bw <= 6000000) {
|
||||
priv->bandwidth = BANDWIDTH_6_MHZ;
|
||||
priv->video_standard = DTV6;
|
||||
priv->freq_hz = params->frequency - 1750000;
|
||||
+ } else if (bw <= 7000000) {
|
||||
+ priv->bandwidth = BANDWIDTH_7_MHZ;
|
||||
+ priv->video_standard = DTV7;
|
||||
+ priv->freq_hz = params->frequency - 2250000;
|
||||
} else {
|
||||
priv->bandwidth = BANDWIDTH_8_MHZ;
|
||||
priv->video_standard = DTV7_8;
|
||||
@@ -996,6 +1002,8 @@
|
||||
struct xc5000_priv *priv = fe->tuner_priv;
|
||||
int ret = 0;
|
||||
|
||||
+ mutex_lock(&xc5000_list_mutex);
|
||||
+
|
||||
if (xc5000_is_firmware_loaded(fe) != XC_RESULT_SUCCESS) {
|
||||
ret = xc5000_fwupload(fe);
|
||||
if (ret != XC_RESULT_SUCCESS)
|
||||
@@ -1015,6 +1023,8 @@
|
||||
/* Default to "CABLE" mode */
|
||||
ret |= xc_write_reg(priv, XREG_SIGNALSOURCE, XC_RF_MODE_CABLE);
|
||||
|
||||
+ mutex_unlock(&xc5000_list_mutex);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/dvb-core/dvb_frontend.c linux-3.2.1.patch/drivers/media/dvb/dvb-core/dvb_frontend.c
|
||||
--- linux-3.2.1/drivers/media/dvb/dvb-core/dvb_frontend.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/dvb-core/dvb_frontend.c 2012-01-22 15:52:29.774509149 +0100
|
||||
@@ -876,6 +876,7 @@
|
||||
c->symbol_rate = QAM_AUTO;
|
||||
c->code_rate_HP = FEC_AUTO;
|
||||
c->code_rate_LP = FEC_AUTO;
|
||||
+ c->rolloff = ROLLOFF_AUTO;
|
||||
|
||||
c->isdbt_partial_reception = -1;
|
||||
c->isdbt_sb_mode = -1;
|
||||
@@ -1030,6 +1031,7 @@
|
||||
break;
|
||||
case FE_QAM:
|
||||
c->delivery_system = SYS_DVBC_ANNEX_AC;
|
||||
+ c->rolloff = ROLLOFF_15; /* implied for Annex A */
|
||||
break;
|
||||
case FE_OFDM:
|
||||
c->delivery_system = SYS_DVBT;
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/frontends/drxk.h linux-3.2.1.patch/drivers/media/dvb/frontends/drxk.h
|
||||
--- linux-3.2.1/drivers/media/dvb/frontends/drxk.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/frontends/drxk.h 2012-01-22 15:38:45.923218078 +0100
|
||||
@@ -26,6 +26,8 @@
|
||||
bool antenna_dvbt;
|
||||
u16 antenna_gpio;
|
||||
|
||||
+ int chunk_size;
|
||||
+
|
||||
const char *microcode_name;
|
||||
};
|
||||
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/frontends/drxk_hard.c linux-3.2.1.patch/drivers/media/dvb/frontends/drxk_hard.c
|
||||
--- linux-3.2.1/drivers/media/dvb/frontends/drxk_hard.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/frontends/drxk_hard.c 2012-01-22 15:39:13.797727862 +0100
|
||||
@@ -681,7 +681,8 @@
|
||||
state->m_hasOOB = false;
|
||||
state->m_hasAudio = false;
|
||||
|
||||
- state->m_ChunkSize = 124;
|
||||
+ if (!state->m_ChunkSize)
|
||||
+ state->m_ChunkSize = 124;
|
||||
|
||||
state->m_oscClockFreq = 0;
|
||||
state->m_smartAntInverted = false;
|
||||
@@ -1846,6 +1847,7 @@
|
||||
*/
|
||||
switch (oMode) {
|
||||
case OM_DVBT:
|
||||
+ dprintk(1, ": DVB-T\n");
|
||||
state->m_OperationMode = oMode;
|
||||
status = SetDVBTStandard(state, oMode);
|
||||
if (status < 0)
|
||||
@@ -1853,6 +1855,8 @@
|
||||
break;
|
||||
case OM_QAM_ITU_A: /* fallthrough */
|
||||
case OM_QAM_ITU_C:
|
||||
+ dprintk(1, ": DVB-C Annex %c\n",
|
||||
+ (state->m_OperationMode == OM_QAM_ITU_A) ? 'A' : 'C');
|
||||
state->m_OperationMode = oMode;
|
||||
status = SetQAMStandard(state, oMode);
|
||||
if (status < 0)
|
||||
@@ -6182,7 +6186,10 @@
|
||||
dprintk(1, "\n");
|
||||
if (mutex_trylock(&state->ctlock) == 0)
|
||||
return -EBUSY;
|
||||
- SetOperationMode(state, OM_QAM_ITU_A);
|
||||
+ if (state->m_itut_annex_c)
|
||||
+ SetOperationMode(state, OM_QAM_ITU_C);
|
||||
+ else
|
||||
+ SetOperationMode(state, OM_QAM_ITU_A);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -6218,6 +6225,12 @@
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
+ if (fe->ops.info.type == FE_QAM) {
|
||||
+ if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
|
||||
+ state->m_itut_annex_c = true;
|
||||
+ else
|
||||
+ state->m_itut_annex_c = false;
|
||||
+ }
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1);
|
||||
@@ -6423,6 +6436,7 @@
|
||||
state->no_i2c_bridge = config->no_i2c_bridge;
|
||||
state->antenna_gpio = config->antenna_gpio;
|
||||
state->antenna_dvbt = config->antenna_dvbt;
|
||||
+ state->m_ChunkSize = config->chunk_size;
|
||||
|
||||
/* NOTE: as more UIO bits will be used, add them to the mask */
|
||||
state->UIO_mask = config->antenna_gpio;
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/frontends/drxk_hard.h linux-3.2.1.patch/drivers/media/dvb/frontends/drxk_hard.h
|
||||
--- linux-3.2.1/drivers/media/dvb/frontends/drxk_hard.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/frontends/drxk_hard.h 2012-01-22 15:39:13.798727880 +0100
|
||||
@@ -263,6 +263,8 @@
|
||||
u8 m_TSDataStrength;
|
||||
u8 m_TSClockkStrength;
|
||||
|
||||
+ bool m_itut_annex_c; /* If true, uses ITU-T DVB-C Annex C, instead of Annex A */
|
||||
+
|
||||
enum DRXMPEGStrWidth_t m_widthSTR; /**< MPEG start width */
|
||||
u32 m_mpegTsStaticBitrate; /**< Maximum bitrate in b/s in case
|
||||
static clockrate is selected */
|
||||
diff -Naur linux-3.2.1/drivers/media/dvb/frontends/tda18271c2dd.c linux-3.2.1.patch/drivers/media/dvb/frontends/tda18271c2dd.c
|
||||
--- linux-3.2.1/drivers/media/dvb/frontends/tda18271c2dd.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/dvb/frontends/tda18271c2dd.c 2012-01-22 15:38:39.024091895 +0100
|
||||
@@ -1123,20 +1123,6 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * As defined on EN 300 429 Annex A and on ITU-T J.83 annex A, the DVB-C
|
||||
- * roll-off factor is 0.15.
|
||||
- * According with the specs, the amount of the needed bandwith is given by:
|
||||
- * Bw = Symbol_rate * (1 + 0.15)
|
||||
- * As such, the maximum symbol rate supported by 6 MHz is
|
||||
- * max_symbol_rate = 6 MHz / 1.15 = 5217391 Bauds
|
||||
- *NOTE: For ITU-T J.83 Annex C, the roll-off factor is 0.13. So:
|
||||
- * max_symbol_rate = 6 MHz / 1.13 = 5309735 Baud
|
||||
- * That means that an adjustment is needed for Japan,
|
||||
- * but, as currently DRX-K is hardcoded to Annex A, let's stick
|
||||
- * with 0.15 roll-off factor.
|
||||
- */
|
||||
-#define MAX_SYMBOL_RATE_6MHz 5217391
|
||||
|
||||
static int set_params(struct dvb_frontend *fe,
|
||||
struct dvb_frontend_parameters *params)
|
||||
@@ -1144,6 +1130,7 @@
|
||||
struct tda_state *state = fe->tuner_priv;
|
||||
int status = 0;
|
||||
int Standard;
|
||||
+ u32 bw;
|
||||
|
||||
state->m_Frequency = params->frequency;
|
||||
|
||||
@@ -1161,8 +1148,23 @@
|
||||
break;
|
||||
}
|
||||
else if (fe->ops.info.type == FE_QAM) {
|
||||
- if (params->u.qam.symbol_rate <= MAX_SYMBOL_RATE_6MHz)
|
||||
+ /*
|
||||
+ * Using a higher bandwidth at the tuner filter may
|
||||
+ * allow inter-carrier interference.
|
||||
+ * So, determine the minimal channel spacing, in order
|
||||
+ * to better adjust the tuner filter.
|
||||
+ * According with ITU-T J.83, the bandwidth is given by:
|
||||
+ * bw = Simbol Rate * (1 + roll_off), where the roll_off
|
||||
+ * is equal to 0.15 for Annex A, and 0.13 for annex C
|
||||
+ */
|
||||
+ if (fe->dtv_property_cache.rolloff == ROLLOFF_13)
|
||||
+ bw = (params->u.qam.symbol_rate * 13) / 10;
|
||||
+ else
|
||||
+ bw = (params->u.qam.symbol_rate * 15) / 10;
|
||||
+ if (bw <= 6000000)
|
||||
Standard = HF_DVBC_6MHZ;
|
||||
+ else if (bw <= 7000000)
|
||||
+ Standard = HF_DVBC_7MHZ;
|
||||
else
|
||||
Standard = HF_DVBC_8MHZ;
|
||||
} else
|
||||
diff -Naur linux-3.2.1/drivers/media/rc/keymaps/rc-hauppauge.c linux-3.2.1.patch/drivers/media/rc/keymaps/rc-hauppauge.c
|
||||
--- linux-3.2.1/drivers/media/rc/keymaps/rc-hauppauge.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/rc/keymaps/rc-hauppauge.c 2012-01-22 15:39:04.767562712 +0100
|
||||
@@ -183,6 +183,57 @@
|
||||
{ 0x1d3f, KEY_HOME },
|
||||
|
||||
/*
|
||||
+ * Keycodes for PT# R-005 remote bundled with Haupauge HVR-930C
|
||||
+ * Keycodes start with address = 0x1c
|
||||
+ */
|
||||
+ { 0x1c3b, KEY_GOTO },
|
||||
+ { 0x1c3d, KEY_POWER },
|
||||
+
|
||||
+ { 0x1c14, KEY_UP },
|
||||
+ { 0x1c15, KEY_DOWN },
|
||||
+ { 0x1c16, KEY_LEFT },
|
||||
+ { 0x1c17, KEY_RIGHT },
|
||||
+ { 0x1c25, KEY_OK },
|
||||
+
|
||||
+ { 0x1c00, KEY_0 },
|
||||
+ { 0x1c01, KEY_1 },
|
||||
+ { 0x1c02, KEY_2 },
|
||||
+ { 0x1c03, KEY_3 },
|
||||
+ { 0x1c04, KEY_4 },
|
||||
+ { 0x1c05, KEY_5 },
|
||||
+ { 0x1c06, KEY_6 },
|
||||
+ { 0x1c07, KEY_7 },
|
||||
+ { 0x1c08, KEY_8 },
|
||||
+ { 0x1c09, KEY_9 },
|
||||
+
|
||||
+ { 0x1c1f, KEY_EXIT }, /* BACK */
|
||||
+ { 0x1c0d, KEY_MENU },
|
||||
+ { 0x1c1c, KEY_TV },
|
||||
+
|
||||
+ { 0x1c10, KEY_VOLUMEUP },
|
||||
+ { 0x1c11, KEY_VOLUMEDOWN },
|
||||
+
|
||||
+ { 0x1c20, KEY_CHANNELUP },
|
||||
+ { 0x1c21, KEY_CHANNELDOWN },
|
||||
+
|
||||
+ { 0x1c0f, KEY_MUTE },
|
||||
+ { 0x1c12, KEY_PREVIOUS }, /* Prev */
|
||||
+
|
||||
+ { 0x1c36, KEY_STOP },
|
||||
+ { 0x1c37, KEY_RECORD },
|
||||
+
|
||||
+ { 0x1c24, KEY_LAST }, /* <| */
|
||||
+ { 0x1c1e, KEY_NEXT }, /* >| */
|
||||
+
|
||||
+ { 0x1c0a, KEY_TEXT },
|
||||
+ { 0x1c0e, KEY_SUBTITLE }, /* CC */
|
||||
+
|
||||
+ { 0x1c32, KEY_REWIND },
|
||||
+ { 0x1c30, KEY_PAUSE },
|
||||
+ { 0x1c35, KEY_PLAY },
|
||||
+ { 0x1c34, KEY_FASTFORWARD },
|
||||
+
|
||||
+ /*
|
||||
* Keycodes for the old Black Remote Controller
|
||||
* This one also uses RC-5 protocol
|
||||
* Keycodes start with address = 0x00
|
||||
diff -Naur linux-3.2.1/drivers/media/video/em28xx/em28xx-cards.c linux-3.2.1.patch/drivers/media/video/em28xx/em28xx-cards.c
|
||||
--- linux-3.2.1/drivers/media/video/em28xx/em28xx-cards.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/video/em28xx/em28xx-cards.c 2012-01-22 15:39:04.921565528 +0100
|
||||
@@ -336,6 +336,23 @@
|
||||
{ -1, -1, -1, -1},
|
||||
};
|
||||
|
||||
+static struct em28xx_reg_seq hauppauge_930c_gpio[] = {
|
||||
+ {EM2874_R80_GPIO, 0x6f, 0xff, 10},
|
||||
+ {EM2874_R80_GPIO, 0x4f, 0xff, 10}, /* xc5000 reset */
|
||||
+ {EM2874_R80_GPIO, 0x6f, 0xff, 10},
|
||||
+ {EM2874_R80_GPIO, 0x4f, 0xff, 10},
|
||||
+ { -1, -1, -1, -1},
|
||||
+};
|
||||
+
|
||||
+#if 0
|
||||
+static struct em28xx_reg_seq hauppauge_930c_digital[] = {
|
||||
+ {EM2874_R80_GPIO, 0xf6, 0xff, 10},
|
||||
+ {EM2874_R80_GPIO, 0xe6, 0xff, 100},
|
||||
+ {EM2874_R80_GPIO, 0xa6, 0xff, 10},
|
||||
+ { -1, -1, -1, -1},
|
||||
+};
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Board definitions
|
||||
*/
|
||||
@@ -887,7 +904,25 @@
|
||||
.tuner_addr = 0x41,
|
||||
.dvb_gpio = terratec_h5_digital, /* FIXME: probably wrong */
|
||||
.tuner_gpio = terratec_h5_gpio,
|
||||
+#else
|
||||
+ .tuner_type = TUNER_ABSENT,
|
||||
+#endif
|
||||
+ .i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT |
|
||||
+ EM28XX_I2C_CLK_WAIT_ENABLE |
|
||||
+ EM28XX_I2C_FREQ_400_KHZ,
|
||||
+ },
|
||||
+ [EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C] = {
|
||||
+ .name = "Hauppauge WinTV HVR 930C",
|
||||
+ .has_dvb = 1,
|
||||
+#if 0 /* FIXME: Add analog support */
|
||||
+ .tuner_type = TUNER_XC5000,
|
||||
+ .tuner_addr = 0x41,
|
||||
+ .dvb_gpio = hauppauge_930c_digital,
|
||||
+ .tuner_gpio = hauppauge_930c_gpio,
|
||||
+#else
|
||||
+ .tuner_type = TUNER_ABSENT,
|
||||
#endif
|
||||
+ .ir_codes = RC_MAP_HAUPPAUGE,
|
||||
.i2c_speed = EM2874_I2C_SECONDARY_BUS_SELECT |
|
||||
EM28XX_I2C_CLK_WAIT_ENABLE |
|
||||
EM28XX_I2C_FREQ_400_KHZ,
|
||||
@@ -1975,6 +2010,8 @@
|
||||
.driver_info = EM28174_BOARD_PCTV_290E },
|
||||
{ USB_DEVICE(0x2013, 0x024c),
|
||||
.driver_info = EM28174_BOARD_PCTV_460E },
|
||||
+ { USB_DEVICE(0x2040, 0x1605),
|
||||
+ .driver_info = EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, em28xx_id_table);
|
||||
@@ -2028,10 +2065,10 @@
|
||||
int rc = 0;
|
||||
struct em28xx *dev = ptr;
|
||||
|
||||
- if (dev->tuner_type != TUNER_XC2028)
|
||||
+ if (dev->tuner_type != TUNER_XC2028 && dev->tuner_type != TUNER_XC5000)
|
||||
return 0;
|
||||
|
||||
- if (command != XC2028_TUNER_RESET)
|
||||
+ if (command != XC2028_TUNER_RESET && command != XC5000_TUNER_RESET)
|
||||
return 0;
|
||||
|
||||
rc = em28xx_gpio_set(dev, dev->board.tuner_gpio);
|
||||
diff -Naur linux-3.2.1/drivers/media/video/em28xx/em28xx-dvb.c linux-3.2.1.patch/drivers/media/video/em28xx/em28xx-dvb.c
|
||||
--- linux-3.2.1/drivers/media/video/em28xx/em28xx-dvb.c 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/video/em28xx/em28xx-dvb.c 2012-01-22 15:39:13.799727898 +0100
|
||||
@@ -316,6 +316,14 @@
|
||||
.microcode_name = "dvb-usb-terratec-h5-drxk.fw",
|
||||
};
|
||||
|
||||
+struct drxk_config hauppauge_930c_drxk = {
|
||||
+ .adr = 0x29,
|
||||
+ .single_master = 1,
|
||||
+ .no_i2c_bridge = 1,
|
||||
+ .microcode_name = "dvb-usb-hauppauge-hvr930c-drxk.fw",
|
||||
+ .chunk_size = 56,
|
||||
+};
|
||||
+
|
||||
static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||
{
|
||||
struct em28xx_dvb *dvb = fe->sec_priv;
|
||||
@@ -334,6 +342,73 @@
|
||||
return status;
|
||||
}
|
||||
|
||||
+static void hauppauge_hvr930c_init(struct em28xx *dev)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ struct em28xx_reg_seq hauppauge_hvr930c_init[] = {
|
||||
+ {EM2874_R80_GPIO, 0xff, 0xff, 0x65},
|
||||
+ {EM2874_R80_GPIO, 0xfb, 0xff, 0x32},
|
||||
+ {EM2874_R80_GPIO, 0xff, 0xff, 0xb8},
|
||||
+ { -1, -1, -1, -1},
|
||||
+ };
|
||||
+ struct em28xx_reg_seq hauppauge_hvr930c_end[] = {
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x01},
|
||||
+ {EM2874_R80_GPIO, 0xaf, 0xff, 0x65},
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x76},
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x01},
|
||||
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x0b},
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x40},
|
||||
+
|
||||
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x65},
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x65},
|
||||
+ {EM2874_R80_GPIO, 0xcf, 0xff, 0x0b},
|
||||
+ {EM2874_R80_GPIO, 0xef, 0xff, 0x65},
|
||||
+
|
||||
+ { -1, -1, -1, -1},
|
||||
+ };
|
||||
+
|
||||
+ struct {
|
||||
+ unsigned char r[4];
|
||||
+ int len;
|
||||
+ } regs[] = {
|
||||
+ {{ 0x06, 0x02, 0x00, 0x31 }, 4},
|
||||
+ {{ 0x01, 0x02 }, 2},
|
||||
+ {{ 0x01, 0x02, 0x00, 0xc6 }, 4},
|
||||
+ {{ 0x01, 0x00 }, 2},
|
||||
+ {{ 0x01, 0x00, 0xff, 0xaf }, 4},
|
||||
+ {{ 0x01, 0x00, 0x03, 0xa0 }, 4},
|
||||
+ {{ 0x01, 0x00 }, 2},
|
||||
+ {{ 0x01, 0x00, 0x73, 0xaf }, 4},
|
||||
+ {{ 0x04, 0x00 }, 2},
|
||||
+ {{ 0x00, 0x04 }, 2},
|
||||
+ {{ 0x00, 0x04, 0x00, 0x0a }, 4},
|
||||
+ {{ 0x04, 0x14 }, 2},
|
||||
+ {{ 0x04, 0x14, 0x00, 0x00 }, 4},
|
||||
+ };
|
||||
+
|
||||
+ em28xx_gpio_set(dev, hauppauge_hvr930c_init);
|
||||
+ em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x40);
|
||||
+ msleep(10);
|
||||
+ em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
|
||||
+ msleep(10);
|
||||
+
|
||||
+ dev->i2c_client.addr = 0x82 >> 1;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(regs); i++)
|
||||
+ i2c_master_send(&dev->i2c_client, regs[i].r, regs[i].len);
|
||||
+ em28xx_gpio_set(dev, hauppauge_hvr930c_end);
|
||||
+
|
||||
+ msleep(100);
|
||||
+
|
||||
+ em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x44);
|
||||
+ msleep(30);
|
||||
+
|
||||
+ em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, 0x45);
|
||||
+ msleep(10);
|
||||
+
|
||||
+}
|
||||
+
|
||||
static void terratec_h5_init(struct em28xx *dev)
|
||||
{
|
||||
int i;
|
||||
@@ -788,6 +863,51 @@
|
||||
mfe_shared = 1;
|
||||
}
|
||||
break;
|
||||
+ case EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C:
|
||||
+ hauppauge_hvr930c_init(dev);
|
||||
+
|
||||
+ dvb->dont_attach_fe1 = 1;
|
||||
+
|
||||
+ dvb->fe[0] = dvb_attach(drxk_attach,
|
||||
+ &hauppauge_930c_drxk, &dev->i2c_adap,
|
||||
+ &dvb->fe[1]);
|
||||
+ if (!dvb->fe[0]) {
|
||||
+ result = -EINVAL;
|
||||
+ goto out_free;
|
||||
+ }
|
||||
+ /* FIXME: do we need a pll semaphore? */
|
||||
+ dvb->fe[0]->sec_priv = dvb;
|
||||
+ sema_init(&dvb->pll_mutex, 1);
|
||||
+ dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl;
|
||||
+ dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
|
||||
+ dvb->fe[1]->id = 1;
|
||||
+
|
||||
+ /* Attach xc5000 */
|
||||
+ struct xc5000_config cfg;
|
||||
+ memset(&cfg, 0, sizeof(cfg));
|
||||
+ cfg.i2c_address = 0x61;
|
||||
+ cfg.if_khz = 4000;
|
||||
+
|
||||
+ if (dvb->fe[0]->ops.i2c_gate_ctrl)
|
||||
+ dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
|
||||
+ if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap,
|
||||
+ &cfg)) {
|
||||
+ result = -EINVAL;
|
||||
+ goto out_free;
|
||||
+ }
|
||||
+
|
||||
+ if (dvb->fe[0]->ops.i2c_gate_ctrl)
|
||||
+ dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0);
|
||||
+
|
||||
+ /* Hack - needed by drxk/tda18271c2dd */
|
||||
+ dvb->fe[1]->tuner_priv = dvb->fe[0]->tuner_priv;
|
||||
+ memcpy(&dvb->fe[1]->ops.tuner_ops,
|
||||
+ &dvb->fe[0]->ops.tuner_ops,
|
||||
+ sizeof(dvb->fe[0]->ops.tuner_ops));
|
||||
+
|
||||
+ mfe_shared = 1;
|
||||
+
|
||||
+ break;
|
||||
case EM2884_BOARD_TERRATEC_H5:
|
||||
terratec_h5_init(dev);
|
||||
|
||||
@@ -798,7 +918,6 @@
|
||||
result = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
-
|
||||
/* FIXME: do we need a pll semaphore? */
|
||||
dvb->fe[0]->sec_priv = dvb;
|
||||
sema_init(&dvb->pll_mutex, 1);
|
||||
@@ -822,6 +941,8 @@
|
||||
&dvb->fe[0]->ops.tuner_ops,
|
||||
sizeof(dvb->fe[0]->ops.tuner_ops));
|
||||
|
||||
+ mfe_shared = 1;
|
||||
+
|
||||
break;
|
||||
case EM28174_BOARD_PCTV_460E:
|
||||
/* attach demod */
|
||||
@@ -845,6 +966,8 @@
|
||||
}
|
||||
/* define general-purpose callback pointer */
|
||||
dvb->fe[0]->callback = em28xx_tuner_callback;
|
||||
+ if (dvb->fe[1])
|
||||
+ dvb->fe[1]->callback = em28xx_tuner_callback;
|
||||
|
||||
/* register everything */
|
||||
result = em28xx_register_dvb(dvb, THIS_MODULE, dev, &dev->udev->dev);
|
||||
diff -Naur linux-3.2.1/drivers/media/video/em28xx/em28xx.h linux-3.2.1.patch/drivers/media/video/em28xx/em28xx.h
|
||||
--- linux-3.2.1/drivers/media/video/em28xx/em28xx.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/drivers/media/video/em28xx/em28xx.h 2012-01-22 15:38:45.930218200 +0100
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <media/videobuf-dvb.h>
|
||||
#endif
|
||||
#include "tuner-xc2028.h"
|
||||
+#include "xc5000.h"
|
||||
#include "em28xx-reg.h"
|
||||
|
||||
/* Boards supported by driver */
|
||||
@@ -121,6 +122,7 @@
|
||||
#define EM28174_BOARD_PCTV_290E 78
|
||||
#define EM2884_BOARD_TERRATEC_H5 79
|
||||
#define EM28174_BOARD_PCTV_460E 80
|
||||
+#define EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C 81
|
||||
|
||||
/* Limits minimum and default number of buffers */
|
||||
#define EM28XX_MIN_BUF 4
|
||||
diff -Naur linux-3.2.1/include/linux/dvb/frontend.h linux-3.2.1.patch/include/linux/dvb/frontend.h
|
||||
--- linux-3.2.1/include/linux/dvb/frontend.h 2012-01-12 20:42:45.000000000 +0100
|
||||
+++ linux-3.2.1.patch/include/linux/dvb/frontend.h 2012-01-22 15:52:29.793509493 +0100
|
||||
@@ -329,6 +329,8 @@
|
||||
ROLLOFF_20,
|
||||
ROLLOFF_25,
|
||||
ROLLOFF_AUTO,
|
||||
+ ROLLOFF_15, /* DVB-C Annex A */
|
||||
+ ROLLOFF_13, /* DVB-C Annex C */
|
||||
} fe_rolloff_t;
|
||||
|
||||
typedef enum fe_delivery_system {
|
4215
packages/linux/patches/linux-3.2.30-210-add_DVBSky_support.patch
Normal file
4215
packages/linux/patches/linux-3.2.30-210-add_DVBSky_support.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,90 @@
|
||||
cx23885: add TeVii s471 card.
|
||||
|
||||
From: Igor M. Liplianin <liplianin@me.by>
|
||||
|
||||
New TeVii s471 card is like s470 model,
|
||||
but there is different LNB power control.
|
||||
|
||||
Signed-off-by: Igor M. Liplianin <liplianin@me.by>
|
||||
|
||||
diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c
|
||||
index 90bf573..6f4901a 100644
|
||||
--- a/drivers/media/dvb/frontends/ds3000.c
|
||||
+++ b/drivers/media/dvb/frontends/ds3000.c
|
||||
@@ -1129,7 +1129,10 @@ static int ds3000_set_frontend(struct dvb_frontend *fe,
|
||||
ds3000_writereg(state,
|
||||
ds3000_dvbs2_init_tab[i],
|
||||
ds3000_dvbs2_init_tab[i + 1]);
|
||||
- ds3000_writereg(state, 0xfe, 0x98);
|
||||
+ if (c->symbol_rate >= 30000000)
|
||||
+ ds3000_writereg(state, 0xfe, 0x54);
|
||||
+ else
|
||||
+ ds3000_writereg(state, 0xfe, 0x98);
|
||||
break;
|
||||
default:
|
||||
return 1;
|
||||
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
|
||||
index ab8be9a..76e83e4 100644
|
||||
--- a/drivers/media/video/cx23885/cx23885-cards.c
|
||||
+++ b/drivers/media/video/cx23885/cx23885-cards.c
|
||||
@@ -452,6 +452,10 @@ struct cx23885_board cx23885_boards[] = {
|
||||
.portc = CX23885_MPEG_DVB,
|
||||
},
|
||||
|
||||
+ [CX23885_BOARD_TEVII_S471] = {
|
||||
+ .name = "TeVii S471",
|
||||
+ .portb = CX23885_MPEG_DVB,
|
||||
+ },
|
||||
};
|
||||
const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
|
||||
|
||||
@@ -663,6 +667,10 @@ struct cx23885_subid cx23885_subids[] = {
|
||||
.subvendor = 0x4254,
|
||||
.subdevice = 0x0952,
|
||||
.card = CX23885_BOARD_DVBSKY_S952,
|
||||
+ }, {
|
||||
+ .subvendor = 0xd471,
|
||||
+ .subdevice = 0x9022,
|
||||
+ .card = CX23885_BOARD_TEVII_S471,
|
||||
},
|
||||
};
|
||||
const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
|
||||
@@ -1485,6 +1493,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
|
||||
case CX23885_BOARD_BST_PS8512:
|
||||
case CX23885_BOARD_DVBSKY_S950:
|
||||
case CX23885_BOARD_TEVII_S470:
|
||||
+ case CX23885_BOARD_TEVII_S471:
|
||||
case CX23885_BOARD_DVBWORLD_2005:
|
||||
ts1->gen_ctrl_val = 0x5; /* Parallel */
|
||||
ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
|
||||
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
|
||||
index af9c459..9f68250 100644
|
||||
--- a/drivers/media/video/cx23885/cx23885-dvb.c
|
||||
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
|
||||
@@ -1174,6 +1174,14 @@ static int dvb_register(struct cx23885_tsport *port)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
+ case CX23885_BOARD_TEVII_S471:
|
||||
+ i2c_bus = &dev->i2c_bus[1];
|
||||
+
|
||||
+ fe0->dvb.frontend = dvb_attach(ds3000_attach,
|
||||
+ &tevii_ds3000_config,
|
||||
+ &i2c_bus->i2c_adap);
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
|
||||
" isn't supported yet\n",
|
||||
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
|
||||
index 6f058f1..19cebdf 100644
|
||||
--- a/drivers/media/video/cx23885/cx23885.h
|
||||
+++ b/drivers/media/video/cx23885/cx23885.h
|
||||
@@ -90,6 +90,7 @@
|
||||
#define CX23885_BOARD_BST_PS8512 (CX23885_BOARD_MPX885+1)
|
||||
#define CX23885_BOARD_DVBSKY_S952 (CX23885_BOARD_BST_PS8512+1)
|
||||
#define CX23885_BOARD_DVBSKY_S950 (CX23885_BOARD_DVBSKY_S952+1)
|
||||
+#define CX23885_BOARD_TEVII_S471 (CX23885_BOARD_DVBSKY_S950+1)
|
||||
|
||||
#define GPIO_0 0x00000001
|
||||
#define GPIO_1 0x00000002
|
@ -0,0 +1,141 @@
|
||||
diff --git a/drivers/media/dvb/frontends/stb0899_algo.c b/drivers/media/dvb/frontends/stb0899_algo.c
|
||||
index 2da55ec..3efde1e 100644
|
||||
--- a/drivers/media/dvb/frontends/stb0899_algo.c
|
||||
+++ b/drivers/media/dvb/frontends/stb0899_algo.c
|
||||
@@ -206,7 +206,6 @@ static enum stb0899_status stb0899_check_tmg(struct stb0899_state *state)
|
||||
static enum stb0899_status stb0899_search_tmg(struct stb0899_state *state)
|
||||
{
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
- struct stb0899_params *params = &state->params;
|
||||
|
||||
short int derot_step, derot_freq = 0, derot_limit, next_loop = 3;
|
||||
int index = 0;
|
||||
@@ -216,10 +215,9 @@ static enum stb0899_status stb0899_search_tmg(struct stb0899_state *state)
|
||||
|
||||
/* timing loop computation & symbol rate optimisation */
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
- derot_step = (params->srate / 2L) / internal->mclk;
|
||||
+ derot_step = internal->derot_step * 4; /* dertot_step = decreasing delta */
|
||||
|
||||
while ((stb0899_check_tmg(state) != TIMINGOK) && next_loop) {
|
||||
- index++;
|
||||
derot_freq += index * internal->direction * derot_step; /* next derot zig zag position */
|
||||
|
||||
if (abs(derot_freq) > derot_limit)
|
||||
@@ -230,6 +228,7 @@ static enum stb0899_status stb0899_search_tmg(struct stb0899_state *state)
|
||||
STB0899_SETFIELD_VAL(CFRL, cfr[1], LSB(state->config->inversion * derot_freq));
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
}
|
||||
+ index++;
|
||||
internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
}
|
||||
|
||||
@@ -278,14 +277,18 @@ static enum stb0899_status stb0899_search_carrier(struct stb0899_state *state)
|
||||
{
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
|
||||
- short int derot_freq = 0, last_derot_freq = 0, derot_limit, next_loop = 3;
|
||||
+ short int derot_freq = 0, last_derot_freq = 0, derot_limit, derot_step, next_loop = 3;
|
||||
int index = 0;
|
||||
+ int base_freq;
|
||||
u8 cfr[2];
|
||||
u8 reg;
|
||||
|
||||
internal->status = NOCARRIER;
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
derot_freq = internal->derot_freq;
|
||||
+ derot_step = internal->derot_step * 2;
|
||||
+ last_derot_freq = internal->derot_freq;
|
||||
+ base_freq = internal->derot_freq;
|
||||
|
||||
reg = stb0899_read_reg(state, STB0899_CFD);
|
||||
STB0899_SETFIELD_VAL(CFD_ON, reg, 1);
|
||||
@@ -294,11 +297,10 @@ static enum stb0899_status stb0899_search_carrier(struct stb0899_state *state)
|
||||
do {
|
||||
dprintk(state->verbose, FE_DEBUG, 1, "Derot Freq=%d, mclk=%d", derot_freq, internal->mclk);
|
||||
if (stb0899_check_carrier(state) == NOCARRIER) {
|
||||
- index++;
|
||||
last_derot_freq = derot_freq;
|
||||
- derot_freq += index * internal->direction * internal->derot_step; /* next zig zag derotator position */
|
||||
+ derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
|
||||
|
||||
- if(abs(derot_freq) > derot_limit)
|
||||
+ if (derot_freq > base_freq + derot_limit || derot_freq < base_freq - derot_limit)
|
||||
next_loop--;
|
||||
|
||||
if (next_loop) {
|
||||
@@ -310,9 +312,10 @@ static enum stb0899_status stb0899_search_carrier(struct stb0899_state *state)
|
||||
STB0899_SETFIELD_VAL(CFRL, cfr[1], LSB(state->config->inversion * derot_freq));
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
}
|
||||
+ index++;
|
||||
+ internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
}
|
||||
|
||||
- internal->direction = -internal->direction; /* Change zigzag direction */
|
||||
} while ((internal->status != CARRIEROK) && next_loop);
|
||||
|
||||
if (internal->status == CARRIEROK) {
|
||||
@@ -338,6 +341,7 @@ static enum stb0899_status stb0899_check_data(struct stb0899_state *state)
|
||||
int lock = 0, index = 0, dataTime = 500, loop;
|
||||
u8 reg;
|
||||
|
||||
+ msleep(1);
|
||||
internal->status = NODATA;
|
||||
|
||||
/* RESET FEC */
|
||||
@@ -348,6 +352,7 @@ static enum stb0899_status stb0899_check_data(struct stb0899_state *state)
|
||||
reg = stb0899_read_reg(state, STB0899_TSTRES);
|
||||
STB0899_SETFIELD_VAL(FRESACS, reg, 0);
|
||||
stb0899_write_reg(state, STB0899_TSTRES, reg);
|
||||
+ msleep(1);
|
||||
|
||||
if (params->srate <= 2000000)
|
||||
dataTime = 2000;
|
||||
@@ -360,6 +365,7 @@ static enum stb0899_status stb0899_check_data(struct stb0899_state *state)
|
||||
|
||||
stb0899_write_reg(state, STB0899_DSTATUS2, 0x00); /* force search loop */
|
||||
while (1) {
|
||||
+ msleep(1); // Alex: added 1 mSec
|
||||
/* WARNING! VIT LOCKED has to be tested before VIT_END_LOOOP */
|
||||
reg = stb0899_read_reg(state, STB0899_VSTATUS);
|
||||
lock = STB0899_GETFIELD(VSTATUS_LOCKEDVIT, reg);
|
||||
@@ -387,20 +393,21 @@ static enum stb0899_status stb0899_search_data(struct stb0899_state *state)
|
||||
short int derot_freq, derot_step, derot_limit, next_loop = 3;
|
||||
u8 cfr[2];
|
||||
u8 reg;
|
||||
- int index = 1;
|
||||
+ int index = 0;
|
||||
+ int base_freq;
|
||||
|
||||
struct stb0899_internal *internal = &state->internal;
|
||||
- struct stb0899_params *params = &state->params;
|
||||
|
||||
- derot_step = (params->srate / 4L) / internal->mclk;
|
||||
+ derot_step = internal->derot_step;
|
||||
derot_limit = (internal->sub_range / 2L) / internal->mclk;
|
||||
derot_freq = internal->derot_freq;
|
||||
+ base_freq = internal->derot_freq;
|
||||
|
||||
do {
|
||||
if ((internal->status != CARRIEROK) || (stb0899_check_data(state) != DATAOK)) {
|
||||
|
||||
derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
|
||||
- if (abs(derot_freq) > derot_limit)
|
||||
+ if (derot_freq > base_freq + derot_limit || derot_freq < base_freq - derot_limit)
|
||||
next_loop--;
|
||||
|
||||
if (next_loop) {
|
||||
@@ -414,9 +421,9 @@ static enum stb0899_status stb0899_search_data(struct stb0899_state *state)
|
||||
stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* derotator frequency */
|
||||
|
||||
stb0899_check_carrier(state);
|
||||
- index++;
|
||||
}
|
||||
}
|
||||
+ index++;
|
||||
internal->direction = -internal->direction; /* change zig zag direction */
|
||||
} while ((internal->status != DATAOK) && next_loop);
|
||||
|
||||
--
|
||||
1.7.1
|
@ -0,0 +1,46 @@
|
||||
diff -Naur linux-3.2.21/drivers/media/dvb/dvb-usb/dw2102.c linux-3.2.21.patch/drivers/media/dvb/dvb-usb/dw2102.c
|
||||
--- linux-3.2.21/drivers/media/dvb/dvb-usb/dw2102.c 2012-06-20 00:18:30.000000000 +0200
|
||||
+++ linux-3.2.21.patch/drivers/media/dvb/dvb-usb/dw2102.c 2012-06-28 14:08:50.721691934 +0200
|
||||
@@ -1181,6 +1181,14 @@
|
||||
{
|
||||
u8 obuf[3] = { 0xe, 0x80, 0 };
|
||||
u8 ibuf[] = { 0 };
|
||||
+
|
||||
+ if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
|
||||
+ err("command 0x0e transfer failed.");
|
||||
+
|
||||
+ //power on su3000
|
||||
+ obuf[0] = 0xe;
|
||||
+ obuf[1] = 0x02;
|
||||
+ obuf[2] = 1;
|
||||
|
||||
if (dvb_usb_generic_rw(d->dev, obuf, 3, ibuf, 1, 0) < 0)
|
||||
err("command 0x0e transfer failed.");
|
||||
@@ -1448,6 +1456,7 @@
|
||||
{USB_DEVICE(0x3034, 0x7500)},
|
||||
{USB_DEVICE(0x1f4d, 0x3000)},
|
||||
{USB_DEVICE(USB_VID_TERRATEC, 0x00a8)},
|
||||
+ {USB_DEVICE(USB_VID_TERRATEC, 0x00b0)},
|
||||
{USB_DEVICE(0x9022, USB_PID_TEVII_S480_1)},
|
||||
{USB_DEVICE(0x9022, USB_PID_TEVII_S480_2)},
|
||||
{USB_DEVICE(0x1f4d, 0x3100)},
|
||||
@@ -1839,7 +1848,7 @@
|
||||
}},
|
||||
}
|
||||
},
|
||||
- .num_device_descs = 3,
|
||||
+ .num_device_descs = 4,
|
||||
.devices = {
|
||||
{ "SU3000HD DVB-S USB2.0",
|
||||
{ &dw2102_table[10], NULL },
|
||||
@@ -1853,6 +1862,10 @@
|
||||
{ &dw2102_table[14], NULL },
|
||||
{ NULL },
|
||||
},
|
||||
+ { "Terratec Cinergy S2 USB HD Rev.2",
|
||||
+ { &dw2102_table[17], NULL },
|
||||
+ { NULL },
|
||||
+ },
|
||||
}
|
||||
};
|
||||
|
5415
packages/linux/patches/linux-3.2.30-251-acpi-5.0_support.patch
Normal file
5415
packages/linux/patches/linux-3.2.30-251-acpi-5.0_support.patch
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
18189
packages/linux/patches/linux-3.2.30-920_add_rtl8168.patch
Normal file
18189
packages/linux/patches/linux-3.2.30-920_add_rtl8168.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,45 @@
|
||||
From 35621030c0bd5cb4f1a345cf2b4a97e290bc244a Mon Sep 17 00:00:00 2001
|
||||
From: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
Date: Fri, 23 Sep 2011 13:03:42 -0300
|
||||
Subject: [PATCH] [media] xc5000: Add support for get_if_frequency
|
||||
|
||||
This is needed for devices with DRX-K and xc5000.
|
||||
|
||||
Tested with a HVR 930C hardware.
|
||||
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||
---
|
||||
drivers/media/common/tuners/xc5000.c | 9 +++++++++
|
||||
1 files changed, 9 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/common/tuners/xc5000.c b/drivers/media/common/tuners/xc5000.c
|
||||
index 88b329c..ecd1f95 100644
|
||||
--- a/drivers/media/common/tuners/xc5000.c
|
||||
+++ b/drivers/media/common/tuners/xc5000.c
|
||||
@@ -968,6 +968,14 @@ static int xc5000_get_frequency(struct dvb_frontend *fe, u32 *freq)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int xc5000_get_if_frequency(struct dvb_frontend *fe, u32 *freq)
|
||||
+{
|
||||
+ struct xc5000_priv *priv = fe->tuner_priv;
|
||||
+ dprintk(1, "%s()\n", __func__);
|
||||
+ *freq = priv->if_khz * 1000;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int xc5000_get_bandwidth(struct dvb_frontend *fe, u32 *bw)
|
||||
{
|
||||
struct xc5000_priv *priv = fe->tuner_priv;
|
||||
@@ -1108,6 +1116,7 @@ static const struct dvb_tuner_ops xc5000_tuner_ops = {
|
||||
.set_params = xc5000_set_params,
|
||||
.set_analog_params = xc5000_set_analog_params,
|
||||
.get_frequency = xc5000_get_frequency,
|
||||
+ .get_if_frequency = xc5000_get_if_frequency,
|
||||
.get_bandwidth = xc5000_get_bandwidth,
|
||||
.get_status = xc5000_get_status
|
||||
};
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-frodo-theme-Confluence"
|
||||
PKG_VERSION="ba2c709"
|
||||
PKG_VERSION="a642b33"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -54,8 +54,8 @@ fi
|
||||
|
||||
# set cpu's to 'conservative'
|
||||
( usleep 15000000
|
||||
progress "set cpu's to 'conservative'"
|
||||
cpupower frequency-set -g conservative > /dev/null 2>&1
|
||||
progress "set cpu's to 'ondemand'"
|
||||
cpupower frequency-set -g ondemand > /dev/null 2>&1
|
||||
)&
|
||||
|
||||
# prevent restrating XBMC at reboot or shutdown
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="xbmc-frodo"
|
||||
PKG_VERSION="ba2c709"
|
||||
PKG_VERSION="a642b33"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
@ -1,7 +1,7 @@
|
||||
diff -Naur xbmc-frodo-5ea1d22/configure.in xbmc-frodo-5ea1d22.patch/configure.in
|
||||
--- xbmc-frodo-5ea1d22/configure.in 2012-09-05 13:27:56.000000000 +0200
|
||||
+++ xbmc-frodo-5ea1d22.patch/configure.in 2012-09-05 17:55:46.727316107 +0200
|
||||
@@ -437,6 +437,12 @@
|
||||
diff -Naur xbmc-frodo-a642b33/configure.in xbmc-frodo-a642b33.patch/configure.in
|
||||
--- xbmc-frodo-a642b33/configure.in 2012-09-25 15:44:35.000000000 +0200
|
||||
+++ xbmc-frodo-a642b33.patch/configure.in 2012-09-25 16:17:31.666076439 +0200
|
||||
@@ -445,6 +445,12 @@
|
||||
[use_texturepacker=$enableval],
|
||||
[use_texturepacker=auto])
|
||||
|
||||
@ -14,7 +14,7 @@ diff -Naur xbmc-frodo-5ea1d22/configure.in xbmc-frodo-5ea1d22.patch/configure.in
|
||||
AC_ARG_WITH([lirc-device],
|
||||
[AS_HELP_STRING([--with-lirc-device=file],
|
||||
[specify the default LIRC device (default is /dev/lircd)])],
|
||||
@@ -570,8 +576,7 @@
|
||||
@@ -584,8 +590,7 @@
|
||||
use_cpu=cortex-a8
|
||||
check_sdl_arch=[`file /opt/local/lib/libSDL_image.dylib | awk '{V=7; print $V}'`]
|
||||
if test "x$check_sdl_arch" = "xi386"; then
|
||||
@ -24,7 +24,7 @@ diff -Naur xbmc-frodo-5ea1d22/configure.in xbmc-frodo-5ea1d22.patch/configure.in
|
||||
else
|
||||
use_texturepacker=no
|
||||
fi
|
||||
@@ -587,8 +592,6 @@
|
||||
@@ -601,8 +606,6 @@
|
||||
*86*-apple-darwin*)
|
||||
use_joystick=no
|
||||
use_vtbdecoder=no
|
||||
@ -33,7 +33,7 @@ diff -Naur xbmc-frodo-5ea1d22/configure.in xbmc-frodo-5ea1d22.patch/configure.in
|
||||
ARCH="x86-osx"
|
||||
AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
|
||||
;;
|
||||
@@ -1938,13 +1941,13 @@
|
||||
@@ -1987,13 +1990,13 @@
|
||||
|
||||
USE_TEXTUREPACKER_NATIVE=0
|
||||
if test "x$use_texturepacker" != "xno"; then
|
||||
@ -52,9 +52,9 @@ diff -Naur xbmc-frodo-5ea1d22/configure.in xbmc-frodo-5ea1d22.patch/configure.in
|
||||
fi
|
||||
else
|
||||
final_message="$final_message\n TexturePacker:No"
|
||||
diff -Naur xbmc-frodo-5ea1d22/lib/libsquish/Makefile.in xbmc-frodo-5ea1d22.patch/lib/libsquish/Makefile.in
|
||||
--- xbmc-frodo-5ea1d22/lib/libsquish/Makefile.in 2012-09-05 13:28:31.000000000 +0200
|
||||
+++ xbmc-frodo-5ea1d22.patch/lib/libsquish/Makefile.in 2012-09-05 17:56:05.017178267 +0200
|
||||
diff -Naur xbmc-frodo-a642b33/lib/libsquish/Makefile.in xbmc-frodo-a642b33.patch/lib/libsquish/Makefile.in
|
||||
--- xbmc-frodo-a642b33/lib/libsquish/Makefile.in 2012-09-25 15:45:45.000000000 +0200
|
||||
+++ xbmc-frodo-a642b33.patch/lib/libsquish/Makefile.in 2012-09-25 16:17:31.666076439 +0200
|
||||
@@ -11,26 +11,25 @@
|
||||
singlecolourfit.cpp \
|
||||
squish.cpp
|
||||
@ -93,9 +93,9 @@ diff -Naur xbmc-frodo-5ea1d22/lib/libsquish/Makefile.in xbmc-frodo-5ea1d22.patch
|
||||
endif
|
||||
|
||||
include ../../Makefile.include
|
||||
diff -Naur xbmc-frodo-5ea1d22/tools/TexturePacker/Makefile.in xbmc-frodo-5ea1d22.patch/tools/TexturePacker/Makefile.in
|
||||
--- xbmc-frodo-5ea1d22/tools/TexturePacker/Makefile.in 2012-09-05 13:28:16.000000000 +0200
|
||||
+++ xbmc-frodo-5ea1d22.patch/tools/TexturePacker/Makefile.in 2012-09-05 17:55:49.927291649 +0200
|
||||
diff -Naur xbmc-frodo-a642b33/tools/TexturePacker/Makefile.in xbmc-frodo-a642b33.patch/tools/TexturePacker/Makefile.in
|
||||
--- xbmc-frodo-a642b33/tools/TexturePacker/Makefile.in 2012-09-25 15:44:57.000000000 +0200
|
||||
+++ xbmc-frodo-a642b33.patch/tools/TexturePacker/Makefile.in 2012-09-25 16:19:08.889015705 +0200
|
||||
@@ -1,56 +1,54 @@
|
||||
-DEFINES += -D_LINUX -DUSE_LZO_PACKING
|
||||
+DEFINES += -D_LINUX -DUSE_LZO_PACKING
|
||||
@ -179,7 +179,7 @@ diff -Naur xbmc-frodo-5ea1d22/tools/TexturePacker/Makefile.in xbmc-frodo-5ea1d22
|
||||
|
||||
ifeq (@USE_TEXTUREPACKER_NATIVE@,1)
|
||||
# TexturePacker run native on build system, build it with native tools
|
||||
$(TARGET): $(SRCS)
|
||||
$(TARGET): $(SRCS) @abs_top_srcdir@/xbmc/guilib/XBTF.h
|
||||
- g++ $(DEFINES) $(NATIVE_ARCH) $(NATIVE_CXXFLAGS) $(SRCS) $(NATIVE_LIBS) $(RPATH) -o $(TARGET)
|
||||
+ make -C @abs_top_srcdir@/lib/libsquish libsquish-native.so
|
||||
+ $(HOST_CXX) $(DEFINES) $(NATIVE_ARCH) $(HOST_CXXFLAGS) $(SRCS) $(HOST_LIBS) $(RPATH) -o $(TARGET)
|
@ -0,0 +1,38 @@
|
||||
From 735e49e62dc07cbe94cb75e9069a01b1b985f70f Mon Sep 17 00:00:00 2001
|
||||
From: Cory Fields <theuni-nospam-@xbmc.org>
|
||||
Date: Fri, 14 Sep 2012 15:35:32 -0400
|
||||
Subject: [PATCH] d-r: enable dirty-regions by default
|
||||
|
||||
This enables the all-or-nothing mode, which means that we repaint the entire
|
||||
screen if there's a single dirty region.
|
||||
|
||||
Also, nofliptimeout=0 is set to ensure that we never flip without rendering.
|
||||
|
||||
With these combined, this should be universally safe (and within spec) for all
|
||||
gfx cards/drivers.
|
||||
|
||||
The main possible side-effect is the slow-motion effect brought about on slower
|
||||
cpus that can't keep up at times and produce wild timestamps. With our improved
|
||||
decoding and caching, this is now quite rare.
|
||||
---
|
||||
xbmc/settings/AdvancedSettings.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
|
||||
index 47aaf7e..6f75227 100644
|
||||
--- a/xbmc/settings/AdvancedSettings.cpp
|
||||
+++ b/xbmc/settings/AdvancedSettings.cpp
|
||||
@@ -306,8 +306,8 @@ void CAdvancedSettings::Initialize()
|
||||
|
||||
m_canWindowed = true;
|
||||
m_guiVisualizeDirtyRegions = false;
|
||||
- m_guiAlgorithmDirtyRegions = 0;
|
||||
- m_guiDirtyRegionNoFlipTimeout = -1;
|
||||
+ m_guiAlgorithmDirtyRegions = 3;
|
||||
+ m_guiDirtyRegionNoFlipTimeout = 0;
|
||||
m_logEnableAirtunes = false;
|
||||
m_airTunesPort = 36666;
|
||||
m_airPlayPort = 36667;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 7c5b281bf4403de8a02a3793188a4d735efafe9a Mon Sep 17 00:00:00 2001
|
||||
From: epideme <tony.nilsson@epideme.com>
|
||||
Date: Sun, 16 Sep 2012 19:57:52 +0300
|
||||
Subject: [PATCH] [rbp] Allow OMXPlayer to try playing DVD/BD-iso
|
||||
|
||||
Now that scaling is fixed and overlays behave better, and license for MPG2 codec is available, allow iso playback with a warning in the debug log.
|
||||
---
|
||||
xbmc/cores/omxplayer/OMXPlayer.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
index a3736df..1fc32b4 100644
|
||||
--- a/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
+++ b/xbmc/cores/omxplayer/OMXPlayer.cpp
|
||||
@@ -590,8 +590,8 @@ bool COMXPlayer::OpenInputStream()
|
||||
if (m_pInputStream && ( m_pInputStream->IsStreamType(DVDSTREAM_TYPE_DVD)
|
||||
|| m_pInputStream->IsStreamType(DVDSTREAM_TYPE_BLURAY) ) )
|
||||
{
|
||||
- CLog::Log(LOGINFO, "COMXPlayer::OpenInputStream - DVD/BD not supported");
|
||||
- return false;
|
||||
+ CLog::Log(LOGINFO, "COMXPlayer::OpenInputStream - DVD/BD not supported - Will try...");
|
||||
+ // return false;
|
||||
}
|
||||
|
||||
// find any available external subtitles for non dvd files
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,477 @@
|
||||
From 7d692ff576d0a713891908b5630ce2b8d0128f2e Mon Sep 17 00:00:00 2001
|
||||
From: davilla <davilla@4pi.com>
|
||||
Date: Sat, 22 Sep 2012 20:10:33 -0400
|
||||
Subject: [PATCH] add the ability to run a split gui/display resolution for
|
||||
embedded platforms
|
||||
|
||||
---
|
||||
xbmc/Application.cpp | 2 +-
|
||||
xbmc/GUIInfoManager.cpp | 12 +++----
|
||||
xbmc/guilib/GraphicContext.cpp | 2 ++
|
||||
xbmc/guilib/Resolution.h | 5 +++
|
||||
xbmc/settings/GUISettings.cpp | 6 ++--
|
||||
xbmc/settings/GUIWindowSettingsCategory.cpp | 10 +++---
|
||||
.../GUIWindowSettingsScreenCalibration.cpp | 8 ++---
|
||||
xbmc/video/windows/GUIWindowFullScreen.cpp | 8 ++---
|
||||
xbmc/windowing/WinSystem.cpp | 14 ++++++---
|
||||
xbmc/windowing/X11/WinSystemX11.cpp | 2 ++
|
||||
xbmc/windowing/X11/WinSystemX11GLES.cpp | 2 ++
|
||||
xbmc/windowing/egl/WinEGLPlatformGeneric.cpp | 11 +++----
|
||||
xbmc/windowing/egl/WinEGLPlatformRaspberryPI.cpp | 10 +++---
|
||||
xbmc/windowing/egl/WinSystemGLES.cpp | 33 +++++++++++++-------
|
||||
xbmc/windowing/egl/WinSystemGLES.h | 2 ++
|
||||
xbmc/windowing/windows/WinSystemWin32.cpp | 2 ++
|
||||
16 files changed, 80 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
|
||||
index 961e8f9..cd9fc9f 100644
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -890,7 +890,7 @@ bool CApplication::CreateGUI()
|
||||
return false;
|
||||
|
||||
int iResolution = g_graphicsContext.GetVideoResolution();
|
||||
- CLog::Log(LOGINFO, "GUI format %ix%i %s",
|
||||
+ CLog::Log(LOGINFO, "GUI format %ix%i, Display %s",
|
||||
g_settings.m_ResInfo[iResolution].iWidth,
|
||||
g_settings.m_ResInfo[iResolution].iHeight,
|
||||
g_settings.m_ResInfo[iResolution].strMode.c_str());
|
||||
diff --git a/xbmc/GUIInfoManager.cpp b/xbmc/GUIInfoManager.cpp
|
||||
index fb6292d..c4ecd0a 100644
|
||||
--- a/xbmc/GUIInfoManager.cpp
|
||||
+++ b/xbmc/GUIInfoManager.cpp
|
||||
@@ -1493,14 +1493,14 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, CStdString *fa
|
||||
case SYSTEM_SCREEN_RESOLUTION:
|
||||
if(g_Windowing.IsFullScreen())
|
||||
strLabel.Format("%ix%i@%.2fHz - %s (%02.2f fps)",
|
||||
- g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iWidth,
|
||||
- g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iHeight,
|
||||
+ g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iScreenHeight,
|
||||
g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].fRefreshRate,
|
||||
g_localizeStrings.Get(244), GetFPS());
|
||||
else
|
||||
strLabel.Format("%ix%i - %s (%02.2f fps)",
|
||||
- g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iWidth,
|
||||
- g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iHeight,
|
||||
+ g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[g_guiSettings.m_LookAndFeelResolution].iScreenHeight,
|
||||
g_localizeStrings.Get(242), GetFPS());
|
||||
return strLabel;
|
||||
break;
|
||||
@@ -1620,10 +1620,10 @@ CStdString CGUIInfoManager::GetLabel(int info, int contextWindow, CStdString *fa
|
||||
strLabel = g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].strMode;
|
||||
break;
|
||||
case SYSTEM_SCREEN_WIDTH:
|
||||
- strLabel.Format("%i", g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].iWidth);
|
||||
+ strLabel.Format("%i", g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].iScreenWidth);
|
||||
break;
|
||||
case SYSTEM_SCREEN_HEIGHT:
|
||||
- strLabel.Format("%i", g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].iHeight);
|
||||
+ strLabel.Format("%i", g_settings.m_ResInfo[g_graphicsContext.GetVideoResolution()].iScreenHeight);
|
||||
break;
|
||||
case SYSTEM_CURRENT_WINDOW:
|
||||
return g_localizeStrings.Get(g_windowManager.GetFocusedWindow());
|
||||
diff --git a/xbmc/guilib/GraphicContext.cpp b/xbmc/guilib/GraphicContext.cpp
|
||||
index 31bfdbf..94f248b 100644
|
||||
--- a/xbmc/guilib/GraphicContext.cpp
|
||||
+++ b/xbmc/guilib/GraphicContext.cpp
|
||||
@@ -580,6 +580,8 @@ void CGraphicContext::ResetScreenParameters(RESOLUTION res)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
+ g_settings.m_ResInfo[res].iScreenWidth = g_settings.m_ResInfo[res].iWidth;
|
||||
+ g_settings.m_ResInfo[res].iScreenHeight = g_settings.m_ResInfo[res].iHeight;
|
||||
ResetOverscan(res, g_settings.m_ResInfo[res].Overscan);
|
||||
}
|
||||
|
||||
diff --git a/xbmc/guilib/Resolution.h b/xbmc/guilib/Resolution.h
|
||||
index ede938d..20864e2 100644
|
||||
--- a/xbmc/guilib/Resolution.h
|
||||
+++ b/xbmc/guilib/Resolution.h
|
||||
@@ -88,6 +88,8 @@ struct RESOLUTION_INFO
|
||||
int iScreen;
|
||||
int iWidth;
|
||||
int iHeight;
|
||||
+ int iScreenWidth;
|
||||
+ int iScreenHeight;
|
||||
int iSubtitles;
|
||||
uint32_t dwFlags;
|
||||
float fPixelRatio;
|
||||
@@ -100,6 +102,8 @@ struct RESOLUTION_INFO
|
||||
{
|
||||
iWidth = width;
|
||||
iHeight = height;
|
||||
+ iScreenWidth = width;
|
||||
+ iScreenHeight = height;
|
||||
fPixelRatio = aspect ? ((float)width)/height / aspect : 1.0f;
|
||||
strMode = mode;
|
||||
bFullScreen = true;
|
||||
@@ -114,6 +118,7 @@ struct RESOLUTION_INFO
|
||||
{
|
||||
Overscan = res.Overscan; bFullScreen = res.bFullScreen;
|
||||
iScreen = res.iScreen; iWidth = res.iWidth; iHeight = res.iHeight;
|
||||
+ iScreenWidth = res.iScreenWidth; iScreenHeight = res.iScreenHeight;
|
||||
iSubtitles = res.iSubtitles; dwFlags = res.dwFlags;
|
||||
fPixelRatio = res.fPixelRatio; fRefreshRate = res.fRefreshRate;
|
||||
strMode = res.strMode; strOutput = res.strOutput; strId = res.strId;
|
||||
diff --git a/xbmc/settings/GUISettings.cpp b/xbmc/settings/GUISettings.cpp
|
||||
index da2a78b..ec24ad5 100644
|
||||
--- a/xbmc/settings/GUISettings.cpp
|
||||
+++ b/xbmc/settings/GUISettings.cpp
|
||||
@@ -1526,8 +1526,8 @@ RESOLUTION CGUISettings::GetResFromString(const CStdString &res)
|
||||
const RESOLUTION_INFO &info = g_settings.m_ResInfo[i];
|
||||
if (info.iScreen != screen)
|
||||
continue;
|
||||
- float score = 10 * (square_error((float)info.iWidth, (float)width) +
|
||||
- square_error((float)info.iHeight, (float)height) +
|
||||
+ float score = 10 * (square_error((float)info.iScreenWidth, (float)width) +
|
||||
+ square_error((float)info.iScreenHeight, (float)height) +
|
||||
square_error(info.fRefreshRate, refresh) +
|
||||
square_error((float)((info.dwFlags & D3DPRESENTFLAG_INTERLACED) ? 100:200), interlaced));
|
||||
if (score < bestScore)
|
||||
@@ -1552,7 +1552,7 @@ void CGUISettings::SetResolution(RESOLUTION res)
|
||||
{
|
||||
const RESOLUTION_INFO &info = g_settings.m_ResInfo[res];
|
||||
mode.Format("%1i%05i%05i%09.5f%s", info.iScreen,
|
||||
- info.iWidth, info.iHeight, info.fRefreshRate,
|
||||
+ info.iScreenWidth, info.iScreenHeight, info.fRefreshRate,
|
||||
(info.dwFlags & D3DPRESENTFLAG_INTERLACED) ? "i":"p");
|
||||
}
|
||||
else
|
||||
diff --git a/xbmc/settings/GUIWindowSettingsCategory.cpp b/xbmc/settings/GUIWindowSettingsCategory.cpp
|
||||
index b436b98..ce517bb 100644
|
||||
--- a/xbmc/settings/GUIWindowSettingsCategory.cpp
|
||||
+++ b/xbmc/settings/GUIWindowSettingsCategory.cpp
|
||||
@@ -2392,8 +2392,8 @@ void CGUIWindowSettingsCategory::FillInResolutions(CStdString strSetting, Displa
|
||||
RESOLUTION_INFO res1 = g_settings.m_ResInfo[res];
|
||||
RESOLUTION_INFO res2 = g_settings.m_ResInfo[resolutions[idx].ResInfo_Index];
|
||||
if ( res1.iScreen == res2.iScreen
|
||||
- && res1.iWidth == res2.iWidth
|
||||
- && res1.iHeight == res2.iHeight
|
||||
+ && res1.iScreenWidth == res2.iScreenWidth
|
||||
+ && res1.iScreenHeight == res2.iScreenHeight
|
||||
&& (res1.dwFlags & D3DPRESENTFLAG_INTERLACED) == (res2.dwFlags & D3DPRESENTFLAG_INTERLACED))
|
||||
spinres = (RESOLUTION) resolutions[idx].ResInfo_Index;
|
||||
}
|
||||
@@ -2430,13 +2430,13 @@ void CGUIWindowSettingsCategory::FillInResolutions(CStdString strSetting, Displa
|
||||
|
||||
void CGUIWindowSettingsCategory::FillInRefreshRates(CStdString strSetting, RESOLUTION res, bool UserChange)
|
||||
{
|
||||
- // The only meaningful parts of res here are iScreen, iWidth, iHeight
|
||||
+ // The only meaningful parts of res here are iScreen, iScreenWidth, iScreenHeight
|
||||
|
||||
vector<REFRESHRATE> refreshrates;
|
||||
if (res > RES_WINDOW)
|
||||
refreshrates = g_Windowing.RefreshRates(g_settings.m_ResInfo[res].iScreen,
|
||||
- g_settings.m_ResInfo[res].iWidth,
|
||||
- g_settings.m_ResInfo[res].iHeight,
|
||||
+ g_settings.m_ResInfo[res].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[res].iScreenHeight,
|
||||
g_settings.m_ResInfo[res].dwFlags);
|
||||
|
||||
// The control setting doesn't exist when not in standalone mode, don't manipulate it
|
||||
diff --git a/xbmc/settings/GUIWindowSettingsScreenCalibration.cpp b/xbmc/settings/GUIWindowSettingsScreenCalibration.cpp
|
||||
index b2430bc..3e6ba83 100644
|
||||
--- a/xbmc/settings/GUIWindowSettingsScreenCalibration.cpp
|
||||
+++ b/xbmc/settings/GUIWindowSettingsScreenCalibration.cpp
|
||||
@@ -352,12 +352,12 @@ void CGUIWindowSettingsScreenCalibration::UpdateFromControl(int iControl)
|
||||
// set the label control correctly
|
||||
CStdString strText;
|
||||
if (g_Windowing.IsFullScreen())
|
||||
- strText.Format("%ix%i@%.2f - %s | %s", g_settings.m_ResInfo[m_Res[m_iCurRes]].iWidth,
|
||||
- g_settings.m_ResInfo[m_Res[m_iCurRes]].iHeight, g_settings.m_ResInfo[m_Res[m_iCurRes]].fRefreshRate,
|
||||
+ strText.Format("%ix%i@%.2f - %s | %s", g_settings.m_ResInfo[m_Res[m_iCurRes]].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[m_Res[m_iCurRes]].iScreenHeight, g_settings.m_ResInfo[m_Res[m_iCurRes]].fRefreshRate,
|
||||
g_localizeStrings.Get(244).c_str(), strStatus.c_str());
|
||||
else
|
||||
- strText.Format("%ix%i - %s | %s", g_settings.m_ResInfo[m_Res[m_iCurRes]].iWidth,
|
||||
- g_settings.m_ResInfo[m_Res[m_iCurRes]].iHeight,
|
||||
+ strText.Format("%ix%i - %s | %s", g_settings.m_ResInfo[m_Res[m_iCurRes]].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[m_Res[m_iCurRes]].iScreenHeight,
|
||||
g_localizeStrings.Get(242).c_str(), strStatus.c_str());
|
||||
|
||||
SET_CONTROL_LABEL(CONTROL_LABEL_ROW1, strText);
|
||||
diff --git a/xbmc/video/windows/GUIWindowFullScreen.cpp b/xbmc/video/windows/GUIWindowFullScreen.cpp
|
||||
index 22a5c35..1bba604 100644
|
||||
--- a/xbmc/video/windows/GUIWindowFullScreen.cpp
|
||||
+++ b/xbmc/video/windows/GUIWindowFullScreen.cpp
|
||||
@@ -1008,13 +1008,13 @@ void CGUIWindowFullScreen::FrameMove()
|
||||
CStdString strStatus;
|
||||
if (g_Windowing.IsFullScreen())
|
||||
strStatus.Format("%s %ix%i@%.2fHz - %s",
|
||||
- g_localizeStrings.Get(13287), g_settings.m_ResInfo[iResolution].iWidth,
|
||||
- g_settings.m_ResInfo[iResolution].iHeight, g_settings.m_ResInfo[iResolution].fRefreshRate,
|
||||
+ g_localizeStrings.Get(13287), g_settings.m_ResInfo[iResolution].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[iResolution].iScreenHeight, g_settings.m_ResInfo[iResolution].fRefreshRate,
|
||||
g_localizeStrings.Get(244));
|
||||
else
|
||||
strStatus.Format("%s %ix%i - %s",
|
||||
- g_localizeStrings.Get(13287), g_settings.m_ResInfo[iResolution].iWidth,
|
||||
- g_settings.m_ResInfo[iResolution].iHeight, g_localizeStrings.Get(242));
|
||||
+ g_localizeStrings.Get(13287), g_settings.m_ResInfo[iResolution].iScreenWidth,
|
||||
+ g_settings.m_ResInfo[iResolution].iScreenHeight, g_localizeStrings.Get(242));
|
||||
|
||||
CGUIMessage msg(GUI_MSG_LABEL_SET, GetID(), LABEL_ROW3);
|
||||
msg.SetLabel(strStatus);
|
||||
diff --git a/xbmc/windowing/WinSystem.cpp b/xbmc/windowing/WinSystem.cpp
|
||||
index 9882161..6a17586 100644
|
||||
--- a/xbmc/windowing/WinSystem.cpp
|
||||
+++ b/xbmc/windowing/WinSystem.cpp
|
||||
@@ -63,6 +63,8 @@ void CWinSystemBase::UpdateDesktopResolution(RESOLUTION_INFO& newRes, int screen
|
||||
newRes.fPixelRatio = 1.0f;
|
||||
newRes.iWidth = width;
|
||||
newRes.iHeight = height;
|
||||
+ newRes.iScreenWidth = width;
|
||||
+ newRes.iScreenHeight = height;
|
||||
newRes.strMode.Format("%dx%d", width, height);
|
||||
if (refreshRate > 1)
|
||||
newRes.strMode.Format("%s @ %.2f%s - Full Screen", newRes.strMode, refreshRate, dwFlags & D3DPRESENTFLAG_INTERLACED ? "i" : "");
|
||||
@@ -79,6 +81,8 @@ void CWinSystemBase::UpdateResolutions()
|
||||
window.iWidth = 720;
|
||||
if (window.iHeight == 0)
|
||||
window.iHeight = 480;
|
||||
+ window.iScreenWidth = window.iWidth;
|
||||
+ window.iScreenHeight = window.iHeight;
|
||||
if (window.iSubtitles == 0)
|
||||
window.iSubtitles = (int)(0.965 * window.iHeight);
|
||||
window.fPixelRatio = 1.0f;
|
||||
@@ -90,6 +94,8 @@ void CWinSystemBase::SetWindowResolution(int width, int height)
|
||||
RESOLUTION_INFO& window = g_settings.m_ResInfo[RES_WINDOW];
|
||||
window.iWidth = width;
|
||||
window.iHeight = height;
|
||||
+ window.iScreenWidth = width;
|
||||
+ window.iScreenHeight = height;
|
||||
window.iSubtitles = (int)(0.965 * window.iHeight);
|
||||
g_graphicsContext.ResetOverscan(window);
|
||||
}
|
||||
@@ -105,8 +111,8 @@ int CWinSystemBase::DesktopResolution(int screen)
|
||||
|
||||
static void AddResolution(vector<RESOLUTION_WHR> &resolutions, unsigned int addindex)
|
||||
{
|
||||
- int width = g_settings.m_ResInfo[addindex].iWidth;
|
||||
- int height = g_settings.m_ResInfo[addindex].iHeight;
|
||||
+ int width = g_settings.m_ResInfo[addindex].iScreenWidth;
|
||||
+ int height = g_settings.m_ResInfo[addindex].iScreenHeight;
|
||||
int interlaced = g_settings.m_ResInfo[addindex].dwFlags & D3DPRESENTFLAG_INTERLACED;
|
||||
|
||||
for (unsigned int idx = 0; idx < resolutions.size(); idx++)
|
||||
@@ -163,8 +169,8 @@ static bool rrSortPredicate(REFRESHRATE i, REFRESHRATE j)
|
||||
|
||||
for (unsigned int idx = RES_DESKTOP; idx < g_settings.m_ResInfo.size(); idx++)
|
||||
if ( g_settings.m_ResInfo[idx].iScreen == screen
|
||||
- && g_settings.m_ResInfo[idx].iWidth == width
|
||||
- && g_settings.m_ResInfo[idx].iHeight == height
|
||||
+ && g_settings.m_ResInfo[idx].iScreenWidth == width
|
||||
+ && g_settings.m_ResInfo[idx].iScreenHeight == height
|
||||
&& (g_settings.m_ResInfo[idx].dwFlags & D3DPRESENTFLAG_INTERLACED) == (dwFlags & D3DPRESENTFLAG_INTERLACED))
|
||||
AddRefreshRate(refreshrates, idx);
|
||||
|
||||
diff --git a/xbmc/windowing/X11/WinSystemX11.cpp b/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
index 889c445..a839709 100644
|
||||
--- a/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
+++ b/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
@@ -269,6 +269,8 @@ void CWinSystemX11::UpdateResolutions()
|
||||
RESOLUTION_INFO res;
|
||||
res.iWidth = mode.w;
|
||||
res.iHeight = mode.h;
|
||||
+ res.iScreenWidth = mode.w;
|
||||
+ res.iScreenHeight = mode.h;
|
||||
if (mode.h>0 && mode.w>0 && out.hmm>0 && out.wmm>0)
|
||||
res.fPixelRatio = ((float)out.wmm/(float)mode.w) / (((float)out.hmm/(float)mode.h));
|
||||
else
|
||||
diff --git a/xbmc/windowing/X11/WinSystemX11GLES.cpp b/xbmc/windowing/X11/WinSystemX11GLES.cpp
|
||||
index 2b67e37..50185f9 100644
|
||||
--- a/xbmc/windowing/X11/WinSystemX11GLES.cpp
|
||||
+++ b/xbmc/windowing/X11/WinSystemX11GLES.cpp
|
||||
@@ -292,6 +292,8 @@ void CWinSystemX11GLES::UpdateResolutions()
|
||||
RESOLUTION_INFO res;
|
||||
res.iWidth = mode.w;
|
||||
res.iHeight = mode.h;
|
||||
+ res.iScreenWidth = mode.w;
|
||||
+ res.iScreenHeight = mode.h;
|
||||
if (mode.h>0 && mode.w>0 && out.hmm>0 && out.wmm>0)
|
||||
res.fPixelRatio = ((float)out.wmm/(float)mode.w) / (((float)out.hmm/(float)mode.h));
|
||||
else
|
||||
diff --git a/xbmc/windowing/egl/WinEGLPlatformGeneric.cpp b/xbmc/windowing/egl/WinEGLPlatformGeneric.cpp
|
||||
index 9febe15..b6dec7e 100644
|
||||
--- a/xbmc/windowing/egl/WinEGLPlatformGeneric.cpp
|
||||
+++ b/xbmc/windowing/egl/WinEGLPlatformGeneric.cpp
|
||||
@@ -43,8 +43,8 @@
|
||||
m_desktopRes.iScreen = 0;
|
||||
m_desktopRes.iWidth = 1280;
|
||||
m_desktopRes.iHeight = 720;
|
||||
- //m_desktopRes.iScreenWidth = 1280;
|
||||
- //m_desktopRes.iScreenHeight = 720;
|
||||
+ m_desktopRes.iScreenWidth = 1280;
|
||||
+ m_desktopRes.iScreenHeight = 720;
|
||||
m_desktopRes.fRefreshRate = 60.0f;
|
||||
m_desktopRes.bFullScreen = true;
|
||||
m_desktopRes.iSubtitles = (int)(0.965 * 720);
|
||||
@@ -101,12 +101,9 @@ bool CWinEGLPlatformGeneric::ProbeDisplayResolutions(std::vector<RESOLUTION_INFO
|
||||
res.fPixelRatio = 1.0f;
|
||||
res.iWidth = gui_width;
|
||||
res.iHeight = gui_height;
|
||||
- //res.iScreenWidth = gui_width;
|
||||
- //res.iScreenHeight = gui_height;
|
||||
+ res.iScreenWidth = gui_width;
|
||||
+ res.iScreenHeight = gui_height;
|
||||
res.dwFlags = D3DPRESENTFLAG_PROGRESSIVE | D3DPRESENTFLAG_WIDESCREEN;
|
||||
- // temp until split gui/display res comes in
|
||||
- //res.iScreenWidth = width;
|
||||
- //res.iScreenHeight = height;
|
||||
res.strMode.Format("%dx%d @ %.2f - Full Screen", gui_width, gui_height, gui_refresh);
|
||||
|
||||
resolutions.push_back(res);
|
||||
diff --git a/xbmc/windowing/egl/WinEGLPlatformRaspberryPI.cpp b/xbmc/windowing/egl/WinEGLPlatformRaspberryPI.cpp
|
||||
index 48e53cc..c77d63c 100644
|
||||
--- a/xbmc/windowing/egl/WinEGLPlatformRaspberryPI.cpp
|
||||
+++ b/xbmc/windowing/egl/WinEGLPlatformRaspberryPI.cpp
|
||||
@@ -69,6 +69,8 @@
|
||||
m_desktopRes.iScreen = 0;
|
||||
m_desktopRes.iWidth = 1280;
|
||||
m_desktopRes.iHeight = 720;
|
||||
+ m_desktopRes.iScreenWidth = 1280;
|
||||
+ m_desktopRes.iScreenHeight= 720;
|
||||
m_desktopRes.fRefreshRate = 60.0f;
|
||||
m_desktopRes.bFullScreen = true;
|
||||
m_desktopRes.iSubtitles = (int)(0.965 * 720);
|
||||
@@ -271,8 +273,8 @@ bool CWinEGLPlatformRaspberryPI::ProbeDisplayResolutions(std::vector<RESOLUTION_
|
||||
res.fPixelRatio = 1.0f;
|
||||
res.iWidth = tv.width;
|
||||
res.iHeight = tv.height;
|
||||
- //res.iScreenWidth = tv.width;
|
||||
- //res.iScreenHeight = tv.height;
|
||||
+ res.iScreenWidth = tv.width;
|
||||
+ res.iScreenHeight = tv.height;
|
||||
res.strMode.Format("%dx%d", tv.width, tv.height);
|
||||
if((float)tv.frame_rate > 1)
|
||||
{
|
||||
@@ -687,8 +689,8 @@ void CWinEGLPlatformRaspberryPI::GetSupportedModes(HDMI_RES_GROUP_T group, std::
|
||||
res.fPixelRatio = 1.0f;
|
||||
res.iWidth = width;
|
||||
res.iHeight = tv->height;
|
||||
- //res.iScreenWidth = width;
|
||||
- //res.iScreenHeight = tv->height;
|
||||
+ res.iScreenWidth = width;
|
||||
+ res.iScreenHeight = tv->height;
|
||||
res.strMode.Format("%dx%d", width, tv->height);
|
||||
if((float)tv->frame_rate > 1)
|
||||
{
|
||||
diff --git a/xbmc/windowing/egl/WinSystemGLES.cpp b/xbmc/windowing/egl/WinSystemGLES.cpp
|
||||
index d4f1f04..eb78f74 100644
|
||||
--- a/xbmc/windowing/egl/WinSystemGLES.cpp
|
||||
+++ b/xbmc/windowing/egl/WinSystemGLES.cpp
|
||||
@@ -78,7 +78,11 @@ bool CWinSystemGLES::DestroyWindowSystem()
|
||||
|
||||
bool CWinSystemGLES::CreateNewWindow(const CStdString& name, bool fullScreen, RESOLUTION_INFO& res, PHANDLE_EVENT_FUNC userFunction)
|
||||
{
|
||||
- if (m_bWindowCreated && m_nWidth == res.iWidth && m_nHeight == res.iHeight && m_fRefreshRate == res.fRefreshRate && m_bFullScreen == fullScreen)
|
||||
+ if (m_bWindowCreated &&
|
||||
+ m_nWidth == res.iWidth && m_nHeight == res.iHeight &&
|
||||
+ m_nScreenWidth == res.iScreenWidth && m_nScreenHeight == res.iScreenHeight &&
|
||||
+ m_bFullScreen == fullScreen &&
|
||||
+ m_fRefreshRate == res.fRefreshRate)
|
||||
{
|
||||
CLog::Log(LOGDEBUG, "CWinSystemGLES::CreateNewWindow: No need to create a new window");
|
||||
return true;
|
||||
@@ -86,8 +90,10 @@ bool CWinSystemGLES::CreateNewWindow(const CStdString& name, bool fullScreen, RE
|
||||
|
||||
m_nWidth = res.iWidth;
|
||||
m_nHeight = res.iHeight;
|
||||
- m_bFullScreen = fullScreen;
|
||||
- m_fRefreshRate = res.fRefreshRate;
|
||||
+ m_nScreenWidth = res.iScreenWidth;
|
||||
+ m_nScreenHeight = res.iScreenHeight;
|
||||
+ m_bFullScreen = fullScreen;
|
||||
+ m_fRefreshRate = res.fRefreshRate;
|
||||
|
||||
// Destroy any existing window
|
||||
if (m_bWindowCreated)
|
||||
@@ -138,7 +144,6 @@ void CWinSystemGLES::UpdateResolutions()
|
||||
{
|
||||
CWinSystemBase::UpdateResolutions();
|
||||
|
||||
- //std::vector<CStdString> resolutions;
|
||||
std::vector<RESOLUTION_INFO> resolutions;
|
||||
|
||||
m_eglplatform->ProbeDisplayResolutions(resolutions);
|
||||
@@ -148,9 +153,6 @@ void CWinSystemGLES::UpdateResolutions()
|
||||
RESOLUTION ResDesktop = RES_INVALID;
|
||||
RESOLUTION res_index = RES_DESKTOP;
|
||||
|
||||
- // Clear old resolutions
|
||||
- //g_settings.m_ResInfo.clear();
|
||||
-
|
||||
for (size_t i = 0; i < resolutions.size(); i++)
|
||||
{
|
||||
int gui_width = resolutions[i].iWidth;
|
||||
@@ -173,17 +175,23 @@ void CWinSystemGLES::UpdateResolutions()
|
||||
g_graphicsContext.ResetOverscan(resolutions[i]);
|
||||
g_settings.m_ResInfo[res_index] = resolutions[i];
|
||||
|
||||
- CLog::Log(LOGNOTICE, "Found resolution for display %d with %d x %d @ %f Hz\n",
|
||||
+ CLog::Log(LOGNOTICE, "Found resolution %d x %d for display %d with %d x %d%s @ %f Hz\n",
|
||||
resolutions[i].iScreen,
|
||||
resolutions[i].iWidth,
|
||||
resolutions[i].iHeight,
|
||||
+ resolutions[i].iScreenWidth,
|
||||
+ resolutions[i].iScreenHeight,
|
||||
+ resolutions[i].dwFlags & D3DPRESENTFLAG_INTERLACED ? "i" : "",
|
||||
resolutions[i].fRefreshRate);
|
||||
|
||||
if(m_eglplatform->FixedDesktop())
|
||||
{
|
||||
if(resDesktop.iWidth == resolutions[i].iWidth &&
|
||||
resDesktop.iHeight == resolutions[i].iHeight &&
|
||||
- resDesktop.fRefreshRate == resolutions[i].fRefreshRate)
|
||||
+ resDesktop.iScreenWidth == resolutions[i].iScreenWidth &&
|
||||
+ resDesktop.iScreenHeight == resolutions[i].iScreenHeight &&
|
||||
+ resDesktop.fRefreshRate == resolutions[i].fRefreshRate &&
|
||||
+ resDesktop.dwFlags == resolutions[i].dwFlags)
|
||||
{
|
||||
ResDesktop = res_index;
|
||||
}
|
||||
@@ -195,8 +203,11 @@ void CWinSystemGLES::UpdateResolutions()
|
||||
// swap desktop index for desktop res if available
|
||||
if (ResDesktop != RES_INVALID)
|
||||
{
|
||||
- CLog::Log(LOGNOTICE, "Found (%dx%d@%f) at %d, setting to RES_DESKTOP at %d",
|
||||
- resDesktop.iWidth, resDesktop.iHeight, resDesktop.fRefreshRate, (int)ResDesktop, (int)RES_DESKTOP);
|
||||
+ CLog::Log(LOGNOTICE, "Found (%dx%d%s@%f) at %d, setting to RES_DESKTOP at %d",
|
||||
+ resDesktop.iWidth, resDesktop.iHeight,
|
||||
+ resDesktop.dwFlags & D3DPRESENTFLAG_INTERLACED ? "i" : "",
|
||||
+ resDesktop.fRefreshRate,
|
||||
+ (int)ResDesktop, (int)RES_DESKTOP);
|
||||
|
||||
RESOLUTION_INFO desktop = g_settings.m_ResInfo[RES_DESKTOP];
|
||||
g_settings.m_ResInfo[RES_DESKTOP] = g_settings.m_ResInfo[ResDesktop];
|
||||
diff --git a/xbmc/windowing/egl/WinSystemGLES.h b/xbmc/windowing/egl/WinSystemGLES.h
|
||||
index d94d24d..72c1eb7 100644
|
||||
--- a/xbmc/windowing/egl/WinSystemGLES.h
|
||||
+++ b/xbmc/windowing/egl/WinSystemGLES.h
|
||||
@@ -63,6 +63,8 @@ class CWinSystemGLES : public CWinSystemBase, public CRenderSystemGLES
|
||||
void *m_display;
|
||||
EGLNativeWindowType m_window;
|
||||
CWinEGLPlatform *m_eglplatform;
|
||||
+ int m_nScreenWidth;
|
||||
+ int m_nScreenHeight;
|
||||
};
|
||||
|
||||
XBMC_GLOBAL_REF(CWinSystemGLES,g_Windowing);
|
||||
diff --git a/xbmc/windowing/windows/WinSystemWin32.cpp b/xbmc/windowing/windows/WinSystemWin32.cpp
|
||||
index 6a0e335..182b9a2 100644
|
||||
--- a/xbmc/windowing/windows/WinSystemWin32.cpp
|
||||
+++ b/xbmc/windowing/windows/WinSystemWin32.cpp
|
||||
@@ -541,6 +541,8 @@ void CWinSystemWin32::AddResolution(const RESOLUTION_INFO &res)
|
||||
if (g_settings.m_ResInfo[i].iScreen == res.iScreen &&
|
||||
g_settings.m_ResInfo[i].iWidth == res.iWidth &&
|
||||
g_settings.m_ResInfo[i].iHeight == res.iHeight &&
|
||||
+ g_settings.m_ResInfo[i].iScreenWidth == res.iScreenWidth &&
|
||||
+ g_settings.m_ResInfo[i].iScreenHeight== res.iScreenHeight &&
|
||||
g_settings.m_ResInfo[i].fRefreshRate == res.fRefreshRate &&
|
||||
g_settings.m_ResInfo[i].dwFlags == res.dwFlags)
|
||||
return; // already have this resolution
|
||||
--
|
||||
1.7.10
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 35c9bf5bd0f9d03541280df8d7b9af0bf6ffb1a4 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Op den Kamp <lars@opdenkamp.eu>
|
||||
Date: Wed, 29 Aug 2012 13:43:55 +0200
|
||||
Subject: [PATCH] cec: also match 2548:1002 to the cec adapter
|
||||
|
||||
---
|
||||
system/peripherals.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/system/peripherals.xml b/system/peripherals.xml
|
||||
index cf0c6c4..76a1df9 100644
|
||||
--- a/system/peripherals.xml
|
||||
+++ b/system/peripherals.xml
|
||||
@@ -9,7 +9,7 @@
|
||||
<setting key="key_power" value="XBMC.ShutDown()" label="13015" order="6" />
|
||||
</peripheral>
|
||||
|
||||
- <peripheral vendor_product="2548:1001" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec">
|
||||
+ <peripheral vendor_product="2548:1001,2548:1002" bus="usb" name="Pulse-Eight CEC Adapter" mapTo="cec">
|
||||
<setting key="enabled" type="bool" value="1" label="305" order="1" />
|
||||
<setting key="activate_source" type="bool" value="1" label="36020" order="2" />
|
||||
<setting key="wake_devices" type="string" value="0" label="36007" order="3" />
|
||||
--
|
||||
1.7.10
|
||||
|
@ -54,8 +54,8 @@ fi
|
||||
|
||||
# set cpu's to 'conservative'
|
||||
( usleep 15000000
|
||||
progress "set cpu's to 'conservative'"
|
||||
cpupower frequency-set -g conservative > /dev/null 2>&1
|
||||
progress "set cpu's to 'ondemand'"
|
||||
cpupower frequency-set -g ondemand > /dev/null 2>&1
|
||||
)&
|
||||
|
||||
# prevent restrating XBMC at reboot or shutdown
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 66a8245d4e7d02469f03c6a1b3e295dde346645f Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sat, 15 Sep 2012 17:24:30 +0200
|
||||
Subject: [PATCH] videoplayer: fix calcDropRequirement for forced
|
||||
deinterlacing
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDPlayerVideo.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
index db0fb1f..81e0012 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDPlayerVideo.cpp
|
||||
@@ -1702,7 +1702,7 @@ int CDVDPlayerVideo::CalcDropRequirement(double pts)
|
||||
|
||||
bNewFrame = iDecoderPts != m_droppingStats.m_lastDecoderPts;
|
||||
|
||||
- if (interlaced)
|
||||
+ if (interlaced || iSkippedDeint)
|
||||
iInterval = 2/m_fFrameRate*(double)DVD_TIME_BASE;
|
||||
else
|
||||
iInterval = 1/m_fFrameRate*(double)DVD_TIME_BASE;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,32 @@
|
||||
From f0bf2b7dff16ac6ee875770b390accf71660a662 Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 16 Sep 2012 08:27:06 +0200
|
||||
Subject: [PATCH] vdpau: fix AutoInterlaceMethod to prevent from double
|
||||
de-interlacing
|
||||
|
||||
---
|
||||
xbmc/cores/VideoRenderers/LinuxRendererGL.cpp | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
index f25252c..374d75d 100644
|
||||
--- a/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
+++ b/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
|
||||
@@ -3743,14 +3743,7 @@ EINTERLACEMETHOD CLinuxRendererGL::AutoInterlaceMethod()
|
||||
return VS_INTERLACEMETHOD_NONE;
|
||||
|
||||
if(m_renderMethod & RENDER_VDPAU)
|
||||
- {
|
||||
-#ifdef HAVE_LIBVDPAU
|
||||
- VDPAU::CVdpauRenderPicture *vdpauPic = m_buffers[m_iYV12RenderBuffer].vdpau;
|
||||
- if(vdpauPic && vdpauPic->vdpau)
|
||||
- return vdpauPic->vdpau->AutoInterlaceMethod();
|
||||
-#endif
|
||||
return VS_INTERLACEMETHOD_NONE;
|
||||
- }
|
||||
|
||||
if(Supports(VS_INTERLACEMETHOD_RENDER_BOB))
|
||||
return VS_INTERLACEMETHOD_RENDER_BOB;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,25 @@
|
||||
From a7d40418f3aaf35f5df1de8987ce14afd59fb04f Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 16 Sep 2012 12:19:27 +0200
|
||||
Subject: [PATCH] xvba: oopsie :)
|
||||
|
||||
---
|
||||
xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
index d4cf6cf..bd7cc3d 100644
|
||||
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/XVBA.cpp
|
||||
@@ -768,6 +768,7 @@ void CDecoder::DestroySession()
|
||||
XVBA_Destroy_Decode_Buffers_Input bufInput;
|
||||
bufInput.size = sizeof(bufInput);
|
||||
bufInput.num_of_buffers_in_list = 1;
|
||||
+ bufInput.session = m_xvbaConfig.xvbaSession;
|
||||
|
||||
for (unsigned int i=0; i<m_xvbaBufferPool.data_control_buffers.size() ; ++i)
|
||||
{
|
||||
--
|
||||
1.7.10
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
From c01c0fa9c84f50191e0fffd95527ae2b400e021c Mon Sep 17 00:00:00 2001
|
||||
From: xbmc <fernetmenta@online.de>
|
||||
Date: Sun, 16 Sep 2012 18:38:01 +0200
|
||||
Subject: [PATCH] vdpau: fix upscaling setting
|
||||
|
||||
---
|
||||
xbmc/settings/AdvancedSettings.cpp | 4 ++--
|
||||
xbmc/settings/AdvancedSettings.h | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
|
||||
index 61ccf85..3556b7d 100644
|
||||
--- a/xbmc/settings/AdvancedSettings.cpp
|
||||
+++ b/xbmc/settings/AdvancedSettings.cpp
|
||||
@@ -98,7 +98,7 @@ void CAdvancedSettings::Initialize()
|
||||
m_videoIgnoreSecondsAtStart = 3*60;
|
||||
m_videoIgnorePercentAtEnd = 8.0f;
|
||||
m_videoPlayCountMinimumPercent = 90.0f;
|
||||
- m_videoVDPAUScaling = false;
|
||||
+ m_videoVDPAUScaling = -1;
|
||||
m_videoNonLinStretchRatio = 0.5f;
|
||||
m_videoEnableHighQualityHwScalers = false;
|
||||
m_videoAutoScaleMaxFps = 30.0f;
|
||||
@@ -492,7 +492,7 @@ void CAdvancedSettings::ParseSettingsFile(const CStdString &file)
|
||||
XMLUtils::GetString(pElement,"cleandatetime", m_videoCleanDateTimeRegExp);
|
||||
XMLUtils::GetString(pElement,"ppffmpegdeinterlacing",m_videoPPFFmpegDeint);
|
||||
XMLUtils::GetString(pElement,"ppffmpegpostprocessing",m_videoPPFFmpegPostProc);
|
||||
- XMLUtils::GetBoolean(pElement,"vdpauscaling",m_videoVDPAUScaling);
|
||||
+ XMLUtils::GetInt(pElement,"vdpauscaling",m_videoVDPAUScaling);
|
||||
XMLUtils::GetFloat(pElement, "nonlinearstretchratio", m_videoNonLinStretchRatio, 0.01f, 1.0f);
|
||||
XMLUtils::GetBoolean(pElement,"enablehighqualityhwscalers", m_videoEnableHighQualityHwScalers);
|
||||
XMLUtils::GetFloat(pElement,"autoscalemaxfps",m_videoAutoScaleMaxFps, 0.0f, 1000.0f);
|
||||
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
|
||||
index b3a54ff..f50151a 100644
|
||||
--- a/xbmc/settings/AdvancedSettings.h
|
||||
+++ b/xbmc/settings/AdvancedSettings.h
|
||||
@@ -152,7 +152,7 @@ class CAdvancedSettings
|
||||
CStdString m_audioHost;
|
||||
bool m_audioApplyDrc;
|
||||
|
||||
- bool m_videoVDPAUScaling;
|
||||
+ int m_videoVDPAUScaling;
|
||||
float m_videoNonLinStretchRatio;
|
||||
bool m_videoEnableHighQualityHwScalers;
|
||||
float m_videoAutoScaleMaxFps;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -61,17 +61,17 @@ fi
|
||||
|
||||
case "$TARGET_ARCH" in
|
||||
arm)
|
||||
FFMPEG_CPU="--enable-armv5te --disable-armv6t2 --enable-armv6"
|
||||
FFMPEG_CPU=""
|
||||
FFMPEG_TABLES="--enable-hardcoded-tables"
|
||||
FFMPEG_PIC="--enable-pic"
|
||||
;;
|
||||
i?86)
|
||||
FFMPEG_CPU="--disable-armv5te --disable-armv6t2 --disable-armv6"
|
||||
FFMPEG_CPU=""
|
||||
FFMPEG_TABLES="--disable-hardcoded-tables"
|
||||
FFMPEG_PIC="--disable-pic"
|
||||
;;
|
||||
x86_64)
|
||||
FFMPEG_CPU="--disable-armv5te --disable-armv6t2 --disable-armv6"
|
||||
FFMPEG_CPU=""
|
||||
FFMPEG_TABLES="--disable-hardcoded-tables"
|
||||
FFMPEG_PIC="--enable-pic"
|
||||
;;
|
||||
@ -79,19 +79,19 @@ esac
|
||||
|
||||
case "$TARGET_FPU" in
|
||||
neon*)
|
||||
FFMPEG_FPU="--enable-neon --disable-armvfp"
|
||||
FFMPEG_FPU="--enable-neon"
|
||||
;;
|
||||
vfp*)
|
||||
FFMPEG_FPU="--enable-armvfp --disable-neon"
|
||||
FFMPEG_FPU=""
|
||||
;;
|
||||
*)
|
||||
FFMPEG_FPU="--disable-neon --disable-armvfp"
|
||||
FFMPEG_FPU=""
|
||||
;;
|
||||
esac
|
||||
|
||||
export pkg_config="$ROOT/$TOOLCHAIN/bin/pkg-config"
|
||||
|
||||
# libav fails building with LTO support
|
||||
# ffmpeg fails building with LTO support
|
||||
strip_lto
|
||||
|
||||
#LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")"
|
||||
@ -218,8 +218,5 @@ cd $PKG_BUILD/
|
||||
--disable-sram \
|
||||
--disable-symver \
|
||||
|
||||
#sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
|
||||
#sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
|
||||
|
||||
make V=1
|
||||
$MAKEINSTALL
|
||||
|
@ -19,7 +19,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="ffmpeg"
|
||||
PKG_VERSION="0.10.4"
|
||||
PKG_VERSION="0.10.5"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="LGPL"
|
||||
|
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