cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cpuidle-clps711x.c (1218B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 *  CLPS711X CPU idle driver
      4 *
      5 *  Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
      6 */
      7
      8#include <linux/cpuidle.h>
      9#include <linux/err.h>
     10#include <linux/io.h>
     11#include <linux/init.h>
     12#include <linux/platform_device.h>
     13
     14#define CLPS711X_CPUIDLE_NAME	"clps711x-cpuidle"
     15
     16static void __iomem *clps711x_halt;
     17
     18static int clps711x_cpuidle_halt(struct cpuidle_device *dev,
     19				 struct cpuidle_driver *drv, int index)
     20{
     21	writel(0xaa, clps711x_halt);
     22
     23	return index;
     24}
     25
     26static struct cpuidle_driver clps711x_idle_driver = {
     27	.name		= CLPS711X_CPUIDLE_NAME,
     28	.owner		= THIS_MODULE,
     29	.states[0]	= {
     30		.name		= "HALT",
     31		.desc		= "CLPS711X HALT",
     32		.enter		= clps711x_cpuidle_halt,
     33		.exit_latency	= 1,
     34	},
     35	.state_count	= 1,
     36};
     37
     38static int __init clps711x_cpuidle_probe(struct platform_device *pdev)
     39{
     40	clps711x_halt = devm_platform_ioremap_resource(pdev, 0);
     41	if (IS_ERR(clps711x_halt))
     42		return PTR_ERR(clps711x_halt);
     43
     44	return cpuidle_register(&clps711x_idle_driver, NULL);
     45}
     46
     47static struct platform_driver clps711x_cpuidle_driver = {
     48	.driver	= {
     49		.name	= CLPS711X_CPUIDLE_NAME,
     50	},
     51};
     52builtin_platform_driver_probe(clps711x_cpuidle_driver, clps711x_cpuidle_probe);