History log of /arch/arm/mach-tegra/hotplug.c
Revision Date Author Comments
05ccf19602cc16fc96401b4f2617d1b8e20e642d 11-Jul-2014 Thierry Reding <treding@nvidia.com> ARM: tegra: Setup CPU hotplug in a pure initcall

CPU hotplug support doesn't have to be set up until fairly late in the
boot process, so it can be done in a regular initcall. To make sure that
we don't miss any ordering problems in the future, output a warning if
any of the functions are called before initialization has completed.

This is part of untangling the boot order dependencies on Tegra so that
more code can be shared between 32-bit and 64-bit ARM.

Signed-off-by: Thierry Reding <treding@nvidia.com>
304664eab93f9e95a8d28fbd9702ede88bb10cc5 11-Jul-2014 Thierry Reding <treding@nvidia.com> ARM: tegra: Use a function to get the chip ID

Instead of using a simple variable access to get at the Tegra chip ID,
use a function so that we can run additional code. This can be used to
determine where the chip ID is being accessed without being available.
That in turn will be handy for resolving boot sequence dependencies in
order to convert more code to regular initcalls rather than a sequence
fixed by Tegra SoC setup code.

Signed-off-by: Thierry Reding <treding@nvidia.com>
a0524acc94c91c72c2968a76eddc6f3afe82f9f2 11-Jul-2014 Thierry Reding <treding@nvidia.com> ARM: tegra: Sort includes alphabetically

If these aren't sorted alphabetically, then the logical choice is to
append new ones, however that creates a lot of potential for conflicts
because every change will then add new includes in the same location.

Signed-off-by: Thierry Reding <treding@nvidia.com>
9997e62682e0fe68566c88f70ed320ded4e16529 11-Oct-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra: CPU hotplug support for Tegra124

The procedure of CPU hotplug for Tegra124 is same with Tegra114. We
re-use the same function with it.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
ac2527bfc21739b77d687df1bfc4e973103fef7b 03-Jul-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra: add a flag for tegra_disable_clean_inv_dcache to do LoUIS or ALL

Adding a flag for tegra_disable_clean_inv_dcache to flush cache as LoUIS
or ALL. After this patch, the v7_flush_dcache_louis is used for CPU hotplug
and CPU suspend in CPU power down (e.g. CPU idle power-down mode) case. And
the v7_flush_dcache_all is used for CPU cluster power down (e.g. suspend to
LP2 mode).

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
a99d34b506f746e607c96767d616553a5cc14758 19-Jul-2013 Joseph Lo <josephl@nvidia.com> Revert "ARM: tegra: add cpu_disable for hotplug"

This reverts commit 510bb59 "ARM: tegra: add cpu_disable for hotplug".

The Tegra114 support CPU0 hotplug function in HW physically, but it needs
other software to make it work normally after we add CPU idle power down
mode support. So remove them for now.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
510bb595de26f90e5bb7c4a1e2a584e38398cf00 21-May-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra: add cpu_disable for hotplug

The Tegra114 could hotplug the CPU0, but the common cpu_disable didn't
support that. Adding a Tegra specific cpu_disable function for it.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
[swarren: adjusted the switch statement to be future-proof]
Signed-off-by: Stephen Warren <swarren@nvidia.com>
33d5c01915ccca298a5fda7e0cb33199d225e03a 20-May-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra114: add CPU hotplug support

The Tegra114 is a quad cores SoC. Each core can be hotplugged including
CPU0. The hotplug sequence can be controlled by setting event trigger in
flow controller. Then the flow controller will take care all the power
sequence that include CPU up and down.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
bca7a5a04933700a8bde4ea5798119607a8b0436 18-Apr-2013 Russell King <rmk+kernel@arm.linux.org.uk> ARM: cpu hotplug: remove majority of cache flushing from platforms

Remove the majority of cache flushing calls from the individual platform
files. This is now handled by the core code.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
da2265b130f6b5be3b874bb2832335887fe59461 18-Apr-2013 Russell King <rmk+kernel@arm.linux.org.uk> ARM: tegra: remove tegra specific cpu_disable()

The tegra cpu_disable() function is the same as the generic version
in arch/arm/kernel/smp.c. Therefore, it can be removed.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
7469688e832e340a84a1f6d4c290d8680c723256 13-Feb-2013 Hiroshi Doyu <hdoyu@nvidia.com> ARM: tegra: Unify tegra{20,30,114}_init_early()

Refactored tegra{20,30,114}_init_early() so that we have the unified
tegra_init_early().

Signed-off-by: Hiroshi Doyu <hdoyu@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
89572c77cdffdf24f8fec50d3e38db6a18c04dbe 11-Jan-2013 Prashant Gaikwad <pgaikwad@nvidia.com> ARM: tegra: move tegra_cpu_car.h to linux/clk/tegra.h

tegra_cpu_car_ops struct is going to be accessed from drivers/clk/tegra.
Move the tegra_cpu_car_ops to include/linux/clk/tegra.h.

Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
b811943160cf3b040341c50d23440cf6d68ae079 03-Jan-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra: moving the clock gating procedure to tegra_cpu_kill

The tegra_cpu_die was be executed by the CPU itslf. So the clock gating
procedure won't be executed after the CPU hardware shutdown code. Moving
the clock gating procedure to tegra_cpu_kill that will be run by another
CPU after the CPU died.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
57886616ca7bff844a6427436d0c8faf74653f73 03-Jan-2013 Joseph Lo <josephl@nvidia.com> ARM: tegra: update the cache maintenance order for CPU shutdown

Updating the cache maintenance order before CPU shutdown when doing CPU
hotplug.
The old order:
* clean L1 by flush_cache_all
* exit SMP
* CPU shutdown
Adapt to:
* disable L1 data cache by clear C bit
* clean L1 by v7_flush_dcache_louis
* exit SMP
* CPU shutdown

For CPU hotplug case, it's no need to do "flush_cache_all". And we should
disable L1 data cache before clean L1 data cache. Then leaving the SMP
coherency.

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Acked-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
453689e407f2b7c0a72a2e6fb2ef84c20475773b 16-Aug-2012 Joseph Lo <josephl@nvidia.com> ARM: tegra20: add CPU hotplug support

Hotplug function put CPU in offline or online mode at runtime.
When the CPU been put into offline, it was been clock gated. The
offline CPU can be power gated, when the remaining CPU goes into
LP2.

Based on the worked by:
Colin Cross <ccross@android.com>
Gary King <gking@nvidia.com>

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
59b0f6825c15d24859e22b1024440ae2a094983e 16-Aug-2012 Joseph Lo <josephl@nvidia.com> ARM: tegra30: add CPU hotplug support

Hotplug function put CPUs in offline or online state at runtime.
When the CPU been put in the offline state, it was been clock and
power gated. Except primary CPU other CPUs can be hotplugged.

Based on the work by:
Scott Williams <scwilliams@nvidia.com>
Colin Cross <ccross@android.com>
Gary King <gking@nvidia.com>

Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
a17257322f5e6ca376c15908b55423369274fcad 08-Sep-2011 Marc Zyngier <marc.zyngier@arm.com> ARM: SoC: convert Tegra to SMP operations

Convert Tegra to use struct smp_operations to provide its SMP
and CPU hotplug operations.

Tested on Harmony.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Olof Johansson <olof@lixom.net>
Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
15d07dc9c59eae51219c40253bdf920f62bb10f2 28-Mar-2012 Russell King <rmk+kernel@arm.linux.org.uk> ARM: move CP15 definitions to separate header file

Avoid namespace conflicts with drivers over the CP15 definitions by
moving CP15 related prototypes and definitions to a private header
file.

Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com> [Tegra]
Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com> [EP93xx]
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
195864cf3d6f5b6b743793bda3aaa2ff65d322ae 19-Jan-2012 Russell King <rmk+kernel@arm.linux.org.uk> ARM: move CP15 definitions to separate header file

Avoid namespace conflicts with drivers over the CP15 definitions by
moving CP15 related prototypes and definitions to a private header
file.

Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com> [Tegra]
Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com> [EP93xx]
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
30b99d07b7e08d0e6bcc2f0b924828c03e67f881 14-Jan-2011 Russell King <rmk+kernel@arm.linux.org.uk> ARM: fix wrongly patched constants

e3d9c625 (ARM: CPU hotplug: fix hard-coded control register constants)
changed the wrong constants in the hotplug assembly code. Fix this.

Reported-by: viresh kumar <viresh.kumar@st.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
e3d9c625f5e4158014e041f492b46e38ad10987e 19-Dec-2010 Russell King <rmk+kernel@arm.linux.org.uk> ARM: CPU hotplug: fix hard-coded control register constants

Use the definition we've provided in asm/system.h rather than
numeric constants.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
d4450261e546953c4a1ce8b48e29164a57c6ed33 19-Dec-2010 Russell King <rmk+kernel@arm.linux.org.uk> ARM: CPU hotplug: fix reporting of spurious wakeups

The original scheme for reporting spurious wakeups was broken - it
tried to use printk() from a context which wasn't coherent with the
other CPUs, which risks corrupting the printk() data.

Fix this by noting the number spurious wakeups, and only report them
when we are properly woken - when we will be coherent with the rest
of the system.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
bbc81fd4327f9ed4480b05981e38acd48b1d184a 30-Nov-2010 Russell King <rmk+kernel@arm.linux.org.uk> ARM: CPU hotplug: remove bug checks in platform_cpu_die()

platform_cpu_die() is entered from the CPU's own idle thread, which
can not be migrated to other CPUs. Moreover, the 'cpu' argument
comes from the thread info, which will always be the 'current'
CPU. So remove this useless bug check.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
3c030beabf937b1d3b4ecaedfd1fb2f1e2aa0c70 30-Nov-2010 Russell King <rmk+kernel@arm.linux.org.uk> ARM: CPU hotplug: move cpu_killed completion to core code

We always need to wait for the dying CPU to reach a safe state before
taking it down, irrespective of the requirements of the platform.
Move the completion code into the ARM SMP hotplug code rather than
having each platform re-implement this.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
1cea7326b3fff97d17d33fb8f33163409a84431b 22-Feb-2010 Colin Cross <ccross@android.com> [ARM] tegra: SMP support

Signed-off-by: Colin Cross <ccross@android.com>
Signed-off-by: Erik Gilling <konkers@android.com>