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