18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2010 Freescale Semiconductor, Inc. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/kernel.h> 78c2ecf20Sopenharmony_ci#include <linux/suspend.h> 88c2ecf20Sopenharmony_ci#include <linux/io.h> 98c2ecf20Sopenharmony_ci#include "pm.h" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistatic int mxs_suspend_enter(suspend_state_t state) 128c2ecf20Sopenharmony_ci{ 138c2ecf20Sopenharmony_ci switch (state) { 148c2ecf20Sopenharmony_ci case PM_SUSPEND_MEM: 158c2ecf20Sopenharmony_ci cpu_do_idle(); 168c2ecf20Sopenharmony_ci break; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci default: 198c2ecf20Sopenharmony_ci return -EINVAL; 208c2ecf20Sopenharmony_ci } 218c2ecf20Sopenharmony_ci return 0; 228c2ecf20Sopenharmony_ci} 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_cistatic const struct platform_suspend_ops mxs_suspend_ops = { 258c2ecf20Sopenharmony_ci .enter = mxs_suspend_enter, 268c2ecf20Sopenharmony_ci .valid = suspend_valid_only_mem, 278c2ecf20Sopenharmony_ci}; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_civoid __init mxs_pm_init(void) 308c2ecf20Sopenharmony_ci{ 318c2ecf20Sopenharmony_ci suspend_set_ops(&mxs_suspend_ops); 328c2ecf20Sopenharmony_ci} 33