This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit ab693f8aee8afc89876244c30cf06c5b2d3ed870
Author: xuxingliang <[email protected]>
AuthorDate: Tue Jun 18 12:15:33 2024 +0800

    arm64/qemu: add support poweroff/reboot command
    
    Signed-off-by: xuxingliang <[email protected]>
---
 .../qemu/qemu-armv8a/configs/nsh_smp/defconfig     |  2 +
 boards/arm64/qemu/qemu-armv8a/src/CMakeLists.txt   |  3 +-
 boards/arm64/qemu/qemu-armv8a/src/Makefile         |  2 +-
 boards/arm64/qemu/qemu-armv8a/src/qemu_power.c     | 70 ++++++++++++++++++++++
 4 files changed, 74 insertions(+), 3 deletions(-)

diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig 
b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
index 0927ffb6fe..3ccb399cd1 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
@@ -18,6 +18,8 @@ CONFIG_ARCH_INTERRUPTSTACK=8192
 CONFIG_ARCH_STACKDUMP=y
 CONFIG_ARM64_STRING_FUNCTION=y
 CONFIG_BENCHMARK_OSPERF=y
+CONFIG_BOARDCTL_POWEROFF=y
+CONFIG_BOARDCTL_RESET=y
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_ASSERTIONS=y
 CONFIG_DEBUG_FEATURES=y
diff --git a/boards/arm64/qemu/qemu-armv8a/src/CMakeLists.txt 
b/boards/arm64/qemu/qemu-armv8a/src/CMakeLists.txt
index cdae09b23b..30fc3ba38a 100644
--- a/boards/arm64/qemu/qemu-armv8a/src/CMakeLists.txt
+++ b/boards/arm64/qemu/qemu-armv8a/src/CMakeLists.txt
@@ -20,8 +20,7 @@
 set(SRCS qemu_boardinit.c qemu_bringup.c)
 
 if(CONFIG_BOARDCTL)
-  list(APPEND SRCS qemu_appinit.c)
-
+  list(APPEND SRCS qemu_appinit.c qemu_power.c)
 endif()
 
 if(CONFIG_LIBC_FDT)
diff --git a/boards/arm64/qemu/qemu-armv8a/src/Makefile 
b/boards/arm64/qemu/qemu-armv8a/src/Makefile
index a663eb14b5..b594a278bc 100644
--- a/boards/arm64/qemu/qemu-armv8a/src/Makefile
+++ b/boards/arm64/qemu/qemu-armv8a/src/Makefile
@@ -23,7 +23,7 @@ include $(TOPDIR)/Make.defs
 CSRCS = qemu_boardinit.c qemu_bringup.c
 
 ifeq ($(CONFIG_BOARDCTL),y)
-CSRCS += qemu_appinit.c
+CSRCS += qemu_appinit.c qemu_power.c
 endif
 
 ifeq ($(CONFIG_LIBC_FDT),y)
diff --git a/boards/arm64/qemu/qemu-armv8a/src/qemu_power.c 
b/boards/arm64/qemu/qemu-armv8a/src/qemu_power.c
new file mode 100644
index 0000000000..1fa90fb131
--- /dev/null
+++ b/boards/arm64/qemu/qemu-armv8a/src/qemu_power.c
@@ -0,0 +1,70 @@
+/****************************************************************************
+ * boards/arm64/qemu/qemu-armv8a/src/qemu_power.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nuttx/arch.h>
+#include <nuttx/board.h>
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+#ifdef CONFIG_BOARDCTL_POWEROFF
+int board_power_off(int status)
+{
+  up_systempoweroff();
+  return 0;
+}
+#endif
+
+#ifdef CONFIG_BOARDCTL_RESET
+
+/****************************************************************************
+ * Name: board_reset
+ *
+ * Description:
+ *   Reset board.  Support for this function is required by board-level
+ *   logic if CONFIG_BOARDCTL_RESET is selected.
+ *
+ * Input Parameters:
+ *   status - Status information provided with the reset event.  This
+ *            meaning of this status information is board-specific.  If not
+ *            used by a board, the value zero may be provided in calls to
+ *            board_reset().
+ *
+ * Returned Value:
+ *   If this function returns, then it was not possible to power-off the
+ *   board due to some constraints.  The return value int this case is a
+ *   board-specific reason for the failure to shutdown.
+ *
+ ****************************************************************************/
+
+int board_reset(int status)
+{
+  up_systemreset();
+  return 0;
+}
+
+#endif /* CONFIG_BOARDCTL_RESET */

Reply via email to