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,
......
config ARCH_ZYNQ config ARCH_ZYNQ
bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7 bool "Xilinx Zynq ARM Cortex A9 Platform"
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
......
...@@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline; ...@@ -30,7 +30,7 @@ extern char zynq_secondary_trampoline;
extern char zynq_secondary_trampoline_jump; extern char zynq_secondary_trampoline_jump;
extern char zynq_secondary_trampoline_end; extern char zynq_secondary_trampoline_end;
extern int zynq_cpun_start(u32 address, int cpu); extern int zynq_cpun_start(u32 address, int cpu);
extern struct smp_operations zynq_smp_ops __initdata; extern const struct smp_operations zynq_smp_ops;
#endif #endif
extern void __iomem *zynq_scu_base; extern void __iomem *zynq_scu_base;
......
...@@ -157,7 +157,7 @@ static void zynq_cpu_die(unsigned int cpu) ...@@ -157,7 +157,7 @@ static void zynq_cpu_die(unsigned int cpu)
} }
#endif #endif
struct smp_operations zynq_smp_ops __initdata = { const struct smp_operations zynq_smp_ops __initconst = {
.smp_init_cpus = zynq_smp_init_cpus, .smp_init_cpus = zynq_smp_init_cpus,
.smp_prepare_cpus = zynq_smp_prepare_cpus, .smp_prepare_cpus = zynq_smp_prepare_cpus,
.smp_boot_secondary = zynq_boot_secondary, .smp_boot_secondary = zynq_boot_secondary,
......
...@@ -12,8 +12,9 @@ ...@@ -12,8 +12,9 @@
* power domain. We use the Timer 4 for our always-on clock * power domain. We use the Timer 4 for our always-on clock
* source on DB8500. * source on DB8500.
*/ */
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/clockchips.h> #include <linux/clockchips.h>
#include <linux/clksrc-dbx500-prcmu.h>
#include <linux/sched_clock.h> #include <linux/sched_clock.h>
#define RATE_32K 32768 #define RATE_32K 32768
...@@ -63,9 +64,9 @@ static u64 notrace dbx500_prcmu_sched_clock_read(void) ...@@ -63,9 +64,9 @@ static u64 notrace dbx500_prcmu_sched_clock_read(void)
#endif #endif
void __init clksrc_dbx500_prcmu_init(void __iomem *base) static void __init clksrc_dbx500_prcmu_init(struct device_node *node)
{ {
clksrc_dbx500_timer_base = base; clksrc_dbx500_timer_base = of_iomap(node, 0);
/* /*
* The A9 sub system expects the timer to be configured as * The A9 sub system expects the timer to be configured as
...@@ -85,3 +86,5 @@ void __init clksrc_dbx500_prcmu_init(void __iomem *base) ...@@ -85,3 +86,5 @@ void __init clksrc_dbx500_prcmu_init(void __iomem *base)
#endif #endif
clocksource_register_hz(&clocksource_dbx500_prcmu, RATE_32K); clocksource_register_hz(&clocksource_dbx500_prcmu, RATE_32K);
} }
CLOCKSOURCE_OF_DECLARE(dbx500_prcmu, "stericsson,db8500-prcmu-timer-4",
clksrc_dbx500_prcmu_init);
...@@ -97,7 +97,7 @@ static const struct board_staging_dev armadillo800eva_devices[] __initconst = { ...@@ -97,7 +97,7 @@ static const struct board_staging_dev armadillo800eva_devices[] __initconst = {
static void __init armadillo800eva_init(void) static void __init armadillo800eva_init(void)
{ {
board_staging_gic_setup_xlate("arm,cortex-a9-gic", 32); board_staging_gic_setup_xlate("arm,pl390", 32);
board_staging_register_devices(armadillo800eva_devices, board_staging_register_devices(armadillo800eva_devices,
ARRAY_SIZE(armadillo800eva_devices)); ARRAY_SIZE(armadillo800eva_devices));
} }
......
...@@ -11,7 +11,7 @@ static struct resource usbs1_res[] __initdata = { ...@@ -11,7 +11,7 @@ static struct resource usbs1_res[] __initdata = {
static void __init kzm9d_init(void) static void __init kzm9d_init(void)
{ {
board_staging_gic_setup_xlate("arm,cortex-a9-gic", 32); board_staging_gic_setup_xlate("arm,pl390", 32);
if (!board_staging_dt_node_available(usbs1_res, if (!board_staging_dt_node_available(usbs1_res,
ARRAY_SIZE(usbs1_res))) { ARRAY_SIZE(usbs1_res))) {
......
/*
* Copyright (C) ST-Ericsson SA 2011
*
* License Terms: GNU General Public License v2
* Author: Mattias Wallin <mattias.wallin@stericsson.com>
*
*/
#ifndef __CLKSRC_DBX500_PRCMU_H
#define __CLKSRC_DBX500_PRCMU_H
#include <linux/init.h>
#include <linux/io.h>
#ifdef CONFIG_CLKSRC_DBX500_PRCMU
void __init clksrc_dbx500_prcmu_init(void __iomem *base);
#else
static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {}
#endif
#endif
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