You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by je...@apache.org on 2023/05/10 07:07:05 UTC

[nuttx] branch master updated (5ff1e85947 -> d0139d1206)

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

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


    from 5ff1e85947 boardctl: add BOARDIOC_SOFTRESETCAUSE_RESTORE_FACTORY_INQUIRY
     new 7f4cb3057a arch/arm64: merge serial_pl011.c and qemu_serial.c
     new 6e71527af2 arch/arm64: 64 bit platform compile error reported
     new d0139d1206 arch/arm64: change config order

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 arch/arm64/src/common/arm64_arch_timer.c           |   2 +-
 arch/arm64/src/fvp-v8r/Kconfig                     |   7 -
 arch/arm64/src/fvp-v8r/Make.defs                   |   2 +-
 arch/arm64/src/fvp-v8r/fvp_boot.h                  |   2 -
 .../arm64/src/fvp-v8r/fvp_serial.c                 |  57 +-
 arch/arm64/src/fvp-v8r/serial_pl011.h              |  15 -
 arch/arm64/src/qemu/Kconfig                        |   7 -
 arch/arm64/src/qemu/qemu_boot.h                    |   2 -
 arch/arm64/src/qemu/qemu_serial.c                  | 796 +--------------------
 arch/arm64/src/qemu/qemu_serial.h                  |   3 -
 .../arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig |  14 +-
 .../fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig   |  14 +-
 .../configs/{nsh_gicv2 => citest}/defconfig        |   7 +-
 .../qemu/qemu-armv8a/configs/netnsh/defconfig      |   5 +-
 .../qemu/qemu-armv8a/configs/netnsh_smp/defconfig  |   5 +-
 .../arm64/qemu/qemu-armv8a/configs/nsh/defconfig   |   5 +-
 .../qemu/qemu-armv8a/configs/nsh_gicv2/defconfig   |   5 +-
 .../qemu/qemu-armv8a/configs/nsh_smp/defconfig     |   5 +-
 .../qemu-armv8a/configs/nsh_smp_tickless/defconfig |   5 +-
 drivers/serial/Kconfig                             |   8 +
 drivers/serial/Kconfig-pl011                       |  60 ++
 drivers/serial/Make.defs                           |   4 +
 .../src/fvp-v8r => drivers/serial}/serial_pl011.c  |  30 +-
 .../nuttx/serial/uart_pl011.h                      |  28 +-
 24 files changed, 190 insertions(+), 898 deletions(-)
 copy boards/arm/lc823450/lc823450-xgevk/src/lc823450_spi.c => arch/arm64/src/fvp-v8r/fvp_serial.c (68%)
 copy boards/arm64/qemu/qemu-armv8a/configs/{nsh_gicv2 => citest}/defconfig (94%)
 create mode 100644 drivers/serial/Kconfig-pl011
 rename {arch/arm64/src/fvp-v8r => drivers/serial}/serial_pl011.c (98%)
 copy arch/arm/src/am335x/am335x_serial.h => include/nuttx/serial/uart_pl011.h (85%)


[nuttx] 01/03: arch/arm64: merge serial_pl011.c and qemu_serial.c

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7f4cb3057a230f5996fdaadad7919748f9749fef
Author: hujun5 <hu...@xiaomi.com>
AuthorDate: Wed Mar 8 19:53:36 2023 +0800

    arch/arm64: merge serial_pl011.c and qemu_serial.c
    
    At present, the serial drivers qemu_serial.c and serial_pl011.c on the fvp-v8r and qemu platforms in arm64 are duplicated
    and need to be merged. The plan is to place them under the drivers\serial directory to create a common code module,
    so that both fvp-v8r and qemu can use the same code.
    In the future, if new platforms use pl011 serial ports, they can also be directly reused
    
    Signed-off-by: hujun5 <hu...@xiaomi.com>
---
 arch/arm64/src/fvp-v8r/Kconfig                     |   7 -
 arch/arm64/src/fvp-v8r/Make.defs                   |   2 +-
 arch/arm64/src/fvp-v8r/fvp_boot.h                  |   2 -
 .../{qemu/qemu_serial.h => fvp-v8r/fvp_serial.c}   |  75 +-
 arch/arm64/src/fvp-v8r/serial_pl011.h              |  15 -
 arch/arm64/src/qemu/Kconfig                        |   7 -
 arch/arm64/src/qemu/qemu_boot.h                    |   2 -
 arch/arm64/src/qemu/qemu_serial.c                  | 796 +--------------------
 arch/arm64/src/qemu/qemu_serial.h                  |   3 -
 .../arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig |  14 +-
 .../fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig   |  14 +-
 .../configs/{nsh_gicv2 => citest}/defconfig        |   7 +-
 .../qemu/qemu-armv8a/configs/netnsh/defconfig      |   5 +-
 .../qemu/qemu-armv8a/configs/netnsh_smp/defconfig  |   5 +-
 .../arm64/qemu/qemu-armv8a/configs/nsh/defconfig   |   5 +-
 .../qemu/qemu-armv8a/configs/nsh_gicv2/defconfig   |   5 +-
 .../qemu/qemu-armv8a/configs/nsh_smp/defconfig     |   5 +-
 .../qemu-armv8a/configs/nsh_smp_tickless/defconfig |   5 +-
 drivers/serial/Kconfig                             |   8 +
 drivers/serial/Kconfig-pl011                       |  60 ++
 drivers/serial/Make.defs                           |   4 +
 .../src/fvp-v8r => drivers/serial}/serial_pl011.c  |  30 +-
 .../nuttx/serial/uart_pl011.h                      |  31 +-
 23 files changed, 197 insertions(+), 910 deletions(-)

diff --git a/arch/arm64/src/fvp-v8r/Kconfig b/arch/arm64/src/fvp-v8r/Kconfig
index c79840f7ae..d8b4704c38 100644
--- a/arch/arm64/src/fvp-v8r/Kconfig
+++ b/arch/arm64/src/fvp-v8r/Kconfig
@@ -21,11 +21,4 @@ endchoice # FVP Chip Selection
 
 endmenu # "FVP Chip Selection"
 
-menu "FVP Peripheral Selection"
-config FVP_UART_PL011
-	bool "UART"
-	default n
-	select UART1_SERIALDRIVER
-endmenu # FVP Peripheral Selection
-
 endif # ARCH_CHIP_FVP_ARMV8R
diff --git a/arch/arm64/src/fvp-v8r/Make.defs b/arch/arm64/src/fvp-v8r/Make.defs
index 0f5d396c1b..c314e8d139 100644
--- a/arch/arm64/src/fvp-v8r/Make.defs
+++ b/arch/arm64/src/fvp-v8r/Make.defs
@@ -21,7 +21,7 @@
 include common/Make.defs
 
 # fvp-specific C source files
-CHIP_CSRCS  = fvp_boot.c serial_pl011.c
+CHIP_CSRCS  = fvp_boot.c fvp_serial.c
 
 ifeq ($(CONFIG_ARCH_EARLY_PRINT),y)
 CHIP_ASRCS  += fvp_lowputc.S
diff --git a/arch/arm64/src/fvp-v8r/fvp_boot.h b/arch/arm64/src/fvp-v8r/fvp_boot.h
index 611d23a962..0ef44f255d 100644
--- a/arch/arm64/src/fvp-v8r/fvp_boot.h
+++ b/arch/arm64/src/fvp-v8r/fvp_boot.h
@@ -31,8 +31,6 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include <arch/chip/chip.h>
-#include "arm64_internal.h"
-#include "arm64_arch.h"
 
 /****************************************************************************
  * Pre-processor Definitions
diff --git a/arch/arm64/src/qemu/qemu_serial.h b/arch/arm64/src/fvp-v8r/fvp_serial.c
similarity index 61%
copy from arch/arm64/src/qemu/qemu_serial.h
copy to arch/arm64/src/fvp-v8r/fvp_serial.c
index 815ec639a3..4d08cf373f 100644
--- a/arch/arm64/src/qemu/qemu_serial.h
+++ b/arch/arm64/src/fvp-v8r/fvp_serial.c
@@ -1,5 +1,5 @@
-/****************************************************************************
- * arch/arm64/src/qemu/qemu_serial.h
+/***************************************************************************
+ * arch/arm64/src/fvp-v8r/fvp_serial.c
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -16,46 +16,59 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  *
- ****************************************************************************/
+ ***************************************************************************/
 
-#ifndef __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H
-#define __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H
-
-/****************************************************************************
+/***************************************************************************
  * Included Files
- ****************************************************************************/
+ ***************************************************************************/
 
 #include <nuttx/config.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <string.h>
+#include <assert.h>
+#include <errno.h>
+#include <debug.h>
 
+#include <nuttx/serial/uart_pl011.h>
 #include "arm64_internal.h"
-#include "arm64_gic.h"
 
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
+#ifdef USE_SERIALDRIVER
 
-/****************************************************************************
- * Public Types
- ****************************************************************************/
+/***************************************************************************
+ * Public Functions
+ ***************************************************************************/
 
-/****************************************************************************
- * Inline Functions
- ****************************************************************************/
+/***************************************************************************
+ * Name: arm64_earlyserialinit
+ *
+ * Description:
+ *   see arm64_internal.h
+ *
+ ***************************************************************************/
 
-#ifndef __ASSEMBLY__
+void arm64_earlyserialinit(void)
+{
+  /* Enable the console UART.  The other UARTs will be initialized if and
+   * when they are first opened.
+   */
 
-/****************************************************************************
- * Public Data
- ****************************************************************************/
+  pl011_earlyserialinit();
+}
 
-#ifdef CONFIG_ARCH_CHIP_QEMU
-#define CONFIG_QEMU_UART_BASE      0x9000000
-#define CONFIG_QEMU_UART_IRQ       (GIC_SPI_INT_BASE + 1)
-#endif
+/***************************************************************************
+ * Name: arm64_serialinit
+ *
+ * Description:
+ *   see arm64_internal.h
+ *
+ ***************************************************************************/
 
-/****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
+void arm64_serialinit(void)
+{
+  pl011_serialinit();
+}
 
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H */
+#endif /* USE_SERIALDRIVER */
diff --git a/arch/arm64/src/fvp-v8r/serial_pl011.h b/arch/arm64/src/fvp-v8r/serial_pl011.h
index 0eeb0e73d3..39715a9741 100644
--- a/arch/arm64/src/fvp-v8r/serial_pl011.h
+++ b/arch/arm64/src/fvp-v8r/serial_pl011.h
@@ -35,21 +35,6 @@
  * Public Types
  ****************************************************************************/
 
-#ifdef CONFIG_FVP_UART_PL011
-#define CONFIG_UART0_BASE      0x9c090000
-#define CONFIG_UART0_IRQ       (GIC_SPI_INT_BASE + 5)
-
-#define CONFIG_UART1_BASE      0x9c0a0000
-#define CONFIG_UART1_IRQ       (GIC_SPI_INT_BASE + 6)
-
-#define CONFIG_UART2_BASE      0x9c0b0000
-#define CONFIG_UART2_IRQ       (GIC_SPI_INT_BASE + 7)
-
-#define CONFIG_UART3_BASE      0x9c0c0000
-#define CONFIG_UART3_IRQ       (GIC_SPI_INT_BASE + 8)
-
-#endif
-
 /****************************************************************************
  * Inline Functions
  ****************************************************************************/
diff --git a/arch/arm64/src/qemu/Kconfig b/arch/arm64/src/qemu/Kconfig
index 32e6b6959d..484f7bfd75 100644
--- a/arch/arm64/src/qemu/Kconfig
+++ b/arch/arm64/src/qemu/Kconfig
@@ -33,11 +33,4 @@ endchoice # Qemu Chip Selection
 
 endmenu # "Qemu Chip Selection"
 
-menu "Qemu Peripheral Selection"
-config QEMU_UART_PL011
-	bool "UART"
-	default n
-	select UART1_SERIALDRIVER
-endmenu # Qemu Peripheral Selection
-
 endif # ARCH_CHIP_QEMU
diff --git a/arch/arm64/src/qemu/qemu_boot.h b/arch/arm64/src/qemu/qemu_boot.h
index 4859535cad..301ef88db1 100644
--- a/arch/arm64/src/qemu/qemu_boot.h
+++ b/arch/arm64/src/qemu/qemu_boot.h
@@ -31,8 +31,6 @@
 #include <stdint.h>
 #include <stdbool.h>
 #include <arch/chip/chip.h>
-#include "arm64_internal.h"
-#include "arm64_arch.h"
 
 /****************************************************************************
  * Pre-processor Definitions
diff --git a/arch/arm64/src/qemu/qemu_serial.c b/arch/arm64/src/qemu/qemu_serial.c
index 563c51dc72..69e4d410f4 100644
--- a/arch/arm64/src/qemu/qemu_serial.c
+++ b/arch/arm64/src/qemu/qemu_serial.c
@@ -32,755 +32,10 @@
 #include <errno.h>
 #include <debug.h>
 
-#ifdef CONFIG_SERIAL_TERMIOS
-#  include <termios.h>
-#endif
-
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <nuttx/spinlock.h>
-#include <nuttx/init.h>
-#include <nuttx/fs/ioctl.h>
-#include <nuttx/semaphore.h>
-#include <nuttx/serial/serial.h>
-
-#include "arm64_arch.h"
+#include <nuttx/serial/uart_pl011.h>
 #include "arm64_internal.h"
-#include "qemu_serial.h"
-#include "arm64_arch_timer.h"
-#include "qemu_boot.h"
-#include "arm64_gic.h"
 
 #ifdef USE_SERIALDRIVER
-
-/***************************************************************************
- * Pre-processor Definitions
- ***************************************************************************/
-
-/* Which UART with be tty0/console and which tty1-4?  The console will
- * always be ttyS0.  If there is no console then will use the lowest
- * numbered UART.
- */
-
-/* First pick the console and ttys0.  This could be any of UART1-5 */
-
-#if defined(CONFIG_UART1_SERIAL_CONSOLE)
-#  define CONSOLE_DEV     g_uart1port         /* UART1 is console */
-#  define TTYS0_DEV       g_uart1port         /* UART1 is ttyS0 */
-#  define UART1_ASSIGNED  1
-#endif
-
-#define PL011_BIT_MASK(x, y)  (((2 << (x)) - 1) << (y))
-
-/* PL011 Uart Flags Register */
-#define PL011_FR_CTS                    BIT(0)  /* clear to send - inverted */
-#define PL011_FR_DSR                    BIT(1)  /* data set ready - inverted
-                                                 */
-#define PL011_FR_DCD                    BIT(2)  /* data carrier detect -
-                                                 * inverted */
-#define PL011_FR_BUSY                   BIT(3)  /* busy transmitting data */
-#define PL011_FR_RXFE                   BIT(4)  /* receive FIFO empty */
-#define PL011_FR_TXFF                   BIT(5)  /* transmit FIFO full */
-#define PL011_FR_RXFF                   BIT(6)  /* receive FIFO full */
-#define PL011_FR_TXFE                   BIT(7)  /* transmit FIFO empty */
-#define PL011_FR_RI                     BIT(8)  /* ring indicator - inverted */
-
-/* PL011 Integer baud rate register */
-#define PL011_IBRD_BAUD_DIVINT_MASK     0xff /* 16 bits of divider */
-
-/* PL011 Fractional baud rate register */
-#define PL011_FBRD_BAUD_DIVFRAC         0x3f
-#define PL011_FBRD_WIDTH                6u
-
-/* PL011 Receive status register / error clear register */
-#define PL011_RSR_ECR_FE                BIT(0)  /* framing error */
-#define PL011_RSR_ECR_PE                BIT(1)  /* parity error */
-#define PL011_RSR_ECR_BE                BIT(2)  /* break error */
-#define PL011_RSR_ECR_OE                BIT(3)  /* overrun error */
-
-#define PL011_RSR_ERROR_MASK            (PL011_RSR_ECR_FE | PL011_RSR_ECR_PE | \
-                                         PL011_RSR_ECR_BE | PL011_RSR_ECR_OE)
-
-/* PL011 Line Control Register  */
-#define PL011_LCRH_BRK                  BIT(0)  /* send break */
-#define PL011_LCRH_PEN                  BIT(1)  /* enable parity */
-#define PL011_LCRH_EPS                  BIT(2)  /* select even parity */
-#define PL011_LCRH_STP2                 BIT(3)  /* select two stop bits */
-#define PL011_LCRH_FEN                  BIT(4)  /* enable FIFOs */
-#define PL011_LCRH_WLEN_SHIFT           5       /* word length */
-#define PL011_LCRH_WLEN_WIDTH           2
-#define PL011_LCRH_SPS                  BIT(7)  /* stick parity bit */
-
-#define PL011_LCRH_WLEN_SIZE(x)         ((x) - 5)
-
-#define PL011_LCRH_FORMAT_MASK          (PL011_LCRH_PEN | PL011_LCRH_EPS |     \
-                                         PL011_LCRH_SPS |                      \
-                                         PL011_BIT_MASK(PL011_LCRH_WLEN_WIDTH, \
-                                                        PL011_LCRH_WLEN_SHIFT))
-
-#define PL011_LCRH_PARTIY_EVEN          (PL011_LCRH_PEN | PL011_LCRH_EPS)
-#define PL011_LCRH_PARITY_ODD           (PL011_LCRH_PEN)
-#define PL011_LCRH_PARITY_NONE          (0)
-
-/* PL011 Control Register */
-#define PL011_CR_UARTEN                 BIT(0)  /* enable uart operations */
-#define PL011_CR_SIREN                  BIT(1)  /* enable IrDA SIR */
-#define PL011_CR_SIRLP                  BIT(2)  /* IrDA SIR low power mode */
-#define PL011_CR_LBE                    BIT(7)  /* loop back enable */
-#define PL011_CR_TXE                    BIT(8)  /* transmit enable */
-#define PL011_CR_RXE                    BIT(9)  /* receive enable */
-#define PL011_CR_DTR                    BIT(10) /* data transmit ready */
-#define PL011_CR_RTS                    BIT(11) /* request to send */
-#define PL011_CR_Out1                   BIT(12)
-#define PL011_CR_Out2                   BIT(13)
-#define PL011_CR_RTSEn                  BIT(14) /* RTS hw flow control enable
-                                                 */
-#define PL011_CR_CTSEn                  BIT(15) /* CTS hw flow control enable
-                                                 */
-
-/* PL011 Interrupt Fifo Level Select Register */
-#define PL011_IFLS_TXIFLSEL_SHIFT       0   /* bits 2:0 */
-#define PL011_IFLS_TXIFLSEL_WIDTH       3
-#define PL011_IFLS_RXIFLSEL_SHIFT       3   /* bits 5:3 */
-#define PL011_IFLS_RXIFLSEL_WIDTH       3
-
-/* PL011 Interrupt Mask Set/Clear Register */
-#define PL011_IMSC_RIMIM                BIT(0)  /* RTR modem interrupt mask */
-#define PL011_IMSC_CTSMIM               BIT(1)  /* CTS modem interrupt mask */
-#define PL011_IMSC_DCDMIM               BIT(2)  /* DCD modem interrupt mask */
-#define PL011_IMSC_DSRMIM               BIT(3)  /* DSR modem interrupt mask */
-#define PL011_IMSC_RXIM                 BIT(4)  /* receive interrupt mask */
-#define PL011_IMSC_TXIM                 BIT(5)  /* transmit interrupt mask */
-#define PL011_IMSC_RTIM                 BIT(6)  /* receive timeout interrupt
-                                                 * mask */
-#define PL011_IMSC_FEIM                 BIT(7)  /* framing error interrupt
-                                                 * mask */
-#define PL011_IMSC_PEIM                 BIT(8)  /* parity error interrupt mask
-                                                 */
-#define PL011_IMSC_BEIM                 BIT(9)  /* break error interrupt mask
-                                                 */
-#define PL011_IMSC_OEIM                 BIT(10) /* overrun error interrupt
-                                                 * mask */
-
-#define PL011_IMSC_ERROR_MASK           (PL011_IMSC_FEIM |                   \
-                                         PL011_IMSC_PEIM | PL011_IMSC_BEIM | \
-                                         PL011_IMSC_OEIM)
-
-#define PL011_IMSC_MASK_ALL             (PL011_IMSC_OEIM | PL011_IMSC_BEIM | \
-                                         PL011_IMSC_PEIM | PL011_IMSC_FEIM | \
-                                         PL011_IMSC_RIMIM |                  \
-                                         PL011_IMSC_CTSMIM |                 \
-                                         PL011_IMSC_DCDMIM |                 \
-                                         PL011_IMSC_DSRMIM |                 \
-                                         PL011_IMSC_RXIM | PL011_IMSC_TXIM | \
-                                         PL011_IMSC_RTIM)
-
-/***************************************************************************
- * Private Types
- ***************************************************************************/
-
-/* UART PL011 register map structure */
-
-struct pl011_regs
-{
-  uint32_t dr;   /* data register */
-  union
-  {
-    uint32_t rsr;
-    uint32_t ecr;
-  };
-
-  uint32_t reserved_0[4];
-  uint32_t fr;   /* flags register */
-  uint32_t reserved_1;
-  uint32_t ilpr;
-  uint32_t ibrd;
-  uint32_t fbrd;
-  uint32_t lcr_h;
-  uint32_t cr;
-  uint32_t ifls;
-  uint32_t imsc;
-  uint32_t ris;
-  uint32_t mis;
-  uint32_t icr;
-  uint32_t dmacr;
-};
-
-struct pl011_config
-{
-  volatile struct pl011_regs *uart;
-  uint32_t sys_clk_freq;
-};
-
-/* Device data structure */
-
-struct pl011_data
-{
-  uint32_t baud_rate;
-  bool sbsa;
-};
-
-struct pl011_uart_port_s
-{
-  struct pl011_data data;
-  struct pl011_config config;
-  unsigned int irq_num;
-  bool is_console;
-};
-
-/***************************************************************************
- * Private Functions
- ***************************************************************************/
-
-static void pl011_enable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->cr |= PL011_CR_UARTEN;
-}
-
-static void pl011_disable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->cr &= ~PL011_CR_UARTEN;
-}
-
-static void pl011_enable_fifo(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->lcr_h |= PL011_LCRH_FEN;
-}
-
-static void pl011_disable_fifo(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->lcr_h &= ~PL011_LCRH_FEN;
-}
-
-static int pl011_set_baudrate(const struct pl011_uart_port_s *sport,
-                              uint32_t clk, uint32_t baudrate)
-{
-  const struct pl011_config *config = &sport->config;
-
-  /* Avoiding float calculations, bauddiv is left shifted by 6 */
-
-  uint64_t bauddiv =
-      (((uint64_t)clk) << PL011_FBRD_WIDTH) / (baudrate * 16U);
-
-  /* Valid bauddiv value
-   * uart_clk (min) >= 16 x baud_rate (max)
-   * uart_clk (max) <= 16 x 65535 x baud_rate (min)
-   */
-
-  if ((bauddiv < (1U << PL011_FBRD_WIDTH)) ||
-      (bauddiv > (65535U << PL011_FBRD_WIDTH)))
-    {
-      return -EINVAL;
-    }
-
-  config->uart->ibrd    = bauddiv >> PL011_FBRD_WIDTH;
-  config->uart->fbrd    = bauddiv & ((1U << PL011_FBRD_WIDTH) - 1U);
-
-  ARM64_DMB();
-
-  /* In order to internally update the contents of ibrd or fbrd, a
-   * lcr_h write must always be performed at the end
-   * ARM DDI 0183F, Pg 3-13
-   */
-
-  config->uart->lcr_h = config->uart->lcr_h;
-
-  return 0;
-}
-
-static void pl011_irq_tx_enable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->imsc |= PL011_IMSC_TXIM;
-}
-
-static void pl011_irq_tx_disable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->imsc &= ~PL011_IMSC_TXIM;
-}
-
-static void pl011_irq_rx_enable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->imsc |= PL011_IMSC_RXIM | PL011_IMSC_RTIM;
-}
-
-static void pl011_irq_rx_disable(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->imsc &= ~(PL011_IMSC_RXIM | PL011_IMSC_RTIM);
-}
-
-static int pl011_irq_tx_complete(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-
-  /* check for TX FIFO empty */
-
-  return config->uart->fr & PL011_FR_TXFE;
-}
-
-static int pl011_irq_rx_ready(const struct pl011_uart_port_s *sport)
-{
-  const struct pl011_config *config = &sport->config;
-  const struct pl011_data   *data   = &sport->data;
-
-  if (!data->sbsa && !(config->uart->cr & PL011_CR_RXE))
-    {
-      return false;
-    }
-
-  return (config->uart->imsc & PL011_IMSC_RXIM) &&
-         (!(config->uart->fr & PL011_FR_RXFE));
-}
-
-/***************************************************************************
- * Name: qemu_pl011_txready
- *
- * Description:
- *   Return true if the tranmsit fifo is not full
- *
- ***************************************************************************/
-
-static bool qemu_pl011_txready(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s  *sport  = (struct pl011_uart_port_s *)dev->priv;
-  const struct pl011_config *config = &sport->config;
-  struct pl011_data         *data   = &sport->data;
-
-  if (!data->sbsa && !(config->uart->cr & PL011_CR_TXE))
-    {
-      return false;
-    }
-
-  return (config->uart->imsc & PL011_IMSC_TXIM) &&
-         pl011_irq_tx_complete(sport);
-}
-
-/***************************************************************************
- * Name: qemu_pl011_txempty
- *
- * Description:
- *   Return true if the transmit fifo is empty
- *
- ***************************************************************************/
-
-static bool qemu_pl011_txempty(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s *sport = (struct pl011_uart_port_s *)dev->priv;
-
-  return pl011_irq_tx_complete(sport);
-}
-
-/***************************************************************************
- * Name: qemu_pl011_send
- *
- * Description:
- *   This method will send one byte on the UART
- *
- ***************************************************************************/
-
-static void qemu_pl011_send(struct uart_dev_s *dev, int ch)
-{
-  struct pl011_uart_port_s  *sport  = (struct pl011_uart_port_s *)dev->priv;
-  const struct pl011_config *config = &sport->config;
-
-  config->uart->dr = ch;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_rxavailable
- *
- * Description:
- *   Return true if the receive fifo is not empty
- *
- ***************************************************************************/
-
-static bool qemu_pl011_rxavailable(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s  *sport  = (struct pl011_uart_port_s *)dev->priv;
-  const struct pl011_config *config = &sport->config;
-  struct pl011_data         *data   = &sport->data;
-
-  if (!data->sbsa &&
-      (!(config->uart->cr & PL011_CR_UARTEN) ||
-       !(config->uart->cr & PL011_CR_RXE)))
-    {
-      return false;
-    }
-
-  return (config->uart->fr & PL011_FR_RXFE) == 0U;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_rxint
- *
- * Description:
- *   Call to enable or disable RX interrupts
- *
- ***************************************************************************/
-
-static void qemu_pl011_rxint(struct uart_dev_s *dev, bool enable)
-{
-  struct pl011_uart_port_s *sport = (struct pl011_uart_port_s *)dev->priv;
-
-  if (enable)
-    {
-      pl011_irq_rx_enable(sport);
-    }
-  else
-    {
-      pl011_irq_rx_disable(sport);
-    }
-}
-
-/***************************************************************************
- * Name: qemu_pl011_txint
- *
- * Description:
- *   Call to enable or disable TX interrupts
- *
- ***************************************************************************/
-
-static void qemu_pl011_txint(struct uart_dev_s *dev, bool enable)
-{
-  struct pl011_uart_port_s *sport = (struct pl011_uart_port_s *)dev->priv;
-  irqstate_t flags;
-
-  flags = enter_critical_section();
-
-  if (enable)
-    {
-      pl011_irq_tx_enable(sport);
-
-      /* Fake a TX interrupt here by just calling uart_xmitchars() with
-       * interrupts disabled (note this may recurse).
-       */
-
-      uart_xmitchars(dev);
-    }
-  else
-    {
-      pl011_irq_tx_disable(sport);
-    }
-
-  leave_critical_section(flags);
-}
-
-/***************************************************************************
- * Name: qemu_pl011_receive
- *
- * Description:
- *   Called (usually) from the interrupt level to receive one
- *   character from the UART.  Error bits associated with the
- *   receipt are provided in the return 'status'.
- *
- ***************************************************************************/
-
-static int qemu_pl011_receive(struct uart_dev_s *dev, unsigned int *status)
-{
-  struct pl011_uart_port_s  *sport  = (struct pl011_uart_port_s *)dev->priv;
-  const struct pl011_config *config = &sport->config;
-  unsigned int              rx;
-
-  rx = config->uart->dr;
-
-  *status = 0;
-
-  return rx;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_ioctl
- *
- * Description:
- *   All ioctl calls will be routed through this method
- *   for current qemu configure,
- *
- ***************************************************************************/
-
-static int qemu_pl011_ioctl(struct file *filep, int cmd, unsigned long arg)
-{
-  int ret = OK;
-  UNUSED(filep);
-  UNUSED(arg);
-
-  switch (cmd)
-    {
-      case TIOCSBRK:  /* BSD compatibility: Turn break on, unconditionally */
-      case TIOCCBRK:  /* BSD compatibility: Turn break off, unconditionally */
-      default:
-        {
-          ret = -ENOTTY;
-          break;
-        }
-    }
-
-  return ret;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_irq_handler (and front-ends)
- *
- * Description:
- *   This is the UART interrupt handler.  It will be invoked when an
- *   interrupt is received on the 'irq'.  It should call uart_xmitchars or
- *   uart_recvchars to perform the appropriate data transfers.  The
- *   interrupt handling logic must be able to map the 'arg' to the
- *   appropriate uart_dev_s structure in order to call these functions.
- *
- ***************************************************************************/
-
-static int qemu_pl011_irq_handler(int irq, void *context, void *arg)
-{
-  struct uart_dev_s         *dev = (struct uart_dev_s *)arg;
-  struct pl011_uart_port_s  *sport;
-  UNUSED(irq);
-  UNUSED(context);
-
-  DEBUGASSERT(dev != NULL && dev->priv != NULL);
-  sport = (struct pl011_uart_port_s *)dev->priv;
-
-  if (pl011_irq_rx_ready(sport))
-    {
-      uart_recvchars(dev);
-    }
-
-  if (qemu_pl011_txready(dev))
-    {
-      uart_xmitchars(dev);
-    }
-
-  return OK;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_detach
- *
- * Description:
- *   Detach UART interrupts.  This method is called when the serial port is
- *   closed normally just before the shutdown method is called.  The
- *   exception is the serial console which is never shutdown.
- *
- ***************************************************************************/
-
-static void qemu_pl011_detach(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s *sport = (struct pl011_uart_port_s *)dev->priv;
-
-  up_disable_irq(sport->irq_num);
-  irq_detach(sport->irq_num);
-}
-
-/***************************************************************************
- * Name: qemu_pl011_attach
- *
- * Description:
- *   Configure the UART to operation in interrupt driven mode.
- *   This method is called when the serial port is opened.
- *   Normally, this is just after the setup() method is called,
- *   however, the serial console may operate in
- *   a non-interrupt driven mode during the boot phase.
- *
- *   RX and TX interrupts are not enabled when by the attach method
- *   (unless the hardware supports multiple levels of interrupt
- *   enabling).  The RX and TX interrupts are not enabled until
- *   the txint() and rxint() methods are called.
- *
- ***************************************************************************/
-
-static int qemu_pl011_attach(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s  *sport;
-  struct pl011_data         *data;
-  int                       ret;
-
-  sport = (struct pl011_uart_port_s *)dev->priv;
-  data  = &sport->data;
-
-  ret = irq_attach(sport->irq_num, qemu_pl011_irq_handler, dev);
-
-  if (ret == OK)
-    {
-      up_enable_irq(sport->irq_num);
-    }
-  else
-    {
-      sinfo("error ret=%d\n", ret);
-    }
-
-  if (!data->sbsa)
-    {
-      pl011_enable(sport);
-    }
-
-  return ret;
-}
-
-/***************************************************************************
- * Name: qemu_pl011_shutdown
- *
- * Description:
- *   Disable the UART.  This method is called when the serial
- *   port is closed
- *
- ***************************************************************************/
-
-static void qemu_pl011_shutdown(struct uart_dev_s *dev)
-{
-  UNUSED(dev);
-  sinfo("%s: call unexpected\n", __func__);
-}
-
-static int qemu_pl011_setup(struct uart_dev_s *dev)
-{
-  struct pl011_uart_port_s  *sport  = (struct pl011_uart_port_s *)dev->priv;
-  const struct pl011_config *config = &sport->config;
-  struct pl011_data         *data   = &sport->data;
-  int                       ret;
-  uint32_t                  lcrh;
-  irqstate_t                i_flags;
-
-  i_flags = up_irq_save();
-
-  /* If working in SBSA mode, we assume that UART is already configured,
-   * or does not require configuration at all (if UART is emulated by
-   * virtualization software).
-   */
-
-  if (!data->sbsa)
-    {
-      /* disable the uart */
-
-      pl011_disable(sport);
-      pl011_disable_fifo(sport);
-
-      /* Set baud rate */
-
-      ret = pl011_set_baudrate(sport, config->sys_clk_freq,
-                               data->baud_rate);
-      if (ret != 0)
-        {
-          up_irq_restore(i_flags);
-          return ret;
-        }
-
-      /* Setting the default character format */
-
-      lcrh  = config->uart->lcr_h & ~(PL011_LCRH_FORMAT_MASK);
-      lcrh  &= ~(BIT(0) | BIT(7));
-      lcrh  |= PL011_LCRH_WLEN_SIZE(8) << PL011_LCRH_WLEN_SHIFT;
-      config->uart->lcr_h = lcrh;
-
-      /* Enabling the FIFOs */
-
-      pl011_enable_fifo(sport);
-    }
-
-  /* initialize all IRQs as masked */
-
-  config->uart->imsc    = 0U;
-  config->uart->icr     = PL011_IMSC_MASK_ALL;
-
-  if (!data->sbsa)
-    {
-      config->uart->dmacr = 0U;
-      ARM64_ISB();
-      config->uart->cr  &= ~(BIT(14) | BIT(15) | BIT(1));
-      config->uart->cr  |= PL011_CR_RXE | PL011_CR_TXE;
-      ARM64_ISB();
-    }
-
-  up_irq_restore(i_flags);
-
-  return 0;
-}
-
-/***************************************************************************
- * Private Data
- ***************************************************************************/
-
-/* Serial driver UART operations */
-
-static const struct uart_ops_s g_uart_ops =
-{
-  .setup    = qemu_pl011_setup,
-  .shutdown = qemu_pl011_shutdown,
-  .attach   = qemu_pl011_attach,
-  .detach   = qemu_pl011_detach,
-  .ioctl    = qemu_pl011_ioctl,
-  .receive  = qemu_pl011_receive,
-  .rxint    = qemu_pl011_rxint,
-  .rxavailable = qemu_pl011_rxavailable,
-#ifdef CONFIG_SERIAL_IFLOWCONTROL
-  .rxflowcontrol    = NULL,
-#endif
-  .send     = qemu_pl011_send,
-  .txint    = qemu_pl011_txint,
-  .txready  = qemu_pl011_txready,
-  .txempty  = qemu_pl011_txempty,
-};
-
-/* This describes the state of the uart1 port. */
-
-static struct pl011_uart_port_s g_uart1priv =
-{
-  .data   =
-    {
-      .baud_rate  = CONFIG_UART1_BAUD,
-      .sbsa       = false,
-    },
-
-  .config =
-    {
-      .uart           = (volatile struct pl011_regs *)CONFIG_QEMU_UART_BASE,
-      .sys_clk_freq   = 24000000,
-    },
-
-    .irq_num       = CONFIG_QEMU_UART_IRQ,
-    .is_console   = 1,
-};
-
-/* I/O buffers */
-
-#ifdef CONFIG_QEMU_UART_PL011
-
-static char                 g_uart1rxbuffer[CONFIG_UART1_RXBUFSIZE];
-static char                 g_uart1txbuffer[CONFIG_UART1_TXBUFSIZE];
-
-static struct uart_dev_s    g_uart1port =
-{
-  .recv  =
-    {
-      .size   = CONFIG_UART1_RXBUFSIZE,
-      .buffer = g_uart1rxbuffer,
-    },
-
-  .xmit  =
-    {
-      .size   = CONFIG_UART1_TXBUFSIZE,
-      .buffer = g_uart1txbuffer,
-    },
-
-  .ops   = &g_uart_ops,
-  .priv  = &g_uart1priv,
-};
-
-#endif
-
 /***************************************************************************
  * Public Functions
  ***************************************************************************/
@@ -798,38 +53,8 @@ void arm64_earlyserialinit(void)
   /* Enable the console UART.  The other UARTs will be initialized if and
    * when they are first opened.
    */
-#ifdef CONSOLE_DEV
-  CONSOLE_DEV.isconsole = true;
-  qemu_pl011_setup(&CONSOLE_DEV);
-#endif
-}
-
-/***************************************************************************
- * Name: up_putc
- *
- * Description:
- *   Provide priority, low-level access to support OS debug
- *   writes
- *
- ***************************************************************************/
 
-int up_putc(int ch)
-{
-#ifdef CONSOLE_DEV
-  struct uart_dev_s *dev = &CONSOLE_DEV;
-
-  /* Check for LF */
-
-  if (ch == '\n')
-    {
-      /* Add CR */
-
-      qemu_pl011_send(dev, '\r');
-    }
-
-  qemu_pl011_send(dev, ch);
-#endif
-  return ch;
+  pl011_earlyserialinit();
 }
 
 /***************************************************************************
@@ -842,22 +67,7 @@ int up_putc(int ch)
 
 void arm64_serialinit(void)
 {
-#ifdef CONSOLE_DEV
-  int ret;
-
-  ret = uart_register("/dev/console", &CONSOLE_DEV);
-  if (ret < 0)
-    {
-      sinfo("error at register dev/console, ret =%d\n", ret);
-    }
-
-  ret = uart_register("/dev/ttyS0", &TTYS0_DEV);
-
-  if (ret < 0)
-    {
-      sinfo("error at register dev/ttyS0, ret =%d\n", ret);
-    }
-#endif
+  pl011_serialinit();
 }
 
 #endif /* USE_SERIALDRIVER */
diff --git a/arch/arm64/src/qemu/qemu_serial.h b/arch/arm64/src/qemu/qemu_serial.h
index 815ec639a3..e6b420f281 100644
--- a/arch/arm64/src/qemu/qemu_serial.h
+++ b/arch/arm64/src/qemu/qemu_serial.h
@@ -27,9 +27,6 @@
 
 #include <nuttx/config.h>
 
-#include "arm64_internal.h"
-#include "arm64_gic.h"
-
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
index 11222b7444..9a7dd51de8 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
@@ -33,7 +33,19 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_PROCFS_REGISTER=y
 CONFIG_FS_ROMFS=y
-CONFIG_FVP_UART_PL011=y
+CONFIG_UART0_PL011=y
+CONFIG_UART0_BASE=0x9c090000
+CONFIG_UART0_IRQ=37
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9c0a0000
+CONFIG_UART1_IRQ=38
+CONFIG_UART2_PL011=y
+CONFIG_UART2_BASE=0x9c0b0000
+CONFIG_UART2_IRQ=39
+CONFIG_UART3_PL011=y
+CONFIG_UART3_BASE=0x9c0c0000
+CONFIG_UART3_IRQ=40
+CONFIG_UART_PL011=y
 CONFIG_IDLETHREAD_STACKSIZE=8192
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
index ffd4b8c486..22fd417b8d 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
@@ -33,7 +33,19 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_PROCFS_REGISTER=y
 CONFIG_FS_ROMFS=y
-CONFIG_FVP_UART_PL011=y
+CONFIG_UART0_PL011=y
+CONFIG_UART0_BASE=0x9c090000
+CONFIG_UART0_IRQ=37
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9c0a0000
+CONFIG_UART1_IRQ=38
+CONFIG_UART2_PL011=y
+CONFIG_UART2_BASE=0x9c0b0000
+CONFIG_UART2_IRQ=39
+CONFIG_UART3_PL011=y
+CONFIG_UART3_BASE=0x9c0c0000
+CONFIG_UART3_IRQ=40
+CONFIG_UART_PL011=y
 CONFIG_IDLETHREAD_STACKSIZE=8192
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
similarity index 94%
copy from boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
copy to boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
index bf88943447..b2c18b5552 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
@@ -13,7 +13,6 @@ CONFIG_ARCH_CHIP="qemu"
 CONFIG_ARCH_CHIP_QEMU=y
 CONFIG_ARCH_CHIP_QEMU_A53=y
 CONFIG_ARCH_INTERRUPTSTACK=4096
-CONFIG_ARM_GIC_VERSION=2
 CONFIG_BUILTIN=y
 CONFIG_DEBUG_ASSERTIONS=y
 CONFIG_DEBUG_ERROR=y
@@ -44,7 +43,10 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -60,7 +62,6 @@ CONFIG_START_YEAR=2022
 CONFIG_SYMTAB_ORDEREDBYNAME=y
 CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_SYSTEM=y
-CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_UART1_SERIAL_CONSOLE=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
index 05d91bbc78..48397c7174 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
@@ -59,7 +59,10 @@ CONFIG_NSH_FILEIOSIZE=512
 CONFIG_NSH_READLINE=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
 CONFIG_RAW_BINARY=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
index 88733f9011..ec582e26ac 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
@@ -61,7 +61,10 @@ CONFIG_NSH_FILEIOSIZE=512
 CONFIG_NSH_READLINE=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
 CONFIG_RAW_BINARY=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
index c1d0d712c7..cc0f09e2c6 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
@@ -45,7 +45,10 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
index bf88943447..469550af2c 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
@@ -44,7 +44,10 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
index 858b59a6d3..a69116a788 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
@@ -43,7 +43,10 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=16384
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
index 43f67e6709..a143f19244 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
@@ -43,7 +43,10 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=16384
-CONFIG_QEMU_UART_PL011=y
+CONFIG_UART1_PL011=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 7db9c16524..7d1187f543 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -41,6 +41,14 @@ config SERIAL_CONSOLE
 	bool
 	default n
 
+menuconfig UART_PL011
+	bool "PL011 Chip support"
+	default n
+
+if UART_PL011
+source "drivers/serial/Kconfig-pl011"
+endif
+
 menuconfig 16550_UART
 	bool "16550 UART Chip support"
 	select ARCH_HAVE_SERIAL_TERMIOS
diff --git a/drivers/serial/Kconfig-pl011 b/drivers/serial/Kconfig-pl011
new file mode 100644
index 0000000000..9d562761bc
--- /dev/null
+++ b/drivers/serial/Kconfig-pl011
@@ -0,0 +1,60 @@
+#
+# For a description of the syntax of this configuration file,
+# see the file kconfig-language.txt in the NuttX tools repository.
+#
+
+if UART_PL011
+
+config UART0_PL011
+	bool "UART0 PL011"
+	select UART0_SERIALDRIVER
+	default n
+
+config UART1_PL011
+	bool "UART1 PL011"
+	select UART1_SERIALDRIVER
+	default n
+
+config UART2_PL011
+	bool "UART2 PL011"
+	select UART2_SERIALDRIVER
+	default n
+
+config UART3_PL011
+	bool "UART3 PL011"
+	select UART3_SERIALDRIVER
+	default n
+
+config UART0_BASE
+	hex "UART0 base address"
+	depends on UART0_PL011
+
+config UART1_BASE
+	hex "UART1 base address"
+	depends on UART1_PL011
+
+config UART2_BASE
+	hex "UART2 base address"
+	depends on UART2_PL011
+
+config UART3_BASE
+	hex "UART3 base address"
+	depends on UART3_PL011
+
+config UART0_IRQ
+	int "PL011 UART0 IRQ number"
+	depends on UART0_PL011
+
+config UART1_IRQ
+	int "PL011 UART1 IRQ number"
+	depends on UART1_PL011
+
+config UART2_IRQ
+	int "PL011 UART2 IRQ number"
+	depends on UART2_PL011
+
+config UART3_IRQ
+	int "PL011 UART3 IRQ number"
+	depends on UART3_PL011
+
+endif # UART_PL011
diff --git a/drivers/serial/Make.defs b/drivers/serial/Make.defs
index 1486d58ab1..8270a2df4d 100644
--- a/drivers/serial/Make.defs
+++ b/drivers/serial/Make.defs
@@ -22,6 +22,10 @@
 
 CSRCS += serial.c serial_io.c
 
+ifeq ($(CONFIG_UART_PL011),y)
+  CSRCS += serial_pl011.c
+endif
+
 ifeq ($(CONFIG_SERIAL_RXDMA),y)
   CSRCS += serial_dma.c
 else ifeq ($(CONFIG_SERIAL_TXDMA),y)
diff --git a/arch/arm64/src/fvp-v8r/serial_pl011.c b/drivers/serial/serial_pl011.c
similarity index 98%
rename from arch/arm64/src/fvp-v8r/serial_pl011.c
rename to drivers/serial/serial_pl011.c
index f3eae01bcd..600ac0bc4f 100644
--- a/arch/arm64/src/fvp-v8r/serial_pl011.c
+++ b/drivers/serial/serial_pl011.c
@@ -1,5 +1,5 @@
 /***************************************************************************
- * arch/arm64/src/fvp-v8r/serial_pl011.c
+ * drivers/serial/serial_pl011.c
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -43,16 +43,9 @@
 #include <nuttx/fs/ioctl.h>
 #include <nuttx/semaphore.h>
 #include <nuttx/serial/serial.h>
+#include <nuttx/serial/uart_pl011.h>
 
-#include "arm64_arch.h"
-#include "arm64_internal.h"
-#include "serial_pl011.h"
-#include "arm64_arch_timer.h"
-#include "fvp_boot.h"
-#include "arm64_gic.h"
-#include "chip.h"
-
-#ifdef USE_SERIALDRIVER
+#ifdef CONFIG_UART_PL011
 
 /***************************************************************************
  * Pre-processor Definitions
@@ -72,6 +65,7 @@
 #endif
 
 #define PL011_BIT_MASK(x, y)  (((2 << (x)) - 1) << (y))
+#define BIT(n)                ((1UL) << (n))
 
 /* PL011 Uart Flags Register */
 #define PL011_FR_CTS                    BIT(0)  /* clear to send - inverted */
@@ -285,8 +279,6 @@ static int pl011_set_baudrate(const struct pl011_uart_port_s *sport,
   config->uart->ibrd    = bauddiv >> PL011_FBRD_WIDTH;
   config->uart->fbrd    = bauddiv & ((1U << PL011_FBRD_WIDTH) - 1U);
 
-  ARM64_DMB();
-
   /* In order to internally update the contents of ibrd or fbrd, a
    * lcr_h write must always be performed at the end
    * ARM DDI 0183F, Pg 3-13
@@ -697,10 +689,8 @@ static int pl011_setup(struct uart_dev_s *dev)
   if (!data->sbsa)
     {
       config->uart->dmacr = 0U;
-      ARM64_ISB();
       config->uart->cr  &= ~(BIT(14) | BIT(15) | BIT(1));
       config->uart->cr  |= PL011_CR_RXE | PL011_CR_TXE;
-      ARM64_ISB();
     }
 
   up_irq_restore(i_flags);
@@ -781,14 +771,14 @@ static struct uart_dev_s    g_uart1port =
  ***************************************************************************/
 
 /***************************************************************************
- * Name: arm64_earlyserialinit
+ * Name: pl011_earlyserialinit
  *
  * Description:
- *   see arm64_internal.h
+ *   see nuttx/serial/uart_pl011.h
  *
  ***************************************************************************/
 
-void arm64_earlyserialinit(void)
+void pl011_earlyserialinit(void)
 {
   /* Enable the console UART.  The other UARTs will be initialized if and
    * when they are first opened.
@@ -829,14 +819,14 @@ int up_putc(int ch)
 }
 
 /***************************************************************************
- * Name: arm64_serialinit
+ * Name: pl011_serialinit
  *
  * Description:
- *   see arm64_internal.h
+ *   see nuttx/serial/uart_pl011.h
  *
  ***************************************************************************/
 
-void arm64_serialinit(void)
+void pl011_serialinit(void)
 {
 #ifdef CONSOLE_DEV
   int ret;
diff --git a/arch/arm64/src/qemu/qemu_serial.h b/include/nuttx/serial/uart_pl011.h
similarity index 81%
copy from arch/arm64/src/qemu/qemu_serial.h
copy to include/nuttx/serial/uart_pl011.h
index 815ec639a3..52de87d9bf 100644
--- a/arch/arm64/src/qemu/qemu_serial.h
+++ b/include/nuttx/serial/uart_pl011.h
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/arm64/src/qemu/qemu_serial.h
+ * include/nuttx/serial/uart_pl011.h
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -18,8 +18,8 @@
  *
  ****************************************************************************/
 
-#ifndef __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H
-#define __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H
+#ifndef __INCLUDE_NUTTX_SERIAL_UART_PL011_H
+#define __INCLUDE_NUTTX_SERIAL_UART_PL011_H
 
 /****************************************************************************
  * Included Files
@@ -27,35 +27,30 @@
 
 #include <nuttx/config.h>
 
-#include "arm64_internal.h"
-#include "arm64_gic.h"
+#ifdef CONFIG_UART_PL011
 
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
 
 /****************************************************************************
- * Public Types
+ * Pre-processor Definitions
  ****************************************************************************/
 
 /****************************************************************************
- * Inline Functions
+ * Public Functions Definitions
  ****************************************************************************/
 
-#ifndef __ASSEMBLY__
+void pl011_earlyserialinit(void);
+
+void pl011_serialinit(void);
 
 /****************************************************************************
- * Public Data
+ * Public Types
  ****************************************************************************/
 
-#ifdef CONFIG_ARCH_CHIP_QEMU
-#define CONFIG_QEMU_UART_BASE      0x9000000
-#define CONFIG_QEMU_UART_IRQ       (GIC_SPI_INT_BASE + 1)
-#endif
-
 /****************************************************************************
- * Public Function Prototypes
+ * Inline Functions
  ****************************************************************************/
-
-#endif /* __ASSEMBLY__ */
-#endif /* __ARCH_ARM64_SRC_QEMU_QEMU_SERIAL_H */
+#endif  /* CONFIG_UART_PL011 */
+#endif /* __INCLUDE_NUTTX_SERIAL_UART_PL011_H */


[nuttx] 03/03: arch/arm64: change config order

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit d0139d1206d8383a7b7c34bd694ca2a4d8ca1d50
Author: hujun5 <hu...@xiaomi.com>
AuthorDate: Wed May 10 08:47:05 2023 +0800

    arch/arm64: change config order
    
    Signed-off-by: hujun5 <hu...@xiaomi.com>
---
 .../arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig | 26 +++++++++++-----------
 .../fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig   | 26 +++++++++++-----------
 .../qemu/qemu-armv8a/configs/citest/defconfig      |  8 +++----
 .../qemu/qemu-armv8a/configs/netnsh/defconfig      |  8 +++----
 .../qemu/qemu-armv8a/configs/netnsh_smp/defconfig  |  8 +++----
 .../arm64/qemu/qemu-armv8a/configs/nsh/defconfig   |  8 +++----
 .../qemu/qemu-armv8a/configs/nsh_gicv2/defconfig   |  8 +++----
 .../qemu/qemu-armv8a/configs/nsh_smp/defconfig     |  8 +++----
 .../qemu-armv8a/configs/nsh_smp_tickless/defconfig |  8 +++----
 9 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
index 9a7dd51de8..bf1a985d2f 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh/defconfig
@@ -33,19 +33,6 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_PROCFS_REGISTER=y
 CONFIG_FS_ROMFS=y
-CONFIG_UART0_PL011=y
-CONFIG_UART0_BASE=0x9c090000
-CONFIG_UART0_IRQ=37
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9c0a0000
-CONFIG_UART1_IRQ=38
-CONFIG_UART2_PL011=y
-CONFIG_UART2_BASE=0x9c0b0000
-CONFIG_UART2_IRQ=39
-CONFIG_UART3_PL011=y
-CONFIG_UART3_BASE=0x9c0c0000
-CONFIG_UART3_IRQ=40
-CONFIG_UART_PL011=y
 CONFIG_IDLETHREAD_STACKSIZE=8192
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
@@ -76,5 +63,18 @@ CONFIG_SYSTEM_SYSTEM=y
 CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
+CONFIG_UART0_BASE=0x9c090000
+CONFIG_UART0_IRQ=37
+CONFIG_UART0_PL011=y
+CONFIG_UART1_BASE=0x9c0a0000
+CONFIG_UART1_IRQ=38
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART2_BASE=0x9c0b0000
+CONFIG_UART2_IRQ=39
+CONFIG_UART2_PL011=y
+CONFIG_UART3_BASE=0x9c0c0000
+CONFIG_UART3_IRQ=40
+CONFIG_UART3_PL011=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
index 22fd417b8d..ea25788059 100644
--- a/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
+++ b/boards/arm64/fvp-v8r/fvp-armv8r/configs/nsh_smp/defconfig
@@ -33,19 +33,6 @@ CONFIG_EXPERIMENTAL=y
 CONFIG_FS_PROCFS=y
 CONFIG_FS_PROCFS_REGISTER=y
 CONFIG_FS_ROMFS=y
-CONFIG_UART0_PL011=y
-CONFIG_UART0_BASE=0x9c090000
-CONFIG_UART0_IRQ=37
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9c0a0000
-CONFIG_UART1_IRQ=38
-CONFIG_UART2_PL011=y
-CONFIG_UART2_BASE=0x9c0b0000
-CONFIG_UART2_IRQ=39
-CONFIG_UART3_PL011=y
-CONFIG_UART3_BASE=0x9c0c0000
-CONFIG_UART3_IRQ=40
-CONFIG_UART_PL011=y
 CONFIG_IDLETHREAD_STACKSIZE=8192
 CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
@@ -79,5 +66,18 @@ CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_SMP=y
+CONFIG_UART0_BASE=0x9c090000
+CONFIG_UART0_IRQ=37
+CONFIG_UART0_PL011=y
+CONFIG_UART1_BASE=0x9c0a0000
+CONFIG_UART1_IRQ=38
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART2_BASE=0x9c0b0000
+CONFIG_UART2_IRQ=39
+CONFIG_UART2_PL011=y
+CONFIG_UART3_BASE=0x9c0c0000
+CONFIG_UART3_IRQ=40
+CONFIG_UART3_PL011=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
index b2c18b5552..9644187caa 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/citest/defconfig
@@ -43,10 +43,6 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -64,5 +60,9 @@ CONFIG_SYSTEM_NSH=y
 CONFIG_SYSTEM_SYSTEM=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
index 48397c7174..d3bb170182 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/netnsh/defconfig
@@ -59,10 +59,6 @@ CONFIG_NSH_FILEIOSIZE=512
 CONFIG_NSH_READLINE=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
 CONFIG_RAW_BINARY=y
@@ -86,4 +82,8 @@ CONFIG_SYSTEM_TELNETD_SESSION_STACKSIZE=8192
 CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
index ec582e26ac..cba974ea4b 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/netnsh_smp/defconfig
@@ -61,10 +61,6 @@ CONFIG_NSH_FILEIOSIZE=512
 CONFIG_NSH_READLINE=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
 CONFIG_RAW_BINARY=y
@@ -91,4 +87,8 @@ CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_SMP=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
index cc0f09e2c6..80ada4a69a 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh/defconfig
@@ -45,10 +45,6 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -67,5 +63,9 @@ CONFIG_SYSTEM_SYSTEM=y
 CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
index 469550af2c..aa5512b078 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig
@@ -44,10 +44,6 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=8192
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -66,5 +62,9 @@ CONFIG_SYSTEM_SYSTEM=y
 CONFIG_SYSTEM_TIME64=y
 CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
index a69116a788..307fb19e21 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp/defconfig
@@ -43,10 +43,6 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=16384
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -68,5 +64,9 @@ CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_OSTEST_STACKSIZE=16384
 CONFIG_TESTING_SMP=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000
diff --git a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
index a143f19244..296d298389 100644
--- a/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
+++ b/boards/arm64/qemu/qemu-armv8a/configs/nsh_smp_tickless/defconfig
@@ -43,10 +43,6 @@ CONFIG_NSH_READLINE=y
 CONFIG_NSH_ROMFSETC=y
 CONFIG_PREALLOC_TIMERS=4
 CONFIG_PTHREAD_STACK_MIN=16384
-CONFIG_UART1_PL011=y
-CONFIG_UART1_BASE=0x9000000
-CONFIG_UART1_IRQ=33
-CONFIG_UART_PL011=y
 CONFIG_RAMLOG=y
 CONFIG_RAM_SIZE=134217728
 CONFIG_RAM_START=0x40000000
@@ -69,5 +65,9 @@ CONFIG_TESTING_GETPRIME=y
 CONFIG_TESTING_OSTEST=y
 CONFIG_TESTING_OSTEST_STACKSIZE=16384
 CONFIG_TESTING_SMP=y
+CONFIG_UART1_BASE=0x9000000
+CONFIG_UART1_IRQ=33
+CONFIG_UART1_PL011=y
 CONFIG_UART1_SERIAL_CONSOLE=y
+CONFIG_UART_PL011=y
 CONFIG_USEC_PER_TICK=1000


[nuttx] 02/03: arch/arm64: 64 bit platform compile error reported

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6e71527af2400a40bc4396f569f5972c4ede533c
Author: hujun5 <hu...@xiaomi.com>
AuthorDate: Tue Mar 28 19:21:17 2023 +0800

    arch/arm64: 64 bit platform compile error reported
    
    compile error log:
    common/arm64_arch_timer.c: In function 'arm64_tick_max_delay':
    common/arm64_arch_timer.c:178:12: error: conversion from 'long unsigned int' to 'clock_t' {aka 'unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Werror=overflow]
      178 |   *ticks = UINT64_MAX;
          |            ^~~~~~~~~~
    
    Signed-off-by: hujun5 <hu...@xiaomi.com>
---
 arch/arm64/src/common/arm64_arch_timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/src/common/arm64_arch_timer.c b/arch/arm64/src/common/arm64_arch_timer.c
index 06489a3070..21fc07c3ad 100644
--- a/arch/arm64/src/common/arm64_arch_timer.c
+++ b/arch/arm64/src/common/arm64_arch_timer.c
@@ -175,7 +175,7 @@ static int arm64_tick_max_delay(struct oneshot_lowerhalf_s *lower,
 {
   DEBUGASSERT(ticks != NULL);
 
-  *ticks = UINT64_MAX;
+  *ticks = (clock_t)UINT64_MAX;
 
   return OK;
 }