Commit 5083c542 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC cleanups from Olof Johansson:
 "A smallish number of general cleanup commits this release cycle.  Some
  of these are minor tweaks:

   - shmobile change of binding for their GIC (using arm,pl390 now)
   - ARCH_RENESAS introduction
   - Misc other renesas updates

  There's also a couple of treewide commits from Masahiro Yamada
  cleaning up const/__initconst for SMP operation structs and a switch
  to using "depends on" instead of if-constructs on most of the Kconfig
  platform targets"

* tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  staging: board: armadillo800eva: Use "arm,pl390"
  staging: board: kzm9d: Use "arm,pl390"
  ARM: shmobile: r8a7778 dtsi: Use "arm,pl390" for GIC
  ARM: shmobile: emev2 dtsi: Use "arm,pl390" for GIC
  ARM: shmobile: r8a7740 dtsi: Use "arm,pl390" for GIC
  ARM: shmobile: r7s72100 dtsi: Use "arm,pl390" for GIC
  ARM: use "depends on" for SoC configs instead of "if" after prompt
  ARM/clocksource: use automatic DT probing for ux500 PRCMU
  ARM: use const and __initconst for smp_operations
  ARM: hisi: do not export smp_operations structures
  ARM: mvebu: remove unused mach/gpio.h
  ARM: shmobile: Remove legacy mach/irqs.h
  ARM: shmobile: Introduce ARCH_RENESAS
  MAINTAINERS: Remove link to oss.renesas.com which is closed
parents 0c582826 0ef917f4
...@@ -1532,7 +1532,6 @@ ARM/SHMOBILE ARM ARCHITECTURE ...@@ -1532,7 +1532,6 @@ ARM/SHMOBILE ARM ARCHITECTURE
M: Simon Horman <horms@verge.net.au> M: Simon Horman <horms@verge.net.au>
M: Magnus Damm <magnus.damm@gmail.com> M: Magnus Damm <magnus.damm@gmail.com>
L: linux-renesas-soc@vger.kernel.org L: linux-renesas-soc@vger.kernel.org
W: http://oss.renesas.com
Q: http://patchwork.kernel.org/project/linux-renesas-soc/list/ Q: http://patchwork.kernel.org/project/linux-renesas-soc/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next T: git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
S: Supported S: Supported
......
...@@ -806,7 +806,8 @@ config ARCH_MULTI_CPU_AUTO ...@@ -806,7 +806,8 @@ config ARCH_MULTI_CPU_AUTO
endmenu endmenu
config ARCH_VIRT config ARCH_VIRT
bool "Dummy Virtual Machine" if ARCH_MULTI_V7 bool "Dummy Virtual Machine"
depends on ARCH_MULTI_V7
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
select ARM_GIC_V2M if PCI_MSI select ARM_GIC_V2M if PCI_MSI
......
...@@ -44,7 +44,7 @@ cpu@1 { ...@@ -44,7 +44,7 @@ cpu@1 {
}; };
gic: interrupt-controller@e0020000 { gic: interrupt-controller@e0020000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,pl390";
interrupt-controller; interrupt-controller;
#interrupt-cells = <3>; #interrupt-cells = <3>;
reg = <0xe0028000 0x1000>, reg = <0xe0028000 0x1000>,
......
...@@ -329,7 +329,7 @@ spi4: spi@e800e800 { ...@@ -329,7 +329,7 @@ spi4: spi@e800e800 {
}; };
gic: interrupt-controller@e8201000 { gic: interrupt-controller@e8201000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,pl390";
#interrupt-cells = <3>; #interrupt-cells = <3>;
#address-cells = <0>; #address-cells = <0>;
interrupt-controller; interrupt-controller;
......
...@@ -30,7 +30,7 @@ cpu@0 { ...@@ -30,7 +30,7 @@ cpu@0 {
}; };
gic: interrupt-controller@c2800000 { gic: interrupt-controller@c2800000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,pl390";
#interrupt-cells = <3>; #interrupt-cells = <3>;
interrupt-controller; interrupt-controller;
reg = <0xc2800000 0x1000>, reg = <0xc2800000 0x1000>,
......
...@@ -61,7 +61,7 @@ ether: ethernet@fde00000 { ...@@ -61,7 +61,7 @@ ether: ethernet@fde00000 {
}; };
gic: interrupt-controller@fe438000 { gic: interrupt-controller@fe438000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,pl390";
#interrupt-cells = <3>; #interrupt-cells = <3>;
interrupt-controller; interrupt-controller;
reg = <0xfe438000 0x1000>, reg = <0xfe438000 0x1000>,
......
...@@ -83,7 +83,7 @@ static void mcpm_cpu_die(unsigned int cpu) ...@@ -83,7 +83,7 @@ static void mcpm_cpu_die(unsigned int cpu)
#endif #endif
static struct smp_operations __initdata mcpm_smp_ops = { static const struct smp_operations mcpm_smp_ops __initconst = {
.smp_boot_secondary = mcpm_boot_secondary, .smp_boot_secondary = mcpm_boot_secondary,
.smp_secondary_init = mcpm_secondary_init, .smp_secondary_init = mcpm_secondary_init,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -75,7 +75,7 @@ CONFIG_MACH_SPEAR1340=y ...@@ -75,7 +75,7 @@ CONFIG_MACH_SPEAR1340=y
CONFIG_ARCH_STI=y CONFIG_ARCH_STI=y
CONFIG_ARCH_EXYNOS=y CONFIG_ARCH_EXYNOS=y
CONFIG_EXYNOS5420_MCPM=y CONFIG_EXYNOS5420_MCPM=y
CONFIG_ARCH_SHMOBILE_MULTI=y CONFIG_ARCH_RENESAS=y
CONFIG_ARCH_EMEV2=y CONFIG_ARCH_EMEV2=y
CONFIG_ARCH_R7S72100=y CONFIG_ARCH_R7S72100=y
CONFIG_ARCH_R8A73A4=y CONFIG_ARCH_R8A73A4=y
......
...@@ -9,7 +9,7 @@ CONFIG_SYSCTL_SYSCALL=y ...@@ -9,7 +9,7 @@ CONFIG_SYSCTL_SYSCALL=y
CONFIG_EMBEDDED=y CONFIG_EMBEDDED=y
CONFIG_PERF_EVENTS=y CONFIG_PERF_EVENTS=y
CONFIG_SLAB=y CONFIG_SLAB=y
CONFIG_ARCH_SHMOBILE_MULTI=y CONFIG_ARCH_RENESAS=y
CONFIG_ARCH_EMEV2=y CONFIG_ARCH_EMEV2=y
CONFIG_ARCH_R7S72100=y CONFIG_ARCH_R7S72100=y
CONFIG_ARCH_R8A73A4=y CONFIG_ARCH_R8A73A4=y
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#ifndef __ASM_ARM_PSCI_H #ifndef __ASM_ARM_PSCI_H
#define __ASM_ARM_PSCI_H #define __ASM_ARM_PSCI_H
extern struct smp_operations psci_smp_ops; extern const struct smp_operations psci_smp_ops;
#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI) #if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI)
bool psci_smp_available(void); bool psci_smp_available(void);
......
...@@ -120,7 +120,7 @@ bool __init psci_smp_available(void) ...@@ -120,7 +120,7 @@ bool __init psci_smp_available(void)
return (psci_ops.cpu_on != NULL); return (psci_ops.cpu_on != NULL);
} }
struct smp_operations __initdata psci_smp_ops = { const struct smp_operations psci_smp_ops __initconst = {
.smp_boot_secondary = psci_boot_secondary, .smp_boot_secondary = psci_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
.cpu_disable = psci_cpu_disable, .cpu_disable = psci_cpu_disable,
......
config ARCH_ALPINE config ARCH_ALPINE
bool "Annapurna Labs Alpine platform" if ARCH_MULTI_V7 bool "Annapurna Labs Alpine platform"
depends on ARCH_MULTI_V7
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
select GENERIC_IRQ_CHIP select GENERIC_IRQ_CHIP
......
...@@ -42,7 +42,7 @@ static void __init alpine_smp_prepare_cpus(unsigned int max_cpus) ...@@ -42,7 +42,7 @@ static void __init alpine_smp_prepare_cpus(unsigned int max_cpus)
alpine_cpu_pm_init(); alpine_cpu_pm_init();
} }
static struct smp_operations alpine_smp_ops __initdata = { static const struct smp_operations alpine_smp_ops __initconst = {
.smp_prepare_cpus = alpine_smp_prepare_cpus, .smp_prepare_cpus = alpine_smp_prepare_cpus,
.smp_boot_secondary = alpine_boot_secondary, .smp_boot_secondary = alpine_boot_secondary,
}; };
......
...@@ -8,7 +8,8 @@ menuconfig ARCH_AT91 ...@@ -8,7 +8,8 @@ menuconfig ARCH_AT91
if ARCH_AT91 if ARCH_AT91
config SOC_SAMA5D2 config SOC_SAMA5D2
bool "SAMA5D2 family" if ARCH_MULTI_V7 bool "SAMA5D2 family"
depends on ARCH_MULTI_V7
select SOC_SAMA5 select SOC_SAMA5
select CACHE_L2X0 select CACHE_L2X0
select HAVE_FB_ATMEL select HAVE_FB_ATMEL
...@@ -21,7 +22,8 @@ config SOC_SAMA5D2 ...@@ -21,7 +22,8 @@ config SOC_SAMA5D2
Select this if ou are using one of Atmel's SAMA5D2 family SoC. Select this if ou are using one of Atmel's SAMA5D2 family SoC.
config SOC_SAMA5D3 config SOC_SAMA5D3
bool "SAMA5D3 family" if ARCH_MULTI_V7 bool "SAMA5D3 family"
depends on ARCH_MULTI_V7
select SOC_SAMA5 select SOC_SAMA5
select HAVE_FB_ATMEL select HAVE_FB_ATMEL
select HAVE_AT91_UTMI select HAVE_AT91_UTMI
...@@ -33,7 +35,8 @@ config SOC_SAMA5D3 ...@@ -33,7 +35,8 @@ config SOC_SAMA5D3
This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36. This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
config SOC_SAMA5D4 config SOC_SAMA5D4
bool "SAMA5D4 family" if ARCH_MULTI_V7 bool "SAMA5D4 family"
depends on ARCH_MULTI_V7
select SOC_SAMA5 select SOC_SAMA5
select CACHE_L2X0 select CACHE_L2X0
select HAVE_FB_ATMEL select HAVE_FB_ATMEL
...@@ -46,7 +49,8 @@ config SOC_SAMA5D4 ...@@ -46,7 +49,8 @@ config SOC_SAMA5D4
Select this if you are using one of Atmel's SAMA5D4 family SoC. Select this if you are using one of Atmel's SAMA5D4 family SoC.
config SOC_AT91RM9200 config SOC_AT91RM9200
bool "AT91RM9200" if ARCH_MULTI_V4T bool "AT91RM9200"
depends on ARCH_MULTI_V4T
select ATMEL_AIC_IRQ select ATMEL_AIC_IRQ
select ATMEL_ST select ATMEL_ST
select CPU_ARM920T select CPU_ARM920T
...@@ -59,7 +63,8 @@ config SOC_AT91RM9200 ...@@ -59,7 +63,8 @@ config SOC_AT91RM9200
Select this if you are using Atmel's AT91RM9200 SoC. Select this if you are using Atmel's AT91RM9200 SoC.
config SOC_AT91SAM9 config SOC_AT91SAM9
bool "AT91SAM9" if ARCH_MULTI_V5 bool "AT91SAM9"
depends on ARCH_MULTI_V5
select ATMEL_AIC_IRQ select ATMEL_AIC_IRQ
select ATMEL_SDRAMC select ATMEL_SDRAMC
select CPU_ARM926T select CPU_ARM926T
......
config ARCH_AXXIA config ARCH_AXXIA
bool "LSI Axxia platforms" if (ARCH_MULTI_V7 && ARM_LPAE) bool "LSI Axxia platforms"
depends on ARCH_MULTI_V7 && ARM_LPAE
select ARCH_DMA_ADDR_T_64BIT select ARCH_DMA_ADDR_T_64BIT
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
......
...@@ -82,7 +82,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus) ...@@ -82,7 +82,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
} }
} }
static struct smp_operations axxia_smp_ops __initdata = { static const struct smp_operations axxia_smp_ops __initconst = {
.smp_prepare_cpus = axxia_smp_prepare_cpus, .smp_prepare_cpus = axxia_smp_prepare_cpus,
.smp_boot_secondary = axxia_boot_secondary, .smp_boot_secondary = axxia_boot_secondary,
}; };
......
menuconfig ARCH_BCM menuconfig ARCH_BCM
bool "Broadcom SoC Support" if ARCH_MULTI_V6_V7 bool "Broadcom SoC Support"
depends on ARCH_MULTI_V6_V7
help help
This enables support for Broadcom ARM based SoC chips This enables support for Broadcom ARM based SoC chips
...@@ -27,7 +28,8 @@ config ARCH_BCM_IPROC ...@@ -27,7 +28,8 @@ config ARCH_BCM_IPROC
Currently supported SoCs are Cygnus. Currently supported SoCs are Cygnus.
config ARCH_BCM_CYGNUS config ARCH_BCM_CYGNUS
bool "Broadcom Cygnus Support" if ARCH_MULTI_V7 bool "Broadcom Cygnus Support"
depends on ARCH_MULTI_V7
select ARCH_BCM_IPROC select ARCH_BCM_IPROC
help help
Enable support for the Cygnus family, Enable support for the Cygnus family,
...@@ -36,7 +38,8 @@ config ARCH_BCM_CYGNUS ...@@ -36,7 +38,8 @@ config ARCH_BCM_CYGNUS
BCM58300, BCM58302, BCM58303, BCM58305. BCM58300, BCM58302, BCM58303, BCM58305.
config ARCH_BCM_NSP config ARCH_BCM_NSP
bool "Broadcom Northstar Plus SoC Support" if ARCH_MULTI_V7 bool "Broadcom Northstar Plus SoC Support"
depends on ARCH_MULTI_V7
select ARCH_BCM_IPROC select ARCH_BCM_IPROC
select ARM_ERRATA_754322 select ARM_ERRATA_754322
select ARM_ERRATA_775420 select ARM_ERRATA_775420
...@@ -50,7 +53,8 @@ config ARCH_BCM_NSP ...@@ -50,7 +53,8 @@ config ARCH_BCM_NSP
NAND flash, SATA and several other IO controllers. NAND flash, SATA and several other IO controllers.
config ARCH_BCM_5301X config ARCH_BCM_5301X
bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7 bool "Broadcom BCM470X / BCM5301X ARM SoC"
depends on ARCH_MULTI_V7
select ARCH_BCM_IPROC select ARCH_BCM_IPROC
help help
Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores. Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
...@@ -82,7 +86,8 @@ config ARCH_BCM_MOBILE ...@@ -82,7 +86,8 @@ config ARCH_BCM_MOBILE
This enables support for systems based on Broadcom mobile SoCs. This enables support for systems based on Broadcom mobile SoCs.
config ARCH_BCM_281XX config ARCH_BCM_281XX
bool "Broadcom BCM281XX SoC family" if ARCH_MULTI_V7 bool "Broadcom BCM281XX SoC family"
depends on ARCH_MULTI_V7
select ARCH_BCM_MOBILE select ARCH_BCM_MOBILE
select HAVE_SMP select HAVE_SMP
help help
...@@ -91,7 +96,8 @@ config ARCH_BCM_281XX ...@@ -91,7 +96,8 @@ config ARCH_BCM_281XX
variants. variants.
config ARCH_BCM_21664 config ARCH_BCM_21664
bool "Broadcom BCM21664 SoC family" if ARCH_MULTI_V7 bool "Broadcom BCM21664 SoC family"
depends on ARCH_MULTI_V7
select ARCH_BCM_MOBILE select ARCH_BCM_MOBILE
select HAVE_SMP select HAVE_SMP
help help
...@@ -122,7 +128,8 @@ config ARCH_BCM_MOBILE_SMP ...@@ -122,7 +128,8 @@ config ARCH_BCM_MOBILE_SMP
comment "Other Architectures" comment "Other Architectures"
config ARCH_BCM2835 config ARCH_BCM2835
bool "Broadcom BCM2835 family" if ARCH_MULTI_V6 bool "Broadcom BCM2835 family"
depends on ARCH_MULTI_V6
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA select ARM_AMBA
select ARM_ERRATA_411920 select ARM_ERRATA_411920
...@@ -135,7 +142,8 @@ config ARCH_BCM2835 ...@@ -135,7 +142,8 @@ config ARCH_BCM2835
used in the Raspberry Pi and Roku 2 devices. used in the Raspberry Pi and Roku 2 devices.
config ARCH_BCM_63XX config ARCH_BCM_63XX
bool "Broadcom BCM63xx DSL SoC" if ARCH_MULTI_V7 bool "Broadcom BCM63xx DSL SoC"
depends on ARCH_MULTI_V7
depends on MMU depends on MMU
select ARM_ERRATA_754322 select ARM_ERRATA_754322
select ARM_ERRATA_764369 if SMP select ARM_ERRATA_764369 if SMP
...@@ -152,7 +160,8 @@ config ARCH_BCM_63XX ...@@ -152,7 +160,8 @@ config ARCH_BCM_63XX
the BCM63138 variant. the BCM63138 variant.
config ARCH_BRCMSTB config ARCH_BRCMSTB
bool "Broadcom BCM7XXX based boards" if ARCH_MULTI_V7 bool "Broadcom BCM7XXX based boards"
depends on ARCH_MULTI_V7
select ARM_GIC select ARM_GIC
select ARM_ERRATA_798181 if SMP select ARM_ERRATA_798181 if SMP
select HAVE_ARM_ARCH_TIMER select HAVE_ARM_ARCH_TIMER
......
...@@ -161,7 +161,7 @@ static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus) ...@@ -161,7 +161,7 @@ static void __init bcm63138_smp_prepare_cpus(unsigned int max_cpus)
} }
} }
struct smp_operations bcm63138_smp_ops __initdata = { static const struct smp_operations bcm63138_smp_ops __initconst = {
.smp_prepare_cpus = bcm63138_smp_prepare_cpus, .smp_prepare_cpus = bcm63138_smp_prepare_cpus,
.smp_boot_secondary = bcm63138_smp_boot_secondary, .smp_boot_secondary = bcm63138_smp_boot_secondary,
}; };
......
...@@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -194,7 +194,7 @@ static int bcm_boot_secondary(unsigned int cpu, struct task_struct *idle)
return -ENOSYS; return -ENOSYS;
} }
static struct smp_operations bcm_smp_ops __initdata = { static const struct smp_operations bcm_smp_ops __initconst = {
.smp_prepare_cpus = bcm_smp_prepare_cpus, .smp_prepare_cpus = bcm_smp_prepare_cpus,
.smp_boot_secondary = bcm_boot_secondary, .smp_boot_secondary = bcm_boot_secondary,
}; };
......
...@@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -356,7 +356,7 @@ static int brcmstb_boot_secondary(unsigned int cpu, struct task_struct *idle)
return 0; return 0;
} }
static struct smp_operations brcmstb_smp_ops __initdata = { static const struct smp_operations brcmstb_smp_ops __initconst = {
.smp_prepare_cpus = brcmstb_cpu_ctrl_setup, .smp_prepare_cpus = brcmstb_cpu_ctrl_setup,
.smp_boot_secondary = brcmstb_boot_secondary, .smp_boot_secondary = brcmstb_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
menuconfig ARCH_BERLIN menuconfig ARCH_BERLIN
bool "Marvell Berlin SoCs" if ARCH_MULTI_V7 bool "Marvell Berlin SoCs"
depends on ARCH_MULTI_V7
select ARCH_HAS_RESET_CONTROLLER select ARCH_HAS_RESET_CONTROLLER
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_GIC select ARM_GIC
......
...@@ -119,7 +119,7 @@ static int berlin_cpu_kill(unsigned int cpu) ...@@ -119,7 +119,7 @@ static int berlin_cpu_kill(unsigned int cpu)
} }
#endif #endif
static struct smp_operations berlin_smp_ops __initdata = { static const struct smp_operations berlin_smp_ops __initconst = {
.smp_prepare_cpus = berlin_smp_prepare_cpus, .smp_prepare_cpus = berlin_smp_prepare_cpus,
.smp_boot_secondary = berlin_boot_secondary, .smp_boot_secondary = berlin_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
menuconfig ARCH_CNS3XXX menuconfig ARCH_CNS3XXX
bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6 bool "Cavium Networks CNS3XXX family"
depends on ARCH_MULTI_V6
select ARM_GIC select ARM_GIC
select PCI_DOMAINS if PCI select PCI_DOMAINS if PCI
help help
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
# Configuration options for the EXYNOS4 # Configuration options for the EXYNOS4
menuconfig ARCH_EXYNOS menuconfig ARCH_EXYNOS
bool "Samsung EXYNOS" if ARCH_MULTI_V7 bool "Samsung EXYNOS"
depends on ARCH_MULTI_V7
select ARCH_HAS_BANDGAP select ARCH_HAS_BANDGAP
select ARCH_HAS_HOLES_MEMORYMODEL select ARCH_HAS_HOLES_MEMORYMODEL
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
......
...@@ -149,7 +149,7 @@ static inline void exynos_pm_init(void) {} ...@@ -149,7 +149,7 @@ static inline void exynos_pm_init(void) {}
extern void exynos_cpu_resume(void); extern void exynos_cpu_resume(void);
extern void exynos_cpu_resume_ns(void); extern void exynos_cpu_resume_ns(void);
extern struct smp_operations exynos_smp_ops; extern const struct smp_operations exynos_smp_ops;
extern void exynos_cpu_power_down(int cpu); extern void exynos_cpu_power_down(int cpu);
extern void exynos_cpu_power_up(int cpu); extern void exynos_cpu_power_up(int cpu);
......
...@@ -479,7 +479,7 @@ static void exynos_cpu_die(unsigned int cpu) ...@@ -479,7 +479,7 @@ static void exynos_cpu_die(unsigned int cpu)
} }
#endif /* CONFIG_HOTPLUG_CPU */ #endif /* CONFIG_HOTPLUG_CPU */
struct smp_operations exynos_smp_ops __initdata = { const struct smp_operations exynos_smp_ops __initconst = {
.smp_init_cpus = exynos_smp_init_cpus, .smp_init_cpus = exynos_smp_init_cpus,
.smp_prepare_cpus = exynos_smp_prepare_cpus, .smp_prepare_cpus = exynos_smp_prepare_cpus,
.smp_secondary_init = exynos_secondary_init, .smp_secondary_init = exynos_secondary_init,
......
config ARCH_HIGHBANK config ARCH_HIGHBANK
bool "Calxeda ECX-1000/2000 (Highbank/Midway)" if ARCH_MULTI_V7 bool "Calxeda ECX-1000/2000 (Highbank/Midway)"
depends on ARCH_MULTI_V7
select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
select ARCH_HAS_HOLES_MEMORYMODEL select ARCH_HAS_HOLES_MEMORYMODEL
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
......
...@@ -13,7 +13,8 @@ if ARCH_HISI ...@@ -13,7 +13,8 @@ if ARCH_HISI
menu "Hisilicon platform type" menu "Hisilicon platform type"
config ARCH_HI3xxx config ARCH_HI3xxx
bool "Hisilicon Hi36xx family" if ARCH_MULTI_V7 bool "Hisilicon Hi36xx family"
depends on ARCH_MULTI_V7
select CACHE_L2X0 select CACHE_L2X0
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP select HAVE_ARM_TWD if SMP
...@@ -23,7 +24,8 @@ config ARCH_HI3xxx ...@@ -23,7 +24,8 @@ config ARCH_HI3xxx
Support for Hisilicon Hi36xx SoC family Support for Hisilicon Hi36xx SoC family
config ARCH_HIP01 config ARCH_HIP01
bool "Hisilicon HIP01 family" if ARCH_MULTI_V7 bool "Hisilicon HIP01 family"
depends on ARCH_MULTI_V7
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP select HAVE_ARM_TWD if SMP
select ARM_GLOBAL_TIMER select ARM_GLOBAL_TIMER
...@@ -31,7 +33,8 @@ config ARCH_HIP01 ...@@ -31,7 +33,8 @@ config ARCH_HIP01
Support for Hisilicon HIP01 SoC family Support for Hisilicon HIP01 SoC family
config ARCH_HIP04 config ARCH_HIP04
bool "Hisilicon HiP04 Cortex A15 family" if ARCH_MULTI_V7 bool "Hisilicon HiP04 Cortex A15 family"
depends on ARCH_MULTI_V7
select ARM_ERRATA_798181 if SMP select ARM_ERRATA_798181 if SMP
select HAVE_ARM_ARCH_TIMER select HAVE_ARM_ARCH_TIMER
select MCPM if SMP select MCPM if SMP
...@@ -40,7 +43,8 @@ config ARCH_HIP04 ...@@ -40,7 +43,8 @@ config ARCH_HIP04
Support for Hisilicon HiP04 SoC family Support for Hisilicon HiP04 SoC family
config ARCH_HIX5HD2 config ARCH_HIX5HD2
bool "Hisilicon X5HD2 family" if ARCH_MULTI_V7 bool "Hisilicon X5HD2 family"
depends on ARCH_MULTI_V7
select CACHE_L2X0 select CACHE_L2X0
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP select HAVE_ARM_TWD if SMP
......
...@@ -6,17 +6,14 @@ ...@@ -6,17 +6,14 @@
extern void hi3xxx_set_cpu_jump(int cpu, void *jump_addr); extern void hi3xxx_set_cpu_jump(int cpu, void *jump_addr);
extern int hi3xxx_get_cpu_jump(int cpu); extern int hi3xxx_get_cpu_jump(int cpu);
extern void secondary_startup(void); extern void secondary_startup(void);
extern struct smp_operations hi3xxx_smp_ops;
extern void hi3xxx_cpu_die(unsigned int cpu); extern void hi3xxx_cpu_die(unsigned int cpu);
extern int hi3xxx_cpu_kill(unsigned int cpu); extern int hi3xxx_cpu_kill(unsigned int cpu);
extern void hi3xxx_set_cpu(int cpu, bool enable); extern void hi3xxx_set_cpu(int cpu, bool enable);
extern struct smp_operations hix5hd2_smp_ops;
extern void hix5hd2_set_cpu(int cpu, bool enable); extern void hix5hd2_set_cpu(int cpu, bool enable);
extern void hix5hd2_cpu_die(unsigned int cpu); extern void hix5hd2_cpu_die(unsigned int cpu);
extern struct smp_operations hip01_smp_ops;
extern void hip01_set_cpu(int cpu, bool enable); extern void hip01_set_cpu(int cpu, bool enable);
extern void hip01_cpu_die(unsigned int cpu); extern void hip01_cpu_die(unsigned int cpu);
#endif #endif
...@@ -239,7 +239,7 @@ static int hip04_cpu_kill(unsigned int l_cpu) ...@@ -239,7 +239,7 @@ static int hip04_cpu_kill(unsigned int l_cpu)
} }
#endif #endif
static struct smp_operations __initdata hip04_smp_ops = { static const struct smp_operations hip04_smp_ops __initconst = {
.smp_boot_secondary = hip04_boot_secondary, .smp_boot_secondary = hip04_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
.cpu_die = hip04_cpu_die, .cpu_die = hip04_cpu_die,
......
...@@ -89,7 +89,7 @@ static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -89,7 +89,7 @@ static int hi3xxx_boot_secondary(unsigned int cpu, struct task_struct *idle)
return 0; return 0;
} }
struct smp_operations hi3xxx_smp_ops __initdata = { static const struct smp_operations hi3xxx_smp_ops __initconst = {
.smp_prepare_cpus = hi3xxx_smp_prepare_cpus, .smp_prepare_cpus = hi3xxx_smp_prepare_cpus,
.smp_boot_secondary = hi3xxx_boot_secondary, .smp_boot_secondary = hi3xxx_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
...@@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -126,7 +126,7 @@ static int hix5hd2_boot_secondary(unsigned int cpu, struct task_struct *idle)
} }
struct smp_operations hix5hd2_smp_ops __initdata = { static const struct smp_operations hix5hd2_smp_ops __initconst = {
.smp_prepare_cpus = hisi_common_smp_prepare_cpus, .smp_prepare_cpus = hisi_common_smp_prepare_cpus,
.smp_boot_secondary = hix5hd2_boot_secondary, .smp_boot_secondary = hix5hd2_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
...@@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -176,7 +176,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
return 0; return 0;
} }
struct smp_operations hip01_smp_ops __initdata = { static const struct smp_operations hip01_smp_ops __initconst = {
.smp_prepare_cpus = hisi_common_smp_prepare_cpus, .smp_prepare_cpus = hisi_common_smp_prepare_cpus,
.smp_boot_secondary = hip01_boot_secondary, .smp_boot_secondary = hip01_boot_secondary,
}; };
......
menuconfig ARCH_MXC menuconfig ARCH_MXC
bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M bool "Freescale i.MX family"
depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_CPU_SUSPEND if PM select ARM_CPU_SUSPEND if PM
select CLKSRC_IMX_GPT select CLKSRC_IMX_GPT
...@@ -596,7 +597,8 @@ choice ...@@ -596,7 +597,8 @@ choice
default VF_USE_ARM_GLOBAL_TIMER default VF_USE_ARM_GLOBAL_TIMER
config VF_USE_ARM_GLOBAL_TIMER config VF_USE_ARM_GLOBAL_TIMER
bool "Use ARM Global Timer" if ARCH_MULTI_V7 bool "Use ARM Global Timer"
depends on ARCH_MULTI_V7
select ARM_GLOBAL_TIMER select ARM_GLOBAL_TIMER
select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
help help
......
...@@ -153,7 +153,7 @@ void imx_init_l2cache(void); ...@@ -153,7 +153,7 @@ void imx_init_l2cache(void);
static inline void imx_init_l2cache(void) {} static inline void imx_init_l2cache(void) {}
#endif #endif
extern struct smp_operations imx_smp_ops; extern const struct smp_operations imx_smp_ops;
extern struct smp_operations ls1021a_smp_ops; extern const struct smp_operations ls1021a_smp_ops;
#endif #endif
...@@ -88,7 +88,7 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus) ...@@ -88,7 +88,7 @@ static void __init imx_smp_prepare_cpus(unsigned int max_cpus)
sync_cache_w(&g_diag_reg); sync_cache_w(&g_diag_reg);
} }
struct smp_operations imx_smp_ops __initdata = { const struct smp_operations imx_smp_ops __initconst = {
.smp_init_cpus = imx_smp_init_cpus, .smp_init_cpus = imx_smp_init_cpus,
.smp_prepare_cpus = imx_smp_prepare_cpus, .smp_prepare_cpus = imx_smp_prepare_cpus,
.smp_boot_secondary = imx_boot_secondary, .smp_boot_secondary = imx_boot_secondary,
...@@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus) ...@@ -123,7 +123,7 @@ static void __init ls1021a_smp_prepare_cpus(unsigned int max_cpus)
iounmap(dcfg_base); iounmap(dcfg_base);
} }
struct smp_operations ls1021a_smp_ops __initdata = { const struct smp_operations ls1021a_smp_ops __initconst = {
.smp_prepare_cpus = ls1021a_smp_prepare_cpus, .smp_prepare_cpus = ls1021a_smp_prepare_cpus,
.smp_boot_secondary = ls1021a_boot_secondary, .smp_boot_secondary = ls1021a_boot_secondary,
}; };
config ARCH_INTEGRATOR config ARCH_INTEGRATOR
bool "ARM Ltd. Integrator family" if (ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6) bool "ARM Ltd. Integrator family"
depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V6
select ARM_AMBA select ARM_AMBA
select ARM_PATCH_PHYS_VIRT if MMU select ARM_PATCH_PHYS_VIRT if MMU
select AUTO_ZRELADDR select AUTO_ZRELADDR
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
extern struct smp_operations keystone_smp_ops; extern const struct smp_operations keystone_smp_ops;
extern void secondary_startup(void); extern void secondary_startup(void);
extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr); extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
extern int keystone_pm_runtime_init(void); extern int keystone_pm_runtime_init(void);
......
...@@ -39,6 +39,6 @@ static int keystone_smp_boot_secondary(unsigned int cpu, ...@@ -39,6 +39,6 @@ static int keystone_smp_boot_secondary(unsigned int cpu,
return error; return error;
} }
struct smp_operations keystone_smp_ops __initdata = { const struct smp_operations keystone_smp_ops __initconst = {
.smp_boot_secondary = keystone_smp_boot_secondary, .smp_boot_secondary = keystone_smp_boot_secondary,
}; };
menuconfig ARCH_MEDIATEK menuconfig ARCH_MEDIATEK
bool "Mediatek MT65xx & MT81xx SoC" if ARCH_MULTI_V7 bool "Mediatek MT65xx & MT81xx SoC"
depends on ARCH_MULTI_V7
select ARM_GIC select ARM_GIC
select PINCTRL select PINCTRL
select MTK_TIMER select MTK_TIMER
......
...@@ -128,13 +128,13 @@ static void __init mtk_smp_prepare_cpus(unsigned int max_cpus) ...@@ -128,13 +128,13 @@ static void __init mtk_smp_prepare_cpus(unsigned int max_cpus)
__mtk_smp_prepare_cpus(max_cpus, 0); __mtk_smp_prepare_cpus(max_cpus, 0);
} }
static struct smp_operations mt81xx_tz_smp_ops __initdata = { static const struct smp_operations mt81xx_tz_smp_ops __initconst = {
.smp_prepare_cpus = mtk_tz_smp_prepare_cpus, .smp_prepare_cpus = mtk_tz_smp_prepare_cpus,
.smp_boot_secondary = mtk_boot_secondary, .smp_boot_secondary = mtk_boot_secondary,
}; };
CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops); CPU_METHOD_OF_DECLARE(mt81xx_tz_smp, "mediatek,mt81xx-tz-smp", &mt81xx_tz_smp_ops);
static struct smp_operations mt6589_smp_ops __initdata = { static const struct smp_operations mt6589_smp_ops __initconst = {
.smp_prepare_cpus = mtk_smp_prepare_cpus, .smp_prepare_cpus = mtk_smp_prepare_cpus,
.smp_boot_secondary = mtk_boot_secondary, .smp_boot_secondary = mtk_boot_secondary,
}; };
......
menuconfig ARCH_MESON menuconfig ARCH_MESON
bool "Amlogic Meson SoCs" if ARCH_MULTI_V7 bool "Amlogic Meson SoCs"
depends on ARCH_MULTI_V7
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select GENERIC_IRQ_CHIP select GENERIC_IRQ_CHIP
select ARM_GIC select ARM_GIC
......
menuconfig ARCH_MOXART menuconfig ARCH_MOXART
bool "MOXA ART SoC" if ARCH_MULTI_V4 bool "MOXA ART SoC"
depends on ARCH_MULTI_V4
select CPU_FA526 select CPU_FA526
select ARM_DMA_MEM_BUFFERABLE select ARM_DMA_MEM_BUFFERABLE
select CLKSRC_MMIO select CLKSRC_MMIO
......
menuconfig ARCH_MVEBU menuconfig ARCH_MVEBU
bool "Marvell Engineering Business Unit (MVEBU) SoCs" if (ARCH_MULTI_V7 || ARCH_MULTI_V5) bool "Marvell Engineering Business Unit (MVEBU) SoCs"
depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
select CLKSRC_MMIO select CLKSRC_MMIO
select GENERIC_IRQ_CHIP select GENERIC_IRQ_CHIP
...@@ -25,7 +26,8 @@ config MACH_MVEBU_V7 ...@@ -25,7 +26,8 @@ config MACH_MVEBU_V7
select MACH_MVEBU_ANY select MACH_MVEBU_ANY
config MACH_ARMADA_370 config MACH_ARMADA_370
bool "Marvell Armada 370 boards" if ARCH_MULTI_V7 bool "Marvell Armada 370 boards"
depends on ARCH_MULTI_V7
select ARMADA_370_CLK select ARMADA_370_CLK
select CPU_PJ4B select CPU_PJ4B
select MACH_MVEBU_V7 select MACH_MVEBU_V7
...@@ -35,7 +37,8 @@ config MACH_ARMADA_370 ...@@ -35,7 +37,8 @@ config MACH_ARMADA_370
on the Marvell Armada 370 SoC with device tree. on the Marvell Armada 370 SoC with device tree.
config MACH_ARMADA_375 config MACH_ARMADA_375
bool "Marvell Armada 375 boards" if ARCH_MULTI_V7 bool "Marvell Armada 375 boards"
depends on ARCH_MULTI_V7
select ARM_ERRATA_720789 select ARM_ERRATA_720789
select ARM_ERRATA_753970 select ARM_ERRATA_753970
select ARM_GIC select ARM_GIC
...@@ -50,7 +53,8 @@ config MACH_ARMADA_375 ...@@ -50,7 +53,8 @@ config MACH_ARMADA_375
on the Marvell Armada 375 SoC with device tree. on the Marvell Armada 375 SoC with device tree.
config MACH_ARMADA_38X config MACH_ARMADA_38X
bool "Marvell Armada 380/385 boards" if ARCH_MULTI_V7 bool "Marvell Armada 380/385 boards"
depends on ARCH_MULTI_V7
select ARM_ERRATA_720789 select ARM_ERRATA_720789
select ARM_ERRATA_753970 select ARM_ERRATA_753970
select ARM_GIC select ARM_GIC
...@@ -65,7 +69,8 @@ config MACH_ARMADA_38X ...@@ -65,7 +69,8 @@ config MACH_ARMADA_38X
on the Marvell Armada 380/385 SoC with device tree. on the Marvell Armada 380/385 SoC with device tree.
config MACH_ARMADA_39X config MACH_ARMADA_39X
bool "Marvell Armada 39x boards" if ARCH_MULTI_V7 bool "Marvell Armada 39x boards"
depends on ARCH_MULTI_V7
select ARM_GIC select ARM_GIC
select ARMADA_39X_CLK select ARMADA_39X_CLK
select CACHE_L2X0 select CACHE_L2X0
...@@ -79,7 +84,8 @@ config MACH_ARMADA_39X ...@@ -79,7 +84,8 @@ config MACH_ARMADA_39X
on the Marvell Armada 39x SoC with device tree. on the Marvell Armada 39x SoC with device tree.
config MACH_ARMADA_XP config MACH_ARMADA_XP
bool "Marvell Armada XP boards" if ARCH_MULTI_V7 bool "Marvell Armada XP boards"
depends on ARCH_MULTI_V7
select ARMADA_XP_CLK select ARMADA_XP_CLK
select CPU_PJ4B select CPU_PJ4B
select MACH_MVEBU_V7 select MACH_MVEBU_V7
...@@ -89,7 +95,8 @@ config MACH_ARMADA_XP ...@@ -89,7 +95,8 @@ config MACH_ARMADA_XP
on the Marvell Armada XP SoC with device tree. on the Marvell Armada XP SoC with device tree.
config MACH_DOVE config MACH_DOVE
bool "Marvell Dove boards" if ARCH_MULTI_V7 bool "Marvell Dove boards"
depends on ARCH_MULTI_V7
select CACHE_L2X0 select CACHE_L2X0
select CPU_PJ4 select CPU_PJ4
select DOVE_CLK select DOVE_CLK
...@@ -103,7 +110,8 @@ config MACH_DOVE ...@@ -103,7 +110,8 @@ config MACH_DOVE
Marvell Dove using flattened device tree. Marvell Dove using flattened device tree.
config MACH_KIRKWOOD config MACH_KIRKWOOD
bool "Marvell Kirkwood boards" if ARCH_MULTI_V5 bool "Marvell Kirkwood boards"
depends on ARCH_MULTI_V5
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select CPU_FEROCEON select CPU_FEROCEON
select KIRKWOOD_CLK select KIRKWOOD_CLK
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
void armada_xp_secondary_startup(void); void armada_xp_secondary_startup(void);
extern struct smp_operations armada_xp_smp_ops; extern const struct smp_operations armada_xp_smp_ops;
#endif #endif
#endif /* __MACH_ARMADA_370_XP_H */ #endif /* __MACH_ARMADA_370_XP_H */
...@@ -93,11 +93,11 @@ static int armada_38x_cpu_kill(unsigned int cpu) ...@@ -93,11 +93,11 @@ static int armada_38x_cpu_kill(unsigned int cpu)
} }
#endif #endif
static struct smp_operations mvebu_cortex_a9_smp_ops __initdata = { static const struct smp_operations mvebu_cortex_a9_smp_ops __initconst = {
.smp_boot_secondary = mvebu_cortex_a9_boot_secondary, .smp_boot_secondary = mvebu_cortex_a9_boot_secondary,
}; };
static struct smp_operations armada_38x_smp_ops __initdata = { static const struct smp_operations armada_38x_smp_ops __initconst = {
.smp_boot_secondary = mvebu_cortex_a9_boot_secondary, .smp_boot_secondary = mvebu_cortex_a9_boot_secondary,
.smp_secondary_init = armada_38x_secondary_init, .smp_secondary_init = armada_38x_secondary_init,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -170,7 +170,7 @@ static int armada_xp_cpu_kill(unsigned int cpu) ...@@ -170,7 +170,7 @@ static int armada_xp_cpu_kill(unsigned int cpu)
} }
#endif #endif
struct smp_operations armada_xp_smp_ops __initdata = { const struct smp_operations armada_xp_smp_ops __initconst = {
.smp_init_cpus = armada_xp_smp_init_cpus, .smp_init_cpus = armada_xp_smp_init_cpus,
.smp_prepare_cpus = armada_xp_smp_prepare_cpus, .smp_prepare_cpus = armada_xp_smp_prepare_cpus,
.smp_boot_secondary = armada_xp_boot_secondary, .smp_boot_secondary = armada_xp_boot_secondary,
......
...@@ -270,7 +270,7 @@ extern u32 omap_read_auxcoreboot0(void); ...@@ -270,7 +270,7 @@ extern u32 omap_read_auxcoreboot0(void);
extern void omap4_cpu_die(unsigned int cpu); extern void omap4_cpu_die(unsigned int cpu);
extern struct smp_operations omap4_smp_ops; extern const struct smp_operations omap4_smp_ops;
extern void omap5_secondary_startup(void); extern void omap5_secondary_startup(void);
extern void omap5_secondary_hyp_startup(void); extern void omap5_secondary_hyp_startup(void);
......
...@@ -241,7 +241,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus) ...@@ -241,7 +241,7 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
} }
struct smp_operations omap4_smp_ops __initdata = { const struct smp_operations omap4_smp_ops __initconst = {
.smp_init_cpus = omap4_smp_init_cpus, .smp_init_cpus = omap4_smp_init_cpus,
.smp_prepare_cpus = omap4_smp_prepare_cpus, .smp_prepare_cpus = omap4_smp_prepare_cpus,
.smp_secondary_init = omap4_secondary_init, .smp_secondary_init = omap4_secondary_init,
......
config ARCH_PICOXCELL config ARCH_PICOXCELL
bool "Picochip PicoXcell" if ARCH_MULTI_V6 bool "Picochip PicoXcell"
depends on ARCH_MULTI_V6
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_VIC select ARM_VIC
select DW_APB_TIMER_OF select DW_APB_TIMER_OF
......
menuconfig ARCH_SIRF menuconfig ARCH_SIRF
bool "CSR SiRF" if ARCH_MULTI_V7 bool "CSR SiRF"
depends on ARCH_MULTI_V7
select ARCH_HAS_RESET_CONTROLLER select ARCH_HAS_RESET_CONTROLLER
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select GENERIC_IRQ_CHIP select GENERIC_IRQ_CHIP
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/exception.h> #include <asm/exception.h>
extern struct smp_operations sirfsoc_smp_ops; extern const struct smp_operations sirfsoc_smp_ops;
extern void sirfsoc_secondary_startup(void); extern void sirfsoc_secondary_startup(void);
extern void sirfsoc_cpu_die(unsigned int cpu); extern void sirfsoc_cpu_die(unsigned int cpu);
......
...@@ -112,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -112,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
return pen_release != -1 ? -ENOSYS : 0; return pen_release != -1 ? -ENOSYS : 0;
} }
struct smp_operations sirfsoc_smp_ops __initdata = { const struct smp_operations sirfsoc_smp_ops __initconst = {
.smp_secondary_init = sirfsoc_secondary_init, .smp_secondary_init = sirfsoc_secondary_init,
.smp_boot_secondary = sirfsoc_boot_secondary, .smp_boot_secondary = sirfsoc_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
menuconfig ARCH_QCOM menuconfig ARCH_QCOM
bool "Qualcomm Support" if ARCH_MULTI_V7 bool "Qualcomm Support"
depends on ARCH_MULTI_V7
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
select ARM_GIC select ARM_GIC
select ARM_AMBA select ARM_AMBA
......
...@@ -332,7 +332,7 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus) ...@@ -332,7 +332,7 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus)
} }
} }
static struct smp_operations smp_msm8660_ops __initdata = { static const struct smp_operations smp_msm8660_ops __initconst = {
.smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_prepare_cpus = qcom_smp_prepare_cpus,
.smp_secondary_init = qcom_secondary_init, .smp_secondary_init = qcom_secondary_init,
.smp_boot_secondary = msm8660_boot_secondary, .smp_boot_secondary = msm8660_boot_secondary,
...@@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = { ...@@ -342,7 +342,7 @@ static struct smp_operations smp_msm8660_ops __initdata = {
}; };
CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops); CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
static struct smp_operations qcom_smp_kpssv1_ops __initdata = { static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
.smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_prepare_cpus = qcom_smp_prepare_cpus,
.smp_secondary_init = qcom_secondary_init, .smp_secondary_init = qcom_secondary_init,
.smp_boot_secondary = kpssv1_boot_secondary, .smp_boot_secondary = kpssv1_boot_secondary,
...@@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = { ...@@ -352,7 +352,7 @@ static struct smp_operations qcom_smp_kpssv1_ops __initdata = {
}; };
CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops); CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops);
static struct smp_operations qcom_smp_kpssv2_ops __initdata = { static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
.smp_prepare_cpus = qcom_smp_prepare_cpus, .smp_prepare_cpus = qcom_smp_prepare_cpus,
.smp_secondary_init = qcom_secondary_init, .smp_secondary_init = qcom_secondary_init,
.smp_boot_secondary = kpssv2_boot_secondary, .smp_boot_secondary = kpssv2_boot_secondary,
......
...@@ -54,7 +54,7 @@ extern int realview_usb_register(struct resource *res); ...@@ -54,7 +54,7 @@ extern int realview_usb_register(struct resource *res);
extern void realview_init_early(void); extern void realview_init_early(void);
extern void realview_fixup(struct tag *tags, char **from); extern void realview_fixup(struct tag *tags, char **from);
extern struct smp_operations realview_smp_ops; extern const struct smp_operations realview_smp_ops;
extern void realview_cpu_die(unsigned int cpu); extern void realview_cpu_die(unsigned int cpu);
#endif #endif
...@@ -75,7 +75,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus) ...@@ -75,7 +75,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
__io_address(REALVIEW_SYS_FLAGSSET)); __io_address(REALVIEW_SYS_FLAGSSET));
} }
struct smp_operations realview_smp_ops __initdata = { const struct smp_operations realview_smp_ops __initconst = {
.smp_init_cpus = realview_smp_init_cpus, .smp_init_cpus = realview_smp_init_cpus,
.smp_prepare_cpus = realview_smp_prepare_cpus, .smp_prepare_cpus = realview_smp_prepare_cpus,
.smp_secondary_init = versatile_secondary_init, .smp_secondary_init = versatile_secondary_init,
......
config ARCH_ROCKCHIP config ARCH_ROCKCHIP
bool "Rockchip RK2928 and RK3xxx SOCs" if ARCH_MULTI_V7 bool "Rockchip RK2928 and RK3xxx SOCs"
depends on ARCH_MULTI_V7
select PINCTRL select PINCTRL
select PINCTRL_ROCKCHIP select PINCTRL_ROCKCHIP
select ARCH_HAS_RESET_CONTROLLER select ARCH_HAS_RESET_CONTROLLER
......
...@@ -340,7 +340,7 @@ static void rockchip_cpu_die(unsigned int cpu) ...@@ -340,7 +340,7 @@ static void rockchip_cpu_die(unsigned int cpu)
} }
#endif #endif
static struct smp_operations rockchip_smp_ops __initdata = { static const struct smp_operations rockchip_smp_ops __initconst = {
.smp_prepare_cpus = rockchip_smp_prepare_cpus, .smp_prepare_cpus = rockchip_smp_prepare_cpus,
.smp_boot_secondary = rockchip_boot_secondary, .smp_boot_secondary = rockchip_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
# Configuration options for the S5PV210/S5PC110 # Configuration options for the S5PV210/S5PC110
config ARCH_S5PV210 config ARCH_S5PV210
bool "Samsung S5PV210/S5PC110" if ARCH_MULTI_V7 bool "Samsung S5PV210/S5PC110"
depends on ARCH_MULTI_V7
select ARCH_HAS_HOLES_MEMORYMODEL select ARCH_HAS_HOLES_MEMORYMODEL
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_VIC select ARM_VIC
......
config ARCH_SHMOBILE config ARCH_SHMOBILE
bool bool
select ZONE_DMA if ARM_LPAE
config ARCH_SHMOBILE_MULTI
bool
config PM_RCAR config PM_RCAR
bool bool
...@@ -29,10 +31,11 @@ config ARCH_RMOBILE ...@@ -29,10 +31,11 @@ config ARCH_RMOBILE
select SYS_SUPPORTS_SH_CMT select SYS_SUPPORTS_SH_CMT
select SYS_SUPPORTS_SH_TMU select SYS_SUPPORTS_SH_TMU
menuconfig ARCH_SHMOBILE_MULTI menuconfig ARCH_RENESAS
bool "Renesas ARM SoCs" if ARCH_MULTI_V7 bool "Renesas ARM SoCs"
depends on MMU depends on ARCH_MULTI_V7 && MMU
select ARCH_SHMOBILE select ARCH_SHMOBILE
select ARCH_SHMOBILE_MULTI
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP select HAVE_ARM_TWD if SMP
select ARM_GIC select ARM_GIC
...@@ -40,8 +43,9 @@ menuconfig ARCH_SHMOBILE_MULTI ...@@ -40,8 +43,9 @@ menuconfig ARCH_SHMOBILE_MULTI
select NO_IOPORT_MAP select NO_IOPORT_MAP
select PINCTRL select PINCTRL
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ZONE_DMA if ARM_LPAE
if ARCH_SHMOBILE_MULTI if ARCH_RENESAS
#comment "Renesas ARM SoCs System Type" #comment "Renesas ARM SoCs System Type"
......
#ifndef __ASM_MACH_IRQS_H
#define __ASM_MACH_IRQS_H
/* Stuck here until drivers/pinctl/sh-pfc gets rid of legacy code */
/* External IRQ pins */
#define IRQPIN_BASE 2000
#define irq_pin(nr) ((nr) + IRQPIN_BASE)
#endif /* __ASM_MACH_IRQS_H */
#ifndef __SHMOBILE_IRQS_H
#define __SHMOBILE_IRQS_H
#include "include/mach/irqs.h"
/* GIC */
#define gic_spi(nr) ((nr) + 32)
#define gic_iid(nr) (nr) /* ICCIAR / interrupt ID */
/* GPIO IRQ */
#define _GPIO_IRQ_BASE 2500
#define GPIO_IRQ_BASE(x) (_GPIO_IRQ_BASE + (32 * x))
#define GPIO_IRQ(x, y) (_GPIO_IRQ_BASE + (32 * x) + y)
#endif /* __SHMOBILE_IRQS_H */
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
extern void r8a7779_pm_init(void); extern void r8a7779_pm_init(void);
extern struct smp_operations r8a7779_smp_ops; extern const struct smp_operations r8a7779_smp_ops;
#endif /* __ASM_R8A7779_H__ */ #endif /* __ASM_R8A7779_H__ */
#ifndef __ASM_R8A7790_H__ #ifndef __ASM_R8A7790_H__
#define __ASM_R8A7790_H__ #define __ASM_R8A7790_H__
extern struct smp_operations r8a7790_smp_ops; extern const struct smp_operations r8a7790_smp_ops;
#endif /* __ASM_R8A7790_H__ */ #endif /* __ASM_R8A7790_H__ */
#ifndef __ASM_R8A7791_H__ #ifndef __ASM_R8A7791_H__
#define __ASM_R8A7791_H__ #define __ASM_R8A7791_H__
extern struct smp_operations r8a7791_smp_ops; extern const struct smp_operations r8a7791_smp_ops;
#endif /* __ASM_R8A7791_H__ */ #endif /* __ASM_R8A7791_H__ */
...@@ -42,7 +42,7 @@ static const char *const emev2_boards_compat_dt[] __initconst = { ...@@ -42,7 +42,7 @@ static const char *const emev2_boards_compat_dt[] __initconst = {
NULL, NULL,
}; };
extern struct smp_operations emev2_smp_ops; extern const struct smp_operations emev2_smp_ops;
DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
.smp = smp_ops(emev2_smp_ops), .smp = smp_ops(emev2_smp_ops),
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include "common.h" #include "common.h"
#include "irqs.h"
#define MODEMR 0xffcc0020 #define MODEMR 0xffcc0020
......
#ifndef __ASM_SH73A0_H__ #ifndef __ASM_SH73A0_H__
#define __ASM_SH73A0_H__ #define __ASM_SH73A0_H__
extern struct smp_operations sh73a0_smp_ops; extern const struct smp_operations sh73a0_smp_ops;
#endif /* __ASM_SH73A0_H__ */ #endif /* __ASM_SH73A0_H__ */
...@@ -49,7 +49,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus) ...@@ -49,7 +49,7 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
shmobile_smp_scu_prepare_cpus(max_cpus); shmobile_smp_scu_prepare_cpus(max_cpus);
} }
struct smp_operations emev2_smp_ops __initdata = { const struct smp_operations emev2_smp_ops __initconst = {
.smp_prepare_cpus = emev2_smp_prepare_cpus, .smp_prepare_cpus = emev2_smp_prepare_cpus,
.smp_boot_secondary = emev2_boot_secondary, .smp_boot_secondary = emev2_boot_secondary,
}; };
...@@ -117,7 +117,7 @@ static int r8a7779_cpu_kill(unsigned int cpu) ...@@ -117,7 +117,7 @@ static int r8a7779_cpu_kill(unsigned int cpu)
} }
#endif /* CONFIG_HOTPLUG_CPU */ #endif /* CONFIG_HOTPLUG_CPU */
struct smp_operations r8a7779_smp_ops __initdata = { const struct smp_operations r8a7779_smp_ops __initconst = {
.smp_prepare_cpus = r8a7779_smp_prepare_cpus, .smp_prepare_cpus = r8a7779_smp_prepare_cpus,
.smp_boot_secondary = r8a7779_boot_secondary, .smp_boot_secondary = r8a7779_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -60,7 +60,7 @@ static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus) ...@@ -60,7 +60,7 @@ static void __init r8a7790_smp_prepare_cpus(unsigned int max_cpus)
rcar_sysc_power_up(&r8a7790_ca7_scu); rcar_sysc_power_up(&r8a7790_ca7_scu);
} }
struct smp_operations r8a7790_smp_ops __initdata = { const struct smp_operations r8a7790_smp_ops __initconst = {
.smp_prepare_cpus = r8a7790_smp_prepare_cpus, .smp_prepare_cpus = r8a7790_smp_prepare_cpus,
.smp_boot_secondary = shmobile_smp_apmu_boot_secondary, .smp_boot_secondary = shmobile_smp_apmu_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -54,7 +54,7 @@ static int r8a7791_smp_boot_secondary(unsigned int cpu, ...@@ -54,7 +54,7 @@ static int r8a7791_smp_boot_secondary(unsigned int cpu,
return shmobile_smp_apmu_boot_secondary(cpu, idle); return shmobile_smp_apmu_boot_secondary(cpu, idle);
} }
struct smp_operations r8a7791_smp_ops __initdata = { const struct smp_operations r8a7791_smp_ops __initconst = {
.smp_prepare_cpus = r8a7791_smp_prepare_cpus, .smp_prepare_cpus = r8a7791_smp_prepare_cpus,
.smp_boot_secondary = r8a7791_smp_boot_secondary, .smp_boot_secondary = r8a7791_smp_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -56,7 +56,7 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus) ...@@ -56,7 +56,7 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
shmobile_smp_scu_prepare_cpus(max_cpus); shmobile_smp_scu_prepare_cpus(max_cpus);
} }
struct smp_operations sh73a0_smp_ops __initdata = { const struct smp_operations sh73a0_smp_ops __initconst = {
.smp_prepare_cpus = sh73a0_smp_prepare_cpus, .smp_prepare_cpus = sh73a0_smp_prepare_cpus,
.smp_boot_secondary = sh73a0_boot_secondary, .smp_boot_secondary = sh73a0_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
menuconfig ARCH_SOCFPGA menuconfig ARCH_SOCFPGA
bool "Altera SOCFPGA family" if ARCH_MULTI_V7 bool "Altera SOCFPGA family"
depends on ARCH_MULTI_V7
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
select ARM_AMBA select ARM_AMBA
select ARM_GIC select ARM_GIC
......
...@@ -117,7 +117,7 @@ static int socfpga_cpu_kill(unsigned int cpu) ...@@ -117,7 +117,7 @@ static int socfpga_cpu_kill(unsigned int cpu)
return 1; return 1;
} }
static struct smp_operations socfpga_smp_ops __initdata = { static const struct smp_operations socfpga_smp_ops __initconst = {
.smp_prepare_cpus = socfpga_smp_prepare_cpus, .smp_prepare_cpus = socfpga_smp_prepare_cpus,
.smp_boot_secondary = socfpga_boot_secondary, .smp_boot_secondary = socfpga_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
...@@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = { ...@@ -126,7 +126,7 @@ static struct smp_operations socfpga_smp_ops __initdata = {
#endif #endif
}; };
static struct smp_operations socfpga_a10_smp_ops __initdata = { static const struct smp_operations socfpga_a10_smp_ops __initconst = {
.smp_prepare_cpus = socfpga_smp_prepare_cpus, .smp_prepare_cpus = socfpga_smp_prepare_cpus,
.smp_boot_secondary = socfpga_a10_boot_secondary, .smp_boot_secondary = socfpga_a10_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
# #
menuconfig PLAT_SPEAR menuconfig PLAT_SPEAR
bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5 bool "ST SPEAr Family"
depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA select ARM_AMBA
select CLKSRC_MMIO select CLKSRC_MMIO
......
...@@ -39,7 +39,7 @@ void spear_restart(enum reboot_mode, const char *); ...@@ -39,7 +39,7 @@ void spear_restart(enum reboot_mode, const char *);
void spear13xx_secondary_startup(void); void spear13xx_secondary_startup(void);
void spear13xx_cpu_die(unsigned int cpu); void spear13xx_cpu_die(unsigned int cpu);
extern struct smp_operations spear13xx_smp_ops; extern const struct smp_operations spear13xx_smp_ops;
#ifdef CONFIG_MACH_SPEAR1310 #ifdef CONFIG_MACH_SPEAR1310
void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base); void __init spear1310_clk_init(void __iomem *misc_base, void __iomem *ras_base);
......
...@@ -120,7 +120,7 @@ static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus) ...@@ -120,7 +120,7 @@ static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus)
__raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION); __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION);
} }
struct smp_operations spear13xx_smp_ops __initdata = { const struct smp_operations spear13xx_smp_ops __initconst = {
.smp_init_cpus = spear13xx_smp_init_cpus, .smp_init_cpus = spear13xx_smp_init_cpus,
.smp_prepare_cpus = spear13xx_smp_prepare_cpus, .smp_prepare_cpus = spear13xx_smp_prepare_cpus,
.smp_secondary_init = spear13xx_secondary_init, .smp_secondary_init = spear13xx_secondary_init,
......
menuconfig ARCH_STI menuconfig ARCH_STI
bool "STMicroelectronics Consumer Electronics SOCs" if ARCH_MULTI_V7 bool "STMicroelectronics Consumer Electronics SOCs"
depends on ARCH_MULTI_V7
select ARM_GIC select ARM_GIC
select ST_IRQCHIP select ST_IRQCHIP
select ARM_GLOBAL_TIMER select ARM_GLOBAL_TIMER
......
...@@ -156,7 +156,7 @@ static void __init sti_smp_prepare_cpus(unsigned int max_cpus) ...@@ -156,7 +156,7 @@ static void __init sti_smp_prepare_cpus(unsigned int max_cpus)
} }
} }
struct smp_operations __initdata sti_smp_ops = { const struct smp_operations sti_smp_ops __initconst = {
.smp_prepare_cpus = sti_smp_prepare_cpus, .smp_prepare_cpus = sti_smp_prepare_cpus,
.smp_secondary_init = sti_secondary_init, .smp_secondary_init = sti_secondary_init,
.smp_boot_secondary = sti_boot_secondary, .smp_boot_secondary = sti_boot_secondary,
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#ifndef __MACH_STI_SMP_H #ifndef __MACH_STI_SMP_H
#define __MACH_STI_SMP_H #define __MACH_STI_SMP_H
extern struct smp_operations sti_smp_ops; extern const struct smp_operations sti_smp_ops;
void sti_secondary_startup(void); void sti_secondary_startup(void);
......
menuconfig ARCH_SUNXI menuconfig ARCH_SUNXI
bool "Allwinner SoCs" if ARCH_MULTI_V7 bool "Allwinner SoCs"
depends on ARCH_MULTI_V7
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARCH_HAS_RESET_CONTROLLER select ARCH_HAS_RESET_CONTROLLER
select CLKSRC_MMIO select CLKSRC_MMIO
......
...@@ -116,7 +116,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu, ...@@ -116,7 +116,7 @@ static int sun6i_smp_boot_secondary(unsigned int cpu,
return 0; return 0;
} }
static struct smp_operations sun6i_smp_ops __initdata = { static const struct smp_operations sun6i_smp_ops __initconst = {
.smp_prepare_cpus = sun6i_smp_prepare_cpus, .smp_prepare_cpus = sun6i_smp_prepare_cpus,
.smp_boot_secondary = sun6i_smp_boot_secondary, .smp_boot_secondary = sun6i_smp_boot_secondary,
}; };
...@@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu, ...@@ -185,7 +185,7 @@ static int sun8i_smp_boot_secondary(unsigned int cpu,
return 0; return 0;
} }
struct smp_operations sun8i_smp_ops __initdata = { static const struct smp_operations sun8i_smp_ops __initconst = {
.smp_prepare_cpus = sun8i_smp_prepare_cpus, .smp_prepare_cpus = sun8i_smp_prepare_cpus,
.smp_boot_secondary = sun8i_smp_boot_secondary, .smp_boot_secondary = sun8i_smp_boot_secondary,
}; };
......
menuconfig ARCH_TEGRA menuconfig ARCH_TEGRA
bool "NVIDIA Tegra" if ARCH_MULTI_V7 bool "NVIDIA Tegra"
depends on ARCH_MULTI_V7
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS select ARCH_SUPPORTS_TRUSTED_FOUNDATIONS
select ARM_AMBA select ARM_AMBA
......
extern struct smp_operations tegra_smp_ops; extern const struct smp_operations tegra_smp_ops;
extern int tegra_cpu_kill(unsigned int cpu); extern int tegra_cpu_kill(unsigned int cpu);
extern void tegra_cpu_die(unsigned int cpu); extern void tegra_cpu_die(unsigned int cpu);
...@@ -192,7 +192,7 @@ static void __init tegra_smp_prepare_cpus(unsigned int max_cpus) ...@@ -192,7 +192,7 @@ static void __init tegra_smp_prepare_cpus(unsigned int max_cpus)
scu_enable(IO_ADDRESS(scu_a9_get_base())); scu_enable(IO_ADDRESS(scu_a9_get_base()));
} }
struct smp_operations tegra_smp_ops __initdata = { const struct smp_operations tegra_smp_ops __initconst = {
.smp_prepare_cpus = tegra_smp_prepare_cpus, .smp_prepare_cpus = tegra_smp_prepare_cpus,
.smp_secondary_init = tegra_secondary_init, .smp_secondary_init = tegra_secondary_init,
.smp_boot_secondary = tegra_boot_secondary, .smp_boot_secondary = tegra_boot_secondary,
......
menuconfig ARCH_U300 menuconfig ARCH_U300
bool "ST-Ericsson U300 Series" if ARCH_MULTI_V5 bool "ST-Ericsson U300 Series"
depends on MMU depends on ARCH_MULTI_V5 && MMU
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA select ARM_AMBA
select ARM_VIC select ARM_VIC
......
...@@ -201,7 +201,7 @@ static int __init uniphier_smp_boot_secondary(unsigned int cpu, ...@@ -201,7 +201,7 @@ static int __init uniphier_smp_boot_secondary(unsigned int cpu,
return 0; return 0;
} }
static struct smp_operations uniphier_smp_ops __initdata = { static const struct smp_operations uniphier_smp_ops __initconst = {
.smp_prepare_cpus = uniphier_smp_prepare_cpus, .smp_prepare_cpus = uniphier_smp_prepare_cpus,
.smp_boot_secondary = uniphier_smp_boot_secondary, .smp_boot_secondary = uniphier_smp_boot_secondary,
}; };
......
menuconfig ARCH_U8500 menuconfig ARCH_U8500
bool "ST-Ericsson U8500 Series" if ARCH_MULTI_V7 bool "ST-Ericsson U8500 Series"
depends on MMU depends on ARCH_MULTI_V7 && MMU
select AB8500_CORE select AB8500_CORE
select ABX500_CORE select ABX500_CORE
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Makefile for the linux kernel, U8500 machine. # Makefile for the linux kernel, U8500 machine.
# #
obj-y := cpu.o id.o timer.o pm.o obj-y := cpu.o id.o pm.o
obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o
obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o
obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \ obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \
......
...@@ -156,8 +156,6 @@ static const char * stericsson_dt_platform_compat[] = { ...@@ -156,8 +156,6 @@ static const char * stericsson_dt_platform_compat[] = {
DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")
.map_io = u8500_map_io, .map_io = u8500_map_io,
.init_irq = ux500_init_irq, .init_irq = ux500_init_irq,
/* we re-use nomadik timer here */
.init_time = ux500_timer_init,
.init_machine = u8500_init_machine, .init_machine = u8500_init_machine,
.init_late = NULL, .init_late = NULL,
.dt_compat = stericsson_dt_platform_compat, .dt_compat = stericsson_dt_platform_compat,
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mfd/dbx500-prcmu.h> #include <linux/mfd/dbx500-prcmu.h>
#include <linux/clksrc-dbx500-prcmu.h>
#include <linux/sys_soc.h> #include <linux/sys_soc.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/slab.h> #include <linux/slab.h>
......
...@@ -98,7 +98,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -98,7 +98,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle)
return 0; return 0;
} }
struct smp_operations ux500_smp_ops __initdata = { static const struct smp_operations ux500_smp_ops __initconst = {
.smp_prepare_cpus = ux500_smp_prepare_cpus, .smp_prepare_cpus = ux500_smp_prepare_cpus,
.smp_boot_secondary = ux500_boot_secondary, .smp_boot_secondary = ux500_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#define __ASM_ARCH_SETUP_H #define __ASM_ARCH_SETUP_H
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/mfd/abx500/ab8500.h> #include <linux/mfd/abx500/ab8500.h>
...@@ -24,8 +23,6 @@ extern void __init ux500_init_irq(void); ...@@ -24,8 +23,6 @@ extern void __init ux500_init_irq(void);
extern struct device *ux500_soc_device_init(const char *soc_id); extern struct device *ux500_soc_device_init(const char *soc_id);
extern void ux500_timer_init(void);
extern void ux500_cpu_die(unsigned int cpu); extern void ux500_cpu_die(unsigned int cpu);
#endif /* __ASM_ARCH_SETUP_H */ #endif /* __ASM_ARCH_SETUP_H */
/*
* Copyright (C) ST-Ericsson SA 2011
*
* License Terms: GNU General Public License v2
* Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson
*/
#include <linux/io.h>
#include <linux/errno.h>
#include <linux/clksrc-dbx500-prcmu.h>
#include <linux/clocksource.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include "setup.h"
#include "db8500-regs.h"
#include "id.h"
static const struct of_device_id prcmu_timer_of_match[] __initconst = {
{ .compatible = "stericsson,db8500-prcmu-timer-4", },
{ },
};
void __init ux500_timer_init(void)
{
void __iomem *prcmu_timer_base;
void __iomem *tmp_base;
struct device_node *np;
if (cpu_is_u8500_family() || cpu_is_ux540_family())
prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
else
ux500_unknown_soc();
np = of_find_matching_node(NULL, prcmu_timer_of_match);
if (!np)
goto dt_fail;
tmp_base = of_iomap(np, 0);
if (!tmp_base)
goto dt_fail;
prcmu_timer_base = tmp_base;
dt_fail:
clksrc_dbx500_prcmu_init(prcmu_timer_base);
clocksource_probe();
}
menuconfig ARCH_VEXPRESS menuconfig ARCH_VEXPRESS
bool "ARM Ltd. Versatile Express family" if ARCH_MULTI_V7 bool "ARM Ltd. Versatile Express family"
depends on ARCH_MULTI_V7
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARCH_SUPPORTS_BIG_ENDIAN select ARCH_SUPPORTS_BIG_ENDIAN
select ARM_AMBA select ARM_AMBA
......
bool vexpress_smp_init_ops(void); bool vexpress_smp_init_ops(void);
extern struct smp_operations vexpress_smp_dt_ops; extern const struct smp_operations vexpress_smp_dt_ops;
extern void vexpress_cpu_die(unsigned int cpu); extern void vexpress_cpu_die(unsigned int cpu);
...@@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus) ...@@ -64,7 +64,7 @@ static void __init vexpress_smp_dt_prepare_cpus(unsigned int max_cpus)
vexpress_flags_set(virt_to_phys(versatile_secondary_startup)); vexpress_flags_set(virt_to_phys(versatile_secondary_startup));
} }
struct smp_operations __initdata vexpress_smp_dt_ops = { const struct smp_operations vexpress_smp_dt_ops __initconst = {
.smp_prepare_cpus = vexpress_smp_dt_prepare_cpus, .smp_prepare_cpus = vexpress_smp_dt_prepare_cpus,
.smp_secondary_init = versatile_secondary_init, .smp_secondary_init = versatile_secondary_init,
.smp_boot_secondary = versatile_boot_secondary, .smp_boot_secondary = versatile_boot_secondary,
......
menuconfig ARCH_ZX menuconfig ARCH_ZX
bool "ZTE ZX family" if ARCH_MULTI_V7 bool "ZTE ZX family"
depends on ARCH_MULTI_V7
help help
Support for ZTE ZX-based family of processors. TV Support for ZTE ZX-based family of processors. TV
set-top-box processor is supported. More will be set-top-box processor is supported. More will be
......
...@@ -176,7 +176,7 @@ static void zx_secondary_init(unsigned int cpu) ...@@ -176,7 +176,7 @@ static void zx_secondary_init(unsigned int cpu)
scu_power_mode(scu_base, SCU_PM_NORMAL); scu_power_mode(scu_base, SCU_PM_NORMAL);
} }
struct smp_operations zx_smp_ops __initdata = { static const struct smp_operations zx_smp_ops __initconst = {
.smp_prepare_cpus = zx_smp_prepare_cpus, .smp_prepare_cpus = zx_smp_prepare_cpus,
.smp_secondary_init = zx_secondary_init, .smp_secondary_init = zx_secondary_init,
.smp_boot_secondary = zx_boot_secondary, .smp_boot_secondary = zx_boot_secondary,
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment