ARM: kexec: validate CPU hotplug support

Architectures should fully validate whether kexec is possible as part of
machine_kexec_prepare(), so that user-space's kexec_load() operation can
report any problems. Performing validation in machine_kexec() itself is
too late, since it is not allowed to return.

Prior to this patch, ARM's machine_kexec() was testing after-the-fact
whether machine_kexec_prepare() was able to disable all but one CPU.
Instead, modify machine_kexec_prepare() to validate all conditions
necessary for machine_kexec_prepare()'s to succeed. BUG if the validation
succeeded, yet disabling the CPUs didn't actually work.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Rebuild tegra_defconfig on latest linux-next

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: hide CONFIG_ARCH_TEGRA_*_SOC

Enable all or none of Tegra support, rather than using separate Kconfig
options for individual SoCs. This will allow various conditional logic
to be simplified, as well as presenting fewer Kconfig options to the
user.

Once all use of ARCH_TEGRA_*_SOC has been replaced with ARCH_TEGRA, the
SoC-specific options will be removed.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: remove use of CONFIG_ARCH_TEGRA_*_SOC

Modify code in mach-tegra not to use ARCH_TEGRA_*_SOC, but just
ARCH_TEGRA. This simplifies various conditional logic.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: sort Makefile and fix whitespace

Sort Makefile alphabetically, and consistently use TABs not spaces for
all indentation.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: move config TEGRA_AHB

The Tegra AHB driver is located in drivers/amba. Move the Kconfig option
that enables it to the Kconfig file in that directory. This completely
decouples it from arch/arm/mach-tegra.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
memory: tegra: depend on ARCH_TEGRA, not ARCH_TEGRA_*

I'm planning to remove CONFIG_ARCH_TEGRA_*_SOC, leaving just ARCH_TEGRA.
This will reduce the number of configurations that need to be supported
by core Tegra code, e.g. CPU idle, hotplug. As a precursor, we need to
update Kconfig for all Tegra drivers not to reference ARCH_TEGRA_*_SOC.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
iommu: tegra: depend on ARCH_TEGRA, not ARCH_TEGRA_*

I'm planning to remove CONFIG_ARCH_TEGRA_*_SOC, leaving just ARCH_TEGRA.
This will reduce the number of configurations that need to be supported
by core Tegra code, e.g. CPU idle, hotplug. As a precursor, we need to
update Kconfig for all Tegra drivers not to reference ARCH_TEGRA_*_SOC.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ASoC: tegra: depend on ARCH_TEGRA, not ARCH_TEGRA_*

I'm planning to remove CONFIG_ARCH_TEGRA_*_SOC, leaving just ARCH_TEGRA.
This will reduce the number of configurations that need to be supported
by core Tegra code, e.g. CPU idle, hotplug. As a precursor, we need to
update Kconfig for all Tegra drivers not to reference ARCH_TEGRA_*_SOC.

Stop selecting I2S/AC97/SPDIF controller drivers from the machine driver
config options; this doesn't really work if we don't know which specific
SoC(s) we're building for. However, set their default values based on
SND_SOC_TEGRA, since most people will probably want to enable support for
all SoCs. This also avoids the need to change any defconfig files.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
clk: tegra: depend on ARCH_TEGRA, not ARCH_TEGRA_*

I'm planning to remove CONFIG_ARCH_TEGRA_*_SOC, leaving just ARCH_TEGRA.
This will reduce the number of configurations that need to be supported
by core Tegra code, e.g. CPU idle, hotplug. As a precursor, we need to
update Kconfig for all Tegra drivers not to reference ARCH_TEGRA_*_SOC.

The Tegra clock driver contains a fairly large amount of SoC-specific
code and data. Introduce explicit config options so that the user can
trim the set of supported SoCs if they wish. Default these to on, since
most people will probably want to enable support for all SoCs. This also
avoids the need to change any defconfig files.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
pinctrl: tegra: expose config options for individual SoCs

I'm planning to remove CONFIG_ARCH_TEGRA_*_SOC, leaving just ARCH_TEGRA.
This will reduce the number of configurations that need to be supported
by core Tegra code, e.g. CPU idle, hotplug. As a precursor, we need to
update Kconfig for all Tegra drivers not to reference ARCH_TEGRA_*_SOC.

The Tegra pinctrl driver contains a fairly large amount of SoC-specific
code and data. Introduce explicit config options so that the user can
trim the set of supported SoCs if they wish. Default these to on, since
most people will probably want to enable support for all SoCs. This also
avoids the need to change any defconfig files.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: remove CONFIG_ARCH_TEGRA_*_SOC

These kconfig symbols are no longer used, so delete them.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
ARM: tegra: don't select all pinctrl drivers

The Tegra pinctrl drivers now have their own user-visible config options.
Don't select all of these when ARCH_TEGRA is enabled; that prevents the
user from selectively disabling pinctrl drivers for SoCs that they don't
care about.

Signed-off-by: Stephen Warren <swarren@nvidia.com>