Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101/* SPDX-License-Identifier: GPL-2.0-only *//* * Copyright (C) 2011 Google, Inc. * * Author: * Colin Cross <ccross@android.com> */
#ifndef _LINUX_CPU_PM_H#define _LINUX_CPU_PM_H
#include <linux/kernel.h>#include <linux/notifier.h>
/* * When a CPU goes to a low power state that turns off power to the CPU's * power domain, the contents of some blocks (floating point coprocessors, * interrupt controllers, caches, timers) in the same power domain can * be lost. The cpm_pm notifiers provide a method for platform idle, suspend, * and hotplug implementations to notify the drivers for these blocks that * they may be reset. * * All cpu_pm notifications must be called with interrupts disabled. * * The notifications are split into two classes: CPU notifications and CPU * cluster notifications. * * CPU notifications apply to a single CPU and must be called on the affected * CPU. They are used to save per-cpu context for affected blocks. * * CPU cluster notifications apply to all CPUs in a single power domain. They * are used to save any global context for affected blocks, and must be called * after all the CPUs in the power domain have been notified of the low power * state. */
/* * Event codes passed as unsigned long val to notifier calls */enum cpu_pm_event { /* A single cpu is entering a low power state */ CPU_PM_ENTER,
/* A single cpu failed to enter a low power state */ CPU_PM_ENTER_FAILED,
/* A single cpu is exiting a low power state */ CPU_PM_EXIT,
/* A cpu power domain is entering a low power state */ CPU_CLUSTER_PM_ENTER,
/* A cpu power domain failed to enter a low power state */ CPU_CLUSTER_PM_ENTER_FAILED,
/* A cpu power domain is exiting a low power state */ CPU_CLUSTER_PM_EXIT,};
#ifdef CONFIG_CPU_PMint cpu_pm_register_notifier(struct notifier_block *nb);int cpu_pm_unregister_notifier(struct notifier_block *nb);int cpu_pm_enter(void);int cpu_pm_exit(void);int cpu_cluster_pm_enter(void);int cpu_cluster_pm_exit(void);
#else
static inline int cpu_pm_register_notifier(struct notifier_block *nb){ return 0;}
static inline int cpu_pm_unregister_notifier(struct notifier_block *nb){ return 0;}
static inline int cpu_pm_enter(void){ return 0;}
static inline int cpu_pm_exit(void){ return 0;}
static inline int cpu_cluster_pm_enter(void){ return 0;}
static inline int cpu_cluster_pm_exit(void){ return 0;}#endif#endif