
Hi Sergei,
On Mon, 31 Jul 2023 at 12:43, Sergei Antonov saproj@gmail.com wrote:
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@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/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)
Can you use the sysinfo API and command instead?
+{
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;
Is that in the devicetree ?
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();
+}
[..]
+++ 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
What code uses this? I suppose it is SoC-specific?
+#define __io
+#endif /* _CONFIG_NPORT6600_H */
2.37.2
Regards, Simon