• Krzysztof Kozlowski's avatar
    hw/misc/exynos4210_pmu: Add support for system poweroff · a14f9b82
    Krzysztof Kozlowski authored
    On all Exynos-based boards, the system powers down itself by driving
    PS_HOLD signal low - eight bit in PS_HOLD_CONTROL register of PMU.
    Handle writing to respective PMU register to fix power off failure:
    
        reboot: Power down
        Unable to poweroff system
        shutdown: 31 output lines suppressed due to ratelimiting
        Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
    
        CPU: 0 PID: 1 Comm: shutdown Not tainted 4.11.0-rc8 #846
        Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
        [<c031050c>] (unwind_backtrace) from [<c030ba6c>] (show_stack+0x10/0x14)
        [<c030ba6c>] (show_stack) from [<c05b2800>] (dump_stack+0x88/0x9c)
        [<c05b2800>] (dump_stack) from [<c03d3140>] (panic+0xdc/0x268)
        [<c03d3140>] (panic) from [<c0343614>] (do_exit+0xa90/0xab4)
        [<c0343614>] (do_exit) from [<c035f2dc>] (SyS_reboot+0x164/0x1d0)
        [<c035f2dc>] (SyS_reboot) from [<c0307c80>] (ret_fast_syscall+0x0/0x3c)
    
    Additionally the initial value of PS_HOLD has to be changed because
    recent Linux kernel (v4.12-rc1) uses regmap cache for this access.
    When the register is kept at reset value, the kernel will not issue a
    write to it.  Usually the bootloader sets the eight bit of PS_HOLD high
    so mimic its existence here.
    Signed-off-by: 's avatarKrzysztof Kozlowski <krzk@kernel.org>
    Reviewed-by: 's avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: 's avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: 's avatarPeter Maydell <peter.maydell@linaro.org>
    a14f9b82
Name
Last commit
Last update
audio Loading commit data...
backends Loading commit data...
block Loading commit data...
bsd-user Loading commit data...
chardev Loading commit data...
contrib Loading commit data...
crypto Loading commit data...
default-configs Loading commit data...
disas Loading commit data...
docs Loading commit data...
dtc @ 558cd81b Loading commit data...
fpu Loading commit data...
fsdev Loading commit data...
gdb-xml Loading commit data...
hw Loading commit data...
include Loading commit data...
io Loading commit data...
libdecnumber Loading commit data...
linux-headers Loading commit data...
linux-user Loading commit data...
migration Loading commit data...
nbd Loading commit data...
net Loading commit data...
pc-bios Loading commit data...
pixman @ 87eea99e Loading commit data...
po Loading commit data...
qapi Loading commit data...
qga Loading commit data...
qobject Loading commit data...
qom Loading commit data...
replay Loading commit data...
roms Loading commit data...
scripts Loading commit data...
slirp Loading commit data...
stubs Loading commit data...
target Loading commit data...
tcg Loading commit data...
tests Loading commit data...
trace Loading commit data...
ui Loading commit data...
util Loading commit data...
.dir-locals.el Loading commit data...
.exrc Loading commit data...
.gdbinit Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.mailmap Loading commit data...
.shippable.yml Loading commit data...
.travis.yml Loading commit data...
CODING_STYLE Loading commit data...
COPYING Loading commit data...
COPYING.LIB Loading commit data...
Changelog Loading commit data...
HACKING Loading commit data...
LICENSE Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
Makefile.objs Loading commit data...
Makefile.target Loading commit data...
README Loading commit data...
VERSION Loading commit data...
accel.c Loading commit data...
arch_init.c Loading commit data...
atomic_template.h Loading commit data...
balloon.c Loading commit data...
block.c Loading commit data...
blockdev-nbd.c Loading commit data...
blockdev.c Loading commit data...
blockjob.c Loading commit data...
bootdevice.c Loading commit data...
bt-host.c Loading commit data...
bt-vhci.c Loading commit data...
configure Loading commit data...
cpu-exec-common.c Loading commit data...
cpu-exec.c Loading commit data...
cpus-common.c Loading commit data...
cpus.c Loading commit data...
cputlb.c Loading commit data...
device-hotplug.c Loading commit data...
device_tree.c Loading commit data...
disas.c Loading commit data...
dma-helpers.c Loading commit data...
dump.c Loading commit data...
exec.c Loading commit data...
gdbstub.c Loading commit data...
hax-stub.c Loading commit data...
hmp-commands-info.hx Loading commit data...
hmp-commands.hx Loading commit data...
hmp.c Loading commit data...
hmp.h Loading commit data...
ioport.c Loading commit data...
iothread.c Loading commit data...
kvm-all.c Loading commit data...
kvm-stub.c Loading commit data...
memory.c Loading commit data...
memory_ldst.inc.c Loading commit data...
memory_mapping.c Loading commit data...
module-common.c Loading commit data...
monitor.c Loading commit data...
numa.c Loading commit data...
os-posix.c Loading commit data...
os-win32.c Loading commit data...
qapi-schema.json Loading commit data...
qdev-monitor.c Loading commit data...
qdict-test-data.txt Loading commit data...
qemu-bridge-helper.c Loading commit data...
qemu-doc.texi Loading commit data...
qemu-ga.texi Loading commit data...
qemu-img-cmds.hx Loading commit data...
qemu-img.c Loading commit data...
qemu-img.texi Loading commit data...
qemu-io-cmds.c Loading commit data...
qemu-io.c Loading commit data...
qemu-nbd.c Loading commit data...
qemu-nbd.texi Loading commit data...
qemu-option-trace.texi Loading commit data...
qemu-options-wrapper.h Loading commit data...
qemu-options.h Loading commit data...
qemu-options.hx Loading commit data...
qemu-seccomp.c Loading commit data...
qemu-tech.texi Loading commit data...
qemu.nsi Loading commit data...
qemu.sasl Loading commit data...
qmp.c Loading commit data...
qtest.c Loading commit data...
replication.c Loading commit data...
replication.h Loading commit data...
rules.mak Loading commit data...
softmmu_template.h Loading commit data...
tcg-runtime.c Loading commit data...
tci.c Loading commit data...
thunk.c Loading commit data...
tpm.c Loading commit data...
trace-events Loading commit data...
translate-all.c Loading commit data...
translate-all.h Loading commit data...
translate-common.c Loading commit data...
user-exec-stub.c Loading commit data...
user-exec.c Loading commit data...
version.rc Loading commit data...
vl.c Loading commit data...