summaryrefslogtreecommitdiffstats
path: root/kernel/arch/arm/mach-tegra
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/arch/arm/mach-tegra')
-rw-r--r--kernel/arch/arm/mach-tegra/Kconfig1
-rw-r--r--kernel/arch/arm/mach-tegra/board-paz00.c4
-rw-r--r--kernel/arch/arm/mach-tegra/cpuidle-tegra114.c19
-rw-r--r--kernel/arch/arm/mach-tegra/hotplug.c2
-rw-r--r--kernel/arch/arm/mach-tegra/iomap.h3
-rw-r--r--kernel/arch/arm/mach-tegra/sleep-tegra30.S2
-rw-r--r--kernel/arch/arm/mach-tegra/tegra.c1
7 files changed, 19 insertions, 13 deletions
diff --git a/kernel/arch/arm/mach-tegra/Kconfig b/kernel/arch/arm/mach-tegra/Kconfig
index 5d1a318f1..0fa4c5f8b 100644
--- a/kernel/arch/arm/mach-tegra/Kconfig
+++ b/kernel/arch/arm/mach-tegra/Kconfig
@@ -8,6 +8,7 @@ menuconfig ARCH_TEGRA
select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP
select PINCTRL
+ select PM_OPP
select ARCH_HAS_RESET_CONTROLLER
select RESET_CONTROLLER
select SOC_BUS
diff --git a/kernel/arch/arm/mach-tegra/board-paz00.c b/kernel/arch/arm/mach-tegra/board-paz00.c
index fbe74c680..49d1110cf 100644
--- a/kernel/arch/arm/mach-tegra/board-paz00.c
+++ b/kernel/arch/arm/mach-tegra/board-paz00.c
@@ -39,8 +39,8 @@ static struct platform_device wifi_rfkill_device = {
static struct gpiod_lookup_table wifi_gpio_lookup = {
.dev_id = "rfkill_gpio",
.table = {
- GPIO_LOOKUP_IDX("tegra-gpio", 25, NULL, 0, 0),
- GPIO_LOOKUP_IDX("tegra-gpio", 85, NULL, 1, 0),
+ GPIO_LOOKUP("tegra-gpio", 25, "reset", 0),
+ GPIO_LOOKUP("tegra-gpio", 85, "shutdown", 0),
{ },
},
};
diff --git a/kernel/arch/arm/mach-tegra/cpuidle-tegra114.c b/kernel/arch/arm/mach-tegra/cpuidle-tegra114.c
index 155807fa6..9157546fe 100644
--- a/kernel/arch/arm/mach-tegra/cpuidle-tegra114.c
+++ b/kernel/arch/arm/mach-tegra/cpuidle-tegra114.c
@@ -24,6 +24,7 @@
#include <asm/cpuidle.h>
#include <asm/smp_plat.h>
#include <asm/suspend.h>
+#include <asm/psci.h>
#include "pm.h"
#include "sleep.h"
@@ -44,16 +45,12 @@ static int tegra114_idle_power_down(struct cpuidle_device *dev,
tegra_set_cpu_in_lp2();
cpu_pm_enter();
- tick_broadcast_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);
- tick_broadcast_exit();
-
cpu_pm_exit();
tegra_clear_cpu_in_lp2();
@@ -61,6 +58,13 @@ static int tegra114_idle_power_down(struct cpuidle_device *dev,
return index;
}
+
+static void tegra114_idle_enter_freeze(struct cpuidle_device *dev,
+ struct cpuidle_driver *drv,
+ int index)
+{
+ tegra114_idle_power_down(dev, drv, index);
+}
#endif
static struct cpuidle_driver tegra_idle_driver = {
@@ -72,8 +76,10 @@ static struct cpuidle_driver tegra_idle_driver = {
#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",
@@ -84,5 +90,8 @@ static struct cpuidle_driver tegra_idle_driver = {
int __init tegra114_cpuidle_init(void)
{
- return cpuidle_register(&tegra_idle_driver, NULL);
+ if (!psci_smp_available())
+ return cpuidle_register(&tegra_idle_driver, NULL);
+
+ return 0;
}
diff --git a/kernel/arch/arm/mach-tegra/hotplug.c b/kernel/arch/arm/mach-tegra/hotplug.c
index 6fc71f153..1b129899a 100644
--- a/kernel/arch/arm/mach-tegra/hotplug.c
+++ b/kernel/arch/arm/mach-tegra/hotplug.c
@@ -37,7 +37,7 @@ int tegra_cpu_kill(unsigned cpu)
*
* Called with IRQs disabled
*/
-void __ref tegra_cpu_die(unsigned int cpu)
+void tegra_cpu_die(unsigned int cpu)
{
if (!tegra_hotplug_shutdown) {
WARN(1, "hotplug is not yet initialized\n");
diff --git a/kernel/arch/arm/mach-tegra/iomap.h b/kernel/arch/arm/mach-tegra/iomap.h
index 81dc950b4..9e5b2f869 100644
--- a/kernel/arch/arm/mach-tegra/iomap.h
+++ b/kernel/arch/arm/mach-tegra/iomap.h
@@ -82,9 +82,6 @@
#define TEGRA_EMC_BASE 0x7000F400
#define TEGRA_EMC_SIZE SZ_1K
-#define TEGRA_FUSE_BASE 0x7000F800
-#define TEGRA_FUSE_SIZE SZ_1K
-
#define TEGRA_EMC0_BASE 0x7001A000
#define TEGRA_EMC0_SIZE SZ_2K
diff --git a/kernel/arch/arm/mach-tegra/sleep-tegra30.S b/kernel/arch/arm/mach-tegra/sleep-tegra30.S
index 5d8d13aea..9a2f0b051 100644
--- a/kernel/arch/arm/mach-tegra/sleep-tegra30.S
+++ b/kernel/arch/arm/mach-tegra/sleep-tegra30.S
@@ -223,7 +223,7 @@ wfe_war:
b __cpu_reset_again
/*
- * 38 nop's, which fills reset of wfe cache line and
+ * 38 nop's, which fills rest of wfe cache line and
* 4 more cachelines with nop
*/
.rept 38
diff --git a/kernel/arch/arm/mach-tegra/tegra.c b/kernel/arch/arm/mach-tegra/tegra.c
index 861d88486..2378fa560 100644
--- a/kernel/arch/arm/mach-tegra/tegra.c
+++ b/kernel/arch/arm/mach-tegra/tegra.c
@@ -163,6 +163,5 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)")
.init_irq = tegra_dt_init_irq,
.init_machine = tegra_dt_init,
.init_late = tegra_dt_init_late,
- .restart = tegra_pmc_restart,
.dt_compat = tegra_dt_board_compat,
MACHINE_END