[RFC PATCH 09/11] ARM: Remove Calxeda platform support
From: Rob Herring
Date: Tue Feb 18 2020 - 12:14:07 EST
Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
---
MAINTAINERS | 8 --
arch/arm/Kconfig | 2 -
arch/arm/Kconfig.debug | 12 +-
arch/arm/Makefile | 1 -
arch/arm/configs/multi_v7_defconfig | 5 -
arch/arm/mach-highbank/Kconfig | 19 ---
arch/arm/mach-highbank/Makefile | 4 -
arch/arm/mach-highbank/core.h | 18 ---
arch/arm/mach-highbank/highbank.c | 175 ----------------------------
arch/arm/mach-highbank/pm.c | 49 --------
arch/arm/mach-highbank/smc.S | 25 ----
arch/arm/mach-highbank/sysregs.h | 75 ------------
arch/arm/mach-highbank/system.c | 22 ----
13 files changed, 1 insertion(+), 414 deletions(-)
delete mode 100644 arch/arm/mach-highbank/Kconfig
delete mode 100644 arch/arm/mach-highbank/Makefile
delete mode 100644 arch/arm/mach-highbank/core.h
delete mode 100644 arch/arm/mach-highbank/highbank.c
delete mode 100644 arch/arm/mach-highbank/pm.c
delete mode 100644 arch/arm/mach-highbank/smc.S
delete mode 100644 arch/arm/mach-highbank/sysregs.h
delete mode 100644 arch/arm/mach-highbank/system.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 4732bb268299..551aaa9d2dab 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1604,14 +1604,6 @@ F: Documentation/devicetree/bindings/arm/bitmain.yaml
F: Documentation/devicetree/bindings/clock/bitmain,bm1880-clk.yaml
F: Documentation/devicetree/bindings/pinctrl/bitmain,bm1880-pinctrl.txt
-ARM/CALXEDA HIGHBANK ARCHITECTURE
-M: Rob Herring <robh@xxxxxxxxxx>
-L: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx (moderated for non-subscribers)
-S: Maintained
-F: arch/arm/mach-highbank/
-F: arch/arm/boot/dts/highbank.dts
-F: arch/arm/boot/dts/ecx-*.dts*
-
ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
M: Krzysztof Halasa <khalasa@xxxxxxx>
S: Maintained
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 97864aabc2a6..6f8ce7b38a46 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -640,8 +640,6 @@ source "arch/arm/mach-footbridge/Kconfig"
source "arch/arm/mach-gemini/Kconfig"
-source "arch/arm/mach-highbank/Kconfig"
-
source "arch/arm/mach-hisi/Kconfig"
source "arch/arm/mach-imx/Kconfig"
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index b70d7debf5ca..66413f98cae9 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -346,14 +346,6 @@ choice
Say Y here if you want kernel low-level debugging support
on HI3620 UART.
- config DEBUG_HIGHBANK_UART
- bool "Kernel low-level debugging messages via Highbank UART"
- depends on ARCH_HIGHBANK
- select DEBUG_UART_PL01X
- help
- Say Y here if you want the debug print routines to direct
- their output to the UART on Highbank based devices.
-
config DEBUG_HIP01_UART
bool "Hisilicon Hip01 Debug UART"
depends on ARCH_HIP01
@@ -1692,7 +1684,6 @@ config DEBUG_UART_PHYS
default 0xffc03000 if DEBUG_SOCFPGA_CYCLONE5_UART1
default 0xffe40000 if DEBUG_RCAR_GEN1_SCIF0
default 0xffe42000 if DEBUG_RCAR_GEN1_SCIF2
- default 0xfff36000 if DEBUG_HIGHBANK_UART
default 0xfffb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
default 0xfffb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
default 0xfffb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
@@ -1810,7 +1801,6 @@ config DEBUG_UART_VIRT
default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
default 0xfef00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
- default 0xfef36000 if DEBUG_HIGHBANK_UART
default 0xfefb0000 if DEBUG_OMAP1UART1 || DEBUG_OMAP7XXUART1
default 0xfefb0800 if DEBUG_OMAP1UART2 || DEBUG_OMAP7XXUART2
default 0xfefb9800 if DEBUG_OMAP1UART3 || DEBUG_OMAP7XXUART3
@@ -1873,7 +1863,7 @@ config DEBUG_UNCOMPRESS
When this option is set, the selected DEBUG_LL output method
will be re-used for normal decompressor output on multiplatform
kernels.
-
+
config UNCOMPRESS_INCLUDE
string
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index db857d07114f..fa3bc920e3ac 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -178,7 +178,6 @@ machine-$(CONFIG_ARCH_EP93XX) += ep93xx
machine-$(CONFIG_ARCH_EXYNOS) += exynos
machine-$(CONFIG_ARCH_FOOTBRIDGE) += footbridge
machine-$(CONFIG_ARCH_GEMINI) += gemini
-machine-$(CONFIG_ARCH_HIGHBANK) += highbank
machine-$(CONFIG_ARCH_HISI) += hisi
machine-$(CONFIG_ARCH_INTEGRATOR) += integrator
machine-$(CONFIG_ARCH_IOP32X) += iop32x
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 017d65f86eba..69eb62f831c7 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -31,7 +31,6 @@ CONFIG_MACH_BERLIN_BG2CD=y
CONFIG_MACH_BERLIN_BG2Q=y
CONFIG_ARCH_DIGICOLOR=y
CONFIG_ARCH_EXYNOS=y
-CONFIG_ARCH_HIGHBANK=y
CONFIG_ARCH_HISI=y
CONFIG_ARCH_HI3xxx=y
CONFIG_ARCH_HIP01=y
@@ -236,7 +235,6 @@ CONFIG_AHCI_ST=y
CONFIG_AHCI_IMX=y
CONFIG_AHCI_SUNXI=y
CONFIG_AHCI_TEGRA=y
-CONFIG_SATA_HIGHBANK=y
CONFIG_SATA_MV=y
CONFIG_SATA_RCAR=y
CONFIG_NETDEVICES=y
@@ -250,7 +248,6 @@ CONFIG_BCMGENET=m
CONFIG_BGMAC_BCMA=y
CONFIG_SYSTEMPORT=m
CONFIG_MACB=y
-CONFIG_NET_CALXEDA_XGMAC=y
CONFIG_FTGMAC100=m
CONFIG_GIANFAR=y
CONFIG_HIX5HD2_GMAC=y
@@ -866,8 +863,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_LEDS_TRIGGER_TRANSIENT=y
CONFIG_LEDS_TRIGGER_CAMERA=y
CONFIG_EDAC=y
-CONFIG_EDAC_HIGHBANK_MC=y
-CONFIG_EDAC_HIGHBANK_L2=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_AC100=y
CONFIG_RTC_DRV_AS3722=y
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig
deleted file mode 100644
index 1bc68913d62c..000000000000
--- a/arch/arm/mach-highbank/Kconfig
+++ /dev/null
@@ -1,19 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-config ARCH_HIGHBANK
- bool "Calxeda ECX-1000/2000 (Highbank/Midway)"
- depends on ARCH_MULTI_V7
- select ARCH_HAS_HOLES_MEMORYMODEL
- select ARCH_SUPPORTS_BIG_ENDIAN
- select ARM_AMBA
- select ARM_ERRATA_764369 if SMP
- select ARM_ERRATA_775420
- select ARM_ERRATA_798181 if SMP
- select ARM_GIC
- select ARM_PSCI
- select ARM_TIMER_SP804
- select CACHE_L2X0
- select HAVE_ARM_SCU
- select HAVE_ARM_TWD if SMP
- select MAILBOX
- select PL320_MBOX
- select ZONE_DMA if ARM_LPAE
diff --git a/arch/arm/mach-highbank/Makefile b/arch/arm/mach-highbank/Makefile
deleted file mode 100644
index 71cc68041d92..000000000000
--- a/arch/arm/mach-highbank/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-obj-y := highbank.o system.o smc.o
-
-obj-$(CONFIG_PM_SLEEP) += pm.o
diff --git a/arch/arm/mach-highbank/core.h b/arch/arm/mach-highbank/core.h
deleted file mode 100644
index 3991a6594ae5..000000000000
--- a/arch/arm/mach-highbank/core.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __HIGHBANK_CORE_H
-#define __HIGHBANK_CORE_H
-
-#include <linux/reboot.h>
-
-extern void highbank_restart(enum reboot_mode, const char *);
-extern void __iomem *scu_base_addr;
-
-#ifdef CONFIG_PM_SLEEP
-extern void highbank_pm_init(void);
-#else
-static inline void highbank_pm_init(void) {}
-#endif
-
-extern void highbank_smc1(int fn, int arg);
-
-#endif
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
deleted file mode 100644
index 56bf29523c65..000000000000
--- a/arch/arm/mach-highbank/highbank.c
+++ /dev/null
@@ -1,175 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright 2010-2011 Calxeda, Inc.
- */
-#include <linux/clk.h>
-#include <linux/clkdev.h>
-#include <linux/clocksource.h>
-#include <linux/dma-mapping.h>
-#include <linux/input.h>
-#include <linux/io.h>
-#include <linux/irqchip.h>
-#include <linux/pl320-ipc.h>
-#include <linux/of.h>
-#include <linux/of_irq.h>
-#include <linux/of_address.h>
-#include <linux/reboot.h>
-#include <linux/amba/bus.h>
-#include <linux/platform_device.h>
-#include <linux/psci.h>
-
-#include <asm/hardware/cache-l2x0.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include "core.h"
-#include "sysregs.h"
-
-void __iomem *sregs_base;
-void __iomem *scu_base_addr;
-
-static void __init highbank_scu_map_io(void)
-{
- unsigned long base;
-
- /* Get SCU base */
- asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (base));
-
- scu_base_addr = ioremap(base, SZ_4K);
-}
-
-
-static void highbank_l2c310_write_sec(unsigned long val, unsigned reg)
-{
- if (reg == L2X0_CTRL)
- highbank_smc1(0x102, val);
- else
- WARN_ONCE(1, "Highbank L2C310: ignoring write to reg 0x%x\n",
- reg);
-}
-
-static void __init highbank_init_irq(void)
-{
- irqchip_init();
-
- if (of_find_compatible_node(NULL, NULL, "arm,cortex-a9"))
- highbank_scu_map_io();
-}
-
-static void highbank_power_off(void)
-{
- highbank_set_pwr_shutdown();
-
- while (1)
- cpu_do_idle();
-}
-
-static int highbank_platform_notifier(struct notifier_block *nb,
- unsigned long event, void *__dev)
-{
- struct resource *res;
- int reg = -1;
- u32 val;
- struct device *dev = __dev;
-
- if (event != BUS_NOTIFY_ADD_DEVICE)
- return NOTIFY_DONE;
-
- if (of_device_is_compatible(dev->of_node, "calxeda,hb-ahci"))
- reg = 0xc;
- else if (of_device_is_compatible(dev->of_node, "calxeda,hb-sdhci"))
- reg = 0x18;
- else if (of_device_is_compatible(dev->of_node, "arm,pl330"))
- reg = 0x20;
- else if (of_device_is_compatible(dev->of_node, "calxeda,hb-xgmac")) {
- res = platform_get_resource(to_platform_device(dev),
- IORESOURCE_MEM, 0);
- if (res) {
- if (res->start == 0xfff50000)
- reg = 0;
- else if (res->start == 0xfff51000)
- reg = 4;
- }
- }
-
- if (reg < 0)
- return NOTIFY_DONE;
-
- if (of_property_read_bool(dev->of_node, "dma-coherent")) {
- val = readl(sregs_base + reg);
- writel(val | 0xff01, sregs_base + reg);
- set_dma_ops(dev, &arm_coherent_dma_ops);
- }
-
- return NOTIFY_OK;
-}
-
-static struct notifier_block highbank_amba_nb = {
- .notifier_call = highbank_platform_notifier,
-};
-
-static struct notifier_block highbank_platform_nb = {
- .notifier_call = highbank_platform_notifier,
-};
-
-static struct platform_device highbank_cpuidle_device = {
- .name = "cpuidle-calxeda",
-};
-
-static int hb_keys_notifier(struct notifier_block *nb, unsigned long event, void *data)
-{
- u32 key = *(u32 *)data;
-
- if (event != 0x1000)
- return 0;
-
- if (key == KEY_POWER)
- orderly_poweroff(false);
- else if (key == 0xffff)
- ctrl_alt_del();
-
- return 0;
-}
-static struct notifier_block hb_keys_nb = {
- .notifier_call = hb_keys_notifier,
-};
-
-static void __init highbank_init(void)
-{
- struct device_node *np;
-
- /* Map system registers */
- np = of_find_compatible_node(NULL, NULL, "calxeda,hb-sregs");
- sregs_base = of_iomap(np, 0);
- WARN_ON(!sregs_base);
-
- pm_power_off = highbank_power_off;
- highbank_pm_init();
-
- bus_register_notifier(&platform_bus_type, &highbank_platform_nb);
- bus_register_notifier(&amba_bustype, &highbank_amba_nb);
-
- pl320_ipc_register_notifier(&hb_keys_nb);
-
- if (psci_ops.cpu_suspend)
- platform_device_register(&highbank_cpuidle_device);
-}
-
-static const char *const highbank_match[] __initconst = {
- "calxeda,highbank",
- "calxeda,ecx-2000",
- NULL,
-};
-
-DT_MACHINE_START(HIGHBANK, "Highbank")
-#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
- .dma_zone_size = (4ULL * SZ_1G),
-#endif
- .l2c_aux_val = 0,
- .l2c_aux_mask = ~0,
- .l2c_write_sec = highbank_l2c310_write_sec,
- .init_irq = highbank_init_irq,
- .init_machine = highbank_init,
- .dt_compat = highbank_match,
- .restart = highbank_restart,
-MACHINE_END
diff --git a/arch/arm/mach-highbank/pm.c b/arch/arm/mach-highbank/pm.c
deleted file mode 100644
index 561941baeda9..000000000000
--- a/arch/arm/mach-highbank/pm.c
+++ /dev/null
@@ -1,49 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright 2011 Calxeda, Inc.
- */
-
-#include <linux/cpu_pm.h>
-#include <linux/init.h>
-#include <linux/psci.h>
-#include <linux/suspend.h>
-
-#include <asm/suspend.h>
-
-#include <uapi/linux/psci.h>
-
-#define HIGHBANK_SUSPEND_PARAM \
- ((0 << PSCI_0_2_POWER_STATE_ID_SHIFT) | \
- (1 << PSCI_0_2_POWER_STATE_AFFL_SHIFT) | \
- (PSCI_POWER_STATE_TYPE_POWER_DOWN << PSCI_0_2_POWER_STATE_TYPE_SHIFT))
-
-static int highbank_suspend_finish(unsigned long val)
-{
- return psci_ops.cpu_suspend(HIGHBANK_SUSPEND_PARAM, __pa(cpu_resume));
-}
-
-static int highbank_pm_enter(suspend_state_t state)
-{
- cpu_pm_enter();
- cpu_cluster_pm_enter();
-
- cpu_suspend(0, highbank_suspend_finish);
-
- cpu_cluster_pm_exit();
- cpu_pm_exit();
-
- return 0;
-}
-
-static const struct platform_suspend_ops highbank_pm_ops = {
- .enter = highbank_pm_enter,
- .valid = suspend_valid_only_mem,
-};
-
-void __init highbank_pm_init(void)
-{
- if (!psci_ops.cpu_suspend)
- return;
-
- suspend_set_ops(&highbank_pm_ops);
-}
diff --git a/arch/arm/mach-highbank/smc.S b/arch/arm/mach-highbank/smc.S
deleted file mode 100644
index 78b3f19e7f37..000000000000
--- a/arch/arm/mach-highbank/smc.S
+++ /dev/null
@@ -1,25 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copied from omap44xx-smc.S Copyright (C) 2010 Texas Instruments, Inc.
- * Copyright 2012 Calxeda, Inc.
- */
-
-#include <linux/linkage.h>
-
-/*
- * This is common routine to manage secure monitor API
- * used to modify the PL310 secure registers.
- * 'r0' contains the value to be modified and 'r12' contains
- * the monitor API number.
- * Function signature : void highbank_smc1(u32 fn, u32 arg)
- */
- .arch armv7-a
- .arch_extension sec
-ENTRY(highbank_smc1)
- stmfd sp!, {r4-r11, lr}
- mov r12, r0
- mov r0, r1
- dsb
- smc #0
- ldmfd sp!, {r4-r11, pc}
-ENDPROC(highbank_smc1)
diff --git a/arch/arm/mach-highbank/sysregs.h b/arch/arm/mach-highbank/sysregs.h
deleted file mode 100644
index 3c13fdcafb1e..000000000000
--- a/arch/arm/mach-highbank/sysregs.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright 2011 Calxeda, Inc.
- */
-#ifndef _MACH_HIGHBANK__SYSREGS_H_
-#define _MACH_HIGHBANK__SYSREGS_H_
-
-#include <linux/io.h>
-#include <linux/smp.h>
-#include <asm/smp_plat.h>
-#include <asm/smp_scu.h>
-#include "core.h"
-
-extern void __iomem *sregs_base;
-
-#define HB_SREG_A9_PWR_REQ 0xf00
-#define HB_SREG_A9_BOOT_STAT 0xf04
-#define HB_SREG_A9_BOOT_DATA 0xf08
-
-#define HB_PWR_SUSPEND 0
-#define HB_PWR_SOFT_RESET 1
-#define HB_PWR_HARD_RESET 2
-#define HB_PWR_SHUTDOWN 3
-
-#define SREG_CPU_PWR_CTRL(c) (0x200 + ((c) * 4))
-
-static inline void highbank_set_core_pwr(void)
-{
- int cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(smp_processor_id()), 0);
- if (scu_base_addr)
- scu_power_mode(scu_base_addr, SCU_PM_POWEROFF);
- else
- writel_relaxed(1, sregs_base + SREG_CPU_PWR_CTRL(cpu));
-}
-
-static inline void highbank_clear_core_pwr(void)
-{
- int cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(smp_processor_id()), 0);
- if (scu_base_addr)
- scu_power_mode(scu_base_addr, SCU_PM_NORMAL);
- else
- writel_relaxed(0, sregs_base + SREG_CPU_PWR_CTRL(cpu));
-}
-
-static inline void highbank_set_pwr_suspend(void)
-{
- writel(HB_PWR_SUSPEND, sregs_base + HB_SREG_A9_PWR_REQ);
- highbank_set_core_pwr();
-}
-
-static inline void highbank_set_pwr_shutdown(void)
-{
- writel(HB_PWR_SHUTDOWN, sregs_base + HB_SREG_A9_PWR_REQ);
- highbank_set_core_pwr();
-}
-
-static inline void highbank_set_pwr_soft_reset(void)
-{
- writel(HB_PWR_SOFT_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
- highbank_set_core_pwr();
-}
-
-static inline void highbank_set_pwr_hard_reset(void)
-{
- writel(HB_PWR_HARD_RESET, sregs_base + HB_SREG_A9_PWR_REQ);
- highbank_set_core_pwr();
-}
-
-static inline void highbank_clear_pwr_request(void)
-{
- writel(~0UL, sregs_base + HB_SREG_A9_PWR_REQ);
- highbank_clear_core_pwr();
-}
-
-#endif
diff --git a/arch/arm/mach-highbank/system.c b/arch/arm/mach-highbank/system.c
deleted file mode 100644
index b749c4a6ddf5..000000000000
--- a/arch/arm/mach-highbank/system.c
+++ /dev/null
@@ -1,22 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright 2011 Calxeda, Inc.
- */
-#include <linux/io.h>
-#include <asm/proc-fns.h>
-#include <linux/reboot.h>
-
-#include "core.h"
-#include "sysregs.h"
-
-void highbank_restart(enum reboot_mode mode, const char *cmd)
-{
- if (mode == REBOOT_HARD)
- highbank_set_pwr_hard_reset();
- else
- highbank_set_pwr_soft_reset();
-
- while (1)
- cpu_do_idle();
-}
-
--
2.20.1