[PATCH 05/17] MIPS: qemu-malta: replace board code with syscon-reboot

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Apr 12 08:16:39 BST 2021


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 at gmail.com>
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 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 at 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 at 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 at gmail.com>
- */
-
-/**
- * @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




More information about the barebox mailing list