diff --git a/arch/arm64/src/zynq-mpsoc/Kconfig b/arch/arm64/src/zynq-mpsoc/Kconfig index 128cf1b100f..70bad2c1a86 100644 --- a/arch/arm64/src/zynq-mpsoc/Kconfig +++ b/arch/arm64/src/zynq-mpsoc/Kconfig @@ -86,6 +86,16 @@ config ZYNQ_GMAC_NTXBUFFERS that can be in flight. This is also equal to the number of TX descriptors that will be allocated. +config ZYNQ_GMAC_RXDMA_BUFSIZE + int "RX DMA buffer size" + default 128 + range 64 10240 + ---help--- + DMA receive buffer size in external AMBA (AHB/AXI) system memory. + The value defined by these bits determines the size of buffer to + use in main system memory when writing received data. The value + must be defined as multiples of 64 bytes, i.e. 64, 128, 256... + config ZYNQ_GMAC_PREALLOCATE bool "Preallocate buffers" default n diff --git a/arch/arm64/src/zynq-mpsoc/zynq_boot.c b/arch/arm64/src/zynq-mpsoc/zynq_boot.c index 0580e37939c..c2d3ff753d8 100644 --- a/arch/arm64/src/zynq-mpsoc/zynq_boot.c +++ b/arch/arm64/src/zynq-mpsoc/zynq_boot.c @@ -203,10 +203,3 @@ void arm64_chip_boot(void) up_perf_init((void *)CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC); #endif } - -#if defined(CONFIG_NET) && !defined(CONFIG_NETDEV_LATEINIT) -void arm64_netinitialize(void) -{ - /* TODO: Support net initialize */ -} -#endif diff --git a/arch/arm64/src/zynq-mpsoc/zynq_enet.c b/arch/arm64/src/zynq-mpsoc/zynq_enet.c index 135dd833dec..e74e8a5d6ed 100644 --- a/arch/arm64/src/zynq-mpsoc/zynq_enet.c +++ b/arch/arm64/src/zynq-mpsoc/zynq_enet.c @@ -99,8 +99,8 @@ /* GMAC buffer sizes, number of buffers, and number of descriptors. *********/ -#define GMAC_RX_UNITSIZE 128 /* Fixed size for RX buffer */ -#define GMAC_TX_UNITSIZE CONFIG_NET_ETH_PKTSIZE /* MAX size for Ethernet packet */ +#define GMAC_RX_UNITSIZE CONFIG_ZYNQ_GMAC_RXDMA_BUFSIZE /* DMA buffer size for receive */ +#define GMAC_TX_UNITSIZE CONFIG_NET_ETH_PKTSIZE /* MAX size for Ethernet packet */ /* The MAC can support frame lengths up to 1536 bytes */ @@ -3551,8 +3551,8 @@ static int zynq_gmac_configure(struct zynq_gmac_s *priv) * IRXER = 0 : Disable ignore IPG GXER */ - regval = GMAC_NCFGR_FD | GMAC_NCFGR_GBE | - GMAC_NCFGR_CLK_DIV64 | GMAC_NCFGR_DBW_64; + regval = GMAC_NCFGR_FD | GMAC_NCFGR_GBE | GMAC_NCFGR_PEN | + GMAC_NCFGR_RFCS | GMAC_NCFGR_CLK_DIV64 | GMAC_NCFGR_DBW_64; #ifdef CONFIG_NET_PROMISCUOUS regval |= GMAC_NCFGR_CAF; @@ -3568,6 +3568,14 @@ static int zynq_gmac_configure(struct zynq_gmac_s *priv) regval = zynq_getreg(priv, ZYNQ_GMAC_DCFGR); + /* DMA receive buffer size in external AMBA (AHB/AXI) system memory */ + + regval &= ~GMAC_DCFGR_DRBS_MASK; + + /* The value is defined in multiples of 64 bytes */ + + regval |= GMAC_DCFGR_DRBS(GMAC_RX_UNITSIZE / 64); + regval &= ~GMAC_DCFGR_ESPA; #ifdef CDNS_TX_CSUM_OFFLOAD diff --git a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig b/boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig similarity index 79% rename from boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig rename to boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig index 301bf6fff84..23732710be8 100644 --- a/boards/arm64/zynq-mpsoc/zcu111/configs/net/defconfig +++ b/boards/arm64/zynq-mpsoc/zcu111/configs/netjtag/defconfig @@ -48,18 +48,33 @@ CONFIG_IDLETHREAD_STACKSIZE=8192 CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INIT_STACKSIZE=9192 CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSCLIENT_ENTRIES=4 +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETINIT_DRIPADDR=0xc0a80002 +CONFIG_NETINIT_IPADDR=0xc0a8000f CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y CONFIG_NETUTILS_IPERF=y -CONFIG_NET_BINDTODEVICE=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_TFTPC=y +CONFIG_NETUTILS_WEBCLIENT=y CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1500 CONFIG_NET_ICMP_SOCKET=y -CONFIG_NET_NETLINK=y -CONFIG_NET_SOCKOPTS=y +CONFIG_NET_LL_GUARDSIZE=32 +CONFIG_NET_MAX_LISTENPORTS=8 +CONFIG_NET_RECV_BUFSIZE=32768 +CONFIG_NET_SENDFILE=y +CONFIG_NET_SOLINGER=y CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y -CONFIG_NET_TCPPROTO_OPTIONS=y -CONFIG_NET_TIMESTAMP=y +CONFIG_NET_TCPBACKLOG=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_KEEPALIVE=y +CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y +CONFIG_NET_UDP_WRITE_BUFFERS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 @@ -93,3 +108,4 @@ CONFIG_USERLED_LOWER=y CONFIG_ZYNQ_ENET=y CONFIG_ZYNQ_GMAC_NRXBUFFERS=256 CONFIG_ZYNQ_GMAC_NTXBUFFERS=256 +CONFIG_ZYNQ_GMAC_PHYADDR=12 diff --git a/boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig b/boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig new file mode 100644 index 00000000000..b12abead1c3 --- /dev/null +++ b/boards/arm64/zynq-mpsoc/zcu111/configs/netnsh/defconfig @@ -0,0 +1,105 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="arm64" +CONFIG_ARCH_ARM64=y +CONFIG_ARCH_BOARD="zcu111" +CONFIG_ARCH_BOARD_ZCU111=y +CONFIG_ARCH_CHIP="zynq-mpsoc" +CONFIG_ARCH_CHIP_ZYNQ_MPSOC=y +CONFIG_ARCH_EARLY_PRINT=y +CONFIG_ARCH_INTERRUPTSTACK=4096 +CONFIG_ARM64_DCACHE_DISABLE=y +CONFIG_ARM64_GIC_VERSION=2 +CONFIG_ARM64_ICACHE_DISABLE=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=116524 +CONFIG_BUILTIN=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_IRQ=y +CONFIG_DEBUG_IRQ_INFO=y +CONFIG_DEBUG_SCHED=y +CONFIG_DEBUG_SCHED_ERROR=y +CONFIG_DEBUG_SCHED_INFO=y +CONFIG_DEBUG_SCHED_WARN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_TASK_STACKSIZE=8192 +CONFIG_ETC_ROMFS=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_LEDS=y +CONFIG_EXPERIMENTAL=y +CONFIG_FRAME_POINTER=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=8192 +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INIT_STACKSIZE=9192 +CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDB_DNSCLIENT_ENTRIES=4 +CONFIG_NETDB_DNSSERVER_NOADDR=y +CONFIG_NETINIT_DRIPADDR=0xc0a80002 +CONFIG_NETINIT_IPADDR=0xc0a8000f +CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y +CONFIG_NETUTILS_IPERF=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_TFTPC=y +CONFIG_NETUTILS_WEBCLIENT=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1500 +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_LL_GUARDSIZE=32 +CONFIG_NET_MAX_LISTENPORTS=8 +CONFIG_NET_RECV_BUFSIZE=32768 +CONFIG_NET_SENDFILE=y +CONFIG_NET_SOLINGER=y +CONFIG_NET_STATISTICS=y +CONFIG_NET_TCP=y +CONFIG_NET_TCPBACKLOG=y +CONFIG_NET_TCP_DELAYED_ACK=y +CONFIG_NET_TCP_KEEPALIVE=y +CONFIG_NET_TCP_WRITE_BUFFERS=y +CONFIG_NET_UDP=y +CONFIG_NET_UDP_WRITE_BUFFERS=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_STACK_MIN=8192 +CONFIG_RAMLOG=y +CONFIG_RAM_SIZE=2145386496 +CONFIG_RAM_START=0x00100000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=192 +CONFIG_SPINLOCK=y +CONFIG_STACK_COLORATION=y +CONFIG_START_MONTH=11 +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_UART0_SERIAL_CONSOLE=y +CONFIG_USEC_PER_TICK=1000 +CONFIG_USERLED=y +CONFIG_USERLED_LOWER=y +CONFIG_ZYNQ_ENET=y +CONFIG_ZYNQ_GMAC_NRXBUFFERS=256 +CONFIG_ZYNQ_GMAC_NTXBUFFERS=256 +CONFIG_ZYNQ_GMAC_PHYADDR=12 diff --git a/boards/arm64/zynq-mpsoc/zcu111/src/Makefile b/boards/arm64/zynq-mpsoc/zcu111/src/Makefile index 252de5d0f73..a0eacd701e7 100644 --- a/boards/arm64/zynq-mpsoc/zcu111/src/Makefile +++ b/boards/arm64/zynq-mpsoc/zcu111/src/Makefile @@ -38,6 +38,10 @@ ifeq ($(CONFIG_USERLED),y) CSRCS += zcu111_userleds.c endif +ifeq ($(CONFIG_NET),y) +CSRCS += zcu111_ethernet.c +endif + ifeq ($(CONFIG_ETC_ROMFS),y) RCSRCS = etc/init.d/rc.sysinit etc/init.d/rcS endif