blob: 7a460d688fa45c193e1cc0d979f62230552f5e4d [file] [log] [blame]
#!/bin/sh -u
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This script is shared by Upstart and systemd. All variables used by this
# script must be defined either in powerd.conf file for Upstart or
# powerd.service file for systemd.
# For Upstart create dirs and set the proper permissions.
# For systemd, systemd-tmpfiles handles this using powerd_directories.conf.
# We use the "UPSTART_RUN" variable, that is only defined by the Upstart conf
# to distinguish between these situations.
if [ -n "${UPSTART_RUN:=}" ]; then
mkdir -p ${LOG_DIR} ${POWER_RUN_DIR} ${PREFS_DIR}
chown -R power:power ${LOG_DIR} ${POWER_RUN_DIR} ${PREFS_DIR}
chmod 755 ${LOG_DIR} ${POWER_RUN_DIR} ${PREFS_DIR}
mkdir -p ${ROOT_RUN_DIR} ${ROOT_SPOOL_DIR}
fi
# Read the real maximum backlight luminance (i.e. not the value reported by
# the driver) from VPD and pass it to powerd via a pref file.
if [ -e "${VPD_CACHE_FILE}" ]; then
MAX_NITS=$(sed -nre 's/^"panel_backlight_max_nits"="(.+)"$/\1/p' \
<"${VPD_CACHE_FILE}")
if [ -n "${MAX_NITS}" ]; then
TEMP_FILE="$(mktemp --tmpdir powerd_nits.XXXXXXXXXX)"
echo "${MAX_NITS}" >"${TEMP_FILE}"
PREF_FILE="${PREFS_DIR}/${MAX_NITS_PREF}"
mv "${TEMP_FILE}" "${PREF_FILE}"
[ -x "/sbin/restorecon" ] && restorecon "${PREF_FILE}"
chown power:power "${PREF_FILE}"
chmod 644 "${PREF_FILE}"
fi
fi
# Change ownership of files used by powerd.
for FILE in \
/sys/power/pm_test \
/proc/acpi/wakeup \
/sys/class/backlight/*/* \
/sys/class/leds/*:kbd_backlight/* \
/sys/class/power_supply/*/charge_control_limit_max \
/sys/module/printk/parameters/console_suspend \
/sys/power/mem_sleep \
$(find /sys/devices/ -name "dark_resume_active" -o \
-name "dark_resume_source" -o \
-name "wakeup_type" -o \
-path "*/power/wakeup"); do
# Test for existence to skip over wildcards that didn't match anything.
if [ -e "${FILE}" ]; then
chown power:power "${FILE}" || true
fi
done
if [ -e "/sys/power/pm_print_times" ]; then
echo 1 > /sys/power/pm_print_times
fi
if [ -e "/sys/power/pm_debug_messages" ]; then
echo 1 > /sys/power/pm_debug_messages
fi
if [ -e "/usr/share/cros/init/optional/powerd-pre-start-wilco.sh" ]; then
/usr/share/cros/init/optional/powerd-pre-start-wilco.sh || true
fi