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