HYL_OK3568_LINUX/buildroot/package/pm-utils/0001-pm-sleep.d-remove-unused-sleep-hooks.patch
2025-05-10 21:49:39 +08:00

1054 lines
29 KiB
Diff

From 338c2cab495d3d3d62cb7094b7dad78aea7f53eb Mon Sep 17 00:00:00 2001
From: Yu YongZhen <yuyz@rock-chips.com>
Date: Wed, 25 Apr 2018 09:25:18 +0800
Subject: [PATCH] pm:sleep.d: remove unused sleep hooks
---
pm/sleep.d/00powersave | 13 --
pm/sleep.d/01grub | 34 ---
pm/sleep.d/49bluetooth | 35 ---
pm/sleep.d/55NetworkManager | 42 ----
pm/sleep.d/75modules | 31 ---
pm/sleep.d/90clock | 27 ---
pm/sleep.d/94cpufreq | 46 ----
pm/sleep.d/95led | 16 --
pm/sleep.d/98video-quirk-db-handler | 450 ------------------------------------
pm/sleep.d/99video | 219 ------------------
pm/sleep.d/Makefile.am | 12 +-
pm/sleep.d/Makefile.in | 12 +-
12 files changed, 2 insertions(+), 935 deletions(-)
delete mode 100644 pm/sleep.d/00powersave
delete mode 100644 pm/sleep.d/01grub
delete mode 100755 pm/sleep.d/49bluetooth
delete mode 100755 pm/sleep.d/55NetworkManager
delete mode 100755 pm/sleep.d/75modules
delete mode 100755 pm/sleep.d/90clock
delete mode 100755 pm/sleep.d/94cpufreq
delete mode 100755 pm/sleep.d/95led
delete mode 100755 pm/sleep.d/98video-quirk-db-handler
delete mode 100755 pm/sleep.d/99video
diff --git a/pm/sleep.d/00powersave b/pm/sleep.d/00powersave
deleted file mode 100644
index bf0f98b..0000000
--- a/pm/sleep.d/00powersave
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-. "${PM_FUNCTIONS}"
-
-command_exists pm-powersave || exit $NA
-
-case $1 in
- suspend|hibernate) pm-powersave false ;;
- resume|thaw) pm-powersave ;;
- *) exit $NA ;;
-esac
-exit 0
-
\ No newline at end of file
diff --git a/pm/sleep.d/01grub b/pm/sleep.d/01grub
deleted file mode 100644
index db1d53b..0000000
--- a/pm/sleep.d/01grub
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-# Ensure grub will load the correct kernel on resume from hibernate,
-# TODO: This is rather redhat specific, and very grub specific.
-
-default_resume_kernel()
-{
- [ "$1" = "suspend" ] && return $NA
- case $(uname -m) in
- i?86|x86_64|athlon)
- ;;
- *) # this is only valid for x86 and x86_64
- return $NA
- ;;
- esac
-
- [ -x /sbin/grubby -a -x /sbin/grub ] || return $NA
- [ -e "/boot/vmlinuz-$(uname -r)" ] || return 1
- out=$(/sbin/grubby --info /boot/vmlinuz-$(uname -r) |grep index)
- [ -n "${out}" ] || return 1
- current=${out#index=}
- echo "savedefault --default=${current} --once" | \
- /sbin/grub --device-map=/boot/grub/device.map \
- --batch --no-floppy --no-curses >/dev/null
-
- return 0
-}
-
-case "$1" in
- hibernate|suspend)
- default_resume_kernel $2
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/49bluetooth b/pm/sleep.d/49bluetooth
deleted file mode 100755
index d46ba49..0000000
--- a/pm/sleep.d/49bluetooth
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# IBM specific hack to disable/enable bluetooth.
-# TODO: Doesn't the working USB suspend/resume functionality
-# make this code more or less obsolete?
-
-. "${PM_FUNCTIONS}"
-
-[ -f /proc/acpi/ibm/bluetooth ] || exit $NA
-
-suspend_bluetooth()
-{
- if grep -q enabled /proc/acpi/ibm/bluetooth; then
- savestate ibm_bluetooth enable
- echo disable > /proc/acpi/ibm/bluetooth
- else
- savestate ibm_bluetooth disable
- fi
-}
-
-resume_bluetooth()
-{
- state_exists ibm_bluetooth || return
- restorestate ibm_bluetooth > /proc/acpi/ibm/bluetooth
-}
-
-case "$1" in
- hibernate|suspend)
- suspend_bluetooth
- ;;
- thaw|resume)
- resume_bluetooth
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/55NetworkManager b/pm/sleep.d/55NetworkManager
deleted file mode 100755
index f3c6df5..0000000
--- a/pm/sleep.d/55NetworkManager
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-# If we are running NetworkManager, tell it we are going to sleep.
-# TODO: Make NetworkManager smarter about how to handle sleep/resume
-# If we are asleep for less time than it takes for TCP to reset a
-# connection, and we are assigned the same IP on resume, we should
-# not break established connections. Apple can do this, and it is
-# rather nifty.
-
-. "${PM_FUNCTIONS}"
-
-suspend_nm()
-{
- # Tell NetworkManager to shut down networking
- printf "Having NetworkManager put all interaces to sleep..."
- dbus_send --system \
- --dest=org.freedesktop.NetworkManager \
- /org/freedesktop/NetworkManager \
- org.freedesktop.NetworkManager.sleep && \
- echo Done. || echo Failed.
-}
-
-resume_nm()
-{
- # Wake up NetworkManager and make it do a new connection
- printf "Having NetworkManager wake interfaces back up..."
- dbus_send --system \
- --dest=org.freedesktop.NetworkManager \
- /org/freedesktop/NetworkManager \
- org.freedesktop.NetworkManager.wake && \
- echo Done. || echo Failed.
-}
-
-case "$1" in
- hibernate|suspend)
- suspend_nm
- ;;
- thaw|resume)
- resume_nm
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/75modules b/pm/sleep.d/75modules
deleted file mode 100755
index 261e70d..0000000
--- a/pm/sleep.d/75modules
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-# Unload requested modules.
-
-. "${PM_FUNCTIONS}"
-
-suspend_modules()
-{
- [ -z "$SUSPEND_MODULES" ] && return $NA
- for x in $SUSPEND_MODULES ; do
- printf "Unloading kernel module %s..." "$x"
- modunload $x && echo Done. || echo Failed.
- done
- return 0
-}
-
-resume_modules()
-{
- modreload
- echo "Reloaded unloaded modules."
-}
-
-case "$1" in
- hibernate|suspend)
- suspend_modules
- ;;
- thaw|resume)
- resume_modules
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/90clock b/pm/sleep.d/90clock
deleted file mode 100755
index d81e2a6..0000000
--- a/pm/sleep.d/90clock
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-# Synchronize system time with hardware time.
-# Modern kernels handle this correctly so we skip this hook by default.
-
-. "${PM_FUNCTIONS}"
-
-suspend_clock()
-{
- printf "Saving system time to hardware clock..."
- /sbin/hwclock --systohc >/dev/null 2>&1 0<&1 && echo Done. || \
- echo Failed.
-}
-
-resume_clock()
-{
- printf "Loading system time from hardware clock..."
- /sbin/hwclock --hctosys >/dev/null 2>&1 0<&1 && echo Done. || \
- echo Failed.
-}
-
-is_set "$NEED_CLOCK_SYNC" || exit $NA
-
-case "$1" in
- hibernate|suspend) suspend_clock ;;
- thaw|resume) resume_clock ;;
- *) exit $NA ;;
-esac
diff --git a/pm/sleep.d/94cpufreq b/pm/sleep.d/94cpufreq
deleted file mode 100755
index 6807681..0000000
--- a/pm/sleep.d/94cpufreq
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-# Ensure cpu governor is set to something sane.
-# TODO: Which of the cpu governors is still insane? File bugs against
-# those that are.
-
-. "${PM_FUNCTIONS}"
-
-[ -d /sys/devices/system/cpu/ ] || exit $NA
-
-hibernate_cpufreq()
-{
- ( cd /sys/devices/system/cpu/
- for x in cpu[0-9]*; do
- # if cpufreq is a symlink, it is handled by another cpu. Skip.
- [ -L "$x/cpufreq" ] && continue
- gov="$x/cpufreq/scaling_governor"
- # if we do not have a scaling_governor file, skip.
- [ -f "$gov" ] || continue
- # if our temporary governor is not available, skip.
- grep -q "$TEMPORARY_CPUFREQ_GOVERNOR" \
- "$x/cpufreq/scaling_available_governors" || continue
- savestate "${x}_governor" < "$gov"
- echo "$TEMPORARY_CPUFREQ_GOVERNOR" > "$gov"
- done )
-}
-
-thaw_cpufreq()
-{
- ( cd /sys/devices/system/cpu/
- for x in cpu[0-9]*/cpufreq/scaling_governor ; do
- [ -f "$x" ] || continue
- state_exists "${x%%/*}_governor" || continue
- restorestate "${x%%/*}_governor" > "$x"
- done )
-}
-
-case "$1" in
- suspend|hibernate)
- hibernate_cpufreq
- ;;
- resume|thaw)
- thaw_cpufreq
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/95led b/pm/sleep.d/95led
deleted file mode 100755
index b4bb970..0000000
--- a/pm/sleep.d/95led
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# On an IBM system. make the suspend LED blink.
-# TODO: Merge with 95led? Should be trivial.
-
-[ -f /proc/acpi/ibm/led ] || exit $NA
-
-case "$1" in
- hibernate|suspend)
- echo "7 blink" >/proc/acpi/ibm/led
- ;;
- thaw|resume)
- echo "7 off" >/proc/acpi/ibm/led
- ;;
- *) exit $NA
- ;;
-esac
diff --git a/pm/sleep.d/98video-quirk-db-handler b/pm/sleep.d/98video-quirk-db-handler
deleted file mode 100755
index e9ea3ca..0000000
--- a/pm/sleep.d/98video-quirk-db-handler
+++ /dev/null
@@ -1,450 +0,0 @@
-#!/bin/bash
-# Prototype video quirk database handler that does not rely on HAL.
-
-shopt -s extglob
-
-. "${PM_FUNCTIONS}"
-
-[[ $PM_DEBUG ]] && {
- export PS4='${BASH_SOURCE}@${LINENO}(${FUNCNAME[0]}): ';
- set -x
-}
-
-possible_video_quirks=" --quirk-dpms-on
- --quirk-dpms-suspend
- --quirk-s3-mode
- --quirk-s3-bios
- --quirk-vbe-post
- --quirk-vbe-post
- --quirk-vga-mode-3
- --quirk-vbemode-restore
- --quirk-vbestate-restore
- --quirk-reset-brightness
- --quirk-radeon-off
- --quirk-no-fb
- --quirk-save-pci"
-
-possible_system_properties="system.firmware.version
- system.firmware.vendor
- system.firmware.release_date
- system.hardware.vendor
- system.hardware.product
- system.hardware.version
- system.board.product
- system.board.version
- system.board.vendor
- system.hardware.primary_video.vendor
- system.hardware.primary_video.product
- system.hardware.primary_video.driver
- system.hardware.primary_video.using_kms
- system.kernel.version"
-
-has_video_parameters() {
- local p params=$(get_parameters)
- [[ $params ]] || return 1
- for p in $params; do
- [[ $possible_video_quirks = *$p* ]] && return
- done
- return 1
-}
-
-# video specific helper functions.
-
-# Are we using the nVidia binary driver?
-using_nvidia() { [[ -d /sys/module/nvidia ]]; }
-
-# How about the ATI one?
-using_fglrx() { [[ -d /sys/module/fglrx ]]; }
-
-# OK, what about a driver that is using kernel modesetting?
-using_kms() { grep -q -E '(nouveau|drm)fb' /proc/fb; }
-
-# Get some video related values when HAL has not gotten them for us, or
-# HAL is not available.
-videoget() {
- local dev pci
- pci="/sys/bus/pci/devices"
- for dev in "$pci"/*; do
- [[ -f "${dev}/class" ]] || continue
- [[ "$(cat "${dev}/class")" = "0x030000" ]] || continue
- case $1 in
- vendor) RES="$(cat "${dev}/vendor")" ;;
- device) RES="$(cat "${dev}/device")" ;;
- driver)
- if [[ -L ${dev}/driver ]]; then
- RES="$(readlink "${dev}/driver")"
- RES="${RES##*/}"
- elif using_nvidia; then
- RES=nvidia
- elif using_fglrx; then
- RES=fglrx
- fi
- ;;
- using_kms)
- if using_kms; then
- RES=true
- else
- RES=false
- fi
- ;;
- esac
- break
- done
-}
-
-# Get some important information about this system.
-
-# If we have /sys/class/dmi/id, life is easy, and we do not need to
-# depend on HAL or dmidecode.
-_dmisysget() {
- [[ -r /sys/class/dmi/id/$1 ]] || RES=""
- read RES < "/sys/class/dmi/id/$1"
-}
-
-dmisysget() {
- case $1 in
- system.firmware.vendor) _dmisysget bios_vendor ;;
- system.firmware.version) _dmisysget bios_version ;;
- system.firmware.release_date) _dmisysget bios_date ;;
- system.hardware.vendor) _dmisysget sys_vendor ;;
- system.hardware.product) _dmisysget product_name ;;
- system.hardware.version) _dmisysget product_version ;;
- system.board.product) _dmisysget board_name ;;
- system.board.version) _dmisysget board_version ;;
- system.board.vendor) _dmisysget board_vendor ;;
- system.hardware.primary_video.vendor) videoget vendor ;;
- system.hardware.primary_video.product) videoget device ;;
- system.hardware.primary_video.driver) videoget driver ;;
- system.hardware.primary_video.using_kms) videoget using_kms ;;
- system.kernel.version) RES=$(uname -r) ;;
- *) return 1
- esac
-}
-
-# Get system information using dmidecode. Slow and ugly, but
-# should be supported just about everywhere.
-_dmidecodeget() {
- RES=$(dmidecode -s $1)
-}
-
-dmidecodeget() {
- case $1 in
- system.firmware.vendor) _dmidecodeget bios-vendor ;;
- system.firmware.version) _dmidecodeget bios-version ;;
- system.firmware.release_date) _dmidecodeget bios-release-date;;
- system.hardware.vendor) _dmidecodeget system-manufacturer;;
- system.hardware.product) _dmidecodeget system-product-name;;
- system.hardware.version) _dmidecodeget system-version;;
- system.board.product) _dmidecodeget baseboard-product-name;;
- system.board.version) _dmidecodeget baseboard-version;;
- system.board.vendor) _dmidecodeget baseboard-manufacturer;;
- *) return 1
- esac
-}
-
-# If we have HAL, it has already done most of the work for us.
-halget() {
- local hgp="hal-get-property --udi /org/freedesktop/Hal/devices/computer --key"
- case $1 in
- system.firmware.version) RES=$($hgp "$1") ;;
- system.firmware.vendor) RES=$($hgp "$1") ;;
- system.firmware.release_date) RES=$($hgp "$1") ;;
- system.hardware.vendor) RES=$($hgp "$1") ;;
- system.hardware.product) RES=$($hgp "$1") ;;
- system.hardware.version) RES=$($hgp "$1") ;;
- system.board.product) RES=$($hgp "$1") ;;
- system.board.version) RES=$($hgp "$1") ;;
- system.board.vendor) RES=$($hgp "$1") ;;
- *) return 1
- esac
-}
-
-canonicalize_dmivar() {
- [[ $1 =~ ^[a-z._-]+$ && $possible_system_properties = *$1* ]] || return 1
- echo "${1//[-.]/_}"
-}
-
-# Precache the DMI and other information we will need as shell variables.
-# This will make things easier when we start running for real.
-precache_dmivars() {
- local p q f
- for q in $possible_system_properties; do
- p=$(canonicalize_dmivar $q) || return 1
- RES=""
- for f in dmisysget halget dmidecodeget; do
- "$f" "$q" && break || continue 2
- done
- RES="${RES##+( )}"
- RES="${RES%%+( )}"
- read "$p" <<<$RES
- done
- RES=""
-}
-
-# Use bash variable indirection to set RES to the actual parameter
-# we are looking for. Sanity check the variable we were passed to
-# keep things sane.
-getprop() {
- RES=""
- local p
- if ! p=$(canonicalize_dmivar $1); then
- echo "Unable to obtain DMI information for $1" >&2
- exit 1
- fi
- RES="${!p}"
-}
-
-# test to see if the parameter passed is a decimal or hexidecimal number
-# Note the complete lack of floating point support.
-isnum() {
- [[ $1 =~ ^[0-9]+\$ || $1 =~ ^0[xX][0-9a-fA-F]+\$ ]]
-}
-
-# for all the matching functions,
-# $2 = the given constant (or regular expression),
-# $1 = the raw data grabbed from HAL or dmidecode or wherever
-
-regex() { [[ $1 =~ ${2//;/|} ]]; }
-
-regex_ncase() {
- local r
- shopt -s nocasematch
- regex "$1" "$2"
- r=$?
- shopt -u nocasematch
- return $r
-}
-
-regex_inverse() { ! regex "$1" "$2"; }
-compare_eq() { [[ $1 = $2 ]]; }
-compare_ne() { [[ $1 != $2 ]]; }
-compare_gt() { [[ $1 > $2 ]]; }
-compare_ge() { compare_eq "$@" || compare_gt "$@"; }
-compare_lt() { [[ $1 < $2 ]]; }
-compare_le() { compare_eq "$@" || compare_lt "$@"; }
-numeric_compare_eq() { (( $1 == $2 )); }
-numeric_compare_ne() { (( $1 != $2 )); }
-numeric_compare_gt() { (( $1 > $2 )); }
-numeric_compare_ge() { (( $1 >= $2 )); }
-numeric_compare_lt() { (( $1 < $2 )); }
-numeric_compare_le() { (( $1 <= $2 )); }
-numeric_compare_eq_list() {
- local key val
- # $1 = key val to compare
- # $2 = list to compare to
- key=$1
- val="${2//;/ }"
- for x in $val; do
- (( $key == $x )) && return 0
- done
- return 1
-}
-
-# Helper function for nVidia g80 gpus. They require extra special handling
-# when not using the nVidia binary driver.
-have_nvidia_g80() {
- numeric_compare_eq $system_hardware_primary_video_vendor 0x10de || return
- numeric_compare_eq_list $system_hardware_primary_video_product \
- '0x190;0x191;0x192;0x193;0x194;0x195;0x196;0x197;0x198;0x199;0x19a;0x19b;0x19c;0x19d;0x19e;0x19f;0x400;0x401;0x402;0x403;0x404;0x405;0x406;0x407;0x408;0x409;0x40a;0x40b;0x40c;0x40d;0x40e;0x40f;0x420;0x421;0x422;0x423;0x424;0x425;0x426;0x427;0x428;0x429;0x42a;0x42b;0x42c;0x42d;0x42e;0x42f' || return
-}
-
-# Helper function for recent Intel framebuffer drivers.
-have_smart_intel() {
- local kernel_rev=$system_kernel_revision
- local driver=$system_hardware_primary_video_driver
- # currently, intel kernel modesetting is not quite smart enough
- # we still need acpi s3 kernel modesetting hooks, so don't remove those
- # options if they were passed.
- [[ $driver = i915 && ( $kernel_rev > 2.6.26 || $kernel_rev = 2.6.26 ) ]]
-}
-
-# find the appropriate quirks for this system using the native-format
-# quirks database. Since the database is tree-ish, we use some stupid
-# recursion tricks.
-
-# $1 = whether to ignore what we are reading
-_find_native() {
- local action key matcher regex
- while read action key matcher regex; do
- [[ $action && ${action:0:1} != '#' ]] || continue
- case $action in
- match)
- if [[ $1 = ignore ]]; then
- _find_native $1
- else
- getprop "$key"
- [[ $matcher && $regex ]] || find_native ignore
- # if this matcher matches, look at nodes farther out.
- if $matcher "$RES" "$regex"; then
- _find_native work
- else
- _find_native ignore
- fi
- fi
- ;;
- endmatch)
- [[ $found ]] && return 0 || return 1 ;;
- addquirk) [[ $1 = ignore ]] && continue
- found=true
- add_parameters "$key"
- ;;
- delquirk) [[ $1 = ignore ]]&& continue
- found=true
- remove_parameters "$key"
- ;;
- esac
- done
-}
-
-find_native() (
- [[ -f $1 ]] || return 1
- exec <"$1"
- _find_native work
- res=$?
- get_parameters
- return $res
-)
-
-# If we resumed, write out the quirks we used as our last known
-# working ones for this hardware, kernel, driver, and KMS setting.
-write_last_known_working() (
- local matcher quirk
- precache_dmivars
- exec >"$PM_LKW_QUIRKS"
- for prop in system.firmware.version system.firmware.vendor \
- system.firmware.release_date system.hardware.vendor \
- system.hardware.product system.hardware.version \
- system.board.product system.board.version system.board.vendor \
- system.hardware.primary_video.vendor \
- system.hardware.primary_video.product \
- system.hardware.primary_video.driver \
- system.hardware.primary_video.using_kms \
- system.kernel.version; do
- getprop "$prop"
- if isnum "$RES"; then
- matcher=numeric_compare_eq
- else
- matcher=compare_eq
- fi
- echo "match $prop $matcher ${RES}"
- done
- if [[ $QUIRKS ]]; then
- for quirk in $QUIRKS; do
- echo "addquirk $quirk"
- done
- else
- echo "addquirk --quirk-none"
- fi
- for ((x=1; x<14; x++)); do
- echo endmatch
- done
-)
-
-case $1 in
- suspend|hibernate)
- # Aaand.... GO
- # cache all the properties we will need.
- precache_dmivars
-
- # This logic can also be expressed using entries in the quirkdb,
- # but I am too lazy to do that until a final quirk database is
- # formalized.
- if has_parameter --quirk-test && has_video_parameters; then
- # The user is explicitly testing video parameters.
- # Use them without the usual filtering. This may cause the system
- # to blow up, but they explicitly asked for it.
- remove_parameters --quirk-test
- echo "Quirk testing mode enabled."
- elif using_kms; then
- # Using kernel modesetting? No quirks, and do not change vts.
- remove_parameters $possible_video_quirks
- add_parameters --quirk-no-chvt
- echo "Kernel modesetting video driver detected, not using quirks."
- elif using_nvidia; then
- # Ditto for nVidia binary drivers
- remove_parameters $possible_video_quirks
- echo "nVidia binary video drive detected, not using quirks."
- elif using_fglrx; then
- # fglrx may or may not have to change vts, reports one
- # way or the other welcome.
- remove_parameters $possible_video_quirks
- add_parameters --quirk-none
- echo "ATI Catalyst driver detected, not using quirks."
- elif have_nvidia_g80; then
- # nVidia G80 GPUs require special handling when not using nvidia
- # binary drivers. I do not know if noveau requires help or not.
- remove_parameters $possible_video_quirks
- add_parameters --quirk-vbe-post
- echo "nVidia g80 series card detected."
- else
- # Go ahead and get our quirks.
- if has_video_parameters; then
- # Parameters from the command line take precedence
- # over the database, so do not query it.
- echo "Using quirks passed as parameters."
- elif [[ $PM_QUIRKS ]]; then
- # If we have $PM_QUIRKS. use it instead of the quirk database
- add_parameters $PM_QUIRKS
- echo "Using PM_QUIRKS environment variable for quirks."
- # If we were not passed any quirks on the command line,
- # get them from the database.
- elif QUIRKS=$(find_native "$PM_LKW_QUIRKS"); then
- # Known working quirks from our last run are still valid.
- # Use them.
- add_parameters $QUIRKS
- echo "Using last known working set of quirks."
- else
- # Our known working quirks from the last run are either
- # nonexistent or invalid. Either way, start over.
- rm "$PM_LKW_QUIRKS" >/dev/null 2>&1
- for f in "$PM_QUIRKDB"/*.quirkdb
- do
- QUIRKS=$(find_native "$f") && break
- done
- # some default quirks if we did not get any.
- if [[ -z $QUIRKS ]]; then
- QUIRKS="--quirk-vbe-post --quirk-dpms-on
- --quirk-dpms-suspend --quirk-vbestate-restore
- --quirk-vbemode-restore --quirk-vga-mode-3"
- echo "No quirk database entry for this system, using default."
- else
- echo "Using quirks for this system from quirk database."
- fi
- add_parameters $QUIRKS
- savestate video_quirks "$QUIRKS"
- fi
- if have_smart_intel; then
- # Intel without KMS does not require most quirks, no matter
- # what anything else says. The only ones that seem to
- # matter are the --quirk-s3 ones, so remove everything else.
- remove_parameters --quirk-dpms-on \
- --quirk-dpms-suspend \
- --quirk-vbe-post \
- --quirk-vbe-post \
- --quirk-vga-mode-3 \
- --quirk-vbemode-restore \
- --quirk-vbestate-restore \
- --quirk-reset-brightness \
- --quirk-radeon-off \
- --quirk-no-fb \
- --quirk-save-pci
- echo "Cleaning up quirks not needed by Intel video cards."
- fi
- fi
- ;;
- thaw|resume)
- if state_exists video_quirks; then
- QUIRKS=$(restorestate video_quirks);
- write_last_known_working
- echo "Saving last known working quirks: $QUIRKS"
- elif has_parameter --store-quirks-as-lkw; then
- for x in $(get_parameters); do
- for y in $possible_video_quirks; do
- [[ $x = $y ]] && QUIRKS=" $QUIRKS $x"
- done
- done
- write_last_known_working
- echo "Saving last known working quirks: $QUIRKS"
- fi
- ;;
-esac
diff --git a/pm/sleep.d/99video b/pm/sleep.d/99video
deleted file mode 100755
index 452a88a..0000000
--- a/pm/sleep.d/99video
+++ /dev/null
@@ -1,219 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2006-2007 Richard Hughes <richard@hughsie.com>
-# Copyright 2007 Peter Jones <pjones@redhat.com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of version 2 of the GNU General Public License as
-# published by the Free Software Foundation.
-
-# Handle video quirks. If you are having suspend/resume issues,
-# troubleshooting using this hook is probably the best place to start.
-# If it weren't for video card quirks, suspend/resume on Linux would be
-# a whole lot more stable.
-
-. "${PM_FUNCTIONS}"
-
-for opt in $PM_CMDLINE; do
- case "${opt##--quirk-}" in # just quirks, please
- dpms-on) QUIRK_DPMS_ON="true" ;;
- dpms-suspend) QUIRK_DPMS_SUSPEND="true" ;;
- radeon-off) QUIRK_RADEON_OFF="true" ;;
- reset-brightness) QUIRK_RESET_BRIGHTNESS="true" ;;
- s3-bios) QUIRK_S3_BIOS="true" ;;
- s3-mode) QUIRK_S3_MODE="true" ;;
- vbe-post) QUIRK_VBE_POST="true" ;;
- vbemode-restore) QUIRK_VBEMODE_RESTORE="true" ;;
- vbestate-restore) QUIRK_VBESTATE_RESTORE="true" ;;
- vga-mode-3) QUIRK_VGA_MODE_3="true" ;;
- no-fb) QUIRK_NOFB="true" ;;
- save-pci) QUIRK_SAVE_PCI="true" ;;
- no-chvt) QUIRK_NO_CHVT="true" ;;
- none) QUIRK_NONE="true" ;;
- *) continue ;;
- esac
-done
-
-reset_brightness()
-{
- for bl in /sys/class/backlight/* ; do
- [ -f "$bl/brightness" ] || continue
- BR="$(cat $bl/brightness)"
- echo 0 > "$bl/brightness"
- echo "$BR" > "$bl/brightness"
- done
-}
-
-if command_exists vbetool; then
- vbe() { vbetool "$@"; }
-else
- vbe() { echo "vbetool not installed!" 1>&2; return 1; }
-fi
-
-if command_exists radeontool; then
- radeon() { radeontool "$@"; }
-else
- radeon() { echo "radeontool not found" 1>&2; return 1; }
-fi
-
-die_if_framebuffer()
-{
- [ -d "/sys/class/graphics/fb0" ] || return
- echo "--quirk-no-fb passed, but system is using a framebuffer."
- echo "Aborting."
- exit 1
-}
-
-
-save_fbcon()
-{
- local con
- for con in /sys/class/graphics/*/state; do
- [ -f $con ] || continue
- echo 1 >"${con}"
- done
-}
-
-resume_fbcon()
-{
- local con
- for con in /sys/class/graphics/*/state; do
- [ -f $con ] || continue
- echo 0 >"${con}"
- done
-}
-
-maybe_chvt()
-{
- is_set "$QUIRK_NO_CHVT" && return
- fgconsole |savestate console
- chvt 63
-}
-
-maybe_deallocvt()
-{
- state_exists console || return 0
- chvt $(restorestate console)
- deallocvt 63
-}
-
-# Some tiny helper functions for quirk handling
-quirk() { is_set "$1" && [ -z $QUIRK_NONE ]; }
-
-# save/restore vbe state
-vbe_savestate() { vbe vbestate save |savestate vbestate; }
-vbe_restorestate() { restorestate vbestate |vbe vbestate restore; }
-
-# save/restore the vbe mode
-vbe_savemode() { vbe vbemode get |savestate vbemode; }
-vbe_restoremode()
-{
- # this is a little mode complicated to handle special-casing mode 3.
- local vbemode=$(restorestate vbemode)
- if [ "$vbemode" = "3" ]; then
- vbe vgamode set $vbemode
- else
- vbe vbemode set $vbemode
- fi
-}
-
-# post the video card
-vbe_post()
-{
- local rom="/var/run/video.rom"
- # if we do not have a romfile, do not post with it.
- [ -f "$rom" ] || unset rom
- vbe post $rom
- sleep 0.1
-}
-
-# turn critical bits of radeon cards off/on
-radeon_off() { radeon dac off; radeon light off; }
-radeon_on() { radeon dac on; radeon light on; }
-
-# save and restore video card PCI config state
-save_pci()
-{
- local pci="/sys/bus/pci/devices"
- for dev in "${pci}"/*; do
- [ -f "${dev}/class" ] || continue
- [ $(cat "${dev}/class") = "0x030000" ] || continue
- [ -f "${dev}/config" ] || continue
- # it is a video card, it has a configuration. Save it.
- savestate "pci_video_${dev##*/}" <${dev}/config
- done
-}
-
-restore_pci()
-{
- local pci="/sys/bus/pci/devices"
- for dev in "${pci}"/*; do
- state_exists "pci_video_${dev##*/}" || continue
- restorestate "pci_video_${dev##*/}" > "${dev}/config"
- done
-}
-
-suspend_video()
-{
- # 0=nothing, 1=s3_bios, 2=s3_mode, 3=both
- local acpi_flag=0
- quirk "${QUIRK_S3_BIOS}" && acpi_flag=$(($acpi_flag + 1))
- quirk "${QUIRK_S3_MODE}" && acpi_flag=$(($acpi_flag + 2))
- sysctl -w kernel.acpi_video_flags=$acpi_flag
-
- quirk "${QUIRK_NOFB}" && die_if_framebuffer
- quirk "${QUIRK_VBESTATE_RESTORE}" && vbe_savestate
- quirk "${QUIRK_VBEMODE_RESTORE}" && vbe_savemode
- quirk "${QUIRK_RADEON_OFF}" && radeon_off
- quirk "${QUIRK_SAVE_PCI}" && save_pci
- quirk "${QUIRK_VGA_MODE_3}" && vbe vbemode set 3
- quirk "${QUIRK_DPMS_SUSPEND}" && vbe dpms suspend
- save_fbcon
-}
-resume_video()
-{
- # We might need to do one or many of these quirks
- quirk "${QUIRK_SAVE_PCI}" && restore_pci
- quirk "${QUIRK_VBE_POST}" && vbe_post
- quirk "${QUIRK_VBESTATE_RESTORE}" && vbe_restorestate
- quirk "${QUIRK_VBEMODE_RESTORE}" && vbe_restoremode
- resume_fbcon # also should be handled by a quirk.
- quirk "${QUIRK_RADEON_OFF}" && radeon_on
- quirk "${QUIRK_DPMS_ON}" && vbe dpms on
- quirk "${QUIRK_RESET_BRIGHTNESS}" && reset_brightness
- return 0 # avoid spurious hook exit failure message.
-}
-
-help() {
- echo # first echo makes it look nicer.
- echo "Video quirk handler options:"
- echo
- echo " --quirk-dpms-on"
- echo " --quirk-dpms-suspend"
- echo " --quirk-radeon-off"
- echo " --quirk-reset-brightness"
- echo " --quirk-s3-bios"
- echo " --quirk-s3-mode"
- echo " --quirk-vbe-post"
- echo " --quirk-vbemode-restore"
- echo " --quirk-vbestate-restore"
- echo " --quirk-vga-mode-3"
- echo " --quirk-none"
-}
-
-case "$1" in
- suspend) maybe_chvt; suspend_video ;;
- hibernate) maybe_chvt
- if is_set "$HIBERNATE_RESUME_POST_VIDEO"; then
- suspend_video
- fi
- ;;
- resume) resume_video; maybe_deallocvt;;
- thaw)
- if is_set "${HIBERNATE_RESUME_POST_VIDEO}"; then
- resume_video
- fi
- maybe_deallocvt
- ;;
- help) help ;;
-esac
diff --git a/pm/sleep.d/Makefile.am b/pm/sleep.d/Makefile.am
index 2350825..1d7e0fa 100644
--- a/pm/sleep.d/Makefile.am
+++ b/pm/sleep.d/Makefile.am
@@ -1,17 +1,7 @@
sleepdir = $(libdir)/pm-utils/sleep.d
sleep_SCRIPTS = \
- 00logging \
- 00powersave \
- 01grub \
- 49bluetooth \
- 55NetworkManager \
- 75modules \
- 90clock \
- 94cpufreq \
- 95led \
- 98video-quirk-db-handler \
- 99video
+ 00logging
EXTRA_DIST=$(sleep_SCRIPTS)
diff --git a/pm/sleep.d/Makefile.in b/pm/sleep.d/Makefile.in
index d5a9243..c929d17 100644
--- a/pm/sleep.d/Makefile.in
+++ b/pm/sleep.d/Makefile.in
@@ -155,17 +155,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
sleepdir = $(libdir)/pm-utils/sleep.d
sleep_SCRIPTS = \
- 00logging \
- 00powersave \
- 01grub \
- 49bluetooth \
- 55NetworkManager \
- 75modules \
- 90clock \
- 94cpufreq \
- 95led \
- 98video-quirk-db-handler \
- 99video
+ 00logging
EXTRA_DIST = $(sleep_SCRIPTS)
all: all-am
--
1.9.1