cregit-Linux how code gets into the kernel

Release 4.11 arch/arm/mach-tegra/cpuidle-tegra114.c

/*
 * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <asm/firmware.h>
#include <linux/tick.h>
#include <linux/cpuidle.h>
#include <linux/cpu_pm.h>
#include <linux/kernel.h>
#include <linux/module.h>

#include <asm/cpuidle.h>
#include <asm/smp_plat.h>
#include <asm/suspend.h>
#include <asm/psci.h>

#include "cpuidle.h"
#include "pm.h"
#include "sleep.h"

#ifdef CONFIG_PM_SLEEP

#define TEGRA114_MAX_STATES 2
#else

#define TEGRA114_MAX_STATES 1
#endif

#ifdef CONFIG_PM_SLEEP

static int tegra114_idle_power_down(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { local_fiq_disable(); tegra_set_cpu_in_lp2(); cpu_pm_enter(); call_firmware_op(prepare_idle); /* Do suspend by ourselves if the firmware does not implement it */ if (call_firmware_op(do_idle, 0) == -ENOSYS) cpu_suspend(0, tegra30_sleep_cpu_secondary_finish); cpu_pm_exit(); tegra_clear_cpu_in_lp2(); local_fiq_enable(); return index; }

Contributors

PersonTokensPropCommitsCommitProp
Joseph Lo4772.31%133.33%
Alexandre Courbot1624.62%133.33%
Bartlomiej Zolnierkiewicz23.08%133.33%
Total65100.00%3100.00%


static void tegra114_idle_enter_freeze(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { tegra114_idle_power_down(dev, drv, index); }

Contributors

PersonTokensPropCommitsCommitProp
Tomeu Vizoso28100.00%1100.00%
Total28100.00%1100.00%

#endif static struct cpuidle_driver tegra_idle_driver = { .name = "tegra_idle", .owner = THIS_MODULE, .state_count = TEGRA114_MAX_STATES, .states = { [0] = ARM_CPUIDLE_WFI_STATE_PWR(600), #ifdef CONFIG_PM_SLEEP [1] = { .enter = tegra114_idle_power_down, .enter_freeze = tegra114_idle_enter_freeze, .exit_latency = 500, .target_residency = 1000, .flags = CPUIDLE_FLAG_TIMER_STOP, .power_usage = 0, .name = "powered-down", .desc = "CPU power gated", }, #endif }, };
int __init tegra114_cpuidle_init(void) { if (!psci_smp_available()) return cpuidle_register(&tegra_idle_driver, NULL); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Joseph Lo1453.85%133.33%
Thierry Reding934.62%133.33%
Daniel Lezcano311.54%133.33%
Total26100.00%3100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Joseph Lo18569.29%220.00%
Tomeu Vizoso3814.23%110.00%
Thierry Reding207.49%330.00%
Alexandre Courbot186.74%110.00%
Daniel Lezcano31.12%110.00%
Bartlomiej Zolnierkiewicz20.75%110.00%
Thomas Gleixner10.37%110.00%
Total267100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.