From 80a7688c478a6a372083c29ff0b1826db4dae5b2 Mon Sep 17 00:00:00 2001 From: INAGAKI Hiroshi Date: Wed, 24 Apr 2024 23:54:46 +0900 Subject: [PATCH] ath79: add support for NEC AR9344 Aterm series --- arch/mips/dts/Makefile | 1 + arch/mips/dts/nec,ar9344-aterm.dts | 35 +++++++++++++++ arch/mips/mach-ath79/Kconfig | 5 +++ board/nec/ar9344_aterm/Kconfig | 30 +++++++++++++ board/nec/ar9344_aterm/Makefile | 3 ++ board/nec/ar9344_aterm/ar9344_aterm.c | 59 ++++++++++++++++++++++++++ configs/nec_ar9344_aterm_defconfig | 61 +++++++++++++++++++++++++++ include/configs/nec_ar9344_aterm.h | 28 ++++++++++++ 8 files changed, 222 insertions(+) create mode 100644 arch/mips/dts/nec,ar9344-aterm.dts create mode 100644 board/nec/ar9344_aterm/Kconfig create mode 100644 board/nec/ar9344_aterm/Makefile create mode 100644 board/nec/ar9344_aterm/ar9344_aterm.c create mode 100644 configs/nec_ar9344_aterm_defconfig create mode 100644 include/configs/nec_ar9344_aterm.h --- a/arch/mips/dts/Makefile +++ b/arch/mips/dts/Makefile @@ -24,6 +24,7 @@ dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY dtb-$(CONFIG_BOARD_LINKIT_SMART_7688) += linkit-smart-7688.dtb dtb-$(CONFIG_TARGET_OCTEON_EBB7304) += mrvl,octeon-ebb7304.dtb dtb-$(CONFIG_TARGET_OCTEON_NIC23) += mrvl,octeon-nic23.dtb +dtb-$(CONFIG_BOARD_NEC_AR9344_ATERM) += nec,ar9344-aterm.dtb dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb dtb-$(CONFIG_BOARD_SAGEM_FAST1704) += sagem,f@st1704.dtb --- /dev/null +++ b/arch/mips/dts/nec,ar9344-aterm.dts @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 INAGAKI Hiroshi + */ + +/dts-v1/; +#include "ar934x.dtsi" + +/ { + model = "NEC Aterm series (AR9344)"; + compatible = "nec,ar9344-aterm", "qca,ar934x"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:9600n8"; + }; +}; + +&uart0 { + clock-frequency = <40000000>; + status = "okay"; +}; + +&xtal { + clock-frequency = <40000000>; +}; + +/* delete unused nodes to reduce dtb size */ +/delete-node/ &ehci0; +/delete-node/ &gmac0; +/delete-node/ &gmac1; +/delete-node/ &spi0; --- a/arch/mips/mach-ath79/Kconfig +++ b/arch/mips/mach-ath79/Kconfig @@ -58,6 +58,10 @@ config TARGET_AP152 bool "AP152 Reference Board" select SOC_QCA956X +config BOARD_NEC_AR9344_ATERM + bool "NEC Aterm series Boards (AR9344)" + select SOC_AR934X + config BOARD_TPLINK_WDR4300 bool "TP-Link WDR4300 Board" select SOC_AR934X @@ -67,6 +71,7 @@ endchoice source "board/qca/ap121/Kconfig" source "board/qca/ap143/Kconfig" source "board/qca/ap152/Kconfig" +source "board/nec/ar9344_aterm/Kconfig" source "board/tplink/wdr4300/Kconfig" endmenu --- /dev/null +++ b/board/nec/ar9344_aterm/Kconfig @@ -0,0 +1,30 @@ +if BOARD_NEC_AR9344_ATERM + +config SYS_VENDOR + default "nec" + +config SYS_SOC + default "ath79" + +config SYS_BOARD + default "ar9344_aterm" + +config SYS_CONFIG_NAME + default "nec_ar9344_aterm" + +config TEXT_BASE + default 0x9f000000 + +config SYS_DCACHE_SIZE + default 32768 + +config SYS_DCACHE_LINE_SIZE + default 32 + +config SYS_ICACHE_SIZE + default 65536 + +config SYS_ICACHE_LINE_SIZE + default 32 + +endif --- /dev/null +++ b/board/nec/ar9344_aterm/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0+ + +obj-y = ar9344_aterm.o --- /dev/null +++ b/board/nec/ar9344_aterm/ar9344_aterm.c @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 INAGAKI Hiroshi + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static void aterm_pinmux_config(void) +{ + void __iomem *regs; + + regs = map_physmem(AR71XX_GPIO_BASE, AR71XX_GPIO_SIZE, + MAP_NOCACHE); + + /* Disable JTAG */ + writel(0x2, regs + AR934X_GPIO_REG_FUNC); + + /* Configure default GPIO OE/SET regs */ + writel(0x3db1f, regs + AR71XX_GPIO_REG_OE); + writel(0x142000, regs + AR71XX_GPIO_REG_SET); + + /* Configure pin multiplexing */ + writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC0); + writel(0x0b0a0900, regs + AR934X_GPIO_REG_OUT_FUNC1); + writel(0x00180000, regs + AR934X_GPIO_REG_OUT_FUNC2); + writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3); + writel(0x2f2e0000, regs + AR934X_GPIO_REG_OUT_FUNC4); + writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC5); +} + +#ifdef CONFIG_DEBUG_UART_BOARD_INIT +void board_debug_uart_init(void) +{ + aterm_pinmux_config(); +} +#endif + +#ifdef CONFIG_BOARD_EARLY_INIT_F +int board_early_init_f(void) +{ +#ifndef CONFIG_DEBUG_UART_BOARD_INIT + aterm_pinmux_config(); +#endif + +#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) + ar934x_pll_init(560, 480, 240); + ar934x_ddr_init(560, 480, 240); +#endif + + return 0; +} +#endif --- /dev/null +++ b/configs/nec_ar9344_aterm_defconfig @@ -0,0 +1,61 @@ +CONFIG_MIPS=y +CONFIG_SYS_MALLOC_LEN=0x40000 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xbd007fff +CONFIG_ENV_SIZE=0x1000 +CONFIG_DEFAULT_DEVICE_TREE="nec,ar9344-aterm" +CONFIG_SYS_LOAD_ADDR=0x83000000 +CONFIG_ARCH_ATH79=y +CONFIG_BOARD_NEC_AR9344_ATERM=y +CONFIG_SYS_MIPS_TIMER_FREQ=280000000 +CONFIG_MIPS_RELOCATION_TABLE_SIZE=0x4000 +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_TIMESTAMP=y +CONFIG_BOOTDELAY=3 +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200" +CONFIG_USE_BOOTCOMMAND=y +CONFIG_BOOTCOMMAND="bootm 0x9f040000" +# CONFIG_DISPLAY_BOARDINFO is not set +CONFIG_BOARD_EARLY_INIT_F=y +CONFIG_SYS_MALLOC_BOOTPARAMS=y +# CONFIG_CMDLINE_EDITING is not set +# CONFIG_AUTO_COMPLETE is not set +# CONFIG_SYS_LONGHELP is not set +CONFIG_SYS_MAXARGS=32 +# CONFIG_SYS_XTRACE is not set +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_CONSOLE is not set +# CONFIG_BOOTM_PLAN9 is not set +# CONFIG_BOOTM_RTEMS is not set +# CONFIG_BOOTM_VXWORKS is not set +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_FDT is not set +# CONFIG_CMD_RUN is not set +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +# CONFIG_CMD_EDITENV is not set +# CONFIG_CMD_SAVEENV is not set +# CONFIG_CMD_ENV_EXISTS is not set +# CONFIG_CMD_CRC32 is not set +# CONFIG_CMD_DM is not set +# CONFIG_CMD_LOADS is not set +# CONFIG_CMD_ECHO is not set +# CONFIG_CMD_ITEST is not set +# CONFIG_CMD_SOURCE is not set +# CONFIG_CMD_SETEXPR is not set +# CONFIG_CMD_SLEEP is not set +# CONFIG_ISO_PARTITION is not set +# CONFIG_OF_TAG_MIGRATE is not set +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +# CONFIG_NET is not set +CONFIG_CLK=y +# CONFIG_GPIO is not set +# CONFIG_I2C is not set +# CONFIG_INPUT is not set +# CONFIG_POWER is not set +CONFIG_DM_SERIAL=y +CONFIG_SYS_NS16550=y +# CONFIG_GZIP is not set --- /dev/null +++ b/include/configs/nec_ar9344_aterm.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2024 INAGAKI Hiroshi + */ + +#ifndef __NEC_AR9344_ATERM_H +#define __NEC_AR9344_ATERM_H + +#define CFG_SYS_SDRAM_BASE 0x80000000 + +#define CFG_SYS_INIT_RAM_ADDR 0xbd000000 +#define CFG_SYS_INIT_RAM_SIZE 0x8000 + +/* + * Serial Port + */ +#define CFG_SYS_NS16550_CLK 40000000 + +/* + * Command + */ +/* Miscellaneous configurable options */ + +/* + * Diagnostics + */ + +#endif /* __NEC_AR9344_ATERM_H */