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