From 5feab8057cb9d639c2e7967e0de93d4b8fa65295 Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Tue, 1 Sep 2020 10:36:07 +0900 Subject: [PATCH] boards: cxd56xx: Add wifi_smp configuration Summary: - This commit adds a wifi_smp configuration for spresense - To avoid deadlock, gs2200m_irq_enable() and gs2200m_irq_disable() release global spinlock if they are not called on CPU0. Impact: - Only affects spresense:wifi_smp Testing: - Tested with ostest, renew, smp, telnetd. - NOTE: tcpserver might be unstable Signed-off-by: Masayuki Ishikawa --- boards/arm/cxd56xx/common/src/cxd56_gs2200m.c | 34 ++++ .../spresense/configs/wifi_smp/defconfig | 167 ++++++++++++++++++ 2 files changed, 201 insertions(+) create mode 100644 boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig diff --git a/boards/arm/cxd56xx/common/src/cxd56_gs2200m.c b/boards/arm/cxd56xx/common/src/cxd56_gs2200m.c index fafb2caefcf..664ab77f8b7 100644 --- a/boards/arm/cxd56xx/common/src/cxd56_gs2200m.c +++ b/boards/arm/cxd56xx/common/src/cxd56_gs2200m.c @@ -118,7 +118,24 @@ static void gs2200m_irq_enable(void) if (0 == _enable_count) { +#ifdef CONFIG_SMP + bool unlock = false; + + if (0 != up_cpu_index()) + { + unlock = true; + spin_unlock_irqrestore(flags); + } +#endif + cxd56_gpioint_enable(PIN_UART2_CTS); + +#ifdef CONFIG_SMP + if (unlock) + { + flags = spin_lock_irqsave(); + } +#endif } _enable_count++; @@ -140,7 +157,24 @@ static void gs2200m_irq_disable(void) if (0 == _enable_count) { +#ifdef CONFIG_SMP + bool unlock = false; + + if (0 != up_cpu_index()) + { + unlock = true; + spin_unlock_irqrestore(flags); + } +#endif + cxd56_gpioint_disable(PIN_UART2_CTS); + +#ifdef CONFIG_SMP + if (unlock) + { + flags = spin_lock_irqsave(); + } +#endif } spin_unlock_irqrestore(flags); diff --git a/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig new file mode 100644 index 00000000000..c09fbec8493 --- /dev/null +++ b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig @@ -0,0 +1,167 @@ +# +# 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_MMCSD_HAVE_WRITEPROTECT is not set +# CONFIG_MMCSD_SPI is not set +# CONFIG_STANDARD_SERIAL is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="spresense" +CONFIG_ARCH_BOARD_SPRESENSE=y +CONFIG_ARCH_CHIP="cxd56xx" +CONFIG_ARCH_CHIP_CXD56XX=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_AUDIO=y +CONFIG_AUDIO_CXD56=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_LOOPSPERMSEC=5434 +CONFIG_BOOT_RUNFROMISRAM=y +CONFIG_BUILTIN=y +CONFIG_CLOCK_MONOTONIC=y +CONFIG_CODECS_HASH_MD5=y +CONFIG_CXD56_AUDIO_BUFFER_SIZE=2048 +CONFIG_CXD56_AUDIO_NUM_BUFFERS=32 +CONFIG_CXD56_BINARY=y +CONFIG_CXD56_DMAC_SPI5_RX=y +CONFIG_CXD56_DMAC_SPI5_TX=y +CONFIG_CXD56_SDIO=y +CONFIG_CXD56_SPI5=y +CONFIG_CXD56_SPI=y +CONFIG_CXD56_USBDEV=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_HARDFAULT_ALERT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DRIVERS_AUDIO=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ELF=y +CONFIG_EXAMPLES_FTPC=y +CONFIG_EXAMPLES_FTPD=y +CONFIG_EXAMPLES_HELLO=m +CONFIG_EXAMPLES_TCPBLASTER=y +CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE=500 +CONFIG_EXAMPLES_TCPBLASTER_SENDSIZE=1400 +CONFIG_EXAMPLES_TCPBLASTER_SERVER=y +CONFIG_EXAMPLES_TCPBLASTER_SERVERIP=0xc0a80a10 +CONFIG_EXAMPLES_TCPBLASTER_TARGET2=y +CONFIG_EXAMPLES_UDPBLASTER=y +CONFIG_EXAMPLES_WEBSERVER=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FAT_MAXFNAME=255 +CONFIG_FS_FAT=y +CONFIG_FS_FATTIME=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_SMARTFS=y +CONFIG_FTP_TMPDIR="/mnt/sd0" +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_I2C=y +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBM=y +CONFIG_LIB_ENVPATH=y +CONFIG_LIB_SENDFILE_BUFSIZE=1024 +CONFIG_MEMCPY_VIK=y +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_MMCSD=y +CONFIG_MMCSD_SDIO=y +CONFIG_MTD_BYTE_WRITE=y +CONFIG_MTD_PARTITION=y +CONFIG_MTD_SMART=y +CONFIG_MTD_SMART_ENABLE_CRC=y +CONFIG_MTD_SMART_SECTOR_SIZE=4096 +CONFIG_NAME_MAX=765 +CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEVICES=y +CONFIG_NETINIT_NETLOCAL=y +CONFIG_NETUTILS_CODECS=y +CONFIG_NETUTILS_FTPC=y +CONFIG_NETUTILS_FTPD=y +CONFIG_NETUTILS_HTTPD_DIRLIST=y +CONFIG_NETUTILS_HTTPD_SENDFILE=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_WEBCLIENT=y +CONFIG_NETUTILS_WEBSERVER=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ICMP=y +CONFIG_NET_TCP_NO_STACK=y +CONFIG_NET_UDP_NO_STACK=y +CONFIG_NET_USRSOCK=y +CONFIG_NET_USRSOCK_CONNS=16 +CONFIG_NET_USRSOCK_UDP=y +CONFIG_NFILE_DESCRIPTORS=8 +CONFIG_NFILE_STREAMS=8 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_ARP=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_NSLOOKUP=y +CONFIG_NSH_FILE_APPS=y +CONFIG_NSH_READLINE=y +CONFIG_NSH_WGET_USERAGENT="NuttX/7.2x.x (; http://www.nuttx.org/)" +CONFIG_NXPLAYER_HTTP_STREAMING_SUPPORT=y +CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE=3072 +CONFIG_NXPLAYER_PLAYTHREAD_STACKSIZE=3072 +CONFIG_PATH_INITIAL="/mnt/sd0/bin" +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=1572864 +CONFIG_RAM_START=0x0d000000 +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_RR_INTERVAL=200 +CONFIG_RTC=y +CONFIG_RTC_ALARM=y +CONFIG_RTC_DRIVER=y +CONFIG_RTC_FREQUENCY=32768 +CONFIG_RTC_HIRES=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_INSTRUMENTATION=y +CONFIG_SCHED_INSTRUMENTATION_BUFFER=y +CONFIG_SCHED_LPWORKPRIORITY=60 +CONFIG_SDCLONE_DISABLE=y +CONFIG_SMARTFS_ALIGNED_ACCESS=y +CONFIG_SMARTFS_MAXNAMLEN=30 +CONFIG_SMARTFS_MULTI_ROOT_DIRS=y +CONFIG_SMP=y +CONFIG_SMP_NCPUS=2 +CONFIG_SPINLOCK_IRQ=y +CONFIG_SPRESENSE_EXTENSION=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=16 +CONFIG_START_MONTH=7 +CONFIG_START_YEAR=2019 +CONFIG_SYMTAB_ORDEREDBYNAME=y +CONFIG_SYSLOG_TIMESTAMP=y +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_SYMTAB=y +CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME="g_symtab" +CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols" +CONFIG_SYSTEM_NTPC=y +CONFIG_SYSTEM_NXPLAYER=y +CONFIG_SYSTEM_NXRECORDER=y +CONFIG_SYSTEM_SYSTEM=y +CONFIG_SYSTEM_TASKSET=y +CONFIG_SYSTEM_USBMSC=y +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_TESTING_OSTEST_FPUSIZE=64 +CONFIG_TESTING_SMP=y +CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USBDEV=y +CONFIG_USBDEV_DMA=y +CONFIG_USBDEV_DUALSPEED=y +CONFIG_USBMSC=y +CONFIG_USBMSC_EPBULKIN=1 +CONFIG_USBMSC_REMOVABLE=y +CONFIG_USERMAIN_STACKSIZE=3072 +CONFIG_USER_ENTRYPOINT="spresense_main" +CONFIG_WIRELESS_GS2200M=y +CONFIG_WL_GS2200M=y +CONFIG_WL_GS2200M_DISABLE_DHCPC=y +CONFIG_WL_GS2200M_SPI_FREQUENCY=10000000