From 54b13f938af2f5dc0b7b31f2c1711fcb863e7614 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 4 Aug 2011 20:21:53 -0500
Subject: pm-utils: Bump to latest. ref #647

---
 abs/core/pm-utils/02-logging-append.patch          | 19 ++++++++++
 .../12-fix-intel-audio-powersave-hook.patch        | 40 ++++++++++++++++++++
 abs/core/pm-utils/13-49bluetooth-sync.patch        | 43 ++++++++++++++++++++++
 abs/core/pm-utils/14-disable-sata-alpm.patch       | 26 +++++++++++++
 abs/core/pm-utils/PKGBUILD                         | 31 +++++++++++-----
 5 files changed, 149 insertions(+), 10 deletions(-)
 create mode 100644 abs/core/pm-utils/02-logging-append.patch
 create mode 100644 abs/core/pm-utils/12-fix-intel-audio-powersave-hook.patch
 create mode 100644 abs/core/pm-utils/13-49bluetooth-sync.patch
 create mode 100644 abs/core/pm-utils/14-disable-sata-alpm.patch

diff --git a/abs/core/pm-utils/02-logging-append.patch b/abs/core/pm-utils/02-logging-append.patch
new file mode 100644
index 0000000..987e057
--- /dev/null
+++ b/abs/core/pm-utils/02-logging-append.patch
@@ -0,0 +1,19 @@
+Author: James Westby <james.westby@ubuntu.com>
+Description: Do not clear the log file on each operation, but instead append to it.
+ This makes debugging of several suspends much easier.
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25255
+Bug-Ubuntu: https://launchpad.net/bugs/410352
+
+Index: pm-utils/pm/pm-functions.in
+===================================================================
+--- pm-utils.orig/pm/pm-functions.in	2010-07-05 18:41:21.118322244 +0200
++++ pm-utils/pm/pm-functions.in	2010-07-05 18:41:24.126325221 +0200
+@@ -271,7 +271,7 @@
+ 		return 1
+ 	fi
+ 	export LOGGING=true
+-	exec > "$1" 2>&1
++	exec >> "$1" 2>&1
+ }
+ 
+ check_suspend() { [ -n "$SUSPEND_MODULE" ]; }
diff --git a/abs/core/pm-utils/12-fix-intel-audio-powersave-hook.patch b/abs/core/pm-utils/12-fix-intel-audio-powersave-hook.patch
new file mode 100644
index 0000000..2d884da
--- /dev/null
+++ b/abs/core/pm-utils/12-fix-intel-audio-powersave-hook.patch
@@ -0,0 +1,40 @@
+From: Florian Kriener <florian@kriener.org>
+To: submit@bugs.debian.org
+Subject: [pm-utils] wrong path in intel-audio-powersave (and a small bug)
+Date: Sat, 25 Sep 2010 11:27:30 +0200
+
+In the script intel-audio-powersave is this loop
+
+for dev in /sys/module/snd_*/parameters/power_save; do
+	[ -w "$dev/parameters/power_save" ] || continue
+     printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
+	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+done
+
+I think it should be
+
+for dev in /sys/module/snd_*; do
+	[ -w "$dev/parameters/power_save" ] || continue
+     printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
+	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+done
+
+
+This fixes the two bugs.
+
+diff --git a/pm/power.d/intel-audio-powersave b/pm/power.d/intel-audio-powersave
+index 36675a8..da63e40 100644
+--- a/pm/power.d/intel-audio-powersave
++++ b/pm/power.d/intel-audio-powersave
+@@ -20,9 +20,9 @@ EOF
+ 
+ audio_powersave() {
+     [ "$INTEL_AUDIO_POWERSAVE" = "true" ] || exit $NA
+-    for dev in /sys/module/snd_*/parameters/power_save; do
++    for dev in /sys/module/snd_*; do
+ 	[ -w "$dev/parameters/power_save" ] || continue
+-	printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
++	printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
+ 	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+     done
+ }
diff --git a/abs/core/pm-utils/13-49bluetooth-sync.patch b/abs/core/pm-utils/13-49bluetooth-sync.patch
new file mode 100644
index 0000000..b41f32c
--- /dev/null
+++ b/abs/core/pm-utils/13-49bluetooth-sync.patch
@@ -0,0 +1,43 @@
+From 640b53438c20818b3e344343b58b1f1765606a85 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon, 31 Jan 2011 15:30:01 +0100
+Subject: [PATCH] 49bluetooth: Wait for btusb module to get unused
+
+The 49bluetooth hook disables /proc/acpi/ibm/bluetooth but this isn't
+synchronous, i. e. it doesn't wait until the module usage count actually drops
+to 0. Due to that, it's impossible to add btusb to SUSPEND_MODULES (on some
+models/older kernels you need to do that to fix suspend problems), as at that
+point the module is still in use.
+
+On my system (ThinkPad X201) the module takes between 0.3 and 0.5 seconds to
+unload, so use 100 ms wait steps with a timeout of 2 seconds.
+
+Bug: https://bugs.freedesktop.org//show_bug.cgi?id=33759
+Bug-Ubuntu: https://launchpad.net/bugs/698331
+---
+ pm/sleep.d/49bluetooth |    9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/pm/sleep.d/49bluetooth b/pm/sleep.d/49bluetooth
+index d46ba49..0dc1909 100755
+--- a/pm/sleep.d/49bluetooth
++++ b/pm/sleep.d/49bluetooth
+@@ -12,6 +12,15 @@ suspend_bluetooth()
+ 	if grep -q enabled /proc/acpi/ibm/bluetooth; then
+ 		savestate ibm_bluetooth enable
+ 		echo disable > /proc/acpi/ibm/bluetooth
++
++		# wait for up to 2 seconds for the module to actually get
++		# unused
++		TIMEOUT=20
++		while [ $TIMEOUT -ge 0 ]; do
++		    [ `cat /sys/module/btusb/refcnt` = 0 ] && break
++		    TIMEOUT=$((TIMEOUT-1))
++		    sleep 0.1
++		done
+ 	else
+ 		savestate ibm_bluetooth disable
+ 	fi
+-- 
+1.7.2.3
+
diff --git a/abs/core/pm-utils/14-disable-sata-alpm.patch b/abs/core/pm-utils/14-disable-sata-alpm.patch
new file mode 100644
index 0000000..7b54949
--- /dev/null
+++ b/abs/core/pm-utils/14-disable-sata-alpm.patch
@@ -0,0 +1,26 @@
+Description: Disable SATA link power management by default, as it still causes disk errors and corruptions on many hardware.
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/539467
+
+Index: pm-utils/pm/power.d/sata_alpm
+===================================================================
+--- pm-utils.orig/pm/power.d/sata_alpm	2011-02-01 15:53:09.164867778 +0100
++++ pm-utils/pm/power.d/sata_alpm	2011-02-01 15:53:28.954867786 +0100
+@@ -2,7 +2,7 @@
+ 
+ . "${PM_FUNCTIONS}"
+ 
+-SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-true}
++SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-false}
+ 
+ help() {
+ cat <<EOF
+@@ -16,7 +16,7 @@
+ 
+ This hook has 1 parameter:
+ SATA_ALPM_ENABLE = whether to use SATA ALPM on battery.
+-Defaults to "true".
++Defaults to "false".
+ 
+ EOF
+ }
diff --git a/abs/core/pm-utils/PKGBUILD b/abs/core/pm-utils/PKGBUILD
index b0c71c4..6e2aed5 100644
--- a/abs/core/pm-utils/PKGBUILD
+++ b/abs/core/pm-utils/PKGBUILD
@@ -1,37 +1,48 @@
-# $Id: PKGBUILD 98218 2010-11-04 21:31:12Z ibiru $
+# $Id$
 # Maintainer: Jan de Groot <jgc@archlinux.org>
 # Contributor: Thayer Williams <thayer@archlinux.org>
 # Contributor: Giovanni Scafora <giovanni@archlinux.org>
 
 pkgname=pm-utils
 pkgver=1.4.1
-pkgrel=1
+pkgrel=3
 pkgdesc="Utilities and scripts for suspend and hibernate power management"
 arch=('i686' 'x86_64')
 url="http://pm-utils.freedesktop.org"
 license=('GPL')
-depends=('bash' 'procps' 'vbetool' 'pm-quirks')
-optdepends=('upower')
+depends=('bash' 'procps' 'pm-quirks')
 makedepends=('xmlto' 'docbook-xml' 'docbook-xsl')
 source=(http://pm-utils.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
+02-logging-append.patch
+12-fix-intel-audio-powersave-hook.patch
+13-49bluetooth-sync.patch
+14-disable-sata-alpm.patch
         11netcfg)
 md5sums=('1742a556089c36c3a89eb1b957da5a60'
+         'a45149617bf3eb8dc32e6d9e22ae715d'
+         'edada31a7d722763513fbe705d95d19d'
+         '298f78b873c03c025700d5da619ac134'
+         'd0040f7d30b6a0dd195b5401abbbbdb9'
          '9839687c8787d99fd4ff36aa3238c27b')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/02-logging-append.patch"
+  patch -Np1 -i "${srcdir}/12-fix-intel-audio-powersave-hook.patch"
+  patch -Np1 -i "${srcdir}/13-49bluetooth-sync.patch"
+  patch -Np1 -i "${srcdir}/14-disable-sata-alpm.patch"
   ./configure --prefix=/usr \
       --sysconfdir=/etc \
       --localstatedir=/var
-  make || return 1
-}
-package() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
-
-  make DESTDIR="${pkgdir}" install || return 1
+  make
+  make DESTDIR="${pkgdir}" install
 
   # install additional hooks
   install -m755 "${srcdir}/11netcfg" "${pkgdir}/usr/lib/pm-utils/sleep.d/"
+
   # nm >=0.8.2 has native udev suspend/resume support
   rm -f "${pkgdir}/usr/lib/pm-utils/sleep.d/55NetworkManager"
+  
+  # Remove hooks that cause hardware failure or don't make sense at all
+  rm -f "${pkgdir}/usr/lib/pm-utils/power.d/"{harddrive,disable_wol}
 }
-- 
cgit v0.12

