summaryrefslogtreecommitdiff
path: root/libre/linux-libre
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@lavabit.com>2012-08-27 14:59:45 -0300
committerAndré Fabian Silva Delgado <emulatorman@lavabit.com>2012-08-27 14:59:45 -0300
commitdd29002274e3109288469fe9677575d450807542 (patch)
treea0e90576b37a460dd9977c3f53162fc7e4765068 /libre/linux-libre
parent43a5bcc4818d2b06b0dbc8f53c9b9c26150e7dc6 (diff)
linux-libre-3.5.3-1: updating version
Diffstat (limited to 'libre/linux-libre')
-rw-r--r--libre/linux-libre/PKGBUILD27
-rw-r--r--libre/linux-libre/alsa-powersave-3.5.x.patch29
-rw-r--r--libre/linux-libre/i915-i2c-crash-3.5.x.patch47
-rw-r--r--libre/linux-libre/linux-libre.install4
-rw-r--r--libre/linux-libre/watchdog-3.5.x.patch60
5 files changed, 160 insertions, 7 deletions
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD
index 661fec088..7d0f0a70e 100644
--- a/libre/linux-libre/PKGBUILD
+++ b/libre/linux-libre/PKGBUILD
@@ -10,9 +10,9 @@
pkgbase=linux-libre # Build stock -LIBRE kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.5
-_sublevel=2
+_sublevel=3
pkgver=${_basekernel}.${_sublevel}
-pkgrel=1.1
+pkgrel=1
_lxopkgver=${_basekernel}.2 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
@@ -29,10 +29,10 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'Kbuild.platforms'
'boot-logo.patch'
'change-default-console-loglevel.patch'
+ 'alsa-powersave-3.5.x.patch'
+ 'watchdog-3.5.x.patch'
+ 'i915-i2c-crash-3.5.x.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2")
-
-_kernelname=${pkgbase#linux-libre}
-_localversionname=-LIBRE
md5sums=('2407fc9563a74acaf38aa0c06516eb1c'
'b081f37b73c652cbb0d5193174092709'
'3ba164b409d8024fdd433f3cc4ae1fea'
@@ -42,6 +42,9 @@ md5sums=('2407fc9563a74acaf38aa0c06516eb1c'
'8267264d9a8966e57fdacd1fa1fc65c4'
'04b21c79df0a952c22d681dd4f4562df'
'9d3c56a4b999c8bfbd4018089a62f662'
+ 'c1d58e712112cf8f95e7831012a1e67a'
+ 'ae13ed1e92bba07e9b17cf5c8d89683c'
+ 'ff4a203dd52e4dfb5d60948bb667d06d'
'd822cc131b20090f39b0d448b0e1f8be')
if [ "$CARCH" != "mips64el" ]; then
# Don't use the Loongson-specific patches on non-mips64el arches.
@@ -49,6 +52,9 @@ if [ "$CARCH" != "mips64el" ]; then
unset md5sums[${#md5sums[@]}-1]
fi
+_kernelname=${pkgbase#linux-libre}
+_localversionname=-LIBRE
+
build() {
cd "${srcdir}/linux-${_basekernel}"
@@ -59,6 +65,17 @@ build() {
# Add freedo as boot logo
patch -Np1 -i "${srcdir}/boot-logo.patch"
+ # fix alsa powersave bug, probably fixed in 3.5.4
+ # https://bugs.archlinux.org/task/31255
+ patch -Np1 -i "${srcdir}/alsa-powersave-3.5.x.patch"
+
+ # fix broken watchdog
+ # https://bugzilla.kernel.org/show_bug.cgi?id=44991
+ patch -Np1 -i "${srcdir}/watchdog-3.5.x.patch"
+
+ # fix i915 i2c crash
+ # https://bugzilla.kernel.org/show_bug.cgi?id=46381
+ patch -Np1 -i "${srcdir}/i915-i2c-crash-3.5.x.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
diff --git a/libre/linux-libre/alsa-powersave-3.5.x.patch b/libre/linux-libre/alsa-powersave-3.5.x.patch
new file mode 100644
index 000000000..189fd1ceb
--- /dev/null
+++ b/libre/linux-libre/alsa-powersave-3.5.x.patch
@@ -0,0 +1,29 @@
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 20 Aug 2012 19:25:22 +0000 (+0200)
+Subject: ALSA: hda - Fix leftover codec->power_transition
+X-Git-Tag: v3.6-rc3~14^2~1
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=commitdiff_plain;h=535b6c51fe8293c88ce919cdfc4390c67a1cb6d1
+
+ALSA: hda - Fix leftover codec->power_transition
+
+When the codec turn-on operation is canceled by the immediate
+power-on, the driver left the power_transition flag as is.
+This caused the persistent avoidance of power-save behavior.
+
+Cc: <stable@vger.kernel.org> [v3.5+]
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+
+diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
+index c3077d5..f560051 100644
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -4454,6 +4454,8 @@ static void __snd_hda_power_up(struct hda_codec *codec, bool wait_power_down)
+ * then there is no need to go through power up here.
+ */
+ if (codec->power_on) {
++ if (codec->power_transition < 0)
++ codec->power_transition = 0;
+ spin_unlock(&codec->power_lock);
+ return;
+ }
diff --git a/libre/linux-libre/i915-i2c-crash-3.5.x.patch b/libre/linux-libre/i915-i2c-crash-3.5.x.patch
new file mode 100644
index 000000000..d202b531c
--- /dev/null
+++ b/libre/linux-libre/i915-i2c-crash-3.5.x.patch
@@ -0,0 +1,47 @@
+From cee25168e9c4ef7f9417632af2dc78b8521dfda7 Mon Sep 17 00:00:00 2001
+From: Jani Nikula <jani.nikula@intel.com>
+Date: Mon, 13 Aug 2012 17:33:02 +0300
+Subject: [PATCH] drm/i915: ensure i2c adapter is all set before adding it
+
+i2c_add_adapter() may do i2c transfers on the bus to detect supported
+devices. Therefore the adapter needs to be all set before adding it. This
+was not the case for the bit-banging fallback, resulting in an oops if the
+device detection GMBUS transfers timed out. Fix the issue by calling
+i2c_add_adapter() only after intel_gpio_setup().
+
+LKML-Reference: <5021F00B.7000503@ionic.de>
+Tested-by: Mihai Moldovan <ionic@ionic.de>
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+---
+ drivers/gpu/drm/i915/intel_i2c.c | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
+index d79500b..b9755f6 100644
+--- a/drivers/gpu/drm/i915/intel_i2c.c
++++ b/drivers/gpu/drm/i915/intel_i2c.c
+@@ -486,9 +486,6 @@ int intel_setup_gmbus(struct drm_device *dev)
+ bus->dev_priv = dev_priv;
+
+ bus->adapter.algo = &gmbus_algorithm;
+- ret = i2c_add_adapter(&bus->adapter);
+- if (ret)
+- goto err;
+
+ /* By default use a conservative clock rate */
+ bus->reg0 = port | GMBUS_RATE_100KHZ;
+@@ -498,6 +495,10 @@ int intel_setup_gmbus(struct drm_device *dev)
+ bus->force_bit = true;
+
+ intel_gpio_setup(bus, port);
++
++ ret = i2c_add_adapter(&bus->adapter);
++ if (ret)
++ goto err;
+ }
+
+ intel_i2c_reset(dev_priv->dev);
+--
+1.7.7.6
+
diff --git a/libre/linux-libre/linux-libre.install b/libre/linux-libre/linux-libre.install
index 59b77b82d..0cd51930e 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.5.2-1.1-LIBRE
+KERNEL_VERSION=3.5.3-1-LIBRE
# set a sane PATH to ensure that critical utils like depmod will be found
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
@@ -33,7 +33,7 @@ post_install () {
post_upgrade() {
pacman -Q grub &>/dev/null
hasgrub=$?
- pacman -Q grub2-common &>/dev/null
+ pacman -Q grub-common &>/dev/null
hasgrub2=$?
pacman -Q lilo &>/dev/null
haslilo=$?
diff --git a/libre/linux-libre/watchdog-3.5.x.patch b/libre/linux-libre/watchdog-3.5.x.patch
new file mode 100644
index 000000000..6d9df083b
--- /dev/null
+++ b/libre/linux-libre/watchdog-3.5.x.patch
@@ -0,0 +1,60 @@
+diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c
+index 027cc8f..a05fdfc 100644
+--- a/drivers/mfd/lpc_ich.c
++++ b/drivers/mfd/lpc_ich.c
+@@ -765,7 +765,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
+ u32 base_addr_cfg;
+ u32 base_addr;
+ int ret;
+- bool acpi_conflict = false;
+ struct resource *res;
+
+ /* Setup power management base register */
+@@ -780,20 +779,11 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
+ res = wdt_io_res(ICH_RES_IO_TCO);
+ res->start = base_addr + ACPIBASE_TCO_OFF;
+ res->end = base_addr + ACPIBASE_TCO_END;
+- ret = acpi_check_resource_conflict(res);
+- if (ret) {
+- acpi_conflict = true;
+- goto wdt_done;
+- }
+
+ res = wdt_io_res(ICH_RES_IO_SMI);
+ res->start = base_addr + ACPIBASE_SMI_OFF;
+ res->end = base_addr + ACPIBASE_SMI_END;
+- ret = acpi_check_resource_conflict(res);
+- if (ret) {
+- acpi_conflict = true;
+- goto wdt_done;
+- }
++
+ lpc_ich_enable_acpi_space(dev);
+
+ /*
+@@ -813,11 +803,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
+ res = wdt_mem_res(ICH_RES_MEM_GCS);
+ res->start = base_addr + ACPIBASE_GCS_OFF;
+ res->end = base_addr + ACPIBASE_GCS_END;
+- ret = acpi_check_resource_conflict(res);
+- if (ret) {
+- acpi_conflict = true;
+- goto wdt_done;
+- }
+ }
+
+ lpc_ich_finalize_cell(&lpc_ich_cells[LPC_WDT], id);
+@@ -825,9 +810,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev,
+ 1, NULL, 0);
+
+ wdt_done:
+- if (acpi_conflict)
+- pr_warn("Resource conflict(s) found affecting %s\n",
+- lpc_ich_cells[LPC_WDT].name);
+ return ret;
+ }
+
+--
+1.7.1
+
+