summaryrefslogtreecommitdiff
path: root/libre
diff options
context:
space:
mode:
authorJoshua Ismael Haase Hernández <hahj87@gmail.com>2011-09-19 11:59:33 -0500
committerJoshua Ismael Haase Hernández <hahj87@gmail.com>2011-09-19 11:59:33 -0500
commite40531aab32ff93b1f9da20d8a43a440d8dffaca (patch)
tree837260c74cb8eef56e640ee52b2e329e13719276 /libre
parent6fab33c9210eaa90d0a0179f7e49c339ea88990f (diff)
parent171f25215eee368fe64f1eed02ce49de090f4b0d (diff)
Merge branch 'master' of gitpar:abslibre-mips64el
Diffstat (limited to 'libre')
-rw-r--r--libre/audacious-plugins-libre/PKGBUILD122
-rw-r--r--libre/crosstool-ng/PKGBUILD16
-rw-r--r--libre/epdfview-libre/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch60
-rw-r--r--libre/epdfview-libre/PKGBUILD49
-rw-r--r--libre/epdfview-libre/epdfview.desktop.patch11
-rw-r--r--libre/epdfview-libre/epdfview.install12
-rw-r--r--libre/ghostscript-libre/PKGBUILD25
-rw-r--r--libre/ghostscript-libre/SRCBUILD32
-rw-r--r--libre/ghostscript-libre/ghostscript-cups-rgbw.patch264
-rw-r--r--libre/gnustep-base-libre/PKGBUILD39
-rw-r--r--libre/gnustep-make-libre/PKGBUILD31
-rw-r--r--libre/initscripts/PKGBUILD15
-rw-r--r--libre/initscripts/initscripts.install8
-rw-r--r--libre/initscripts/parabola-branding.patch52
-rw-r--r--libre/linux-libre/PKGBUILD59
-rw-r--r--libre/linux-libre/config.i686283
-rw-r--r--libre/linux-libre/config.x86_64261
-rw-r--r--libre/linux-libre/dib0700-fix.patch1487
-rw-r--r--libre/linux-libre/i915-fix-ghost-tv-output.patch26
-rw-r--r--libre/linux-libre/i915-fix-incorrect-error-message.patch22
-rw-r--r--libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch38
-rw-r--r--libre/linux-libre/linux-libre.install7
-rw-r--r--libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch41
-rw-r--r--libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch99
-rw-r--r--libre/mplayer-libre/PKGBUILD7
-rw-r--r--libre/pacman/PKGBUILD14
-rw-r--r--libre/sqlite3/PKGBUILD10
-rw-r--r--libre/texlive-bin-libre/PKGBUILD19
-rw-r--r--libre/unarchiver/PKGBUILD2
-rw-r--r--libre/ununrar/PKGBUILD22
-rw-r--r--libre/virtualbox-libre/10-vboxdrv.rules (renamed from libre/virtualbox/10-vboxdrv.rules)1
-rw-r--r--libre/virtualbox-libre/18-system-xorg.patch (renamed from libre/virtualbox/18-system-xorg.patch)0
-rw-r--r--libre/virtualbox-libre/60-vboxguest.rules (renamed from libre/virtualbox/60-vboxguest.rules)0
-rw-r--r--libre/virtualbox-libre/LocalConfig.kmk (renamed from libre/virtualbox/LocalConfig.kmk)1
-rw-r--r--libre/virtualbox-libre/PKGBUILD (renamed from libre/virtualbox/PKGBUILD)99
-rw-r--r--libre/virtualbox-libre/change_default_driver_dir.patch (renamed from libre/virtualbox/change_default_driver_dir.patch)1
-rw-r--r--libre/virtualbox-libre/vbox-service.conf (renamed from libre/virtualbox/vbox-service.conf)1
-rw-r--r--libre/virtualbox-libre/vbox-service.rc (renamed from libre/virtualbox/vbox-service.rc)1
-rw-r--r--libre/virtualbox-libre/vboxbuild (renamed from libre/virtualbox/vboxbuild)3
-rw-r--r--libre/virtualbox-libre/vboxdrv-reference.patch (renamed from libre/virtualbox/vboxdrv-reference.patch)1
-rw-r--r--libre/virtualbox-libre/virtualbox-4-makeself-check.patch (renamed from libre/virtualbox/virtualbox-4-makeself-check.patch)0
-rw-r--r--libre/virtualbox-libre/virtualbox-4-mkisofs-check.patch (renamed from libre/virtualbox/virtualbox-4-mkisofs-check.patch)0
-rw-r--r--libre/virtualbox-libre/virtualbox-parabola-modules.install (renamed from libre/virtualbox/virtualbox-parabola-modules.install)0
-rw-r--r--libre/virtualbox-libre/virtualbox-source.install13
-rw-r--r--libre/virtualbox-libre/virtualbox.install34
-rw-r--r--libre/virtualbox-parabola-modules/60-vboxguest.rules2
-rw-r--r--libre/virtualbox-parabola-modules/LocalConfig.kmk19
-rw-r--r--libre/virtualbox-parabola-modules/PKGBUILD103
-rw-r--r--libre/virtualbox-parabola-modules/virtualbox-modules.install19
-rw-r--r--libre/virtualbox-parabola-modules/virtualbox-parabola-modules.install17
-rw-r--r--libre/virtualbox/virtualbox.install52
51 files changed, 2962 insertions, 538 deletions
diff --git a/libre/audacious-plugins-libre/PKGBUILD b/libre/audacious-plugins-libre/PKGBUILD
index 0b6af2cd2..e0607a940 100644
--- a/libre/audacious-plugins-libre/PKGBUILD
+++ b/libre/audacious-plugins-libre/PKGBUILD
@@ -1,33 +1,48 @@
# $Id$
-# Contributor: Alexander Fehr <pizzapunk gmail com>
-# Contributor: William Rea <sillywilly@gmail.com>
+# Arch Contributor: Alexander Fehr <pizzapunk gmail com>
+# Arch Contributor: William Rea <sillywilly@gmail.com>
+# Arch maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Parabola maintainer: Brendan Tildesley
pkgname=audacious-plugins-libre
-pkgver=2.5.1
-pkgrel=2
+pkgver=3.1
+pkgrel=1
pkgdesc='Plugins for Audacious without unfree plugins'
-arch=('i686' 'x86_64' 'mips64el')
url='http://audacious-media-player.org/'
-license=('GPL')
+arch=('i686' 'x86_64' 'mips64el')
+license=('GPL' 'GPL3' 'LGPL' 'custom')
+
+# Licensing issues:
+# The plugins 'scrobbler', stereoplugin', 'wavepack' and 'plugin_echo' have no license notice
+# but I've been informed by an upstream dev, <nenolod>, that they are all GPL of some type.
+#
+# The plugin 'psf' is currently BSD+noncommercial, but is apparently being changed to GPL.
+# However, 'psf' is apparently an emulator for running non-free code, so I'll leave it out.
+#
+# All the other custom licensed plugins I think are mostly modified BSD or ISC.
+
provides=("audacious-plugins=$pkgver")
replaces=("${pkgname%-libre}")
conflicts=("${pkgname%-libre}")
makedepends=("audacious>=${pkgver}"
- 'alsa-lib' 'pulseaudio' 'jack' 'lame' 'libvorbis' 'flac'
- 'faad2' 'ffmpeg' 'fluidsynth' 'libcdio' 'libsidplay' 'wavpack'
+ 'oss' 'alsa-lib' 'pulseaudio' 'jack2' 'lame' 'libvorbis' 'flac'
+ 'mpg123' 'faad2' 'ffmpeg' 'libmodplug' 'fluidsynth' 'libcdio' 'libsidplay' 'wavpack'
'libnotify' 'lirc-utils' 'curl' 'libmtp'
'neon' 'libmms' 'libcue')
-optdepends=('alsa-lib: Advanced Linux Sound Arch. output'
+optdepends=('oss: Open Sound System v4 output'
+ 'alsa-lib: Advanced Linux Sound Arch. output'
'pulseaudio: PulseAudio output'
- 'jack: Jack Audio Connection Kit output'
+ 'jack2: Jack Audio Connection Kit output'
'lame: FileWriter MP3 output'
'libvorbis: Vorbis input, FileWriter Vorbis output'
'flac: FLAC input, FileWriter FLAC output'
+ 'mpg123: MP3 input'
'faad2: AAC input'
'ffmpeg: ffaudio input'
+ 'libmodplug: modplug input'
'fluidsynth: MIDI FluidSynth backend input'
'libcdio: CD Digital Audio input'
'libsidplay: Commodore 64 audio input'
@@ -42,44 +57,77 @@ optdepends=('alsa-lib: Advanced Linux Sound Arch. output'
'libmms: libmms-based mms transport'
'libcue: CUE playlist format')
-source=("http://repo.parabolagnulinux.org/other/$pkgname-$pkgver.tar.gz")
+source=("http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.xz")
+sha1sums=('d5f2ef19cda220d6fa7dd26c514c5c22c8dd7b42')
-# Source PKGBUILD and run this function from the shell
+# Retrieve upstream & remove plugins 'psf' & 'usf' due to issues mentioned above. Repackage as -libre
mksource(){
- tmpdir=$(mktemp -d /tmp/audacious-XXXX)
- pushd $tmpdir >/dev/null
- wget "http://distfiles.atheme.org/${pkgname%-libre}-$pkgver.tgz" -O - -q | tar xzf -
-
- rm -rvf ${pkgname%-libre}-$pkgver/src/{u,p}sf/
+ [ -f ${pkgname%-libre}-$pkgver.tar.gz ] || wget http://distfiles.atheme.org/${pkgname%-libre}-$pkgver.tar.gz
+ tar xzf ${pkgname%-libre}-${pkgver}.tar.gz
- mv -v ${pkgname%-libre}-$pkgver ${pkgname}-$pkgver
+ rm -rvf ${pkgname%-libre}-$pkgver/src/{p,u}usf/
+ sed -i s/enable_psf=yes/enable_psf=no/ ${pkgname%-libre}-$pkgver/configure
- tar czf ${pkgname}-${pkgver}.tar.gz ${pkgname}-${pkgver}/
+ mv -v ${pkgname%-libre}-$pkgver ${pkgname}-$pkgver
+ tar cJf ${pkgname}-${pkgver}.tar.xz ${pkgname}-${pkgver}/
+ rm -rf ${pkgname}-${pkgver}
+ echo "${pkgname}-${pkgver}.tar.xz is your new -libre source package."
- echo "You can find the sources at $tmpdir"
-
- popd >/dev/null
}
build() {
- cd "$srcdir/$pkgname-$pkgver"
-
- sed 's/libavcore >= 0.12.0//g' -i configure # FS#23549
-
- [[ $CARCH == x86_64 ]] && extraopts='' || extraopts='--disable-sse2'
- ./configure \
- --prefix=/usr \
- --enable-chardet \
- --enable-amidiplug \
- --disable-adplug \
- --disable-psf \
- $extraopts \
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # hack to enable global hotkeys with gtk3
+ sed -e 's/gdk-x11-2.0/gdk-x11-3.0/g' -i configure
+
+ # Get license notices out of custom-licensed packages
+ cd src
+ tmpdir=$(mktemp -d /tmp/${pkgname}-${pkgver}-XXXX)
+ head -n 18 albumart/albumart.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.albumart
+ head -n 17 alsa/alsa.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.alsa
+ head -n 18 cairo-spectrum/cairo-spectrum.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.cairo-spectrum
+ head -n 17 compressor/compressor.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.compressor
+ head -n 17 crossfade/crossfade.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.crossfade
+ head -n 18 crystalizer/crystalizer.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.crystalizer
+ head -n 22 dockalbumart/dockalbumart.c | cut -c 4- | tail -n 21 > ${tmpdir}/LICENSE.dockalbumart
+ head -n 18 lyricwiki/lyricwiki.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.lyricwiki
+ head -n 19 mpg123/mpg123.c | cut -c 4- | tail -n 18 > ${tmpdir}/LICENSE.mpg123
+ head -n 17 openal/openal.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.openal
+ head -n 17 resample/resample.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.resample
+ head -n 18 roaraudio-vio/roaraudio-vio.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.roaraudio-vio
+ head -n 17 unix-io/unix-io.c | cut -c 4- | tail -n 16 > ${tmpdir}/LICENSE.unix-io
+ head -n 18 voice_removal/voice_removal.c | cut -c 4- | tail -n 17 > ${tmpdir}/LICENSE.voice_removal
+ head -n 25 xsf/corlett.c | cut -c 2- | tail -n 23 > ${tmpdir}/LICENSE.xfs
+ l=${pkgdir}/usr/share/licenses/${pkgname}/
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ cd ..
+ pushd $tmpdir
+ install -m644 LICENSE.albumart $l
+ install -m644 LICENSE.alsa $l
+ install -m644 LICENSE.cairo-spectrum $l
+ install -m644 LICENSE.compressor $l
+ install -m644 LICENSE.crossfade $l
+ install -m644 LICENSE.crystalizer $l
+ install -m644 LICENSE.dockalbumart $l
+ install -m644 LICENSE.lyricwiki $l
+ install -m644 LICENSE.mpg123 $l
+ install -m644 LICENSE.openal $l
+ install -m644 LICENSE.resample $l
+ install -m644 LICENSE.roaraudio-vio $l
+ install -m644 LICENSE.unix-io $l
+ install -m644 LICENSE.voice_removal $l
+ install -m644 LICENSE.xfs $l
+ popd
+
+ ./configure --prefix=/usr \
+ --enable-amidiplug \
+ --disable-adplug
make
}
package() {
- cd "$srcdir/$pkgname-$pkgver"
- make DESTDIR="$pkgdir" install
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
-md5sums=('510b325eb3b13621b6f0e6745f6d0961')
diff --git a/libre/crosstool-ng/PKGBUILD b/libre/crosstool-ng/PKGBUILD
index e59e1b037..c836e7a24 100644
--- a/libre/crosstool-ng/PKGBUILD
+++ b/libre/crosstool-ng/PKGBUILD
@@ -2,22 +2,21 @@
# Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar>
pkgname=crosstool-ng
-pkgver=1.11.3
-pkgrel=2
+pkgver=1.13.0
+pkgrel=1
pkgdesc="A versatile cross toolchain generator (eglibc addons patch)"
arch=('i686' 'x86_64' 'mips64el')
url="http://crosstool-ng.org/"
license=(GPL2)
-depends=('cvs')
+depends=('cvs' 'curl')
+makedepends=('libtool')
optdepends=('subversion: for retrieving eglibc sources')
-source=(http://crosstool-ng.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2
- libc_ports_short_name.patch)
-md5sums=('3830cbdcc7e1a60c93caeaf98f718187'
- '0a95af7e6ba35e02e38c71a3121b4448')
+source=(http://crosstool-ng.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+ #libc_ports_short_name.patch)
build() {
cd $srcdir/$pkgname-$pkgver
- patch -Np1 -i $srcdir/libc_ports_short_name.patch
+ #patch -Np1 -i $srcdir/libc_ports_short_name.patch
./configure --prefix=/usr
make
@@ -27,3 +26,4 @@ package() {
cd $srcdir/$pkgname-$pkgver
make DESTDIR=$pkgdir install
}
+md5sums=('55fba9f37b9f9ed0aeb6c50fbd8b6429')
diff --git a/libre/epdfview-libre/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch b/libre/epdfview-libre/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch
new file mode 100644
index 000000000..e077a15cf
--- /dev/null
+++ b/libre/epdfview-libre/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch
@@ -0,0 +1,60 @@
+From d30496f52b85f82947bd07b9bd60f8482843ece8 Mon Sep 17 00:00:00 2001
+From: jordi <jordi@cb4bfb15-1111-0410-82e2-95233c8f1c7e>
+Date: Tue, 5 Jul 2011 09:23:38 +0000
+Subject: [PATCH 1/2] When using Poppler 0.17.0, I needed to swap the blue and
+ red channels, otherwise the colors (other than black
+ and white) looked wierd.
+
+git-svn-id: svn://svn.emma-soft.com/epdfview/trunk@367 cb4bfb15-1111-0410-82e2-95233c8f1c7e
+---
+ src/PDFDocument.cxx | 20 ++++++++++++++++++++
+ 1 files changed, 20 insertions(+), 0 deletions(-)
+
+diff --git a/src/PDFDocument.cxx b/src/PDFDocument.cxx
+index df5d75f..63b3513 100644
+--- a/src/PDFDocument.cxx
++++ b/src/PDFDocument.cxx
+@@ -20,6 +20,7 @@
+ #include <time.h>
+ #include <poppler.h>
+ #include <unistd.h>
++#include <algorithm>
+ #include "epdfview.h"
+
+ using namespace ePDFView;
+@@ -33,6 +34,24 @@ static PageLayout convertPageLayout (gint pageLayout);
+ static PageMode convertPageMode (gint pageMode);
+ static gchar *getAbsoluteFileName (const gchar *fileName);
+
++namespace
++{
++ void
++ convert_bgra_to_rgba (guint8 *data, int width, int height)
++ {
++ using std::swap;
++
++ for (int y = 0; y < height; y++)
++ {
++ for (int x = 0; x < width; x++)
++ {
++ swap(data[0], data[2]);
++ data += 4;
++ }
++ }
++ }
++}
++
+ ///
+ /// @brief Constructs a new PDFDocument object.
+ ///
+@@ -650,6 +669,7 @@ PDFDocument::renderPage (gint pageNum)
+ poppler_page_render (page, context);
+ cairo_destroy(context);
+ cairo_surface_destroy (surface);
++ convert_bgra_to_rgba(renderedPage->getData (), width, height);
+ #else // !HAVE_POPPLER_0_17_0
+ // Create the pixbuf from the data and render to it.
+ GdkPixbuf *pixbuf = gdk_pixbuf_new_from_data (renderedPage->getData (),
+--
+1.7.7
+
diff --git a/libre/epdfview-libre/PKGBUILD b/libre/epdfview-libre/PKGBUILD
new file mode 100644
index 000000000..9923ad1cf
--- /dev/null
+++ b/libre/epdfview-libre/PKGBUILD
@@ -0,0 +1,49 @@
+# Parabola maintainer: Michał Masłowski <mtjm@mtjm.eu>
+# $Id: PKGBUILD 57042 2011-10-19 06:13:49Z schuay $
+# Maintainer: schuay <jakob.gruber@gmail.com>
+# Contributor: Tom K <tomk@runbox.com>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+
+pkgname=epdfview-libre
+_pkgname=epdfview
+pkgver=0.1.8
+pkgrel=3
+pkgdesc="A free lightweight PDF document viewer."
+url="http://www.emma-soft.com/projects/epdfview/"
+arch=('i686' 'x86_64' 'mips64el')
+license=('GPL')
+depends=('poppler-glib' 'desktop-file-utils' 'hicolor-icon-theme' 'gtk2' 'xdg-utils')
+makedepends=('pkgconfig')
+provides=('epdfview')
+conflicts=('epdfview')
+replaces=('epdfview')
+install='epdfview.install'
+source=("http://www.emma-soft.com/projects/${_pkgname}/chrome/site/releases/${_pkgname}-${pkgver}.tar.bz2"
+ "${_pkgname}.desktop.patch"
+ "0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch")
+md5sums=('e50285b01612169b2594fea375f53ae4'
+ 'fbf22bbabdbb7544db615ac5775d57e2'
+ '7f9ea101a41f5b4e999fd024f423d41f')
+
+build() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/${_pkgname}.desktop.patch"
+ patch -Np1 -i "${srcdir}/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch"
+
+ # Use xdg-open as default browser.
+ sed -r '/DEFAULT_EXTERNAL_BROWSER_COMMAND_LINE/s/firefox[^ ]*/xdg-open/' -i src/Config.cxx
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+package() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ for size in 24 32 48; do
+ install -Dm644 data/icon_${_pkgname}-${size}.png \
+ "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/${_pkgname}.png"
+ done
+}
diff --git a/libre/epdfview-libre/epdfview.desktop.patch b/libre/epdfview-libre/epdfview.desktop.patch
new file mode 100644
index 000000000..d86fc3088
--- /dev/null
+++ b/libre/epdfview-libre/epdfview.desktop.patch
@@ -0,0 +1,11 @@
+--- data/epdfview.desktop.bak 2009-04-05 16:55:56.000000000 -0700
++++ data/epdfview.desktop 2009-04-05 16:56:33.000000000 -0700
+@@ -7,7 +7,7 @@
+ GenericName=PDF Viewer
+ GenericName[ca]=Visor PDF
+ GenericName[es]=Visor PDF
+-Icon=icon_epdfview-48
++Icon=epdfview
+ Name=ePDFViewer
+ Name[ca]=ePDFViewer
+ Name[es]=ePDFViewer
diff --git a/libre/epdfview-libre/epdfview.install b/libre/epdfview-libre/epdfview.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/libre/epdfview-libre/epdfview.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/libre/ghostscript-libre/PKGBUILD b/libre/ghostscript-libre/PKGBUILD
index 80a61b2af..81796c041 100644
--- a/libre/ghostscript-libre/PKGBUILD
+++ b/libre/ghostscript-libre/PKGBUILD
@@ -3,12 +3,12 @@
# Maintainer (Parabola): xihh
pkgname=ghostscript-libre
-pkgver=9.02
-pkgrel=2
+pkgver=9.04
+pkgrel=5
pkgdesc="An interpreter for the PostScript language without non-free files"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL3') #non free files removed
-depends=('libxt' 'libcups' 'fontconfig' 'jasper' 'zlib' 'libpng' 'libjpeg' 'libtiff')
+depends=('libxt' 'libcups' 'fontconfig' 'jasper' 'zlib' 'libpng' 'libjpeg' 'libtiff' 'lcms') # 'lcms2' won't get used) # move in libpaper from community?
makedepends=('gtk2' 'gnutls')
optdepends=('texlive-core: needed for dvipdf'
'gtk2: needed for gsx')
@@ -16,17 +16,18 @@ conflicts=('ghostscript')
replaces=('ghostscript-lrpng' 'ghostscript')
provides=('ghostscript-lprng' "ghostscript=$pkgver")
url="http://www.ghostscript.com/"
-source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2)
+source=(https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}-${pkgrel}-any.src.tar.xz
+ ghostscript-cups-rgbw.patch)
options=('!libtool' '!makeflags')
-md5sums=('f67151444bd56a7904579fc75a083dd6')
build() {
cd ${srcdir}/ghostscript-${pkgver}
+
+ # fix broken color printing https://bugs.archlinux.org/task/25519
+ patch -Np1 -i ${srcdir}/ghostscript-cups-rgbw.patch
# force it to use system-libs
- rm -rf jpeg libpng zlib jasper expat tiff
- # delete non-free packages
- grep -l "are not altered" Resource/CMap/* | xargs rm -fv
+ rm -rf jpeg libpng zlib jasper expat tiff freetype lcms
./configure --prefix=/usr \
--enable-dynamic \
@@ -36,7 +37,11 @@ build() {
--with-x \
--with-drivers=ALL\
--with-fontpath=/usr/share/fonts/Type1:/usr/share/fonts \
- --disable-compile-inits # needed for linking with system-zlib
+ --with-install-cups \
+ --enable-fontconfig \
+ --enable-freetype \
+ --without-luratech \
+ --disable-compile-inits #--help # needed for linking with system-zlib
make
# Build IJS
@@ -65,3 +70,5 @@ package() {
cd ${srcdir}/ghostscript-${pkgver}/ijs
make DESTDIR=${pkgdir} install
}
+md5sums=('ac8f77c94a6b5d5f0170c2e6db38c6bb'
+ 'fd89baafac6589dc93ba71a48c2ba9b4')
diff --git a/libre/ghostscript-libre/SRCBUILD b/libre/ghostscript-libre/SRCBUILD
new file mode 100644
index 000000000..dc28e857e
--- /dev/null
+++ b/libre/ghostscript-libre/SRCBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 123066 2011-05-07 23:01:49Z stephane $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Maintainer (Parabola): xihh
+
+pkgname=ghostscript-libre
+pkgver=9.04
+pkgrel=5
+pkgdesc="An interpreter for the PostScript language without non-free files"
+arch=('any')
+license=('GPL3') #non free files removed
+url="http://www.ghostscript.com/"
+source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2)
+md5sums=('9f6899e821ab6d78ab2c856f10fa3023')
+options=(!strip !docs !libtool !emptydirs !zipman !purge)
+
+build() {
+ cd ${srcdir}/ghostscript-${pkgver}
+
+ export PKGEXT=.src.tar.xz
+
+ # delete non-free packages
+ grep -l "are not altered" Resource/CMap/* | xargs rm -fv
+}
+
+package() {
+ cd ${srcdir}
+ export PKGEXT=.src.tar.xz
+ export PKGDEST=${startdir}
+
+ mv ghostscript-${pkgver} ${pkgdir}/
+
+}
diff --git a/libre/ghostscript-libre/ghostscript-cups-rgbw.patch b/libre/ghostscript-libre/ghostscript-cups-rgbw.patch
new file mode 100644
index 000000000..00f99c844
--- /dev/null
+++ b/libre/ghostscript-libre/ghostscript-cups-rgbw.patch
@@ -0,0 +1,264 @@
+diff -up ghostscript-9.04/cups/gdevcups.c.cups-rgbw ghostscript-9.04/cups/gdevcups.c
+--- ghostscript-9.04/cups/gdevcups.c.cups-rgbw 2011-08-05 12:12:21.000000000 +0100
++++ ghostscript-9.04/cups/gdevcups.c 2011-08-22 10:54:24.614010581 +0100
+@@ -225,6 +225,7 @@ typedef struct gx_device_cups_s
+ unsigned short EncodeLUT[gx_max_color_value + 1];/* RGB value to output color LUT */
+ int Density[CUPS_MAX_VALUE + 1];/* Density LUT */
+ int Matrix[3][3][CUPS_MAX_VALUE + 1];/* Color transform matrix LUT */
++ int user_icc;
+ int cupsRasterVersion;
+
+ /* Used by cups_put_params(): */
+@@ -426,6 +427,7 @@ gx_device_cups gs_cups_device =
+ {0x00}, /* EncodeLUT */
+ {0x00}, /* Density */
+ {0x00}, /* Matrix */
++ 0,
+ 3 /* cupsRasterVersion */
+ };
+
+@@ -1182,15 +1184,18 @@ cups_map_cmyk(gx_device *pdev, /* I - D
+
+ case CUPS_CSPACE_RGB :
+ case CUPS_CSPACE_RGBW :
++ c0 = c + k;
++ c1 = m + k;
++ c2 = y + k;
+ if (cups->header.cupsColorSpace == CUPS_CSPACE_RGBW) {
+- c0 = c;
+- c1 = m;
+- c2 = y;
+- c3 = k;
+- } else {
+- c0 = c + k;
+- c1 = m + k;
+- c2 = y + k;
++ if ((k >= frac_1 - 1) ||
++ ((c0 >= frac_1) && (c1 >= frac_1) && (c2 >= frac_1))) {
++ c0 = frac_1;
++ c1 = frac_1;
++ c2 = frac_1;
++ c3 = frac_1;
++ } else
++ c3 = 0;
+ }
+
+ if (c0 < 0)
+@@ -1212,11 +1217,12 @@ cups_map_cmyk(gx_device *pdev, /* I - D
+ out[2] = frac_1 - (frac)cups->Density[c2];
+
+ if (cups->header.cupsColorSpace == CUPS_CSPACE_RGBW) {
+- if (c3 < 0)
+- c3 = 0;
+- else if (c3 > frac_1)
+- c3 = frac_1;
+- out[3] = frac_1 - (frac)cups->Density[c3];
++ if (c3 == 0)
++ out[3] = frac_1;
++ else if (c3 == frac_1)
++ out[3] = 0;
++ else
++ out[3] = frac_1;
+ }
+ break;
+
+@@ -2034,10 +2040,15 @@ cups_map_color_rgb(gx_device *pdev,
+ * cups->DecodeLUT actually maps to RGBW, not CMYK...
+ */
+
+- k = cups->DecodeLUT[c3];
+- c = cups->DecodeLUT[c0] + k - gx_max_color_value;
+- m = cups->DecodeLUT[c1] + k - gx_max_color_value;
+- y = cups->DecodeLUT[c2] + k - gx_max_color_value;
++ if (c3 == 0) {
++ c = 0;
++ m = 0;
++ y = 0;
++ } else {
++ c = cups->DecodeLUT[c0];
++ m = cups->DecodeLUT[c1];
++ y = cups->DecodeLUT[c2];
++ }
+
+ if (c > gx_max_color_value)
+ prgb[0] = gx_max_color_value;
+@@ -2282,20 +2293,20 @@ cups_map_rgb_color(gx_device *pdev,
+ switch (cups->header.cupsBitsPerColor)
+ {
+ default :
+- i = 0x0e;
++ i = 0x00;
+ break;
+ case 2 :
+- i = 0xfc;
++ i = 0x00;
+ break;
+ case 4 :
+- i = 0xfff0;
++ i = 0x0000;
+ break;
+ case 8 :
+- i = 0xffffff00;
++ i = 0x00000000;
+ break;
+ #ifdef GX_COLOR_INDEX_TYPE
+ case 16 :
+- i = 0xffffffffffff0000;
++ i = 0x0000000000000000;
+ break;
+ #endif /* GX_COLOR_INDEX_TYPE */
+ }
+@@ -2929,7 +2940,10 @@ cups_put_params(gx_device *pdev, /*
+ int xflip = 0,
+ yflip = 0;
+ int found = 0;
+-
++ gs_param_string icc_pro_dummy;
++ int old_cmps = cups->color_info.num_components;
++ int old_depth = cups->color_info.depth;
++
+ #ifdef DEBUG
+ dprintf2("DEBUG2: cups_put_params(%p, %p)\n", pdev, plist);
+ #endif /* DEBUG */
+@@ -3024,6 +3038,11 @@ cups_put_params(gx_device *pdev, /*
+ margins_set = param_read_float_array(plist, "Margins", &arrayval) == 0;
+ color_set = param_read_int(plist, "cupsColorSpace", &intval) == 0 ||
+ param_read_int(plist, "cupsBitsPerColor", &intval) == 0;
++
++ if (!cups->user_icc) {
++ cups->user_icc = param_read_string(plist, "OutputICCProfile", &icc_pro_dummy) == 0;
++ }
++
+ /* We set the old dimensions to 1 if we have a color depth change, so
+ that memory reallocation gets forced. This is perhaps not the correct
+ approach to prevent crashes like in bug 690435. We keep it for the
+@@ -3134,12 +3153,20 @@ cups_put_params(gx_device *pdev, /*
+ if ((code = gdev_prn_put_params(pdev, plist)) < 0)
+ return (code);
+
++ /* If cups_set_color_info() changed the color model of the device we want to
++ * force the raster memory to be recreated/reinitialized
++ */
++ if (cups->color_info.num_components != old_cmps || cups->color_info.depth != old_depth) {
++ width_old = 0;
++ height_old = 0;
++ }
++ else {
+ /* pdev->width/height may have been changed by the call to
+ * gdev_prn_put_params()
+ */
+- width_old = pdev->width;
+- height_old = pdev->height;
+-
++ width_old = pdev->width;
++ height_old = pdev->height;
++ }
+ /*
+ * Update margins/sizes as needed...
+ */
+@@ -4044,22 +4071,88 @@ cups_set_color_info(gx_device *pdev) /*
+ for (k = 0; k <= CUPS_MAX_VALUE; k ++)
+ cups->Density[k] = k;
+ }
+- /* Set up the ICC profile for ghostscript to use based upon the color space.
+- This is different than the PPD profile above which appears to be some sort
+- of matrix based TRC profile */
+- switch (cups->header.cupsColorSpace) {
+- /* Use RGB profile for this */
+- case CUPS_CSPACE_RGBW:
+- if (pdev->icc_struct == NULL) {
+- pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
+- }
+- if (pdev->icc_struct->device_profile[gsDEFAULTPROFILE] == NULL) {
+- code = gsicc_set_device_profile(pdev, pdev->memory,
+- DEFAULT_RGB_ICC, gsDEFAULTPROFILE);
+- }
+- break;
+- default:
+- break;
++ if (!cups->user_icc) {
++ /* Set up the ICC profile for ghostscript to use based upon the color space.
++ This is different than the PPD profile above which appears to be some sort
++ of matrix based TRC profile */
++ switch (cups->header.cupsColorSpace)
++ {
++ default :
++ case CUPS_CSPACE_RGBW :
++ case CUPS_CSPACE_RGB :
++ case CUPS_CSPACE_RGBA :
++ case CUPS_CSPACE_CMY :
++ case CUPS_CSPACE_YMC :
++# ifdef CUPS_RASTER_HAVE_COLORIMETRIC
++ case CUPS_CSPACE_CIELab :
++ case CUPS_CSPACE_ICC1 :
++ case CUPS_CSPACE_ICC2 :
++ case CUPS_CSPACE_ICC3 :
++ case CUPS_CSPACE_ICC4 :
++ case CUPS_CSPACE_ICC5 :
++ case CUPS_CSPACE_ICC6 :
++ case CUPS_CSPACE_ICC7 :
++ case CUPS_CSPACE_ICC8 :
++ case CUPS_CSPACE_ICC9 :
++ case CUPS_CSPACE_ICCA :
++ case CUPS_CSPACE_ICCB :
++ case CUPS_CSPACE_ICCC :
++ case CUPS_CSPACE_ICCD :
++ case CUPS_CSPACE_ICCE :
++ case CUPS_CSPACE_ICCF :
++# endif /* CUPS_RASTER_HAVE_COLORIMETRIC */
++ if (!pdev->icc_struct || (pdev->icc_struct &&
++ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsRGB)) {
++
++ if (pdev->icc_struct) {
++ rc_decrement(pdev->icc_struct, "cups_set_color_info");
++ }
++ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
++
++ code = gsicc_set_device_profile(pdev, pdev->memory,
++ (char *)DEFAULT_RGB_ICC, gsDEFAULTPROFILE);
++ }
++ break;
++
++ case CUPS_CSPACE_W :
++ case CUPS_CSPACE_WHITE :
++ case CUPS_CSPACE_K :
++ case CUPS_CSPACE_GOLD :
++ case CUPS_CSPACE_SILVER :
++ if (!pdev->icc_struct || (pdev->icc_struct &&
++ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsGRAY)) {
++
++ if (pdev->icc_struct) {
++ rc_decrement(pdev->icc_struct, "cups_set_color_info");
++ }
++ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
++
++ code = gsicc_set_device_profile(pdev, pdev->memory->non_gc_memory,
++ (char *)DEFAULT_GRAY_ICC, gsDEFAULTPROFILE);
++ }
++ break;
++ case CUPS_CSPACE_KCMYcm :
++# ifdef CUPS_RASTER_HAVE_COLORIMETRIC
++ case CUPS_CSPACE_CIEXYZ :
++#endif
++ case CUPS_CSPACE_CMYK :
++ case CUPS_CSPACE_YMCK :
++ case CUPS_CSPACE_KCMY :
++ case CUPS_CSPACE_GMCK :
++ case CUPS_CSPACE_GMCS :
++ if (!pdev->icc_struct || (pdev->icc_struct &&
++ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsCMYK)) {
++
++ if (pdev->icc_struct) {
++ rc_decrement(pdev->icc_struct, "cups_set_color_info");
++ }
++ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
++
++ code = gsicc_set_device_profile(pdev, pdev->memory,
++ (char *)DEFAULT_CMYK_ICC, gsDEFAULTPROFILE);
++ }
++ break;
++ }
+ }
+ }
+
+
diff --git a/libre/gnustep-base-libre/PKGBUILD b/libre/gnustep-base-libre/PKGBUILD
new file mode 100644
index 000000000..9017c71b4
--- /dev/null
+++ b/libre/gnustep-base-libre/PKGBUILD
@@ -0,0 +1,39 @@
+# Parabola maintainer: Michał Masłowski <mtjm@mtjm.eu>
+# $Id: PKGBUILD 56058 2011-09-29 17:45:33Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Sebastian Sareyko <public@nooms.de>
+
+_pkgname=gnustep-base
+pkgname=gnustep-base-libre
+pkgver=1.23.0
+pkgrel=1
+pkgdesc="The GNUstep base package with exceptions enabled"
+arch=('i686' 'x86_64')
+url="http://www.gnustep.org/"
+license=("GPL" "LGPL")
+depends=(libxslt avahi gmp gcc-libs openssl libffi gnustep-make-libre gnutls)
+makedepends=(gcc-objc)
+conflicts=('gnustep-base-svn' 'gnustep-base')
+provides=('gnustep-base')
+groups=('gnustep-core')
+options=('!emptydirs' '!makeflags')
+source=(ftp://ftp.gnustep.org/pub/gnustep/core/$_pkgname-$pkgver.tar.gz)
+md5sums=('c898a1b6cdc98e83639f319876bdbba6')
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ source /etc/profile.d/GNUstep.sh
+ ./configure --prefix=/usr --sysconfdir=/etc/GNUstep \
+ --with-ffi-include=/usr/lib/libffi-`pacman -Q libffi | cut -f2 -d\ |cut -f1 -d-`/include/
+ # fix file ownership
+ sed -i 's/tar -xf $(TIMEZONE_ARCHIVE);/tar -xf $(TIMEZONE_ARCHIVE);chown -R root:root * ;/' NSTimeZones/Makefile.postamble
+ sed -i 's|.*gnutls_transport_set_lowat.*||' Source/GSSocketStream.m
+ make VERBOSE=1
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ chown -R root.root "$pkgdir/"
+}
diff --git a/libre/gnustep-make-libre/PKGBUILD b/libre/gnustep-make-libre/PKGBUILD
new file mode 100644
index 000000000..dedf944a3
--- /dev/null
+++ b/libre/gnustep-make-libre/PKGBUILD
@@ -0,0 +1,31 @@
+# Parabola maintainer: Michał Masłowski <mtjm@mtjm.eu>
+# $Id: PKGBUILD 56053 2011-09-29 17:24:54Z spupykin $
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Sebastian Sareyko <public@nooms.de>
+
+_pkgname=gnustep-make
+pkgname=gnustep-make-libre
+pkgver=2.6.1
+pkgrel=1
+pkgdesc="The GNUstep make package with exceptions enabled"
+arch=('any')
+url="http://www.gnustep.org/"
+license=('GPL')
+depends=('glibc')
+conflicts=('gnustep-make-svn' 'gnustep-make')
+provides=('gnustep-make')
+groups=('gnustep-core')
+source=(ftp://ftp.gnustep.org/pub/gnustep/core/${_pkgname}-$pkgver.tar.gz)
+md5sums=('071b3a807ca3ec93cda75ac210adc263')
+
+build() {
+ cd $srcdir/${_pkgname}-$pkgver
+ # The option is not needed, but makes clear why we rebuild this.
+ ./configure --prefix=/usr --sysconfdir=/etc/GNUstep \
+ --enable-native-objc-exceptions
+ make
+ make DESTDIR=$pkgdir install
+ install -D -m755 \
+ $pkgdir/usr/share/GNUstep/Makefiles/GNUstep.sh \
+ $pkgdir/etc/profile.d/GNUstep.sh
+}
diff --git a/libre/initscripts/PKGBUILD b/libre/initscripts/PKGBUILD
index 7828e7eb4..3c5212895 100644
--- a/libre/initscripts/PKGBUILD
+++ b/libre/initscripts/PKGBUILD
@@ -1,32 +1,33 @@
-# $Id: PKGBUILD 120250 2011-04-21 17:00:05Z ibiru $
+# $Id: PKGBUILD 140751 2011-10-18 16:38:38Z tomegun $
# Maintainer: Tom Gundersen <teg@jklm.no>
# Maintainer: Thomas Bächler <thomas@archlinux.org>
# Maintainer: Aaron Griffin <aaron@archlinux.org>
# Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar>
pkgname=initscripts
-pkgver=2011.06.4
-pkgrel=2
+pkgver=2011.10.3
+pkgrel=1
pkgdesc="System initialization/bootup scripts (Parabola branding)"
arch=('i686' 'x86_64' 'mips64el')
url="http://parabolagnulinux.org"
license=('GPL2')
groups=('base')
backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown etc/conf.d/wireless)
-depends=('glibc' 'bash' 'grep' 'coreutils' 'udev>=171' 'iproute2'
+depends=('glibc' 'bash' 'grep' 'coreutils' 'udev>=173' 'iproute2'
'ncurses' 'kbd' 'findutils' 'sysvinit')
optdepends=('bridge-utils: Network bridging support'
'dhcpcd: DHCP network configuration'
'net-tools: legacy network support'
'wireless_tools: Wireless networking')
+makedepends=(asciidoc)
install=initscripts.install
-source=("https://projects.parabolagnulinux.org/initscripts.git/snapshot/initscripts-${pkgver}.tar.bz2"
+source=("https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz"
'wireless.conf.d')
-md5sums=('df73e4c4043d4eaf6502ca6738c549aa'
- '027576534885b8d5dded9be546057b12')
package() {
cd ${srcdir}/${pkgname}-${pkgver}
make DESTDIR=${pkgdir} install
install -D -m644 ${srcdir}/wireless.conf.d ${pkgdir}/etc/conf.d/wireless
}
+md5sums=('4783d7297925bc0722367b0eed8cb53a'
+ '027576534885b8d5dded9be546057b12')
diff --git a/libre/initscripts/initscripts.install b/libre/initscripts/initscripts.install
index 56f69248a..963713bee 100644
--- a/libre/initscripts/initscripts.install
+++ b/libre/initscripts/initscripts.install
@@ -8,4 +8,12 @@ post_upgrade() {
echo "Blacklisting of modules is no longer supported in rc.conf,"
echo "please add blacklist entries to /etc/modprobe.d/ instead."
fi
+ if [ "$(vercmp $2 2011.07.2)" -lt 0 ]; then
+ echo "VERBOSE= in rc.conf no longer has any effect."
+ echo "Please append 'quiet' to your kernel command line."
+ fi
+ if [ "$(vercmp $2 2011.10.1)" -lt 0 ]; then
+ echo "If using non-bash-compatible shell, please set LANG in /etc/locale.conf,"
+ echo "as LOCALE in /etc/rc.conf no longer works."
+ fi
}
diff --git a/libre/initscripts/parabola-branding.patch b/libre/initscripts/parabola-branding.patch
deleted file mode 100644
index a309f9a4c..000000000
--- a/libre/initscripts/parabola-branding.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -auN initscripts-2011.02.1/PKGBUILD initscripts-2011.02.1-parabola//PKGBUILD
---- initscripts-2011.02.1/PKGBUILD 2011-02-01 15:34:45.000000000 -0300
-+++ initscripts-2011.02.1-parabola//PKGBUILD 2011-02-28 11:06:11.000000000 -0300
-@@ -1,9 +1,9 @@
- pkgname=initscripts-git
- pkgver=$(date +%s)
- pkgrel=$(git log --pretty=format:%h |head -n 1)
--pkgdesc="System initialization/bootup scripts"
-+pkgdesc="System initialization/bootup scripts, rebranded for Parabola"
- arch=('i686' 'x86_64')
--url="http://www.archlinux.org"
-+url="http://parabolagnulinux.org"
- license=('GPL')
- groups=('base')
- conflicts=('initscripts')
-diff -auN initscripts-2011.02.1/functions initscripts-2011.02.1-parabola//functions
---- initscripts-2011.02.1/functions 2011-02-01 15:34:45.000000000 -0300
-+++ initscripts-2011.02.1-parabola//functions 2011-02-28 11:13:46.000000000 -0300
-@@ -53,7 +53,7 @@
- if [[ $USECOLOR = YES || $USECOLOR = yes ]]; then
- C_MAIN="\033[1;37;40m" # main text
-
-- C_OTHER="\033[1;34;40m" # prefix & brackets
-+ C_OTHER="\033[0;35;40m" # prefix & brackets
- C_SEPARATOR="\033[1;30;40m" # separator
-
- C_BUSY="\033[0;36;40m" # busy
-diff -auN initscripts-2011.02.1/rc.conf initscripts-2011.02.1-parabola//rc.conf
---- initscripts-2011.02.1/rc.conf 2011-02-01 15:34:45.000000000 -0300
-+++ initscripts-2011.02.1-parabola//rc.conf 2011-02-28 11:06:37.000000000 -0300
-@@ -1,5 +1,5 @@
- #
--# /etc/rc.conf - Main Configuration for Arch Linux
-+# /etc/rc.conf - Main Configuration for Parabola GNU/Linux-Libre
- #
-
- # -----------------------------------------------------------------------
-diff -auN initscripts-2011.02.1/rc.sysinit initscripts-2011.02.1-parabola//rc.sysinit
---- initscripts-2011.02.1/rc.sysinit 2011-02-01 15:34:45.000000000 -0300
-+++ initscripts-2011.02.1-parabola//rc.sysinit 2011-02-28 11:08:29.000000000 -0300
-@@ -7,8 +7,9 @@
- . /etc/rc.d/functions
-
- echo " "
--printhl "Arch Linux\n"
--printhl "${C_H2}http://www.archlinux.org"
-+printhl "Parabola GNU/Linux-Libre\n"
-+printhl "${C_H2}http://parabolagnulinux.org\n"
-+printhl "You're booting into a libre version of Archlinux."
- printsep
-
- run_hook sysinit_start
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD
index f77102426..45e458d5e 100644
--- a/libre/linux-libre/PKGBUILD
+++ b/libre/linux-libre/PKGBUILD
@@ -8,8 +8,8 @@ pkgbase=linux-libre
pkgname=('linux-libre' 'linux-libre-headers' 'linux-libre-docs') # Build stock -LIBRE kernel
# pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux-libre}
-_basekernel=3.0
-pkgver=${_basekernel}.7
+_basekernel=3.1
+pkgver=${_basekernel}.2
pkgrel=1
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
@@ -26,8 +26,10 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-li
'Kbuild'
'Kbuild.platforms'
'boot-logo.patch'
- 'fix-i915.patch'
- 'change-default-console-loglevel.patch')
+ 'change-default-console-loglevel.patch'
+ 'i915-fix-ghost-tv-output.patch'
+ 'i915-fix-incorrect-error-message.patch'
+ 'usb-add-reset-resume-quirk-for-several-webcams.patch')
build() {
cd "${srcdir}/linux-${_basekernel}"
@@ -37,8 +39,23 @@ build() {
# Add freedo as boot logo
patch -Np1 -i "${srcdir}/boot-logo.patch"
- # fix #19234 i1915 display size
- patch -Np1 -i "${srcdir}/fix-i915.patch"
+ # Some chips detect a ghost TV output
+ # mailing list discussion: http://lists.freedesktop.org/archives/intel-gfx/2011-April/010371.html
+ # Arch Linux bug report: FS#19234
+ #
+ # It is unclear why this patch wasn't merged upstream, it was accepted,
+ # then dropped because the reasoning was unclear. However, it is clearly
+ # needed.
+ patch -Np1 -i "${srcdir}/i915-fix-ghost-tv-output.patch"
+
+ # In 3.1.1, a DRM_DEBUG message is falsely declared as DRM_ERROR. This
+ # worries users, as this message is displayed even at loglevel 4. Fix
+ # this.
+ patch -Np1 -i "${srcdir}/i915-fix-incorrect-error-message.patch"
+
+ # Add the USB_QUIRK_RESET_RESUME for several webcams
+ # FS#26528
+ patch -Np1 -i "${srcdir}/usb-add-reset-resume-quirk-for-several-webcams.patch"
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# remove this when a Kconfig knob is made available by upstream
@@ -48,7 +65,7 @@ build() {
if [ "$CARCH" == "mips64el" ]; then
sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre|" Makefile
msg2 "Adding loongson-community patches"
- patch -Np1 -i "${srcdir}/${_basekernel}-*-loongson-community.patch"
+ patch -Np1 -i ${srcdir}/${_basekernel}-*-loongson-community.patch
patch -Np0 -i "${srcdir}/lxo-config.patch"
# ensure N32
@@ -62,15 +79,8 @@ build() {
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
fi
- # remove the "-libre" extraversion from Makefile
- sed -i 's|^EXTRAVERSION =.*$|EXTRAVERSION =|g' Makefile
- sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|# CONFIG_LOCALVERSION_AUTO is not set|g" ./.config
-
- # remove the sublevel from Makefile
- # this ensures our kernel version is always 3.X-LIBRE
- # this way, minor kernel updates will not break external modules
- # we need to change this soon, see FS#16702
- sed -ri 's|^(SUBLEVEL =).*|\1|' Makefile
+ # set extraversion to pkgrel
+ sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
# get kernel version
make prepare
@@ -156,8 +166,13 @@ package_linux-libre() {
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
# remove the firmware
rm -rf "${pkgdir}/lib/firmware"
- # gzip -9 all modules to safe 100MB of space
+ # gzip -9 all modules to save 100MB of space
find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+ # make room for external modules
+ ln -s "../extramodules-${_basekernel}${_kernelname:--LIBRE}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
+ # add real version for building modules and running depmod from post_install/upgrade
+ mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE}"
+ echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE}/version"
}
package_linux-libre-headers() {
@@ -320,18 +335,10 @@ package_linux-libre-docs() {
cd "${srcdir}/linux-${_basekernel}"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}"
- cp -r Documentation "${pkgdir}/usr/src/linux-${_kernver}"
+ cp -al Documentation "${pkgdir}/usr/src/linux-${_kernver}"
find "${pkgdir}" -type f -exec chmod 444 {} \;
find "${pkgdir}" -type d -exec chmod 755 {} \;
# remove a file already in linux package
rm -f "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
}
-md5sums=('44e7bc20c235a193f9b6123a8d5e9509'
- '8840c46301f6eb425b9ab456d1ca7b7f'
- '8089b63fdecf93735f178eb2907ce61e'
- '4cc90e12cab492c1d61183c47683bd52'
- 'a8a3843046926eb7ab81312cd438c5c5'
- '04b21c79df0a952c22d681dd4f4562df'
- '263725f20c0b9eb9c353040792d644e5'
- '9d3c56a4b999c8bfbd4018089a62f662')
diff --git a/libre/linux-libre/config.i686 b/libre/linux-libre/config.i686
index 4cc6d10cc..43bf1d3c3 100644
--- a/libre/linux-libre/config.i686
+++ b/libre/linux-libre/config.i686
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/i386 3.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/i386 3.1.1-1 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -164,6 +164,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -210,6 +211,7 @@ CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -223,12 +225,13 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLK_DEV_THROTTLING=y
@@ -291,6 +294,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_X86_32_IRIS=m
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
# CONFIG_XEN_PRIVILEGED_GUEST is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
@@ -330,6 +334,7 @@ CONFIG_X86_GENERIC=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
# CONFIG_X86_PPRO_FENCE is not set
@@ -354,7 +359,6 @@ CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
-CONFIG_IOMMU_API=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
@@ -362,6 +366,7 @@ CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -469,10 +474,10 @@ CONFIG_CAN_PM_TRACE=y
# CONFIG_PM_TRACE_RTC is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
+# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
@@ -491,11 +496,12 @@ CONFIG_ACPI_PCI_SLOT=m
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
CONFIG_ACPI_APEI_ERST_DEBUG=m
CONFIG_SFI=y
@@ -511,7 +517,7 @@ CONFIG_APM_DO_ENABLE=y
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_TABLE=m
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
@@ -568,9 +574,6 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_OLPC=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_FLOPPY_WA=y
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
@@ -593,7 +596,10 @@ CONFIG_ISA=y
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
CONFIG_OLPC=y
-CONFIG_OLPC_XO1=m
+CONFIG_OLPC_XO1_PM=y
+CONFIG_OLPC_XO1_RTC=y
+CONFIG_OLPC_XO1_SCI=y
+CONFIG_OLPC_XO15_SCI=y
CONFIG_AMD_NB=y
CONFIG_PCCARD=m
CONFIG_PCMCIA=m
@@ -854,6 +860,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
# CONFIG_IP_VS_IPV6 is not set
@@ -1245,6 +1252,13 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
#
# Device Drivers
@@ -1264,6 +1278,8 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
CONFIG_CONNECTOR=m
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
@@ -1410,6 +1426,7 @@ CONFIG_OF_NET=y
CONFIG_OF_SPI=y
CONFIG_OF_MDIO=m
CONFIG_OF_PCI=y
+CONFIG_OF_PCI_IRQ=y
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
@@ -1440,6 +1457,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1488,6 +1506,7 @@ CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
CONFIG_BMP085=m
# CONFIG_PCH_PHUB is not set
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1499,6 +1518,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1512,89 +1532,7 @@ CONFIG_IWMC3200TOP=m
CONFIG_TI_ST=m
CONFIG_SENSORS_LIS3_I2C=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=m
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-CONFIG_IDE_LEGACY=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=m
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=m
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_CS5535=m
-CONFIG_BLK_DEV_CS5536=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_JMICRON=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_IT8172=m
-CONFIG_BLK_DEV_IT8213=m
-CONFIG_BLK_DEV_IT821X=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-CONFIG_BLK_DEV_TC86C001=m
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-CONFIG_BLK_DEV_4DRIVES=m
-CONFIG_BLK_DEV_ALI14XX=m
-CONFIG_BLK_DEV_DTC2278=m
-CONFIG_BLK_DEV_HT6560B=m
-CONFIG_BLK_DEV_QD65XX=m
-CONFIG_BLK_DEV_UMC8672=m
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
@@ -1671,6 +1609,7 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_IN2000=m
@@ -1888,8 +1827,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -2067,6 +2006,7 @@ CONFIG_R8169=m
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_VIA_VELOCITY=m
@@ -2153,10 +2093,13 @@ CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
CONFIG_B43=m
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
+CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
@@ -2260,6 +2203,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2372,6 +2316,7 @@ CONFIG_IEEE802154_FAKEHARD=m
CONFIG_CAIF_TTY=m
CONFIG_CAIF_SPI_SLAVE=m
CONFIG_CAIF_SPI_SYNC=y
+CONFIG_CAIF_HSI=m
CONFIG_RIONET=m
CONFIG_RIONET_TX_SIZE=128
CONFIG_RIONET_RX_SIZE=128
@@ -2713,12 +2658,16 @@ CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_WISTRON_BTNS=m
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2988,13 +2937,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -3006,13 +2955,14 @@ CONFIG_GPIO_MAX7300=m
CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_TPS65912=m
CONFIG_GPIO_WM831X=m
CONFIG_GPIO_ADP5588=m
#
# PCI GPIO expanders:
#
-CONFIG_GPIO_CS5535=m
+CONFIG_GPIO_CS5535=y
CONFIG_GPIO_LANGWELL=y
CONFIG_GPIO_PCH=m
CONFIG_GPIO_ML_IOH=m
@@ -3144,18 +3094,22 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
@@ -3172,7 +3126,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3207,6 +3163,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3292,6 +3249,7 @@ CONFIG_BCMA_POSSIBLE=y
# Broadcom specific AMBA
#
CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_DEBUG is not set
@@ -3304,6 +3262,8 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS65912_SPI=y
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3348,6 +3308,7 @@ CONFIG_REGULATOR_MC13892=m
CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65912=m
CONFIG_REGULATOR_ISL6271A=m
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_AB8500=y
@@ -3362,6 +3323,7 @@ CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3378,6 +3340,7 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
@@ -3406,6 +3369,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3424,6 +3388,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3502,6 +3467,11 @@ CONFIG_VIDEO_MT9V032=m
CONFIG_VIDEO_TCM825X=m
#
+# Flash devices
+#
+CONFIG_VIDEO_ADP1653=m
+
+#
# Video improvement chips
#
CONFIG_VIDEO_UPD64031A=m
@@ -3567,6 +3537,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3595,6 +3566,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3626,6 +3598,7 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
@@ -3782,6 +3755,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3795,6 +3773,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -4033,6 +4017,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -4074,7 +4059,7 @@ CONFIG_FONT_8x16=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
+# CONFIG_LOGO is not set
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
@@ -4159,6 +4144,7 @@ CONFIG_SND_SSCAPE=m
CONFIG_SND_WAVEFRONT=m
CONFIG_SND_MSND_PINNACLE=m
CONFIG_SND_MSND_CLASSIC=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -4208,8 +4194,8 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
@@ -4217,6 +4203,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -4224,6 +4211,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4293,7 +4281,7 @@ CONFIG_USB_HIDDEV=y
#
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=m
+CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
@@ -4305,6 +4293,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4342,6 +4332,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4352,6 +4343,7 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
@@ -4421,6 +4413,7 @@ CONFIG_USB_TMC=m
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
@@ -4547,20 +4540,20 @@ CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_FUSB300 is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_PXA_U2O is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_CI13XXX_PCI is not set
-CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_FUSB300=m
+CONFIG_USB_R8A66597=m
+CONFIG_USB_M66592=m
+CONFIG_USB_AMD5536UDC=m
+CONFIG_USB_CI13XXX_PCI=m
+CONFIG_USB_NET2272=m
+CONFIG_USB_NET2272_DMA=y
CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_EG20T is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GOKU=m
+CONFIG_USB_LANGWELL=m
+CONFIG_USB_EG20T=m
+CONFIG_USB_DUMMY_HCD=m
CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_SUPERSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
@@ -4618,7 +4611,6 @@ CONFIG_SDIO_UART=m
CONFIG_MMC_SDHCI=m
CONFIG_MMC_SDHCI_PCI=m
CONFIG_MMC_RICOH_MMC=y
-CONFIG_MMC_SDHCI_OF=m
CONFIG_MMC_SDHCI_PLTFM=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
@@ -4650,12 +4642,9 @@ CONFIG_LEDS_CLASS=y
#
CONFIG_LEDS_LM3530=m
CONFIG_LEDS_NET5501=m
-CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
-CONFIG_LEDS_GPIO_OF=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4675,7 +4664,6 @@ CONFIG_LEDS_TRIGGERS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_GPIO=m
@@ -4684,8 +4672,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_INFINIBAND is not set
@@ -4824,11 +4810,15 @@ CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_RING=y
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
CONFIG_STAGING=y
-# CONFIG_DIGIEPCA is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_COMPUTONE is not set
CONFIG_ET131X=m
# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
@@ -4941,6 +4931,7 @@ CONFIG_COMEDI_AMPLC_PCI224=m
CONFIG_COMEDI_AMPLC_PCI230=m
CONFIG_COMEDI_CONTEC_PCI_DIO=m
CONFIG_COMEDI_DT3000=m
+CONFIG_COMEDI_DYNA_PCI10XX=m
CONFIG_COMEDI_UNIOXX5=m
CONFIG_COMEDI_GSC_HPDI=m
CONFIG_COMEDI_ICP_MULTI=m
@@ -5033,7 +5024,6 @@ CONFIG_HYPERV_MOUSE=m
# CONFIG_VME_BUS is not set
CONFIG_DX_SEP=m
# CONFIG_IIO is not set
-CONFIG_CS5535_GPIO=m
CONFIG_XVMALLOC=y
CONFIG_ZRAM=m
# CONFIG_ZRAM_DEBUG is not set
@@ -5043,6 +5033,7 @@ CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
CONFIG_VIDEO_DT3155=m
CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
CONFIG_CRYSTALHD=m
CONFIG_FB_XGI=m
CONFIG_LIRC_STAGING=y
@@ -5057,12 +5048,9 @@ CONFIG_LIRC_SIR=m
CONFIG_LIRC_TTUSBIR=m
CONFIG_LIRC_ZILOG=m
CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
# CONFIG_EASYCAP_DEBUG is not set
CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
CONFIG_ATH6K_LEGACY=m
CONFIG_AR600x_SD31_XXX=y
# CONFIG_AR600x_WB31_XXX is not set
@@ -5109,10 +5097,9 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
+CONFIG_DRM_PSB_MRST=y
+CONFIG_DRM_PSB_MFLD=y
+CONFIG_DRM_PSB_CDV=y
CONFIG_ALTERA_STAPL=m
CONFIG_INTEL_MEI=m
CONFIG_X86_PLATFORM_DEVICES=y
@@ -5160,7 +5147,17 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
CONFIG_CLKSRC_I8253=y
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_DMAR=y
+# CONFIG_DMAR_DEFAULT_ON is not set
+CONFIG_DMAR_FLOPPY_WA=y
+CONFIG_VIRT_DRIVERS=y
#
# Firmware Drivers
@@ -5326,6 +5323,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -5341,6 +5339,7 @@ CONFIG_PSTORE=y
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
@@ -5354,7 +5353,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-# CONFIG_NFSD_DEPRECATED is not set
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5503,7 +5501,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -5631,6 +5629,11 @@ CONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0
# CONFIG_IMA is not set
@@ -5776,10 +5779,6 @@ CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_VHOST_NET=m
CONFIG_LGUEST=m
-CONFIG_VIRTIO=y
-CONFIG_VIRTIO_RING=y
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
CONFIG_BINARY_PRINTF=y
#
@@ -5795,6 +5794,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
@@ -5814,6 +5814,7 @@ CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_TEXTSEARCH=y
@@ -5829,3 +5830,5 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
+CONFIG_LLIST=y
diff --git a/libre/linux-libre/config.x86_64 b/libre/linux-libre/config.x86_64
index de4d3a424..6011a797a 100644
--- a/libre/linux-libre/config.x86_64
+++ b/libre/linux-libre/config.x86_64
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/x86_64 3.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86_64 3.1.1-1 Kernel Configuration
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
@@ -12,6 +12,7 @@ CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
@@ -165,6 +166,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -211,6 +213,7 @@ CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -224,11 +227,12 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_BLOCK_COMPAT=y
@@ -290,6 +294,7 @@ CONFIG_X86_MPPARSE=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
@@ -314,6 +319,7 @@ CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=7
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
@@ -331,11 +337,8 @@ CONFIG_DMI=y
CONFIG_GART_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
-CONFIG_AMD_IOMMU=y
-# CONFIG_AMD_IOMMU_STATS is not set
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-CONFIG_IOMMU_API=y
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=64
CONFIG_SCHED_SMT=y
@@ -344,6 +347,7 @@ CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -457,10 +461,10 @@ CONFIG_CAN_PM_TRACE=y
# CONFIG_PM_TRACE_RTC is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
+# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
@@ -481,11 +485,12 @@ CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
CONFIG_ACPI_APEI_ERST_DEBUG=m
CONFIG_SFI=y
@@ -540,10 +545,6 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_XEN=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_FLOPPY_WA=y
-# CONFIG_INTR_REMAP is not set
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
@@ -822,6 +823,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
# CONFIG_IP_VS_IPV6 is not set
@@ -1210,6 +1212,13 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+CONFIG_NFC=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
#
# Device Drivers
@@ -1229,6 +1238,8 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
CONFIG_CONNECTOR=m
CONFIG_MTD=m
# CONFIG_MTD_DEBUG is not set
@@ -1383,6 +1394,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1433,6 +1445,7 @@ CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
CONFIG_BMP085=m
CONFIG_PCH_PHUB=m
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1444,6 +1457,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1457,72 +1471,7 @@ CONFIG_IWMC3200TOP=m
CONFIG_TI_ST=m
CONFIG_SENSORS_LIS3_I2C=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=m
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=m
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=m
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_JMICRON=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_IT8172=m
-CONFIG_BLK_DEV_IT8213=m
-CONFIG_BLK_DEV_IT821X=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-CONFIG_BLK_DEV_TC86C001=m
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
@@ -1596,6 +1545,7 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_ARCMSR=m
@@ -1791,8 +1741,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -1940,6 +1890,7 @@ CONFIG_R8169=m
CONFIG_SIS190=m
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
CONFIG_VIA_VELOCITY=m
@@ -2026,10 +1977,13 @@ CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
CONFIG_B43=m
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
+CONFIG_B43_BCMA_PIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
@@ -2133,6 +2087,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2245,6 +2200,7 @@ CONFIG_IEEE802154_FAKEHARD=m
CONFIG_CAIF_TTY=m
CONFIG_CAIF_SPI_SLAVE=m
CONFIG_CAIF_SPI_SYNC=y
+CONFIG_CAIF_HSI=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_RIONET=m
@@ -2566,11 +2522,15 @@ CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_ATLAS_BTNS=m
CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2833,13 +2793,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -2851,6 +2811,7 @@ CONFIG_GPIO_MAX7300=m
CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_TPS65912=m
CONFIG_GPIO_WM831X=m
CONFIG_GPIO_ADP5588=m
@@ -2988,18 +2949,22 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
@@ -3016,7 +2981,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3051,6 +3018,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3129,6 +3097,7 @@ CONFIG_BCMA_POSSIBLE=y
# Broadcom specific AMBA
#
CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
CONFIG_BCMA_HOST_PCI=y
# CONFIG_BCMA_DEBUG is not set
@@ -3141,6 +3110,8 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS65912_SPI=y
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3185,6 +3156,7 @@ CONFIG_REGULATOR_MC13892=m
CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65912=m
CONFIG_REGULATOR_ISL6271A=m
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_AB8500=y
@@ -3199,6 +3171,7 @@ CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3215,6 +3188,7 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
@@ -3243,6 +3217,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3261,6 +3236,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3339,6 +3315,11 @@ CONFIG_VIDEO_MT9V032=m
CONFIG_VIDEO_TCM825X=m
#
+# Flash devices
+#
+CONFIG_VIDEO_ADP1653=m
+
+#
# Video improvement chips
#
CONFIG_VIDEO_UPD64031A=m
@@ -3403,6 +3384,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3431,6 +3413,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3462,6 +3445,7 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
@@ -3606,6 +3590,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3619,6 +3608,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -3850,6 +3845,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -3890,7 +3886,7 @@ CONFIG_FONT_8x16=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
-CONFIG_LOGO=y
+# CONFIG_LOGO is not set
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
@@ -3939,6 +3935,7 @@ CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
CONFIG_SND_SB_COMMON=m
CONFIG_SND_SB16_DSP=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -3988,8 +3985,8 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
@@ -3997,6 +3994,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -4004,6 +4002,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4072,7 +4071,7 @@ CONFIG_USB_HIDDEV=y
#
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=m
+CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
@@ -4084,6 +4083,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4121,6 +4122,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4131,6 +4133,7 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
@@ -4200,6 +4203,7 @@ CONFIG_USB_TMC=m
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
@@ -4326,20 +4330,18 @@ CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_FUSB300 is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_PXA_U2O is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_CI13XXX_PCI is not set
-CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_R8A66597=m
+CONFIG_USB_M66592=m
+CONFIG_USB_AMD5536UDC=m
+CONFIG_USB_CI13XXX_PCI=m
+CONFIG_USB_NET2272=m
+CONFIG_USB_NET2272_DMA=y
CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_EG20T is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GOKU=m
+CONFIG_USB_EG20T=m
+CONFIG_USB_DUMMY_HCD=m
CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_SUPERSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
@@ -4433,7 +4435,6 @@ CONFIG_LEDS_ALIX2=m
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4453,7 +4454,6 @@ CONFIG_LEDS_TRIGGERS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_GPIO=m
@@ -4462,8 +4462,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_INFINIBAND is not set
@@ -4599,11 +4597,21 @@ CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
#
# Xen driver support
#
CONFIG_XEN_BALLOON=y
+# CONFIG_XEN_SELFBALLOONING is not set
+CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
@@ -4615,11 +4623,9 @@ CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_XEN_PLATFORM_PCI=m
CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_TMEM=y
+CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_STAGING=y
-# CONFIG_DIGIEPCA is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_COMPUTONE is not set
CONFIG_ET131X=m
# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
@@ -4690,6 +4696,7 @@ CONFIG_COMEDI_AMPLC_PCI224=m
CONFIG_COMEDI_AMPLC_PCI230=m
CONFIG_COMEDI_CONTEC_PCI_DIO=m
CONFIG_COMEDI_DT3000=m
+CONFIG_COMEDI_DYNA_PCI10XX=m
CONFIG_COMEDI_UNIOXX5=m
CONFIG_COMEDI_GSC_HPDI=m
CONFIG_COMEDI_ICP_MULTI=m
@@ -4788,6 +4795,7 @@ CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
CONFIG_VIDEO_DT3155=m
CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
CONFIG_CRYSTALHD=m
CONFIG_FB_XGI=m
CONFIG_LIRC_STAGING=y
@@ -4802,12 +4810,9 @@ CONFIG_LIRC_SIR=m
CONFIG_LIRC_TTUSBIR=m
CONFIG_LIRC_ZILOG=m
CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
# CONFIG_EASYCAP_DEBUG is not set
CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
CONFIG_ATH6K_LEGACY=m
CONFIG_AR600x_SD31_XXX=y
# CONFIG_AR600x_WB31_XXX is not set
@@ -4854,10 +4859,9 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
+CONFIG_DRM_PSB_MRST=y
+CONFIG_DRM_PSB_MFLD=y
+CONFIG_DRM_PSB_CDV=y
CONFIG_ALTERA_STAPL=m
CONFIG_INTEL_MEI=m
CONFIG_X86_PLATFORM_DEVICES=y
@@ -4903,6 +4907,19 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_IOMMU_STATS is not set
+CONFIG_DMAR=y
+# CONFIG_DMAR_DEFAULT_ON is not set
+CONFIG_DMAR_FLOPPY_WA=y
+# CONFIG_INTR_REMAP is not set
+CONFIG_VIRT_DRIVERS=y
#
# Firmware Drivers
@@ -5069,6 +5086,7 @@ CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
# CONFIG_SQUASHFS_EMBEDDED is not set
@@ -5084,6 +5102,7 @@ CONFIG_PSTORE=y
CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
@@ -5097,7 +5116,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-# CONFIG_NFSD_DEPRECATED is not set
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5245,7 +5263,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -5372,6 +5390,11 @@ CONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0
# CONFIG_IMA is not set
@@ -5516,10 +5539,6 @@ CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_VHOST_NET=m
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
CONFIG_BINARY_PRINTF=y
#
@@ -5535,6 +5554,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=y
@@ -5553,6 +5573,7 @@ CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
CONFIG_REED_SOLOMON=m
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_TEXTSEARCH=y
@@ -5568,3 +5589,5 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
+CONFIG_LLIST=y
diff --git a/libre/linux-libre/dib0700-fix.patch b/libre/linux-libre/dib0700-fix.patch
new file mode 100644
index 000000000..48f07e6fd
--- /dev/null
+++ b/libre/linux-libre/dib0700-fix.patch
@@ -0,0 +1,1487 @@
+commit 198c545cd7306dc90aaae1d61e64175e70a70dc8
+Author: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
+Date: Wed Aug 3 17:08:21 2011 +0200
+
+ [media] DiBcom: protect the I2C bufer access
+
+ This patch protect the I2C buffer access in order to manage concurrent
+ access. This protection is done using mutex.
+ Furthermore, for the dib9000, if a pid filtering command is
+ received during the tuning, this pid filtering command is delayed to
+ avoid any concurrent access issue.
+
+ Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
+ Cc: Florian Mickler <florian@mickler.org>
+ Cc: stable@kernel.org
+
+ Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
+ Signed-off-by: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
+
+diff --git a/drivers/media/dvb/frontends/dib0070.c b/drivers/media/dvb/frontends/dib0070.c
+index 1d47d4d..dc1cb17 100644
+--- a/drivers/media/dvb/frontends/dib0070.c
++++ b/drivers/media/dvb/frontends/dib0070.c
+@@ -27,6 +27,7 @@
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
+
+ #include "dvb_frontend.h"
+
+@@ -78,10 +79,18 @@ struct dib0070_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[3];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+-static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
++static u16 dib0070_read_reg(struct dib0070_state *state, u8 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = reg;
+
+ memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
+@@ -96,13 +105,23 @@ static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
+
+ if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
+ printk(KERN_WARNING "DiB0070 I2C read failed\n");
+- return 0;
+- }
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ ret = 0;
++ } else
++ ret = (state->i2c_read_buffer[0] << 8)
++ | state->i2c_read_buffer[1];
++
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
+ state->i2c_write_buffer[0] = reg;
+ state->i2c_write_buffer[1] = val >> 8;
+ state->i2c_write_buffer[2] = val & 0xff;
+@@ -115,9 +134,12 @@ static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
+
+ if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
+ printk(KERN_WARNING "DiB0070 I2C write failed\n");
+- return -EREMOTEIO;
+- }
+- return 0;
++ ret = -EREMOTEIO;
++ } else
++ ret = 0;
++
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ #define HARD_RESET(state) do { \
+@@ -734,6 +756,7 @@ struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter
+ state->cfg = cfg;
+ state->i2c = i2c;
+ state->fe = fe;
++ mutex_init(&state->i2c_buffer_lock);
+ fe->tuner_priv = state;
+
+ if (dib0070_reset(fe) != 0)
+diff --git a/drivers/media/dvb/frontends/dib0090.c b/drivers/media/dvb/frontends/dib0090.c
+index c9c935a..b174d1c 100644
+--- a/drivers/media/dvb/frontends/dib0090.c
++++ b/drivers/media/dvb/frontends/dib0090.c
+@@ -27,6 +27,7 @@
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
+
+ #include "dvb_frontend.h"
+
+@@ -196,6 +197,7 @@ struct dib0090_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[3];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ struct dib0090_fw_state {
+@@ -208,10 +210,18 @@ struct dib0090_fw_state {
+ struct i2c_msg msg;
+ u8 i2c_write_buffer[2];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = reg;
+
+ memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
+@@ -226,14 +236,24 @@ static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
+
+ if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
+ printk(KERN_WARNING "DiB0090 I2C read failed\n");
+- return 0;
+- }
++ ret = 0;
++ } else
++ ret = (state->i2c_read_buffer[0] << 8)
++ | state->i2c_read_buffer[1];
+
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ state->i2c_write_buffer[0] = reg & 0xff;
+ state->i2c_write_buffer[1] = val >> 8;
+ state->i2c_write_buffer[2] = val & 0xff;
+@@ -246,13 +266,23 @@ static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
+
+ if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
+ printk(KERN_WARNING "DiB0090 I2C write failed\n");
+- return -EREMOTEIO;
+- }
+- return 0;
++ ret = -EREMOTEIO;
++ } else
++ ret = 0;
++
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = reg;
+
+ memset(&state->msg, 0, sizeof(struct i2c_msg));
+@@ -262,13 +292,24 @@ static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
+ state->msg.len = 2;
+ if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
+ printk(KERN_WARNING "DiB0090 I2C read failed\n");
+- return 0;
+- }
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ ret = 0;
++ } else
++ ret = (state->i2c_read_buffer[0] << 8)
++ | state->i2c_read_buffer[1];
++
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ state->i2c_write_buffer[0] = val >> 8;
+ state->i2c_write_buffer[1] = val & 0xff;
+
+@@ -279,9 +320,12 @@ static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
+ state->msg.len = 2;
+ if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
+ printk(KERN_WARNING "DiB0090 I2C write failed\n");
+- return -EREMOTEIO;
+- }
+- return 0;
++ ret = -EREMOTEIO;
++ } else
++ ret = 0;
++
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ #define HARD_RESET(state) do { if (cfg->reset) { if (cfg->sleep) cfg->sleep(fe, 0); msleep(10); cfg->reset(fe, 1); msleep(10); cfg->reset(fe, 0); msleep(10); } } while (0)
+@@ -2440,6 +2484,7 @@ struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapte
+ st->config = config;
+ st->i2c = i2c;
+ st->fe = fe;
++ mutex_init(&st->i2c_buffer_lock);
+ fe->tuner_priv = st;
+
+ if (config->wbd == NULL)
+@@ -2471,6 +2516,7 @@ struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_ada
+ st->config = config;
+ st->i2c = i2c;
+ st->fe = fe;
++ mutex_init(&st->i2c_buffer_lock);
+ fe->tuner_priv = st;
+
+ if (dib0090_fw_reset_digital(fe, st->config) != 0)
+diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
+index 79cb1c2..dbb76d7 100644
+--- a/drivers/media/dvb/frontends/dib7000m.c
++++ b/drivers/media/dvb/frontends/dib7000m.c
+@@ -11,6 +11,7 @@
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
+
+ #include "dvb_frontend.h"
+
+@@ -55,6 +56,7 @@ struct dib7000m_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[4];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ enum dib7000m_power_mode {
+@@ -69,6 +71,13 @@ enum dib7000m_power_mode {
+
+ static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = (reg >> 8) | 0x80;
+ state->i2c_write_buffer[1] = reg & 0xff;
+
+@@ -85,11 +94,21 @@ static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
+ if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
+ dprintk("i2c read error on %d",reg);
+
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ mutex_unlock(&state->i2c_buffer_lock);
++
++ return ret;
+ }
+
+ static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
+ state->i2c_write_buffer[1] = reg & 0xff;
+ state->i2c_write_buffer[2] = (val >> 8) & 0xff;
+@@ -101,7 +120,10 @@ static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
+ state->msg[0].buf = state->i2c_write_buffer;
+ state->msg[0].len = 4;
+
+- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
++ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
++ -EREMOTEIO : 0);
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+ static void dib7000m_write_tab(struct dib7000m_state *state, u16 *buf)
+ {
+@@ -1385,6 +1407,7 @@ struct dvb_frontend * dib7000m_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
+ demod = &st->demod;
+ demod->demodulator_priv = st;
+ memcpy(&st->demod.ops, &dib7000m_ops, sizeof(struct dvb_frontend_ops));
++ mutex_init(&st->i2c_buffer_lock);
+
+ st->timf_default = cfg->bw->timf;
+
+diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
+index 0c9f40c..292bc19 100644
+--- a/drivers/media/dvb/frontends/dib7000p.c
++++ b/drivers/media/dvb/frontends/dib7000p.c
+@@ -10,6 +10,7 @@
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
+
+ #include "dvb_math.h"
+ #include "dvb_frontend.h"
+@@ -68,6 +69,7 @@ struct dib7000p_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[4];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ enum dib7000p_power_mode {
+@@ -81,6 +83,13 @@ static int dib7090_set_diversity_in(struct dvb_frontend *fe, int onoff);
+
+ static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = reg >> 8;
+ state->i2c_write_buffer[1] = reg & 0xff;
+
+@@ -97,11 +106,20 @@ static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
+ if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
+ dprintk("i2c read error on %d", reg);
+
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
+ state->i2c_write_buffer[1] = reg & 0xff;
+ state->i2c_write_buffer[2] = (val >> 8) & 0xff;
+@@ -113,7 +131,10 @@ static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
+ state->msg[0].buf = state->i2c_write_buffer;
+ state->msg[0].len = 4;
+
+- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
++ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
++ -EREMOTEIO : 0);
++ mutex_unlock(&state->i2c_buffer_lock);
++ return ret;
+ }
+
+ static void dib7000p_write_tab(struct dib7000p_state *state, u16 * buf)
+@@ -1646,6 +1667,7 @@ int dib7000p_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 defau
+ return -ENOMEM;
+
+ dpst->i2c_adap = i2c;
++ mutex_init(&dpst->i2c_buffer_lock);
+
+ for (k = no_of_demods - 1; k >= 0; k--) {
+ dpst->cfg = cfg[k];
+@@ -2324,6 +2346,7 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
+ demod = &st->demod;
+ demod->demodulator_priv = st;
+ memcpy(&st->demod.ops, &dib7000p_ops, sizeof(struct dvb_frontend_ops));
++ mutex_init(&st->i2c_buffer_lock);
+
+ dib7000p_write_word(st, 1287, 0x0003); /* sram lead in, rdy */
+
+@@ -2333,8 +2356,9 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
+ st->version = dib7000p_read_word(st, 897);
+
+ /* FIXME: make sure the dev.parent field is initialized, or else
+- request_firmware() will hit an OOPS (this should be moved somewhere
+- more common) */
++ request_firmware() will hit an OOPS (this should be moved somewhere
++ more common) */
++ st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
+
+ dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
+
+diff --git a/drivers/media/dvb/frontends/dib8000.c b/drivers/media/dvb/frontends/dib8000.c
+index 7d2ea11..fe284d5 100644
+--- a/drivers/media/dvb/frontends/dib8000.c
++++ b/drivers/media/dvb/frontends/dib8000.c
+@@ -10,6 +10,8 @@
+ #include <linux/kernel.h>
+ #include <linux/slab.h>
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
++
+ #include "dvb_math.h"
+
+ #include "dvb_frontend.h"
+@@ -37,6 +39,7 @@ struct i2c_device {
+ u8 addr;
+ u8 *i2c_write_buffer;
+ u8 *i2c_read_buffer;
++ struct mutex *i2c_buffer_lock;
+ };
+
+ struct dib8000_state {
+@@ -77,6 +80,7 @@ struct dib8000_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[4];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ enum dib8000_power_mode {
+@@ -86,24 +90,39 @@ enum dib8000_power_mode {
+
+ static u16 dib8000_i2c_read16(struct i2c_device *i2c, u16 reg)
+ {
++ u16 ret;
+ struct i2c_msg msg[2] = {
+- {.addr = i2c->addr >> 1, .flags = 0,
+- .buf = i2c->i2c_write_buffer, .len = 2},
+- {.addr = i2c->addr >> 1, .flags = I2C_M_RD,
+- .buf = i2c->i2c_read_buffer, .len = 2},
++ {.addr = i2c->addr >> 1, .flags = 0, .len = 2},
++ {.addr = i2c->addr >> 1, .flags = I2C_M_RD, .len = 2},
+ };
+
++ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
++ msg[0].buf = i2c->i2c_write_buffer;
+ msg[0].buf[0] = reg >> 8;
+ msg[0].buf[1] = reg & 0xff;
++ msg[1].buf = i2c->i2c_read_buffer;
+
+ if (i2c_transfer(i2c->adap, msg, 2) != 2)
+ dprintk("i2c read error on %d", reg);
+
+- return (msg[1].buf[0] << 8) | msg[1].buf[1];
++ ret = (msg[1].buf[0] << 8) | msg[1].buf[1];
++ mutex_unlock(i2c->i2c_buffer_lock);
++ return ret;
+ }
+
+ static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ state->i2c_write_buffer[0] = reg >> 8;
+ state->i2c_write_buffer[1] = reg & 0xff;
+
+@@ -120,7 +139,10 @@ static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
+ if (i2c_transfer(state->i2c.adap, state->msg, 2) != 2)
+ dprintk("i2c read error on %d", reg);
+
+- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
++ mutex_unlock(&state->i2c_buffer_lock);
++
++ return ret;
+ }
+
+ static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
+@@ -135,22 +157,35 @@ static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
+
+ static int dib8000_i2c_write16(struct i2c_device *i2c, u16 reg, u16 val)
+ {
+- struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0,
+- .buf = i2c->i2c_write_buffer, .len = 4};
++ struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0, .len = 4};
+ int ret = 0;
+
++ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
++ msg.buf = i2c->i2c_write_buffer;
+ msg.buf[0] = (reg >> 8) & 0xff;
+ msg.buf[1] = reg & 0xff;
+ msg.buf[2] = (val >> 8) & 0xff;
+ msg.buf[3] = val & 0xff;
+
+ ret = i2c_transfer(i2c->adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
++ mutex_unlock(i2c->i2c_buffer_lock);
+
+ return ret;
+ }
+
+ static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
+ state->i2c_write_buffer[1] = reg & 0xff;
+ state->i2c_write_buffer[2] = (val >> 8) & 0xff;
+@@ -162,7 +197,11 @@ static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
+ state->msg[0].buf = state->i2c_write_buffer;
+ state->msg[0].len = 4;
+
+- return i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
++ ret = (i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ?
++ -EREMOTEIO : 0);
++ mutex_unlock(&state->i2c_buffer_lock);
++
++ return ret;
+ }
+
+ static const s16 coeff_2k_sb_1seg_dqpsk[8] = {
+@@ -2434,8 +2473,15 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
+ if (!client.i2c_read_buffer) {
+ dprintk("%s: not enough memory", __func__);
+ ret = -ENOMEM;
+- goto error_memory;
++ goto error_memory_read;
++ }
++ client.i2c_buffer_lock = kzalloc(sizeof(struct mutex), GFP_KERNEL);
++ if (!client.i2c_buffer_lock) {
++ dprintk("%s: not enough memory", __func__);
++ ret = -ENOMEM;
++ goto error_memory_lock;
+ }
++ mutex_init(client.i2c_buffer_lock);
+
+ for (k = no_of_demods - 1; k >= 0; k--) {
+ /* designated i2c address */
+@@ -2476,8 +2522,10 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
+ }
+
+ error:
++ kfree(client.i2c_buffer_lock);
++error_memory_lock:
+ kfree(client.i2c_read_buffer);
+-error_memory:
++error_memory_read:
+ kfree(client.i2c_write_buffer);
+
+ return ret;
+@@ -2581,6 +2629,8 @@ struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, s
+ state->i2c.addr = i2c_addr;
+ state->i2c.i2c_write_buffer = state->i2c_write_buffer;
+ state->i2c.i2c_read_buffer = state->i2c_read_buffer;
++ mutex_init(&state->i2c_buffer_lock);
++ state->i2c.i2c_buffer_lock = &state->i2c_buffer_lock;
+ state->gpio_val = cfg->gpio_val;
+ state->gpio_dir = cfg->gpio_dir;
+
+diff --git a/drivers/media/dvb/frontends/dib9000.c b/drivers/media/dvb/frontends/dib9000.c
+index a085588..b931074 100644
+--- a/drivers/media/dvb/frontends/dib9000.c
++++ b/drivers/media/dvb/frontends/dib9000.c
+@@ -38,6 +38,15 @@ struct i2c_device {
+ #define DibInitLock(lock) mutex_init(lock)
+ #define DibFreeLock(lock)
+
++struct dib9000_pid_ctrl {
++#define DIB9000_PID_FILTER_CTRL 0
++#define DIB9000_PID_FILTER 1
++ u8 cmd;
++ u8 id;
++ u16 pid;
++ u8 onoff;
++};
++
+ struct dib9000_state {
+ struct i2c_device i2c;
+
+@@ -99,6 +108,10 @@ struct dib9000_state {
+ struct i2c_msg msg[2];
+ u8 i2c_write_buffer[255];
+ u8 i2c_read_buffer[255];
++ DIB_LOCK demod_lock;
++ u8 get_frontend_internal;
++ struct dib9000_pid_ctrl pid_ctrl[10];
++ s8 pid_ctrl_index; /* -1: empty list; -2: do not use the list */
+ };
+
+ static const u32 fe_info[44] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+@@ -1743,19 +1756,56 @@ EXPORT_SYMBOL(dib9000_set_gpio);
+ int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
+ {
+ struct dib9000_state *state = fe->demodulator_priv;
+- u16 val = dib9000_read_word(state, 294 + 1) & 0xffef;
++ u16 val;
++ int ret;
++
++ if ((state->pid_ctrl_index != -2) && (state->pid_ctrl_index < 9)) {
++ /* postpone the pid filtering cmd */
++ dprintk("pid filter cmd postpone");
++ state->pid_ctrl_index++;
++ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER_CTRL;
++ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
++ return 0;
++ }
++
++ DibAcquireLock(&state->demod_lock);
++
++ val = dib9000_read_word(state, 294 + 1) & 0xffef;
+ val |= (onoff & 0x1) << 4;
+
+ dprintk("PID filter enabled %d", onoff);
+- return dib9000_write_word(state, 294 + 1, val);
++ ret = dib9000_write_word(state, 294 + 1, val);
++ DibReleaseLock(&state->demod_lock);
++ return ret;
++
+ }
+ EXPORT_SYMBOL(dib9000_fw_pid_filter_ctrl);
+
+ int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
+ {
+ struct dib9000_state *state = fe->demodulator_priv;
++ int ret;
++
++ if (state->pid_ctrl_index != -2) {
++ /* postpone the pid filtering cmd */
++ dprintk("pid filter postpone");
++ if (state->pid_ctrl_index < 9) {
++ state->pid_ctrl_index++;
++ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER;
++ state->pid_ctrl[state->pid_ctrl_index].id = id;
++ state->pid_ctrl[state->pid_ctrl_index].pid = pid;
++ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
++ } else
++ dprintk("can not add any more pid ctrl cmd");
++ return 0;
++ }
++
++ DibAcquireLock(&state->demod_lock);
+ dprintk("Index %x, PID %d, OnOff %d", id, pid, onoff);
+- return dib9000_write_word(state, 300 + 1 + id, onoff ? (1 << 13) | pid : 0);
++ ret = dib9000_write_word(state, 300 + 1 + id,
++ onoff ? (1 << 13) | pid : 0);
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+ EXPORT_SYMBOL(dib9000_fw_pid_filter);
+
+@@ -1778,6 +1828,7 @@ static void dib9000_release(struct dvb_frontend *demod)
+ DibFreeLock(&state->platform.risc.mbx_lock);
+ DibFreeLock(&state->platform.risc.mem_lock);
+ DibFreeLock(&state->platform.risc.mem_mbx_lock);
++ DibFreeLock(&state->demod_lock);
+ dibx000_exit_i2c_master(&st->i2c_master);
+
+ i2c_del_adapter(&st->tuner_adap);
+@@ -1795,14 +1846,19 @@ static int dib9000_sleep(struct dvb_frontend *fe)
+ {
+ struct dib9000_state *state = fe->demodulator_priv;
+ u8 index_frontend;
+- int ret;
++ int ret = 0;
+
++ DibAcquireLock(&state->demod_lock);
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
+ ret = state->fe[index_frontend]->ops.sleep(state->fe[index_frontend]);
+ if (ret < 0)
+- return ret;
++ goto error;
+ }
+- return dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
++ ret = dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
++
++error:
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+
+ static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings *tune)
+@@ -1816,7 +1872,10 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ struct dib9000_state *state = fe->demodulator_priv;
+ u8 index_frontend, sub_index_frontend;
+ fe_status_t stat;
+- int ret;
++ int ret = 0;
++
++ if (state->get_frontend_internal == 0)
++ DibAcquireLock(&state->demod_lock);
+
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
+ state->fe[index_frontend]->ops.read_status(state->fe[index_frontend], &stat);
+@@ -1846,14 +1905,15 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ state->fe[index_frontend]->dtv_property_cache.rolloff;
+ }
+ }
+- return 0;
++ ret = 0;
++ goto return_value;
+ }
+ }
+
+ /* get the channel from master chip */
+ ret = dib9000_fw_get_channel(fe, fep);
+ if (ret != 0)
+- return ret;
++ goto return_value;
+
+ /* synchronize the cache with the other frontends */
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
+@@ -1866,8 +1926,12 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ state->fe[index_frontend]->dtv_property_cache.code_rate_LP = fe->dtv_property_cache.code_rate_LP;
+ state->fe[index_frontend]->dtv_property_cache.rolloff = fe->dtv_property_cache.rolloff;
+ }
++ ret = 0;
+
+- return 0;
++return_value:
++ if (state->get_frontend_internal == 0)
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+
+ static int dib9000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)
+@@ -1912,6 +1976,10 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ dprintk("dib9000: must specify bandwidth ");
+ return 0;
+ }
++
++ state->pid_ctrl_index = -1; /* postpone the pid filtering cmd */
++ DibAcquireLock(&state->demod_lock);
++
+ fe->dtv_property_cache.delivery_system = SYS_DVBT;
+
+ /* set the master status */
+@@ -1974,13 +2042,18 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ /* check the tune result */
+ if (exit_condition == 1) { /* tune failed */
+ dprintk("tune failed");
++ DibReleaseLock(&state->demod_lock);
++ /* tune failed; put all the pid filtering cmd to junk */
++ state->pid_ctrl_index = -1;
+ return 0;
+ }
+
+ dprintk("tune success on frontend%i", index_frontend_success);
+
+ /* synchronize all the channel cache */
++ state->get_frontend_internal = 1;
+ dib9000_get_frontend(state->fe[0], fep);
++ state->get_frontend_internal = 0;
+
+ /* retune the other frontends with the found channel */
+ channel_status.status = CHANNEL_STATUS_PARAMETERS_SET;
+@@ -2025,6 +2098,28 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
+ /* turn off the diversity for the last frontend */
+ dib9000_fw_set_diversity_in(state->fe[index_frontend - 1], 0);
+
++ DibReleaseLock(&state->demod_lock);
++ if (state->pid_ctrl_index >= 0) {
++ u8 index_pid_filter_cmd;
++ u8 pid_ctrl_index = state->pid_ctrl_index;
++
++ state->pid_ctrl_index = -2;
++ for (index_pid_filter_cmd = 0;
++ index_pid_filter_cmd <= pid_ctrl_index;
++ index_pid_filter_cmd++) {
++ if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER_CTRL)
++ dib9000_fw_pid_filter_ctrl(state->fe[0],
++ state->pid_ctrl[index_pid_filter_cmd].onoff);
++ else if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER)
++ dib9000_fw_pid_filter(state->fe[0],
++ state->pid_ctrl[index_pid_filter_cmd].id,
++ state->pid_ctrl[index_pid_filter_cmd].pid,
++ state->pid_ctrl[index_pid_filter_cmd].onoff);
++ }
++ }
++ /* do not postpone any more the pid filtering */
++ state->pid_ctrl_index = -2;
++
+ return 0;
+ }
+
+@@ -2041,6 +2136,7 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
+ u8 index_frontend;
+ u16 lock = 0, lock_slave = 0;
+
++ DibAcquireLock(&state->demod_lock);
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
+ lock_slave |= dib9000_read_lock(state->fe[index_frontend]);
+
+@@ -2059,6 +2155,8 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
+ if ((lock & 0x0008) || (lock_slave & 0x0008))
+ *stat |= FE_HAS_LOCK;
+
++ DibReleaseLock(&state->demod_lock);
++
+ return 0;
+ }
+
+@@ -2066,10 +2164,14 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
+ {
+ struct dib9000_state *state = fe->demodulator_priv;
+ u16 *c;
++ int ret = 0;
+
++ DibAcquireLock(&state->demod_lock);
+ DibAcquireLock(&state->platform.risc.mem_mbx_lock);
+- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
+- return -EIO;
++ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
++ ret = -EIO;
++ goto error;
++ }
+ dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR,
+ state->i2c_read_buffer, 16 * 2);
+ DibReleaseLock(&state->platform.risc.mem_mbx_lock);
+@@ -2077,7 +2179,10 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
+ c = (u16 *)state->i2c_read_buffer;
+
+ *ber = c[10] << 16 | c[11];
+- return 0;
++
++error:
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+
+ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
+@@ -2086,7 +2191,9 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
+ u8 index_frontend;
+ u16 *c = (u16 *)state->i2c_read_buffer;
+ u16 val;
++ int ret = 0;
+
++ DibAcquireLock(&state->demod_lock);
+ *strength = 0;
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
+ state->fe[index_frontend]->ops.read_signal_strength(state->fe[index_frontend], &val);
+@@ -2097,8 +2204,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
+ }
+
+ DibAcquireLock(&state->platform.risc.mem_mbx_lock);
+- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
+- return -EIO;
++ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
++ ret = -EIO;
++ goto error;
++ }
+ dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
+ DibReleaseLock(&state->platform.risc.mem_mbx_lock);
+
+@@ -2107,7 +2216,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
+ *strength = 65535;
+ else
+ *strength += val;
+- return 0;
++
++error:
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+
+ static u32 dib9000_get_snr(struct dvb_frontend *fe)
+@@ -2151,6 +2263,7 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
+ u8 index_frontend;
+ u32 snr_master;
+
++ DibAcquireLock(&state->demod_lock);
+ snr_master = dib9000_get_snr(fe);
+ for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
+ snr_master += dib9000_get_snr(state->fe[index_frontend]);
+@@ -2161,6 +2274,8 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
+ } else
+ *snr = 0;
+
++ DibReleaseLock(&state->demod_lock);
++
+ return 0;
+ }
+
+@@ -2168,15 +2283,22 @@ static int dib9000_read_unc_blocks(struct dvb_frontend *fe, u32 * unc)
+ {
+ struct dib9000_state *state = fe->demodulator_priv;
+ u16 *c = (u16 *)state->i2c_read_buffer;
++ int ret = 0;
+
++ DibAcquireLock(&state->demod_lock);
+ DibAcquireLock(&state->platform.risc.mem_mbx_lock);
+- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
+- return -EIO;
++ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
++ ret = -EIO;
++ goto error;
++ }
+ dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
+ DibReleaseLock(&state->platform.risc.mem_mbx_lock);
+
+ *unc = c[12];
+- return 0;
++
++error:
++ DibReleaseLock(&state->demod_lock);
++ return ret;
+ }
+
+ int dib9000_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, u8 first_addr)
+@@ -2322,6 +2444,10 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
+ DibInitLock(&st->platform.risc.mbx_lock);
+ DibInitLock(&st->platform.risc.mem_lock);
+ DibInitLock(&st->platform.risc.mem_mbx_lock);
++ DibInitLock(&st->demod_lock);
++ st->get_frontend_internal = 0;
++
++ st->pid_ctrl_index = -2;
+
+ st->fe[0] = fe;
+ fe->demodulator_priv = st;
+diff --git a/drivers/media/dvb/frontends/dibx000_common.c b/drivers/media/dvb/frontends/dibx000_common.c
+index dc5d17a..774d507 100644
+--- a/drivers/media/dvb/frontends/dibx000_common.c
++++ b/drivers/media/dvb/frontends/dibx000_common.c
+@@ -1,4 +1,5 @@
+ #include <linux/i2c.h>
++#include <linux/mutex.h>
+
+ #include "dibx000_common.h"
+
+@@ -10,6 +11,13 @@ MODULE_PARM_DESC(debug, "turn on debugging (default: 0)");
+
+ static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
+ {
++ int ret;
++
++ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
+ mst->i2c_write_buffer[0] = (reg >> 8) & 0xff;
+ mst->i2c_write_buffer[1] = reg & 0xff;
+ mst->i2c_write_buffer[2] = (val >> 8) & 0xff;
+@@ -21,11 +29,21 @@ static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
+ mst->msg[0].buf = mst->i2c_write_buffer;
+ mst->msg[0].len = 4;
+
+- return i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
++ ret = i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
++ mutex_unlock(&mst->i2c_buffer_lock);
++
++ return ret;
+ }
+
+ static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
+ {
++ u16 ret;
++
++ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ mst->i2c_write_buffer[0] = reg >> 8;
+ mst->i2c_write_buffer[1] = reg & 0xff;
+
+@@ -42,7 +60,10 @@ static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
+ if (i2c_transfer(mst->i2c_adap, mst->msg, 2) != 2)
+ dprintk("i2c read error on %d", reg);
+
+- return (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
++ ret = (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
++ mutex_unlock(&mst->i2c_buffer_lock);
++
++ return ret;
+ }
+
+ static int dibx000_is_i2c_done(struct dibx000_i2c_master *mst)
+@@ -257,6 +278,7 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
+ struct i2c_msg msg[], int num)
+ {
+ struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
++ int ret;
+
+ if (num > 32) {
+ dprintk("%s: too much I2C message to be transmitted (%i).\
+@@ -264,10 +286,15 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
+ return -ENOMEM;
+ }
+
+- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
+-
+ dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_GPIO_6_7);
+
++ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++
++ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
++
+ /* open the gate */
+ dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
+ mst->msg[0].addr = mst->i2c_addr;
+@@ -282,7 +309,11 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
+ mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
+ mst->msg[num + 1].len = 4;
+
+- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
++ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
++ num : -EIO);
++
++ mutex_unlock(&mst->i2c_buffer_lock);
++ return ret;
+ }
+
+ static struct i2c_algorithm dibx000_i2c_gated_gpio67_algo = {
+@@ -294,6 +325,7 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
+ struct i2c_msg msg[], int num)
+ {
+ struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
++ int ret;
+
+ if (num > 32) {
+ dprintk("%s: too much I2C message to be transmitted (%i).\
+@@ -301,10 +333,14 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
+ return -ENOMEM;
+ }
+
+- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
+-
+ dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_TUNER);
+
++ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
++
+ /* open the gate */
+ dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
+ mst->msg[0].addr = mst->i2c_addr;
+@@ -319,7 +355,10 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
+ mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
+ mst->msg[num + 1].len = 4;
+
+- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
++ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
++ num : -EIO);
++ mutex_unlock(&mst->i2c_buffer_lock);
++ return ret;
+ }
+
+ static struct i2c_algorithm dibx000_i2c_gated_tuner_algo = {
+@@ -390,8 +429,18 @@ static int i2c_adapter_init(struct i2c_adapter *i2c_adap,
+ int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
+ struct i2c_adapter *i2c_adap, u8 i2c_addr)
+ {
+- u8 tx[4];
+- struct i2c_msg m = {.addr = i2c_addr >> 1,.buf = tx,.len = 4 };
++ int ret;
++
++ mutex_init(&mst->i2c_buffer_lock);
++ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
++ dprintk("could not acquire lock");
++ return -EINVAL;
++ }
++ memset(mst->msg, 0, sizeof(struct i2c_msg));
++ mst->msg[0].addr = i2c_addr >> 1;
++ mst->msg[0].flags = 0;
++ mst->msg[0].buf = mst->i2c_write_buffer;
++ mst->msg[0].len = 4;
+
+ mst->device_rev = device_rev;
+ mst->i2c_adap = i2c_adap;
+@@ -431,9 +480,12 @@ int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
+ "DiBX000: could not initialize the master i2c_adapter\n");
+
+ /* initialize the i2c-master by closing the gate */
+- dibx000_i2c_gate_ctrl(mst, tx, 0, 0);
++ dibx000_i2c_gate_ctrl(mst, mst->i2c_write_buffer, 0, 0);
++
++ ret = (i2c_transfer(i2c_adap, mst->msg, 1) == 1);
++ mutex_unlock(&mst->i2c_buffer_lock);
+
+- return i2c_transfer(i2c_adap, &m, 1) == 1;
++ return ret;
+ }
+
+ EXPORT_SYMBOL(dibx000_init_i2c_master);
+diff --git a/drivers/media/dvb/frontends/dibx000_common.h b/drivers/media/dvb/frontends/dibx000_common.h
+index f031165..5e01147 100644
+--- a/drivers/media/dvb/frontends/dibx000_common.h
++++ b/drivers/media/dvb/frontends/dibx000_common.h
+@@ -33,6 +33,7 @@ struct dibx000_i2c_master {
+ struct i2c_msg msg[34];
+ u8 i2c_write_buffer[8];
+ u8 i2c_read_buffer[2];
++ struct mutex i2c_buffer_lock;
+ };
+
+ extern int dibx000_init_i2c_master(struct dibx000_i2c_master *mst,
+commit 45cbff13693d645fa5dcbba964e802e1746b2e57
+Author: Olivier Grenie <olivier.grenie@dibcom.fr>
+Date: Mon Aug 1 17:45:58 2011 +0200
+
+ [media] dib0700: protect the dib0700 buffer access
+
+ This patch protects the common buffer access inside the dib0700 in order
+ to manage concurrent access. This protection is done using mutex.
+
+ Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
+ Cc: Florian Mickler <florian@mickler.org>
+ Cc: stable@kernel.org
+
+ Signed-off-by: Javier Marcet <javier@marcet.info>
+ Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
+ Signed-off-by: Patrick Boettcher <patrick.boettcher@dibcom.fr>
+
+diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
+index 5eb91b4..291b645 100644
+--- a/drivers/media/dvb/dvb-usb/dib0700_core.c
++++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
+@@ -30,6 +30,11 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
+ struct dib0700_state *st = d->priv;
+ int ret;
+
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
+ REQUEST_GET_VERSION,
+ USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
+@@ -46,6 +51,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
+ if (fwtype != NULL)
+ *fwtype = (st->buf[12] << 24) | (st->buf[13] << 16) |
+ (st->buf[14] << 8) | st->buf[15];
++ mutex_unlock(&d->usb_mutex);
+ return ret;
+ }
+
+@@ -108,7 +114,12 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 txlen, u8 *rx, u8 rxlen
+ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_dir, u8 gpio_val)
+ {
+ struct dib0700_state *st = d->priv;
+- s16 ret;
++ int ret;
++
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
+
+ st->buf[0] = REQUEST_SET_GPIO;
+ st->buf[1] = gpio;
+@@ -116,6 +127,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
+
+ ret = dib0700_ctrl_wr(d, st->buf, 3);
+
++ mutex_unlock(&d->usb_mutex);
+ return ret;
+ }
+
+@@ -125,6 +137,11 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
+ int ret;
+
+ if (st->fw_version >= 0x10201) {
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ st->buf[0] = REQUEST_SET_USB_XFER_LEN;
+ st->buf[1] = (nb_ts_packets >> 8) & 0xff;
+ st->buf[2] = nb_ts_packets & 0xff;
+@@ -132,6 +149,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
+ deb_info("set the USB xfer len to %i Ts packet\n", nb_ts_packets);
+
+ ret = dib0700_ctrl_wr(d, st->buf, 3);
++ mutex_unlock(&d->usb_mutex);
+ } else {
+ deb_info("this firmware does not allow to change the USB xfer len\n");
+ ret = -EIO;
+@@ -208,6 +226,10 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
+
+ } else {
+ /* Write request */
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
+ st->buf[0] = REQUEST_NEW_I2C_WRITE;
+ st->buf[1] = msg[i].addr << 1;
+ st->buf[2] = (en_start << 7) | (en_stop << 6) |
+@@ -227,6 +249,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
+ USB_TYPE_VENDOR | USB_DIR_OUT,
+ 0, 0, st->buf, msg[i].len + 4,
+ USB_CTRL_GET_TIMEOUT);
++ mutex_unlock(&d->usb_mutex);
+ if (result < 0) {
+ deb_info("i2c write error (status = %d)\n", result);
+ break;
+@@ -249,6 +272,10 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
+
+ if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
+ return -EAGAIN;
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
+
+ for (i = 0; i < num; i++) {
+ /* fill in the address */
+@@ -279,6 +306,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
+ break;
+ }
+ }
++ mutex_unlock(&d->usb_mutex);
+ mutex_unlock(&d->i2c_mutex);
+
+ return i;
+@@ -337,7 +365,12 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
+ u16 pll_loopdiv, u16 free_div, u16 dsuScaler)
+ {
+ struct dib0700_state *st = d->priv;
+- s16 ret;
++ int ret;
++
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
+
+ st->buf[0] = REQUEST_SET_CLOCK;
+ st->buf[1] = (en_pll << 7) | (pll_src << 6) |
+@@ -352,6 +385,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
+ st->buf[9] = dsuScaler & 0xff; /* LSB */
+
+ ret = dib0700_ctrl_wr(d, st->buf, 10);
++ mutex_unlock(&d->usb_mutex);
+
+ return ret;
+ }
+@@ -360,10 +394,16 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
+ {
+ struct dib0700_state *st = d->priv;
+ u16 divider;
++ int ret;
+
+ if (scl_kHz == 0)
+ return -EINVAL;
+
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ st->buf[0] = REQUEST_SET_I2C_PARAM;
+ divider = (u16) (30000 / scl_kHz);
+ st->buf[1] = 0;
+@@ -379,7 +419,11 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
+ deb_info("setting I2C speed: %04x %04x %04x (%d kHz).",
+ (st->buf[2] << 8) | (st->buf[3]), (st->buf[4] << 8) |
+ st->buf[5], (st->buf[6] << 8) | st->buf[7], scl_kHz);
+- return dib0700_ctrl_wr(d, st->buf, 8);
++
++ ret = dib0700_ctrl_wr(d, st->buf, 8);
++ mutex_unlock(&d->usb_mutex);
++
++ return ret;
+ }
+
+
+@@ -515,6 +559,11 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
+ }
+ }
+
++ if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ st->buf[0] = REQUEST_ENABLE_VIDEO;
+ /* this bit gives a kind of command,
+ * rather than enabling something or not */
+@@ -548,7 +597,10 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
+
+ deb_info("data for streaming: %x %x\n", st->buf[1], st->buf[2]);
+
+- return dib0700_ctrl_wr(adap->dev, st->buf, 4);
++ ret = dib0700_ctrl_wr(adap->dev, st->buf, 4);
++ mutex_unlock(&adap->dev->usb_mutex);
++
++ return ret;
+ }
+
+ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
+@@ -557,6 +609,11 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
+ struct dib0700_state *st = d->priv;
+ int new_proto, ret;
+
++ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
++ dprintk("could not acquire lock");
++ return 0;
++ }
++
+ st->buf[0] = REQUEST_SET_RC;
+ st->buf[1] = 0;
+ st->buf[2] = 0;
+@@ -567,23 +624,29 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
+ else if (rc_type == RC_TYPE_NEC)
+ new_proto = 0;
+ else if (rc_type == RC_TYPE_RC6) {
+- if (st->fw_version < 0x10200)
+- return -EINVAL;
++ if (st->fw_version < 0x10200) {
++ ret = -EINVAL;
++ goto out;
++ }
+
+ new_proto = 2;
+- } else
+- return -EINVAL;
++ } else {
++ ret = -EINVAL;
++ goto out;
++ }
+
+ st->buf[1] = new_proto;
+
+ ret = dib0700_ctrl_wr(d, st->buf, 3);
+ if (ret < 0) {
+ err("ir protocol setup failed");
+- return ret;
++ goto out;
+ }
+
+ d->props.rc.core.protocol = rc_type;
+
++out:
++ mutex_unlock(&d->usb_mutex);
+ return ret;
+ }
+
+commit aeb2d456b746164a4bd19e53de0a6678ca63fcad
+Author: Olivier Grenie <olivier.grenie@dibcom.fr>
+Date: Thu Aug 4 18:10:03 2011 +0200
+
+ [media] dib0700: correct error message
+
+ The goal of this patch is to correct a previous patch. In case of error,
+ the err() function should be used instead of dprintk() function.
+
+ Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
+
+diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
+index 291b645..b693ed1 100644
+--- a/drivers/media/dvb/dvb-usb/dib0700_core.c
++++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
+@@ -31,7 +31,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
+ int ret;
+
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -117,7 +117,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
+ int ret;
+
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -138,7 +138,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
+
+ if (st->fw_version >= 0x10201) {
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -227,7 +227,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
+ } else {
+ /* Write request */
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+ st->buf[0] = REQUEST_NEW_I2C_WRITE;
+@@ -273,7 +273,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
+ if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
+ return -EAGAIN;
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -368,7 +368,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
+ int ret;
+
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -400,7 +400,7 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
+ return -EINVAL;
+
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -560,7 +560,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
+ }
+
+ if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
+@@ -610,7 +610,7 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
+ int new_proto, ret;
+
+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
+- dprintk("could not acquire lock");
++ err("could not acquire lock");
+ return 0;
+ }
+
diff --git a/libre/linux-libre/i915-fix-ghost-tv-output.patch b/libre/linux-libre/i915-fix-ghost-tv-output.patch
new file mode 100644
index 000000000..3b631361a
--- /dev/null
+++ b/libre/linux-libre/i915-fix-ghost-tv-output.patch
@@ -0,0 +1,26 @@
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Tested-by: Santi <santi@agolina.net>
+---
+ drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
+index dc83b7a..c8f67bf 100644
+--- a/drivers/gpu/drm/i915/intel_tv.c
++++ b/drivers/gpu/drm/i915/intel_tv.c
+@@ -1267,6 +1267,15 @@
+ DAC_B_0_7_V |
+ DAC_C_0_7_V);
+
++ /*
++ * The TV sense state should be cleared to zero on cantiga platform. Otherwise
++ * the TV is misdetected. This is hardware requirement.
++ */
++ if (IS_GM45(dev))
++ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
++ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
++
++
+ I915_WRITE(TV_CTL, tv_ctl);
+ I915_WRITE(TV_DAC, tv_dac);
+ POSTING_READ(TV_DAC);
diff --git a/libre/linux-libre/i915-fix-incorrect-error-message.patch b/libre/linux-libre/i915-fix-incorrect-error-message.patch
new file mode 100644
index 000000000..e1addbb05
--- /dev/null
+++ b/libre/linux-libre/i915-fix-incorrect-error-message.patch
@@ -0,0 +1,22 @@
+commit 6c76e0b94e484ffbdf38d2fe2769b6ca9aa99de4
+Author: Thomas Bächler <thomas@archlinux.org>
+Date: Mon Oct 31 19:16:18 2011 +0100
+
+ Change accidental error message to debug message.
+
+ According to https://lkml.org/lkml/2011/9/19/80, this is not supposed
+ to be an error message, but a debug message. This worries users.
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 04411ad..02d5794 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -5172,7 +5172,7 @@ static void ironlake_update_pch_refclk(struct drm_device *dev)
+ } else {
+ /* Enable SSC on PCH eDP if needed */
+ if (intel_panel_use_ssc(dev_priv)) {
+- DRM_ERROR("enabling SSC on PCH\n");
++ DRM_DEBUG("enabling SSC on PCH\n");
+ temp |= DREF_SUPERSPREAD_SOURCE_ENABLE;
+ }
+ }
diff --git a/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch b/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch
new file mode 100644
index 000000000..a53a3a425
--- /dev/null
+++ b/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch
@@ -0,0 +1,38 @@
+This fix regression introduced by commit:
+
+commit 15b3f3b006b42a678523cad989bfd60b76bf4403
+Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
+Date: Fri Jun 3 07:54:13 2011 -0700
+
+ iwlagn: set smps mode after assoc for 1000 device
+
+Also remove unneeded brackets on the way.
+
+Address:
+https://bugzilla.redhat.com/show_bug.cgi?id=744155
+
+If fix will not get 3.1 release, it should be applied in 3.1 stable.
+
+Cc: stable@kernel.org # 3.1+
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+index ca632f9..5004342 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
+@@ -296,8 +296,8 @@ static int iwlagn_rxon_connect(struct iwl_priv *priv,
+ return ret;
+ }
+
+- if ((ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION) &&
+- priv->cfg->ht_params->smps_mode)
++ if (ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION &&
++ priv->cfg->ht_params && priv->cfg->ht_params->smps_mode)
+ ieee80211_request_smps(ctx->vif,
+ priv->cfg->ht_params->smps_mode);
+
+--
+1.7.1
diff --git a/libre/linux-libre/linux-libre.install b/libre/linux-libre/linux-libre.install
index 6f7ae815a..772e15b24 100644
--- a/libre/linux-libre/linux-libre.install
+++ b/libre/linux-libre/linux-libre.install
@@ -2,7 +2,7 @@
# arg 2: the old package version
KERNEL_NAME=
-KERNEL_VERSION=3.0-LIBRE
+KERNEL_VERSION=3.1.2-1-LIBRE
post_install () {
# updating module dependencies
@@ -45,9 +45,8 @@ post_upgrade() {
if grep "^[^#]*[[:space:]]/boot" etc/fstab 2>&1 >/dev/null; then
if ! grep "[[:space:]]/boot" etc/mtab 2>&1 >/dev/null; then
- echo "WARNING: /boot appears to be a seperate partition but is not mounted"
- echo " This is most likely not what you want. Please mount your /boot"
- echo " partition and reinstall the kernel unless you are sure this is OK"
+ echo "WARNING: /boot appears to be a seperate partition but is not mounted."
+ echo " You probably just broke your system. Congratulations."
fi
fi
diff --git a/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch b/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch
new file mode 100644
index 000000000..79be53afb
--- /dev/null
+++ b/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch
@@ -0,0 +1,41 @@
+From 7fcc7c8acf0fba44d19a713207af7e58267c1179 Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@suse.de>
+Date: Mon, 31 Oct 2011 12:59:44 +1100
+Subject: md/raid10: Fix bug when activating a hot-spare.
+
+From: NeilBrown <neilb@suse.de>
+
+commit 7fcc7c8acf0fba44d19a713207af7e58267c1179 upstream.
+
+This is a fairly serious bug in RAID10.
+
+When a RAID10 array is degraded and a hot-spare is activated, the
+spare does not take up the empty slot, but rather replaces the first
+working device.
+This is likely to make the array non-functional. It would normally
+be possible to recover the data, but that would need care and is not
+guaranteed.
+
+This bug was introduced in commit
+ 2bb77736ae5dca0a189829fbb7379d43364a9dac
+which first appeared in 3.1.
+
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/raid10.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/md/raid10.c
++++ b/drivers/md/raid10.c
+@@ -1337,7 +1337,7 @@ static int raid10_add_disk(mddev_t *mdde
+ mirror_info_t *p = &conf->mirrors[mirror];
+ if (p->recovery_disabled == mddev->recovery_disabled)
+ continue;
+- if (!p->rdev)
++ if (p->rdev)
+ continue;
+
+ disk_stack_limits(mddev->gendisk, rdev->bdev,
+
diff --git a/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch b/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch
new file mode 100644
index 000000000..9e570dd3f
--- /dev/null
+++ b/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch
@@ -0,0 +1,99 @@
+commit 2394d67e446bf616a0885167d5f0d397bdacfdfc
+Author: Oliver Neukum <oneukum@suse.de>
+Date: Tue Sep 13 08:42:21 2011 +0200
+
+ USB: add RESET_RESUME for webcams shown to be quirky
+
+ The new runtime PM code has shown that many webcams suffer
+ from a race condition that may crash them upon resume.
+ Runtime PM is especially prone to show the problem because
+ it retains power to the cameras at all times. However
+ system suspension may also crash the devices and retain
+ power to the devices.
+ The only way to solve this problem without races is in
+ usbcore with the RESET_RESUME quirk.
+
+ Signed-off-by: Oliver Neukum <oneukum@suse.de>
+ Signed-off-by: stable <stable@kernel.org>
+ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
+index 81ce6a8..38f0510 100644
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -38,6 +38,24 @@ static const struct usb_device_id usb_quirk_list[] = {
+ /* Creative SB Audigy 2 NX */
+ { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
+
++ /* Logitech Webcam C200 */
++ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
++
++ /* Logitech Webcam C250 */
++ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
++
++ /* Logitech Webcam B/C500 */
++ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
++
++ /* Logitech Webcam Pro 9000 */
++ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
++
++ /* Logitech Webcam C310 */
++ { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
++
++ /* Logitech Webcam C270 */
++ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
++
+ /* Logitech Harmony 700-series */
+ { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
+
+@@ -69,6 +87,9 @@ static const struct usb_device_id usb_quirk_list[] = {
+ { USB_DEVICE(0x06a3, 0x0006), .driver_info =
+ USB_QUIRK_CONFIG_INTF_STRINGS },
+
++ /* Guillemot Webcam Hercules Dualpix Exchange*/
++ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
++
+ /* M-Systems Flash Disk Pioneers */
+ { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
+
+commit 5b253d88cc6c65a23cefc457a5a4ef139913c5fc
+Author: Jon Levell <linuxusb@coralbark.net>
+Date: Thu Sep 29 20:42:52 2011 +0100
+
+ USB: add quirk for Logitech C300 web cam
+
+ My webcam is a Logitech C300 and I get "chipmunk"ed squeaky sound.
+ The following trivial patch fixes it.
+
+ Signed-off-by: Jon Levell <linuxusb@coralbark.net>
+ Cc: stable <stable@kernel.org>
+ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
+index 38f0510..d6a8d82 100644
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -44,6 +44,9 @@ static const struct usb_device_id usb_quirk_list[] = {
+ /* Logitech Webcam C250 */
+ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
+
++ /* Logitech Webcam C300 */
++ { USB_DEVICE(0x046d, 0x0805), .driver_info = USB_QUIRK_RESET_RESUME },
++
+ /* Logitech Webcam B/C500 */
+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
+
+diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
+index d6a8d82..caa1991 100644
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -50,6 +50,9 @@ static const struct usb_device_id usb_quirk_list[] = {
+ /* Logitech Webcam B/C500 */
+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
+
++ /* Logitech Webcam C600 */
++ { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME },
++
+ /* Logitech Webcam Pro 9000 */
+ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
+
diff --git a/libre/mplayer-libre/PKGBUILD b/libre/mplayer-libre/PKGBUILD
index 8798778d5..d5f6be604 100644
--- a/libre/mplayer-libre/PKGBUILD
+++ b/libre/mplayer-libre/PKGBUILD
@@ -5,7 +5,7 @@
_pkgbase=mplayer
pkgbase=mplayer-libre
pkgname=('mplayer-libre' 'mencoder-libre')
-pkgver=34174
+pkgver=34344
pkgrel=1
arch=('i686' 'x86_64')
makedepends=('libxxf86dga' 'libxxf86vm' 'libmad' 'cdparanoia' 'libxinerama' 'sdl' 'lame' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'libgl' 'smbclient'
@@ -18,9 +18,9 @@ makedepends=('libxxf86dga' 'libxxf86vm' 'libmad' 'cdparanoia' 'libxinerama' 'sdl
'libpulse' 'fribidi' 'unzip' 'mesa' 'live-media' 'yasm' 'git' 'fontconfig' 'mpg123' 'ladspa' 'libass')
license=('GPL')
url="http://www.mplayerhq.hu/"
-options=(!buildflags !emptydirs !distcc)
+options=(!buildflags !emptydirs)
source=(ftp://ftp.archlinux.org/other/${_pkgbase}/${_pkgbase}-${pkgver}.tar.xz mplayer.desktop)
-md5sums=('73225e0be6c5db51d7cbf2a0dd1d25a2'
+md5sums=('e4016248418b8f9d55b540d68b6cfee2'
'c0d6ef795cf6de48e3b87ff7c23f0319')
build() {
@@ -39,6 +39,7 @@ build() {
--disable-mga \
--disable-ass-internal \
--enable-xvmc \
+ --enable-radio \
--language=all \
--confdir=/etc/mplayer
[ "$CARCH" = "i686" ] && sed 's|-march=i486|-march=i686|g' -i config.mak
diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD
index 29d7d2b9c..c8b423486 100644
--- a/libre/pacman/PKGBUILD
+++ b/libre/pacman/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=pacman
pkgver=3.5.4
-pkgrel=4
+pkgrel=4.2
pkgdesc="A library-based package manager with dependency support"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.archlinux.org/pacman/"
@@ -61,7 +61,7 @@ package() {
mycarch="mips64el"
mychost="mips64el-unknown-linux-gnu"
myflags="-O2 -march=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
- myldflags=""
+ myldflags="-Wl,--as-needed"
;;
esac
install -m644 $srcdir/makepkg.conf $pkgdir/etc/
@@ -80,9 +80,9 @@ package() {
}
# vim: set ts=2 sw=2 et:
-md5sums=('c36c18ed4d8ec69c0ecb4f9684266901'
- 'c7e6dbee04b7c492febea4366519b91d'
- '8809642ed398d2b9b98c5974b8b5e348'
- '3b2e740853e3d1463885675809d4c6ff'
+md5sums=('2dd3a85d55ee3dd89abd349aa837447c'
+ 'ba85525fe868f030bef209b0487dd5a5'
+ '7aaccf24479f396d4a5987c8ccd2f3a2'
+ '150a2854816cd67b1608e00f99701c1c'
'be10d3d2e533515a0470237761415568'
- '15d09319fae475f20ba11dd56e832c65')
+ '749a4ddc6d8418d8d031f1c9b4e09d6f')
diff --git a/libre/sqlite3/PKGBUILD b/libre/sqlite3/PKGBUILD
index 9cf45373a..9e380bd73 100644
--- a/libre/sqlite3/PKGBUILD
+++ b/libre/sqlite3/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 124333 2011-05-19 19:31:27Z andyrtr $
+# $Id: PKGBUILD 138719 2011-09-27 17:41:55Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
@@ -8,10 +8,10 @@
pkgbase="sqlite3"
pkgname=('sqlite3' 'sqlite3-tcl')
-_amalgamationver=3070603
+_amalgamationver=3070800
_amalgamationver2=${_amalgamationver/00/}
pkgver=${_amalgamationver2//0/.}
-pkgrel=1
+pkgrel=2
pkgdesc="A C library that implements an SQL database engine"
arch=('i686' 'x86_64' 'mips64el')
license=('custom')
@@ -21,6 +21,10 @@ source=( # tarball containing the amalgamation for SQLite 3.7.5 together with a
http://www.sqlite.org/sqlite-autoconf-$_amalgamationver.tar.gz
license.txt)
options=('!libtool' '!emptydirs')
+md5sums=('6bfb46d73caaa1bbbcd2b52184b6c542'
+ 'c1cdbc5544034d9012e421e75a5e4890')
+sha1sums=('34852cfd49ddea440eb26a35ad32deee0176a724'
+ 'f34f6daa4ab3073d74e774aad21d66878cf26853')
build() {
export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_SECURE_DELETE"
diff --git a/libre/texlive-bin-libre/PKGBUILD b/libre/texlive-bin-libre/PKGBUILD
index 48ec8778d..dd1c32a40 100644
--- a/libre/texlive-bin-libre/PKGBUILD
+++ b/libre/texlive-bin-libre/PKGBUILD
@@ -5,15 +5,15 @@
pkgname=texlive-bin-libre
pkgver=2011.1
_luatex_ver=0.70.1
-pkgrel=2
+pkgrel=4
pkgdesc="TeX Live binaries"
license=('GPL')
arch=('i686' 'x86_64' 'mips64el')
-depends=('t1lib' 'gd' 'libgraphite' 'poppler' 'libsigsegv' 'zziplib')
-makedepends=('perl' 'clisp' 'ffcall')
+depends=('t1lib' 'gd' 'libgraphite' 'poppler>=0.18.1' 'libsigsegv' 'zziplib')
+makedepends=('perl' 'clisp' 'ffcall' 'pkg-config')
optdepends=('ed: for texconfig')
provides=('lcdf-typetools' 'kpathsea' 'xindy' 'pdfjam' 'texlive-bin')
-conflicts=('pdfjam')
+conflicts=('pdfjam' 'texlive-bin' 'poppler>=0.19')
replaces=('texlive-bin')
options=('!libtool')
url='http://tug.org/texlive/'
@@ -24,7 +24,8 @@ source=('texmf.cnf'
'archlinux-build.patch'
'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-source-20110724.tar.xz'
'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-texmf-20110724.tar.xz'
- "http://foundry.supelec.fr/gf/download/frsrelease/392/1730/luatex-beta-${_luatex_ver}.tar.bz2"
+ # "http://foundry.supelec.fr/gf/download/frsrelease/392/1730/luatex-beta-${_luatex_ver}.tar.bz2"
+ 'http://ftp.archlinux.org/other/texlive/luatex-svn4356.tar.xz'
)
backup=(etc/texmf/web2c/texmf.cnf \
etc/texmf/chktex/chktexrc \
@@ -46,7 +47,7 @@ md5sums=('ff30d6813babd2e41c414365eea9c147'
'94ef5571a54262790ab64d6d044dd10c'
'58e8ab64188eaf15897b7acf472dca9f'
'9f7ae1aa24afd9e34289ac10a8f9e87b'
- 'c9348d4381170204b1a1b0440d8b6918')
+ 'e7f0197559ef865d8c01683dab3b8526')
build() {
cd $srcdir
@@ -55,7 +56,8 @@ build() {
rm -rf source/{extra/{djgpp,xz},libs/{freetype2,gd,xpdf,libpng,zziplib,zlib,t1lib,poppler,graphite},utils/dialog}
rm -rf luatex-beta-0.70.1/source/libs/{libpng,zziplib,zlib,poppler}
# Building LuaTeX
- cd luatex-beta-${_luatex_ver}
+ # cd luatex-beta-${_luatex_ver}
+ cd luatex
patch -p0 -i ../fix-fontforge-encoding.patch
(cd source && ./texk/web2c/luatexdir/getluatexsvnversion.sh)
mkdir build
@@ -73,6 +75,7 @@ build() {
--without-system-icu \
--without-system-kpathsea \
--with-system-freetype2 \
+ --with-system-xpdf \
--with-system-poppler \
--with-freetype2-libdir=/usr/lib \
--with-freetype2-include=/usr/include/freetype2 \
@@ -234,7 +237,7 @@ package() {
rm -rf ${pkgdir}/usr/{texmf,texmf-dist}
## install luatex binary
- cd $srcdir/luatex-beta-${_luatex_ver}/build/texk/web2c
+ cd $srcdir/luatex/build/texk/web2c
./libtool --mode=install install -m755 luatex $pkgdir/usr/bin/
cd $pkgdir/usr/bin
/bin/ln -s luatex texlua
diff --git a/libre/unarchiver/PKGBUILD b/libre/unarchiver/PKGBUILD
index 36928ad2c..84bab9c17 100644
--- a/libre/unarchiver/PKGBUILD
+++ b/libre/unarchiver/PKGBUILD
@@ -6,7 +6,7 @@ pkgdesc="An Objective-C application for uncompressing archive files"
arch=('x86_64' 'i686' 'mips64el')
url="http://wakaba.c3.cx/s/apps/unarchiver.html"
license=('LGPL2.1')
-depends=('gnustep-base>=1.23.0-1.1' 'openssl' 'bzip2' 'icu' 'gcc-libs' 'zlib')
+depends=('gnustep-base-libre>=1.23.0' 'openssl' 'bzip2' 'icu' 'gcc-libs' 'zlib')
conflicts=('gnustep-base>=1.24')
makedepends=('gcc-objc')
source=(http://theunarchiver.googlecode.com/files/TheUnarchiver"$pkgver"_src.zip)
diff --git a/libre/ununrar/PKGBUILD b/libre/ununrar/PKGBUILD
new file mode 100644
index 000000000..050cfb484
--- /dev/null
+++ b/libre/ununrar/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Michał Masłowski <mtjm@mtjm.eu>
+
+pkgname=ununrar
+pkgver=0.0a0dev20110715
+pkgrel=1
+pkgdesc="An unrar-compatible interface to Unarchiver"
+arch=('any')
+url="http://hg.mtjm.eu/ununrar/"
+license=('AGPL')
+depends=('python2' 'python2-distribute' 'unarchiver')
+provides=('unrar' 'unrar-libre')
+conflicts=('unrar' 'unrar-libre')
+options=(!emptydirs)
+source=("http://mtjm.eu/releases/Ununrar-${pkgver}.tar.gz")
+sha512sums=('ea2a6805c16be3aad81b18e5e9e044d73ca2f8f87ce078c35e64cdffb12d5f0e4c96e66901af54f388349edbb88c6252ed0e0329e9813cce5e7b9b480802cf44')
+
+package() {
+ cd "$srcdir/Ununrar-$pkgver"
+ python2 setup.py install --root=$pkgdir/ --optimize=1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/libre/virtualbox/10-vboxdrv.rules b/libre/virtualbox-libre/10-vboxdrv.rules
index a6cfe0a05..37403ae2f 100644
--- a/libre/virtualbox/10-vboxdrv.rules
+++ b/libre/virtualbox-libre/10-vboxdrv.rules
@@ -3,4 +3,3 @@ SUBSYSTEM=="usb_device", ACTION=="add", RUN="/usr/share/virtualbox/VBoxCreateUSB
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
-
diff --git a/libre/virtualbox/18-system-xorg.patch b/libre/virtualbox-libre/18-system-xorg.patch
index baca4bc5b..baca4bc5b 100644
--- a/libre/virtualbox/18-system-xorg.patch
+++ b/libre/virtualbox-libre/18-system-xorg.patch
diff --git a/libre/virtualbox/60-vboxguest.rules b/libre/virtualbox-libre/60-vboxguest.rules
index d64575709..d64575709 100644
--- a/libre/virtualbox/60-vboxguest.rules
+++ b/libre/virtualbox-libre/60-vboxguest.rules
diff --git a/libre/virtualbox/LocalConfig.kmk b/libre/virtualbox-libre/LocalConfig.kmk
index 97123a296..e5cbcebcd 100644
--- a/libre/virtualbox/LocalConfig.kmk
+++ b/libre/virtualbox-libre/LocalConfig.kmk
@@ -17,4 +17,3 @@ VBOX_BLD_PYTHON = python2
VBOX_JAVA_HOME = /usr/lib/jvm/java-6-openjdk
VBOX_GCC_WERR =
VBOX_GCC_WARN =
-
diff --git a/libre/virtualbox/PKGBUILD b/libre/virtualbox-libre/PKGBUILD
index bfd784c0d..45b870e64 100644
--- a/libre/virtualbox/PKGBUILD
+++ b/libre/virtualbox-libre/PKGBUILD
@@ -7,29 +7,27 @@
# * Package with --pkg "virtualbox-parabola-additions virtualbox-parabola-modules"
# Based on
#Maintainer: Ionut Biru <ibiru@archlinux.org>
-pkgbase=virtualbox
-pkgname=('virtualbox' 'virtualbox-parabola-additions' 'virtualbox-parabola-modules' 'virtualbox-sdk')
+pkgbase=virtualbox-libre
+pkgname=('virtualbox-libre' 'virtualbox-parabola-additions' 'virtualbox-sdk' 'virtualbox-source')
pkgver=4.1.4
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64')
url='http://virtualbox.org'
license=('GPL' 'custom')
makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor' 'qt' 'libidl2' 'sdl_ttf' 'alsa-lib' 'libpulse' 'libxtst'
-'xalan-c' 'sdl' 'libxmu' 'curl' 'python2' 'linux-libre-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'openjdk6' 'gsoap' 'vde2'
-'xorg-server-devel' 'xf86driproto' 'libxcomposite' 'pkgconfig')
+'xalan-c' 'sdl' 'libxmu' 'curl' 'python2' 'linux-libre-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'openjdk6' 'gsoap' 'vde2')
[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc')
source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2
virtualbox-4-makeself-check.patch virtualbox-4-mkisofs-check.patch
- 10-vboxdrv.rules 60-vboxguest.rules vboxdrv-reference.patch LocalConfig.kmk vboxbuild
+ 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk vboxbuild
change_default_driver_dir.patch vbox-service.conf vbox-service.rc)
-_kernver=3.0-LIBRE
-options=(!distcc)
+
+_extramodules=extramodules-3.1-LIBRE
+_kernver="$(cat /lib/modules/${_extramodules}/version)"
build() {
cd "$srcdir/VirtualBox-${pkgver}_OSE"
- patch -Np1 -i "$srcdir/virtualbox-4-makeself-check.patch"
- patch -Np1 -i "$srcdir/virtualbox-4-mkisofs-check.patch"
patch -Np1 -i "$srcdir/vboxdrv-reference.patch"
patch -Np1 -i "$srcdir/change_default_driver_dir.patch"
@@ -38,22 +36,24 @@ build() {
./configure --disable-docs \
--enable-webservice \
--enable-vde \
+ --enable-vnc \
+ --nofatal \
--with-linux=/usr/src/linux-${_kernver}
source ./env.sh
kmk all
-
- export KERN_DIR=/usr/src/linux-${_kernver}
- make -C "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"
- make -C "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src/vboxvideo"
sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py"
}
-package_virtualbox() {
+package_virtualbox-libre() {
pkgdesc="Powerful x86 virtualization for enterprise as well as home use"
- depends=('libxml2' 'libxcursor' 'libidl2' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng' 'linux-libre-headers' 'gcc' 'make')
+ depends=('virtualbox-modules' 'libxml2' 'libxcursor' 'libidl2' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng')
optdepends=('qt: for VirtualBox GUI'
'vde2: Virtual Distributed Ethernet support'
- 'virtualbox-sdk: developer kit')
+ 'virtualbox-sdk: developer kit'
+ 'virtualbox-source: host kernel source modules for non-stock kernels')
+ replaces=('virtualbox')
+ conflicts=('virtualbox')
+ provides=("virtualbox=$pkgver")
replaces=('virtualbox-ose')
conflicts=('virtualbox-ose')
@@ -113,6 +113,17 @@ package_virtualbox() {
"$pkgdir/usr/share/licenses/virtualbox/LICENSE"
install -D -m 0644 "$srcdir/10-vboxdrv.rules" \
"$pkgdir/lib/udev/rules.d/10-vboxdrv.rules"
+}
+
+package_virtualbox-source() {
+ pkgdesc="VirtualBox kernel modules source"
+ depends=(linux-libre-headers gcc make)
+ install=virtualbox-source.install
+
+ source "$srcdir/VirtualBox-${pkgver}_OSE/env.sh"
+ mkdir -p $pkgdir/usr/lib/virtualbox
+
+ cd "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
#sources for modules
cp -r src ${pkgdir}/usr/lib/virtualbox
@@ -121,7 +132,7 @@ package_virtualbox() {
}
package_virtualbox-sdk() {
- pkgdesc=" VirtualBox Software Developer Kit (SDK)"
+ pkgdesc="VirtualBox Software Developer Kit (SDK)"
depends=('python2')
mkdir -p "$pkgdir/usr/lib/virtualbox"
@@ -170,43 +181,23 @@ package_virtualbox-parabola-additions(){
# install sample config
install -D -m644 "${srcdir}/vbox-service.conf" "${pkgdir}/etc/conf.d/vbox-service"
}
-
-package_virtualbox-parabola-modules(){
- pkgdesc="Additions only for Parabola guests (kernel modules)"
- license=('GPL')
- install=virtualbox-parabola-modules.install
- depends=('linux-libre>=3.0' 'linux-libre<3.1')
- replaces=('virtualbox-guest-modules' 'virtualbox-archlinux-modules')
- conflicts=('virtualbox-guest-modules' 'virtualbox-archlinux-modules')
- provides=("virtualbox-archlinux-modules=${pkgver}")
-
- source "$srcdir/VirtualBox-${pkgver}_OSE/env.sh"
-
- cd "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"
-
- install -D -m644 vboxguest.ko \
- "$pkgdir/lib/modules/$_kernver/misc/vboxguest.ko"
-
- install -D -m644 vboxsf.ko \
- "$pkgdir/lib/modules/$_kernver/misc/vboxsf.ko"
-
- install -D -m644 vboxvideo.ko \
- "$pkgdir/lib/modules/$_kernver/misc/vboxvideo.ko"
-
- install -D -m 0644 "$srcdir/60-vboxguest.rules" \
- "$pkgdir/lib/udev/rules.d/60-vboxguest.rules"
-
- sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" "$startdir/virtualbox-parabola-modules.install"
-}
+md5sums=('dc6e6801b3823332b6ca2e9915221aae'
+ 'bc048d1e58d84ece4a186199ee48d4c8'
+ '5f85710e0b8606de967716ded7b2d351'
+ 'cc3f278bc273011aa95277500a76f677'
+ '78ffa67ff131680f1d2b6f06d4325c5b'
+ 'a82d698e7868315cdf876cfb02fd2268'
+ '97e193f050574dd272a38e5ee5ebe62b'
+ '3c08ad30b89add47d3f45121200a5360'
+ '778d865e56e31cc592fbfa257fdcfce7')
md5sums=('dc6e6801b3823332b6ca2e9915221aae'
'a9f22ccaacb207e0e1c5450fede82d06'
'b7cbcf89a30c712fed4435dea28d1703'
- 'cee0c968c923760181ae060eab1c2e58'
- '13ff08388a54fd48cc04523380f26af6'
- '47349d711ecb5fbc105a18f9f936953b'
- '0d91f80ce6a4985db8d2f8f65a61458e'
- '47d6ee4f673bf31babbb7b4edb61e547'
- '6df8eb5173c4f84faedb4962c4d5f0ef'
- 'b978dfdbff377e00ddecb24cb3218ed2'
- '2460dedb8bdce85f9d7e075742e94d24')
+ '5f85710e0b8606de967716ded7b2d351'
+ 'cc3f278bc273011aa95277500a76f677'
+ '78ffa67ff131680f1d2b6f06d4325c5b'
+ 'a82d698e7868315cdf876cfb02fd2268'
+ '97e193f050574dd272a38e5ee5ebe62b'
+ '3c08ad30b89add47d3f45121200a5360'
+ '778d865e56e31cc592fbfa257fdcfce7')
diff --git a/libre/virtualbox/change_default_driver_dir.patch b/libre/virtualbox-libre/change_default_driver_dir.patch
index f6dc7e1a0..d8531499d 100644
--- a/libre/virtualbox/change_default_driver_dir.patch
+++ b/libre/virtualbox-libre/change_default_driver_dir.patch
@@ -16,4 +16,3 @@ diff -Nur VirtualBox-4.1.0_OSE.orig/src/VBox/Additions/common/crOpenGL/fakedri_d
#ifdef DEBUG_DRI_CALLS
#define SWDRI_SHOWNAME(pext, func) \
-
diff --git a/libre/virtualbox/vbox-service.conf b/libre/virtualbox-libre/vbox-service.conf
index 31262af37..9d4ec629f 100644
--- a/libre/virtualbox/vbox-service.conf
+++ b/libre/virtualbox-libre/vbox-service.conf
@@ -1,3 +1,2 @@
# VBoxService -h
VBOX_SERVICE_OPTION=""
-
diff --git a/libre/virtualbox/vbox-service.rc b/libre/virtualbox-libre/vbox-service.rc
index 381e3d751..c1af2134d 100644
--- a/libre/virtualbox/vbox-service.rc
+++ b/libre/virtualbox-libre/vbox-service.rc
@@ -37,4 +37,3 @@ esac
exit 0
# vim:set ts=2 sw=2 ft=sh et:
-
diff --git a/libre/virtualbox/vboxbuild b/libre/virtualbox-libre/vboxbuild
index 66f5812ab..cfc3c0a66 100644
--- a/libre/virtualbox/vboxbuild
+++ b/libre/virtualbox-libre/vboxbuild
@@ -29,7 +29,7 @@ if (( ${#MODLIST[*]} )); then
modprobe -ar "${MODLIST[@]}" && stat_done || stat_fail
fi
-for kdir in /lib/modules/*; do
+for kdir in /lib/modules/[2-3]*; do
if [[ ! -d $kdir/kernel ]]; then
# found a stale kernel
mods=("$kdir/misc/vbox"{drv,netadp,netflt,pci}.ko*)
@@ -76,4 +76,3 @@ if (( ${#MODLIST[*]} )); then
modprobe -a "${MODLIST[@]}" && stat_done || stat_fail
fi
-
diff --git a/libre/virtualbox/vboxdrv-reference.patch b/libre/virtualbox-libre/vboxdrv-reference.patch
index 14e26d114..c310dbc8d 100644
--- a/libre/virtualbox/vboxdrv-reference.patch
+++ b/libre/virtualbox-libre/vboxdrv-reference.patch
@@ -43,4 +43,3 @@ diff -Nur VirtualBox-4.1.0_OSE.orig/src/VBox/Installer/linux/VBox.sh VirtualBox-
and if that is not successful, try to re-install the package.
-
diff --git a/libre/virtualbox/virtualbox-4-makeself-check.patch b/libre/virtualbox-libre/virtualbox-4-makeself-check.patch
index 57862b41e..57862b41e 100644
--- a/libre/virtualbox/virtualbox-4-makeself-check.patch
+++ b/libre/virtualbox-libre/virtualbox-4-makeself-check.patch
diff --git a/libre/virtualbox/virtualbox-4-mkisofs-check.patch b/libre/virtualbox-libre/virtualbox-4-mkisofs-check.patch
index d43962148..d43962148 100644
--- a/libre/virtualbox/virtualbox-4-mkisofs-check.patch
+++ b/libre/virtualbox-libre/virtualbox-4-mkisofs-check.patch
diff --git a/libre/virtualbox/virtualbox-parabola-modules.install b/libre/virtualbox-libre/virtualbox-parabola-modules.install
index 75d28784a..75d28784a 100644
--- a/libre/virtualbox/virtualbox-parabola-modules.install
+++ b/libre/virtualbox-libre/virtualbox-parabola-modules.install
diff --git a/libre/virtualbox-libre/virtualbox-source.install b/libre/virtualbox-libre/virtualbox-source.install
new file mode 100644
index 000000000..14537f23d
--- /dev/null
+++ b/libre/virtualbox-libre/virtualbox-source.install
@@ -0,0 +1,13 @@
+post_install() {
+/bin/cat << EOF
+===> To compile the modules do /usr/bin/vboxbuild
+EOF
+
+}
+
+post_upgrade() {
+/bin/cat << EOF
+===> To recompile the modules do /usr/bin/vboxbuild
+EOF
+}
+
diff --git a/libre/virtualbox-libre/virtualbox.install b/libre/virtualbox-libre/virtualbox.install
new file mode 100644
index 000000000..b2d2e8858
--- /dev/null
+++ b/libre/virtualbox-libre/virtualbox.install
@@ -0,0 +1,34 @@
+utils() {
+ if [ -x usr/bin/update-mime-database ]; then
+ update-mime-database usr/share/mime > /dev/null 2>&1
+ fi
+
+ if [ -x usr/bin/xdg-icon-resource ]; then
+ xdg-icon-resource forceupdate --theme hicolor > /dev/null 2>&1
+ fi
+
+ if [ -x usr/bin/update-desktop-database ]; then
+ usr/bin/update-desktop-database -q
+ fi
+}
+
+post_install() {
+ getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers
+ utils
+}
+
+post_upgrade() {
+ getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers
+ utils
+ if [ "$(vercmp $2 4.1.4-3)" -lt 0 ]; then
+/bin/cat << EOF
+===> Starting with virtualbox version 4.1.4-3, kernel modules handling is done by virtualbox-modules.
+===> Use virtualbox-source package if you don't use our stock linux package.
+EOF
+ fi
+}
+
+post_remove() {
+ groupdel vboxusers >/dev/null 2>&1 || true
+ utils
+}
diff --git a/libre/virtualbox-parabola-modules/60-vboxguest.rules b/libre/virtualbox-parabola-modules/60-vboxguest.rules
new file mode 100644
index 000000000..6285f7249
--- /dev/null
+++ b/libre/virtualbox-parabola-modules/60-vboxguest.rules
@@ -0,0 +1,2 @@
+ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600"
+ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666"
diff --git a/libre/virtualbox-parabola-modules/LocalConfig.kmk b/libre/virtualbox-parabola-modules/LocalConfig.kmk
new file mode 100644
index 000000000..af79f90cd
--- /dev/null
+++ b/libre/virtualbox-parabola-modules/LocalConfig.kmk
@@ -0,0 +1,19 @@
+VBOX_WITH_ADDITION_DRIVERS =
+VBOX_WITH_INSTALLER = 1
+VBOX_WITH_LINUX_ADDITIONS = 1
+VBOX_WITH_X11_ADDITIONS =
+VBOX_WITH_TESTCASES =
+VBOX_WITH_TESTSUITE =
+VBOX_WITH_ORIGIN :=
+VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox
+VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH)
+VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH)
+VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox
+VBOX_PATH_APP_DOCS := /usr/share/virtualbox
+VBOX_WITH_REGISTRATION_REQUEST =
+VBOX_WITH_UPDATE_REQUEST =
+VBOX_WITH_VNC := 1
+VBOX_BLD_PYTHON = python2
+VBOX_JAVA_HOME = /usr/lib/jvm/java-6-openjdk
+VBOX_GCC_WERR =
+VBOX_GCC_WARN =
diff --git a/libre/virtualbox-parabola-modules/PKGBUILD b/libre/virtualbox-parabola-modules/PKGBUILD
new file mode 100644
index 000000000..d077c092a
--- /dev/null
+++ b/libre/virtualbox-parabola-modules/PKGBUILD
@@ -0,0 +1,103 @@
+# $Id: PKGBUILD 57345 2011-10-26 09:57:11Z ibiru $
+#Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgbase=virtualbox-modules
+pkgname=('virtualbox-modules' 'virtualbox-parabola-modules')
+pkgver=4.1.4
+pkgrel=3.1
+arch=('i686' 'x86_64')
+url='http://virtualbox.org'
+license=('GPL')
+makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl' 'linux-headers' 'linux-libre')
+[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc')
+source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2
+ LocalConfig.kmk 60-vboxguest.rules)
+md5sums=('dc6e6801b3823332b6ca2e9915221aae'
+ '4c88bd122677a35f68abd76eb01b378b'
+ 'ed1341881437455d9735875ddf455fbe')
+
+_extramodules=extramodules-3.1-LIBRE
+
+build() {
+ _kernver="$(cat /lib/modules/${_extramodules}/version)"
+
+ export KERN_DIR=/lib/modules/${_kernver}/build
+ export KERN_INCL=/usr/src/linux-${_kernver}/include/
+
+ cd "$srcdir/VirtualBox-${pkgver}_OSE"
+
+ cp "$srcdir/LocalConfig.kmk" .
+
+ ./configure \
+ --with-linux=/usr/src/linux-${_kernver} \
+ --disable-java \
+ --disable-docs \
+ --disable-xpcom \
+ --disable-python \
+ --disable-sdl-ttf \
+ --disable-alsa \
+ --disable-pulse \
+ --disable-dbus \
+ --disable-opengl \
+ --build-headless \
+ --nofatal
+ source ./env.sh
+ kmk all
+
+ make -C "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src"
+ make -C "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"
+}
+
+package_virtualbox-parabola-modules(){
+ pkgdesc="Additions only for Parabola guests (kernel modules)"
+ license=('GPL')
+ install=virtualbox-parabola-modules.install
+ depends=('linux>=3.1' 'linux<3.2')
+ replaces=('virtualbox-guest-modules' 'virtualbox-archlinux-modules')
+ conflicts=('virtualbox-guest-modules' 'virtualbox-archlinux-modules')
+ provides=("virtualbox-archlinux-modules=$pkgver")
+
+ source "$srcdir/VirtualBox-${pkgver}_OSE/env.sh"
+
+ cd "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src"
+
+ for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do
+ install -D -m644 ${module} \
+ "$pkgdir/lib/modules/${_extramodules}/${module}"
+ done
+
+ install -D -m 0644 "$srcdir/60-vboxguest.rules" \
+ "$pkgdir/lib/udev/rules.d/60-vboxguest.rules"
+
+ find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+
+ sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-parabola-modules.install"
+}
+
+package_virtualbox-modules(){
+ pkgdesc="Kernel modules for VirtualBox"
+ license=('GPL')
+ install=virtualbox-modules.install
+ depends=('linux>=3.1' 'linux<3.2')
+
+ source "$srcdir/VirtualBox-${pkgver}_OSE/env.sh"
+
+
+ cd "$srcdir/VirtualBox-${pkgver}_OSE/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src"
+
+ install -D -m644 vboxdrv.ko \
+ "$pkgdir/lib/modules/${_extramodules}/vboxdrv.ko"
+
+ install -D -m644 vboxnetadp.ko \
+ "$pkgdir/lib/modules/${_extramodules}/vboxnetadp.ko"
+
+ install -D -m644 vboxnetflt.ko \
+ "$pkgdir/lib/modules/${_extramodules}/vboxnetflt.ko"
+
+ install -D -m644 vboxpci.ko \
+ "$pkgdir/lib/modules/${_extramodules}/vboxpci.ko"
+
+ find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+
+ sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-modules.install"
+}
diff --git a/libre/virtualbox-parabola-modules/virtualbox-modules.install b/libre/virtualbox-parabola-modules/virtualbox-modules.install
new file mode 100644
index 000000000..b57135999
--- /dev/null
+++ b/libre/virtualbox-parabola-modules/virtualbox-modules.install
@@ -0,0 +1,19 @@
+post_install() {
+/bin/cat << EOF
+===> You must load vboxdrv module before starting VirtualBox:
+===> # modprobe vboxdrv
+EOF
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+}
+
+post_upgrade() {
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+ rmmod vboxdrv || echo 'In order to use the new version, reload all virtualbox modules manually.'
+}
+
+post_remove() {
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+}
diff --git a/libre/virtualbox-parabola-modules/virtualbox-parabola-modules.install b/libre/virtualbox-parabola-modules/virtualbox-parabola-modules.install
new file mode 100644
index 000000000..8801d8c49
--- /dev/null
+++ b/libre/virtualbox-parabola-modules/virtualbox-parabola-modules.install
@@ -0,0 +1,17 @@
+post_install() {
+cat << EOF
+===> You may want to load vboxguest, vboxsf and vboxvideo
+EOF
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+}
+
+post_upgrade() {
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+}
+
+post_remove() {
+ EXTRAMODULES='extramodules-3.1-LIBRE'
+ depmod $(cat /lib/modules/$EXTRAMODULES/version)
+}
diff --git a/libre/virtualbox/virtualbox.install b/libre/virtualbox/virtualbox.install
deleted file mode 100644
index 238b0561f..000000000
--- a/libre/virtualbox/virtualbox.install
+++ /dev/null
@@ -1,52 +0,0 @@
-utils() {
- if [ -x usr/bin/update-mime-database ]; then
- update-mime-database usr/share/mime > /dev/null 2>&1
- fi
-
- if [ -x usr/bin/xdg-icon-resource ]; then
- xdg-icon-resource forceupdate --theme hicolor > /dev/null 2>&1
- fi
-
- if [ -x usr/bin/update-desktop-database ]; then
- usr/bin/update-desktop-database -q
- fi
-}
-
-post_install() {
- getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers
- /bin/cat << EOF
-
-===> In order to run VirtualBox, you have to be in the 'vboxusers' group.
-===>
-===> If you want to be able to install guest additions, you have to install
-===> 'virtualbox-additions' package.
-===>
-===> You must load vboxdrv module before starting VirtualBox:
-===> # modprobe vboxdrv
-===>
-===> For networking you must load vboxnetflt or vboxnetadp.
-===>
-===> For PCI passthrough support load vboxpci module.
-===>
-===> To load it automatically, add vboxdrv module
-===> to the MODULES array in /etc/rc.conf.
-
-*** To compile the modules do /usr/bin/vboxbuild ***
-
-EOF
- utils
-}
-
-post_upgrade() {
- getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers
- /bin/cat << EOF
-*** To recompile the modules do /usr/bin/vboxbuild ***
-EOF
- utils
-}
-
-post_remove() {
- groupdel vboxusers >/dev/null 2>&1 || true
- utils
-}
-