We got two identical implementations of system controller reset, one in mach-malta and another in mach-bcm47xx. For the Malta board, Linux represents this as syscon-reboot nodes, do likewise. This could probably done for the dlink-dir-320, but would increase code size. This is not done here, because inability to test. Tested on Qemu Malta board. Cc: Antony Pavlov <antonynpavlov@xxxxxxxxx> Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- arch/mips/dts/qemu-malta.dts | 13 ++++++++ arch/mips/mach-malta/Kconfig | 1 + arch/mips/mach-malta/Makefile | 1 - arch/mips/mach-malta/include/mach/hardware.h | 6 ---- arch/mips/mach-malta/reset.c | 31 -------------------- 5 files changed, 14 insertions(+), 38 deletions(-) delete mode 100644 arch/mips/mach-malta/reset.c diff --git a/arch/mips/dts/qemu-malta.dts b/arch/mips/dts/qemu-malta.dts index 32e473cac0d2..926806e587c1 100644 --- a/arch/mips/dts/qemu-malta.dts +++ b/arch/mips/dts/qemu-malta.dts @@ -46,6 +46,19 @@ status = "disabled"; }; + fpga_regs: system-controller@1f000000 { + compatible = "mti,malta-fpga", "syscon", "simple-mfd"; + reg = <0x1f000000 0x1000>; + native-endian; + + reboot { + compatible = "syscon-reboot"; + regmap = <&fpga_regs>; + offset = <0x500>; + mask = <0x42>; + }; + }; + uart2: serial@1f000900 { compatible = "ns16550a"; reg = <0x1f000900 0x40>; diff --git a/arch/mips/mach-malta/Kconfig b/arch/mips/mach-malta/Kconfig index 467107514006..7aad8242baf7 100644 --- a/arch/mips/mach-malta/Kconfig +++ b/arch/mips/mach-malta/Kconfig @@ -4,6 +4,7 @@ config BOARD_QEMU_MALTA bool "qemu malta" select HAVE_PBL_IMAGE select HAVE_IMAGE_COMPRESSION + select POWER_RESET_SYSCON select HAS_NMON endif diff --git a/arch/mips/mach-malta/Makefile b/arch/mips/mach-malta/Makefile index 0c5a7018d45a..7d56f215b034 100644 --- a/arch/mips/mach-malta/Makefile +++ b/arch/mips/mach-malta/Makefile @@ -1,2 +1 @@ -obj-y += reset.o obj-$(CONFIG_PCI) += pci.o diff --git a/arch/mips/mach-malta/include/mach/hardware.h b/arch/mips/mach-malta/include/mach/hardware.h index 1176b08b6a9a..c816f412053c 100644 --- a/arch/mips/mach-malta/include/mach/hardware.h +++ b/arch/mips/mach-malta/include/mach/hardware.h @@ -11,10 +11,4 @@ #define MALTA_CBUS_UART 0xbf000900 #define MALTA_CBUS_UART_SHIFT 3 -/* - * Reset register. - */ -#define SOFTRES_REG 0xbf000500 -#define GORESET 0x42 - #endif /* __INCLUDE_ARCH_HARDWARE_H__ */ diff --git a/arch/mips/mach-malta/reset.c b/arch/mips/mach-malta/reset.c deleted file mode 100644 index ad0de2741b05..000000000000 --- a/arch/mips/mach-malta/reset.c +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Copyright (C) 2011 Antony Pavlov <antonynpavlov@xxxxxxxxx> - */ - -/** - * @file - * @brief Resetting an malta board - */ - -#include <common.h> -#include <io.h> -#include <init.h> -#include <restart.h> -#include <mach/hardware.h> - -static void __noreturn malta_restart_soc(struct restart_handler *rst) -{ - __raw_writel(GORESET, (char *)SOFTRES_REG); - - hang(); - /*NOTREACHED*/ -} - -static int restart_register_feature(void) -{ - restart_handler_register_fn("soc", malta_restart_soc); - - return 0; -} -coredevice_initcall(restart_register_feature); -- 2.29.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox