18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright 2016 NXP Semiconductors 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/kernel.h> 78c2ecf20Sopenharmony_ci#include <linux/suspend.h> 88c2ecf20Sopenharmony_ci#include <linux/io.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cistatic int imx25_suspend_enter(suspend_state_t state) 118c2ecf20Sopenharmony_ci{ 128c2ecf20Sopenharmony_ci if (!IS_ENABLED(CONFIG_PM)) 138c2ecf20Sopenharmony_ci return 0; 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci switch (state) { 168c2ecf20Sopenharmony_ci case PM_SUSPEND_MEM: 178c2ecf20Sopenharmony_ci cpu_do_idle(); 188c2ecf20Sopenharmony_ci break; 198c2ecf20Sopenharmony_ci default: 208c2ecf20Sopenharmony_ci return -EINVAL; 218c2ecf20Sopenharmony_ci } 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci return 0; 248c2ecf20Sopenharmony_ci} 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic const struct platform_suspend_ops imx25_suspend_ops = { 278c2ecf20Sopenharmony_ci .enter = imx25_suspend_enter, 288c2ecf20Sopenharmony_ci .valid = suspend_valid_only_mem, 298c2ecf20Sopenharmony_ci}; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_civoid __init imx25_pm_init(void) 328c2ecf20Sopenharmony_ci{ 338c2ecf20Sopenharmony_ci suspend_set_ops(&imx25_suspend_ops); 348c2ecf20Sopenharmony_ci} 35