cregit-Linux how code gets into the kernel

Release 4.17 drivers/cpuidle/cpuidle-kirkwood.c

Directory: drivers/cpuidle
/*
 * CPU idle Marvell Kirkwood SoCs
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 *
 * The cpu idle uses wait-for-interrupt and DDR self refresh in order
 * to implement two idle states -
 * #1 wait-for-interrupt
 * #2 wait-for-interrupt and DDR self refresh
 *
 * Maintainer: Jason Cooper <jason@lakedaemon.net>
 * Maintainer: Andrew Lunn <andrew@lunn.ch>
 */

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/cpuidle.h>
#include <linux/io.h>
#include <linux/export.h>
#include <asm/cpuidle.h>


#define KIRKWOOD_MAX_STATES	2


static void __iomem *ddr_operation_base;

/* Actual code that puts the SoC in different idle states */

static int kirkwood_enter_idle(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { writel(0x7, ddr_operation_base); cpu_do_idle(); return index; }

Contributors

PersonTokensPropCommitsCommitProp
Rabeeh Khoury2475.00%125.00%
Deepthi Dharwar721.88%250.00%
Andrew Lunn13.12%125.00%
Total32100.00%4100.00%

static struct cpuidle_driver kirkwood_idle_driver = { .name = "kirkwood_idle", .owner = THIS_MODULE, .states[0] = ARM_CPUIDLE_WFI_STATE, .states[1] = { .enter = kirkwood_enter_idle, .exit_latency = 10, .target_residency = 100000, .name = "DDR SR", .desc = "WFI and DDR Self Refresh", }, .state_count = KIRKWOOD_MAX_STATES, }; /* Initialize CPU idle by registering the idle states */
static int kirkwood_cpuidle_probe(struct platform_device *pdev) { struct resource *res; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ddr_operation_base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(ddr_operation_base)) return PTR_ERR(ddr_operation_base); return cpuidle_register(&kirkwood_idle_driver, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
Andrew Lunn3557.38%116.67%
Silviu-Mihai Popescu813.11%116.67%
Robert Lee813.11%116.67%
Deepthi Dharwar46.56%116.67%
Daniel Lezcano46.56%116.67%
Rabeeh Khoury23.28%116.67%
Total61100.00%6100.00%


static int kirkwood_cpuidle_remove(struct platform_device *pdev) { cpuidle_unregister(&kirkwood_idle_driver); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Andrew Lunn1890.00%133.33%
Daniel Lezcano15.00%133.33%
Jingoo Han15.00%133.33%
Total20100.00%3100.00%

static struct platform_driver kirkwood_cpuidle_driver = { .probe = kirkwood_cpuidle_probe, .remove = kirkwood_cpuidle_remove, .driver = { .name = "kirkwood_cpuidle", }, }; module_platform_driver(kirkwood_cpuidle_driver); MODULE_AUTHOR("Andrew Lunn <andrew@lunn.ch>"); MODULE_DESCRIPTION("Kirkwood cpu idle driver"); MODULE_LICENSE("GPL v2"); MODULE_ALIAS("platform:kirkwood-cpuidle");

Overall Contributors

PersonTokensPropCommitsCommitProp
Andrew Lunn11242.26%110.00%
Rabeeh Khoury8030.19%110.00%
Robert Lee4115.47%110.00%
Deepthi Dharwar145.28%220.00%
Silviu-Mihai Popescu83.02%110.00%
Daniel Lezcano62.26%220.00%
Paul Gortmaker31.13%110.00%
Jingoo Han10.38%110.00%
Total265100.00%10100.00%
Directory: drivers/cpuidle
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.