···3 *4 * Privileged Space Mapping Buffer (PMB) Support.5 *6- * Copyright (C) 2005 - 2010 Paul Mundt7 * Copyright (C) 2010 Matt Fleming8 *9 * This file is subject to the terms and conditions of the GNU General Public···12 */13#include <linux/init.h>14#include <linux/kernel.h>15-#include <linux/sysdev.h>16#include <linux/cpu.h>17#include <linux/module.h>18#include <linux/bitops.h>···874subsys_initcall(pmb_debugfs_init);875876#ifdef CONFIG_PM877-static int pmb_sysdev_suspend(struct sys_device *dev, pm_message_t state)878{879- static pm_message_t prev_state;880 int i;881882- /* Restore the PMB after a resume from hibernation */883- if (state.event == PM_EVENT_ON &&884- prev_state.event == PM_EVENT_FREEZE) {885- struct pmb_entry *pmbe;886887- read_lock(&pmb_rwlock);888-889- for (i = 0; i < ARRAY_SIZE(pmb_entry_list); i++) {890- if (test_bit(i, pmb_map)) {891- pmbe = &pmb_entry_list[i];892- set_pmb_entry(pmbe);893- }894 }895-896- read_unlock(&pmb_rwlock);897 }898899- prev_state = state;900-901- return 0;902}903904-static int pmb_sysdev_resume(struct sys_device *dev)905-{906- return pmb_sysdev_suspend(dev, PMSG_ON);907-}908-909-static struct sysdev_driver pmb_sysdev_driver = {910- .suspend = pmb_sysdev_suspend,911- .resume = pmb_sysdev_resume,912};913914static int __init pmb_sysdev_init(void)915{916- return sysdev_driver_register(&cpu_sysdev_class, &pmb_sysdev_driver);0917}918subsys_initcall(pmb_sysdev_init);919#endif
···3 *4 * Privileged Space Mapping Buffer (PMB) Support.5 *6+ * Copyright (C) 2005 - 2011 Paul Mundt7 * Copyright (C) 2010 Matt Fleming8 *9 * This file is subject to the terms and conditions of the GNU General Public···12 */13#include <linux/init.h>14#include <linux/kernel.h>15+#include <linux/syscore_ops.h>16#include <linux/cpu.h>17#include <linux/module.h>18#include <linux/bitops.h>···874subsys_initcall(pmb_debugfs_init);875876#ifdef CONFIG_PM877+static void pmb_syscore_resume(void)878{879+ struct pmb_entry *pmbe;880 int i;881882+ read_lock(&pmb_rwlock);000883884+ for (i = 0; i < ARRAY_SIZE(pmb_entry_list); i++) {885+ if (test_bit(i, pmb_map)) {886+ pmbe = &pmb_entry_list[i];887+ set_pmb_entry(pmbe);000888 }00889 }890891+ read_unlock(&pmb_rwlock);00892}893894+static struct syscore_ops pmb_syscore_ops = {895+ .resume = pmb_syscore_resume,000000896};897898static int __init pmb_sysdev_init(void)899{900+ register_syscore_ops(&pmb_syscore_ops);901+ return 0;902}903subsys_initcall(pmb_sysdev_init);904#endif