18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2012 Freescale Semiconductor, Inc.
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#include <linux/cpuidle.h>
78c2ecf20Sopenharmony_ci#include <linux/module.h>
88c2ecf20Sopenharmony_ci#include <asm/system_misc.h>
98c2ecf20Sopenharmony_ci#include "cpuidle.h"
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_cistatic int imx5_cpuidle_enter(struct cpuidle_device *dev,
128c2ecf20Sopenharmony_ci			      struct cpuidle_driver *drv, int index)
138c2ecf20Sopenharmony_ci{
148c2ecf20Sopenharmony_ci	arm_pm_idle();
158c2ecf20Sopenharmony_ci	return index;
168c2ecf20Sopenharmony_ci}
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_cistatic struct cpuidle_driver imx5_cpuidle_driver = {
198c2ecf20Sopenharmony_ci	.name             = "imx5_cpuidle",
208c2ecf20Sopenharmony_ci	.owner            = THIS_MODULE,
218c2ecf20Sopenharmony_ci	.states[0] = {
228c2ecf20Sopenharmony_ci		.enter            = imx5_cpuidle_enter,
238c2ecf20Sopenharmony_ci		.exit_latency     = 2,
248c2ecf20Sopenharmony_ci		.target_residency = 1,
258c2ecf20Sopenharmony_ci		.name             = "IMX5 SRPG",
268c2ecf20Sopenharmony_ci		.desc             = "CPU state retained,powered off",
278c2ecf20Sopenharmony_ci	},
288c2ecf20Sopenharmony_ci	.state_count = 1,
298c2ecf20Sopenharmony_ci};
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciint __init imx5_cpuidle_init(void)
328c2ecf20Sopenharmony_ci{
338c2ecf20Sopenharmony_ci	return cpuidle_register(&imx5_cpuidle_driver, NULL);
348c2ecf20Sopenharmony_ci}
35