[PATCH] arm: moxa: add nport6600 platform
Sergei Antonov
saproj at gmail.com
Mon Jul 31 20:43:29 CEST 2023
Support for NPort 6600 Series RS-232/422/485 secure terminal servers.
Technical specifications:
FA526 ARMv4 CPU, 64 MB of RAM, 16 MB NOR flash, 100 Mbit/s Ethernet,
optional expansion modules, up to 32 RS-232/422/485 ports.
Signed-off-by: Sergei Antonov <saproj at gmail.com>
---
arch/arm/Kconfig | 9 +++
arch/arm/dts/nport6600.dts | 134 +++++++++++++++++++++++++++++++
board/moxa/nport6600/Kconfig | 15 ++++
board/moxa/nport6600/MAINTAINERS | 7 ++
board/moxa/nport6600/Makefile | 3 +
board/moxa/nport6600/nport6600.c | 78 ++++++++++++++++++
configs/nport6600_defconfig | 129 +++++++++++++++++++++++++++++
include/configs/nport6600.h | 13 +++
8 files changed, 388 insertions(+)
create mode 100644 arch/arm/dts/nport6600.dts
create mode 100644 board/moxa/nport6600/Kconfig
create mode 100644 board/moxa/nport6600/MAINTAINERS
create mode 100644 board/moxa/nport6600/Makefile
create mode 100644 board/moxa/nport6600/nport6600.c
create mode 100644 configs/nport6600_defconfig
create mode 100644 include/configs/nport6600.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 97c25b4f146d..de5b746b93c9 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -705,6 +705,14 @@ config TARGET_BCMNS3
ARMv8 Cortex-A72 processors targeting a broad range of networking
applications.
+config TARGET_NPORT6600
+ bool "Support NPort 6600"
+ select CPU_ARM720T
+ help
+ Support for NPort 6600 Series RS-232/422/485 secure terminal servers.
+ FA526 ARMv4 CPU, 64 MB of RAM, 16 MB NOR flash, 100 Mbit/s Ethernet,
+ optional expansion modules, up to 32 RS-232/422/485 ports.
+
config ARCH_EXYNOS
bool "Samsung EXYNOS"
select DM
@@ -2312,6 +2320,7 @@ source "board/hisilicon/hikey960/Kconfig"
source "board/hisilicon/poplar/Kconfig"
source "board/isee/igep003x/Kconfig"
source "board/kontron/sl28/Kconfig"
+source "board/moxa/nport6600/Kconfig"
source "board/myir/mys_6ulx/Kconfig"
source "board/samsung/common/Kconfig"
source "board/siemens/common/Kconfig"
diff --git a/arch/arm/dts/nport6600.dts b/arch/arm/dts/nport6600.dts
new file mode 100644
index 000000000000..ea268ed16d9b
--- /dev/null
+++ b/arch/arm/dts/nport6600.dts
@@ -0,0 +1,134 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ model = "MOXA NPort 6600 Series";
+ compatible = "moxa,nport6600";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ memory at 0 {
+ device_type = "memory";
+ reg = <0x0 0x4000000>;
+ };
+
+ ahb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ device_type = "soc";
+ ranges;
+ bootph-all;
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ bootph-all;
+
+ uart1: serial at 98200020 {
+ compatible = "ns16550a";
+ reg = <0x98200020 0x20>;
+ reg-io-width = <4>;
+ reg-shift = <2>;
+ clock-frequency = <14745600>;
+ no-loopback-test;
+ bootph-all;
+ status = "okay";
+ };
+
+ timer: timer at 98400000 {
+ compatible = "faraday,fttmr010-timer";
+ reg = <0x98400000 0x40>;
+ clock-frequency = <12000000>;
+ };
+
+ wdt: wdt at 98500000 {
+ compatible = "faraday,ftwdt010";
+ reg = <0x98500000 0x20>;
+ };
+
+ gpio: gpio at 98700000 {
+ compatible = "faraday,ftgpio010";
+ reg = <0x98700000 0x20>;
+ nr-gpios = <32>;
+ #gpio-cells = <2>;
+ };
+
+ rtc {
+ compatible = "holtek,ht1380";
+ rst-gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+ clk-gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
+ dat-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>;
+ };
+
+ mmc0: mmc at 98e00000 {
+ compatible = "andestech,atfsdc010";
+ bus-width = <4>;
+ max-frequency = <25000000>;
+ reg = <0x98e00000 0x1000>;
+ cap-sd-highspeed;
+ };
+ };
+
+ nor at 80000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ reg = <0x80000000 0x0>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ mtd1 {
+ label = "moxa";
+ reg = <0x0 0x40000>;
+ read-only;
+ };
+ mtd2 {
+ label = "env";
+ reg = <0x40000 0x100000>;
+ read-only;
+ };
+ mtd3 {
+ label = "uboot";
+ reg = <0x140000 0xc0000>;
+ };
+ mtd4 {
+ label = "mfs";
+ reg = <0x200000 0x20000>;
+ read-only;
+ };
+ mtd5 {
+ label = "ubi";
+ reg = <0x220000 0xde0000>;
+ };
+ };
+ };
+
+ mac at 92000000 {
+ compatible = "andestech,atmac100";
+ reg = <0x92000000 0x90>;
+ };
+
+ pci0 at 90c00000 {
+ compatible = "faraday,ftpci100";
+ device_type = "pci";
+ reg = <0x90c00000 0x30>;
+
+ #address-cells = <3>;
+ #size-cells = <2>;
+ bus-range = <0x0 0xff>;
+ ranges = <0x01000000 0 0x90c00000 0x90c00000 0 0x00100000 /* I/O */
+ 0x02000000 0 0xa0000000 0xa0000000 0 0x02000000 /* MEM */>;
+
+ status = "okay";
+ };
+ };
+};
diff --git a/board/moxa/nport6600/Kconfig b/board/moxa/nport6600/Kconfig
new file mode 100644
index 000000000000..3094b380c0fd
--- /dev/null
+++ b/board/moxa/nport6600/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_NPORT6600
+
+config SYS_BOARD
+ default "nport6600"
+
+config SYS_VENDOR
+ default "moxa"
+
+config SYS_SOC
+ default "moxa"
+
+config SYS_CONFIG_NAME
+ default "nport6600"
+
+endif
diff --git a/board/moxa/nport6600/MAINTAINERS b/board/moxa/nport6600/MAINTAINERS
new file mode 100644
index 000000000000..fca3d9d0dbfa
--- /dev/null
+++ b/board/moxa/nport6600/MAINTAINERS
@@ -0,0 +1,7 @@
+NPORT6600 BOARD
+M: Sergei Antonov <saproj at gmail.com>
+S: Maintained
+F: board/moxa/nport6600/
+F: arch/arm/dts/nport6600.dts
+F: include/configs/nport6600.h
+F: configs/nport6600_defconfig
diff --git a/board/moxa/nport6600/Makefile b/board/moxa/nport6600/Makefile
new file mode 100644
index 000000000000..8d853eaa1a57
--- /dev/null
+++ b/board/moxa/nport6600/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+obj-y := nport6600.o
diff --git a/board/moxa/nport6600/nport6600.c b/board/moxa/nport6600/nport6600.c
new file mode 100644
index 000000000000..88fa98c315fd
--- /dev/null
+++ b/board/moxa/nport6600/nport6600.c
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <common.h>
+#include <init.h>
+#include <env.h>
+#include <cpu_func.h>
+#include <string.h>
+
+int dram_init(void)
+{
+ return fdtdec_setup_mem_size_base();
+}
+
+int board_init(void)
+{
+ return 0;
+}
+
+int show_board_info(void)
+{
+ const u8 *NPORT_EXPANSION_MODULE = (const u8 *)0x8c0000c0;
+ const unsigned int module_id = *NPORT_EXPANSION_MODULE;
+ static const char * const modules[] = {
+ NULL,
+ "NM-TX01",
+ "NM-FX01-M-SC",
+ "NM-FX01-S-SC",
+ NULL,
+ "NM-FX02-M-SC",
+ "NM-FX02-S-SC",
+ "NM_GPRS",
+ "NM-TX02",
+ };
+
+ /* Check for Module */
+ if (module_id < ARRAY_SIZE(modules) && modules[module_id])
+ printf("Expansion module %s detected\n", modules[module_id]);
+
+ return 0;
+}
+
+static int read_net_params(void)
+{
+ const u8 *MAC_ADDR = (const u8 *)0x80000050;
+
+ if (eth_env_set_enetaddr("ethaddr", MAC_ADDR))
+ return -1;
+
+ return 0;
+}
+
+int misc_init_r(void)
+{
+ const char *SERIAL_STR = (const char *)0x80000034;
+ const unsigned int SERIAL_LEN = 12;
+ char str[SERIAL_LEN + 1];
+
+ if (*SERIAL_STR) {
+ memcpy(str, SERIAL_STR, SERIAL_LEN);
+ str[SERIAL_LEN] = 0;
+ } else {
+ /* No serial string. Resort to a 2-byte serial number. */
+ const u16 *SERIAL_NO = (const u16 *)0x8000004c;
+
+ sprintf(str, "%05u", *SERIAL_NO);
+ }
+
+ if (env_set("serial#", str))
+ return -1;
+
+ return read_net_params();
+}
+
+void enable_caches(void)
+{
+ icache_enable();
+ dcache_enable();
+}
diff --git a/configs/nport6600_defconfig b/configs/nport6600_defconfig
new file mode 100644
index 000000000000..47db1ca20ae6
--- /dev/null
+++ b/configs/nport6600_defconfig
@@ -0,0 +1,129 @@
+CONFIG_ARM=y
+CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="echo Serial number: ${serial#}"
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND=""
+CONFIG_BOOTDELAY=1
+# CONFIG_BOOTSTD is not set
+CONFIG_DISPLAY_BOARDINFO=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_LTO=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_CLS=y
+CONFIG_CMD_CRC32=y
+CONFIG_CMD_FLASH=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_LOG=y
+CONFIG_CMD_MD5SUM=y
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_UBI=y
+CONFIG_CRC32_VERIFY=y
+CONFIG_DM=y
+CONFIG_ENV_SUPPORT=y
+CONFIG_FTMAC100=y
+CONFIG_HUSH_PARSER=y
+CONFIG_LOG_CONSOLE=y
+CONFIG_LOG_MAX_LEVEL=8
+CONFIG_LOG_DEFAULT_LEVEL=6
+CONFIG_LOGLEVEL=7
+CONFIG_LOG=y
+CONFIG_MISC_INIT_R=y
+CONFIG_OF_LIBFDT=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_SYS_CBSIZE=256
+CONFIG_SYS_DCACHE_OFF=y
+CONFIG_SYS_LONGHELP=y
+CONFIG_SYS_MEMTEST_END=0x3F00000
+CONFIG_SYS_MEMTEST_START=0x00000000
+CONFIG_SYS_NS16550=y
+CONFIG_NS16550_DYNAMIC=y
+CONFIG_SYS_PBSIZE=280
+CONFIG_SYS_PROMPT="MOXA NPort 6600 # "
+CONFIG_TEXT_BASE=0x80140020
+CONFIG_TARGET_NPORT6600=y
+CONFIG_FS_EXT4=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_FS_FAT=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_TIME=y
+CONFIG_CMD_SHA1SUM=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_UNLZ4=y
+CONFIG_CMD_UNZIP=y
+CONFIG_CMD_SETEXPR=y
+CONFIG_CMD_SETEXPR_FMT=y
+CONFIG_CMD_READ=y
+CONFIG_CMD_GETTIME=y
+CONFIG_CMD_TIMER=y
+CONFIG_CMD_UBI_RENAME=y
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_MEM_SEARCH=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_EXPORTENV=y
+CONFIG_CMD_IMPORTENV=y
+CONFIG_CMD_EDITENV=y
+CONFIG_CMD_GREPENV=y
+CONFIG_CMD_SAVEENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_EXISTS=y
+CONFIG_CMD_ENV_CALLBACK=y
+CONFIG_CMD_ENV_FLAGS=y
+CONFIG_SYS_LOAD_ADDR=0x100000
+CONFIG_CMD_LOADB=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MBR=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_WGET=y
+CONFIG_DM_STATS=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
+CONFIG_CMD_DHCP=y
+CONFIG_BAUDRATE=115200
+CONFIG_MTD=y
+CONFIG_DM_MTD=y
+CONFIG_MTD_NOR_FLASH=y
+CONFIG_FLASH_CFI_MTD=y
+CONFIG_CFI_FLASH=y
+CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
+CONFIG_SYS_FLASH_CFI=y
+CONFIG_SYS_FLASH_CFI_WIDTH_16BIT=y
+CONFIG_SYS_FLASH_EMPTY_INFO=y
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="nport6600"
+CONFIG_SYS_CLK_FREQ=48000000
+CONFIG_TIMER=y
+CONFIG_FTTMR010_TIMER=y
+CONFIG_DM_SERIAL=y
+CONFIG_DM_ETH=y
+CONFIG_MMC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_VERBOSE=y
+CONFIG_CMD_MMC=y
+CONFIG_FTSDC010=y
+CONFIG_WDT_FTWDT010=y
+CONFIG_WDT=y
+CONFIG_CMD_WDT=y
+CONFIG_SYSRESET=y
+CONFIG_SYSRESET_WATCHDOG=y
+CONFIG_SYSRESET_WATCHDOG_AUTO=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_HT1380=y
+CONFIG_CMD_RTC=y
+CONFIG_CMD_DATE=y
+CONFIG_FTGPIO010=y
+CONFIG_CMD_MII=y
+CONFIG_USE_BOOTARGS=y
+CONFIG_BOOTARGS="console=ttyS0,115200n8"
+CONFIG_IPV6=y
+CONFIG_PCI=y
+CONFIG_CMD_PCI=y
+CONFIG_PCI_FTPCI100=y
diff --git a/include/configs/nport6600.h b/include/configs/nport6600.h
new file mode 100644
index 000000000000..c70cc7e1ac72
--- /dev/null
+++ b/include/configs/nport6600.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef _CONFIG_NPORT6600_H
+#define _CONFIG_NPORT6600_H
+
+#include <linux/sizes.h>
+
+#define CFG_SYS_INIT_RAM_ADDR 0
+#define CFG_SYS_INIT_RAM_SIZE SZ_64M
+
+#define __io
+
+#endif /* _CONFIG_NPORT6600_H */
--
2.37.2
More information about the U-Boot
mailing list