Adds loopback test for digital MIC on lc823450 via i2schar driver.

Squashed commit of:

  configs/lc823450-xgevk: Enable DMDIN0 (Digital MIC)
  I2S: Add ioctl interface to i2s_ops_s and i2schar driver
  arch/arm/src/lc823450: Add DGMIC in lc823450_i2s.c
  configs/lc823450-xgevk: Add i2schar driver to lc823450_wm8776.c
  configs/lc824350-xgevk: Enable AUDIO_I2SCHAR in audio/defconfig
  configs/lc823450-xgevk: Update README.txt
This commit is contained in:
Masayuki Ishikawa
2018-06-05 10:34:22 -06:00
committed by Gregory Nutt
parent 1f2e7f4b52
commit fb07bd7e27
7 changed files with 594 additions and 71 deletions
File diff suppressed because it is too large Load Diff
-8
View File
@@ -252,14 +252,6 @@ Dropped 0001 0000 0000 0000
Sent 0003 0000 0003 0000
Rexmit ---- 0000 ---- ----
However, you might need to add a routing table if you want to send
a packet via the router.
nsh> addroute 0.0.0.0/0 192.168.1.1
nsh> route
SEQ TARGET NETMASK ROUTER
1. 0.0.0.0 0.0.0.0 192.168.1.1
12. DVFS (Dynamic Voltage and Frequency Scaling)
lc823450-xgevk/audio and rndis configurations support DVFS.
+24 -22
View File
@@ -1,3 +1,7 @@
# CONFIG_AUDIO_FORMAT_MP3 is not set
# CONFIG_NSH_ARGCAT is not set
# CONFIG_NX_DISABLE_1BPP is not set
# CONFIG_SPI_EXCHANGE is not set
CONFIG_AQM_1248A=y
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="lc823450-xgevk"
@@ -6,13 +10,13 @@ CONFIG_ARCH_CHIP_LC823450=y
CONFIG_ARCH_FLOAT_H=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_STDARG_H=y
CONFIG_AUDIO=y
CONFIG_AUDIO_BUFFER_NUMBYTES=1024
CONFIG_AUDIO_EXCLUDE_BALANCE=y
CONFIG_AUDIO_EXCLUDE_FFORWARD=y
CONFIG_AUDIO_EXCLUDE_TONE=y
# CONFIG_AUDIO_FORMAT_MP3 is not set
CONFIG_AUDIO_I2SCHAR=y
CONFIG_AUDIO_WM8776=y
CONFIG_AUDIO=y
CONFIG_BOARDCTL_RESET=y
CONFIG_BOARD_LOOPSPERMSEC=12061
CONFIG_BUILTIN=y
@@ -30,23 +34,24 @@ CONFIG_DISABLE_POSIX_TIMERS=y
CONFIG_DRIVERS_AUDIO=y
CONFIG_DVFS=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_I2SLOOP=y
CONFIG_EXAMPLES_NSH=y
CONFIG_EXAMPLES_NXHELLO_BPP=1
CONFIG_EXAMPLES_NXHELLO=y
CONFIG_EXAMPLES_NXHELLO_BPP=1
CONFIG_EXAMPLES_OSTEST=y
CONFIG_EXAMPLES_PIPE=y
CONFIG_EXAMPLES_SMP=y
CONFIG_EXPERIMENTAL=y
CONFIG_FAT_LCNAMES=y
CONFIG_FAT_LFN=y
CONFIG_FS_FATTIME=y
CONFIG_FS_FAT=y
CONFIG_FS_PROCFS_REGISTER=y
CONFIG_FS_FATTIME=y
CONFIG_FS_PROCFS=y
CONFIG_FS_PROCFS_REGISTER=y
CONFIG_HRT_TIMER=y
CONFIG_I2C_RESET=y
CONFIG_I2CTOOL_MAXBUS=1
CONFIG_I2C=y
CONFIG_I2CTOOL_MAXBUS=1
CONFIG_I2C_RESET=y
CONFIG_I2S=y
CONFIG_INTELHEX_BINARY=y
CONFIG_LC823450_I2C0=y
@@ -57,10 +62,10 @@ CONFIG_LC823450_MTM0_TICK=y
CONFIG_LC823450_SDIF_SDC=y
CONFIG_LC823450_SPI_DMA=y
CONFIG_LC823450_UART0=y
CONFIG_LCD_ST7565=y
CONFIG_LCD=y
CONFIG_LIB_KBDCODEC=y
CONFIG_LCD_ST7565=y
CONFIG_LIBM=y
CONFIG_LIB_KBDCODEC=y
CONFIG_MAX_TASKS=64
CONFIG_MAX_WDOGPARMS=2
CONFIG_MEMSET_OPTSPEED=y
@@ -71,7 +76,6 @@ CONFIG_NETUTILS_CODECS=y
CONFIG_NFILE_DESCRIPTORS=45
CONFIG_NFILE_STREAMS=8
CONFIG_NSH_ARCHINIT=y
# CONFIG_NSH_ARGCAT is not set
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_CMDOPT_DD_STATS=y
CONFIG_NSH_DISABLE_BASENAME=y
@@ -90,11 +94,10 @@ CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=128
CONFIG_NSH_MAXARGUMENTS=10
CONFIG_NSH_READLINE=y
CONFIG_NX_BLOCKING=y
# CONFIG_NX_DISABLE_1BPP is not set
CONFIG_NX=y
CONFIG_NXFONT_MONO5X8=y
CONFIG_NXPLAYER_DEFAULT_MEDIADIR="/mnt/sd1"
CONFIG_NX=y
CONFIG_NX_BLOCKING=y
CONFIG_PIPES=y
CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048
CONFIG_PREALLOC_MQ_MSGS=4
@@ -106,45 +109,44 @@ CONFIG_RAM_SIZE=1044480
CONFIG_RAM_START=0x02001000
CONFIG_RAW_BINARY=y
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RTC_HIRES=y
CONFIG_RTC=y
CONFIG_RTC_HIRES=y
CONFIG_SCHED_ATEXIT=y
CONFIG_SCHED_CHILD_STATUS=y
CONFIG_SCHED_HAVE_PARENT=y
CONFIG_SCHED_ONEXIT_MAX=32
CONFIG_SCHED_ONEXIT=y
CONFIG_SCHED_ONEXIT_MAX=32
CONFIG_SCHED_STARTHOOK=y
CONFIG_SCHED_WAITPID=y
CONFIG_SDCLONE_DISABLE=y
CONFIG_SERIAL_TERMIOS=y
CONFIG_SMP_NCPUS=2
CONFIG_SMP=y
# CONFIG_SPI_EXCHANGE is not set
CONFIG_SPINLOCK_IRQ=y
CONFIG_SMP_NCPUS=2
CONFIG_SPI=y
CONFIG_SPINLOCK_IRQ=y
CONFIG_START_DAY=3
CONFIG_START_MONTH=10
CONFIG_START_YEAR=2013
CONFIG_SYSTEM_I2CTOOL=y
CONFIG_SYSTEM_NXPLAYER=y
CONFIG_SYSTEM_TIME64=y
CONFIG_SYSTEM_USBMSC=y
CONFIG_SYSTEM_USBMSC_CMD_STACKSIZE=2048
CONFIG_SYSTEM_USBMSC_DEVPATH1="/dev/mtdblock0p10"
CONFIG_SYSTEM_USBMSC_DEVPATH2="/dev/mtdblock1"
CONFIG_SYSTEM_USBMSC_NLUNS=2
CONFIG_SYSTEM_USBMSC=y
CONFIG_TASK_NAME_SIZE=24
CONFIG_UART0_RXBUFSIZE=512
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_UART0_TXBUFSIZE=2048
CONFIG_USBDEV=y
CONFIG_USBDEV_BUSPOWERED=y
CONFIG_USBDEV_DUALSPEED=y
CONFIG_USBDEV_MAXPOWER=500
CONFIG_USBDEV=y
CONFIG_USBMSC=y
CONFIG_USBMSC_EPBULKIN=2
CONFIG_USBMSC_EPBULKOUT=1
CONFIG_USBMSC_REMOVABLE=y
CONFIG_USBMSC=y
CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_USERMAIN_STACKSIZE=3072
CONFIG_USER_ENTRYPOINT="nsh_main"
CONFIG_WM8776_SWAP_HPOUT=y
@@ -152,7 +152,7 @@
1 << 16 | /* 0: GPIO18, 1:MCLK0, 2:MCLK1 */ \
1 << 18 | /* 0: GPIO19, 1:BCK0, 2:DMCKO1 */ \
1 << 20 | /* 0: GPIO1A, 1:LRCK0, 2:DMDIN1 */ \
1 << 22 | /* 0: GPIO1B, 1:DIN0, 2:DMDIN0 */ \
2 << 22 | /* 0: GPIO1B, 1:DIN0, 2:DMDIN0 */ \
1 << 24 | /* 0: GPIO1C, 1:DOUT0, 2:DMCKO0 */ \
1 << 26 | /* 0: GPIO1D, 1:SCK0 */ \
0 << 28 | /* 0: GPIO1E, 1:SDI0 */ \
@@ -100,6 +100,10 @@ int lc823450_wm8776initialize(int minor)
i2s = lc823450_i2sdev_initialize();
#ifdef CONFIG_AUDIO_I2SCHAR
i2schar_register(i2s, 0);
#endif
wm8776 = wm8776_initialize(i2c, i2s, &g_wm8776info);
if (!wm8776)
+36 -1
View File
@@ -103,6 +103,8 @@ static ssize_t i2schar_read(FAR struct file *filep, FAR char *buffer,
static ssize_t i2schar_write(FAR struct file *filep, FAR const char *buffer,
size_t buflen);
static int i2schar_ioctl(FAR struct file *filep, int cmd, unsigned long arg);
/****************************************************************************
* Private Data
****************************************************************************/
@@ -114,7 +116,7 @@ static const struct file_operations i2schar_fops =
i2schar_read, /* read */
i2schar_write, /* write */
NULL, /* seek */
NULL, /* ioctl */
i2schar_ioctl, /* ioctl */
#ifndef CONFIG_DISABLE_POLL
NULL, /* poll */
#endif
@@ -344,6 +346,39 @@ errout_with_reference:
return ret;
}
/************************************************************************************
* Name: i2char_ioctl
*
* Description:
* Perform I2S device ioctl if exists
*
************************************************************************************/
static int i2schar_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
{
FAR struct inode *inode = filep->f_inode;
FAR struct i2schar_dev_s *priv;
int ret = -ENOTTY;
/* Get our private data structure */
DEBUGASSERT(filep);
inode = filep->f_inode;
DEBUGASSERT(inode);
priv = (FAR struct i2schar_dev_s *)inode->i_private;
DEBUGASSERT(priv && priv->i2s && priv->i2s->ops);
if (priv->i2s->ops->i2s_ioctl)
{
ret = priv->i2s->ops->i2s_ioctl(priv->i2s, cmd, arg);
}
return ret;
}
/****************************************************************************
* Public Functions
****************************************************************************/
+6
View File
@@ -223,6 +223,12 @@ struct i2s_ops_s
CODE int (*i2s_send)(FAR struct i2s_dev_s *dev,
FAR struct ap_buffer_s *apb, i2s_callback_t callback,
FAR void *arg, uint32_t timeout);
/* Ioctl */
CODE int (*i2s_ioctl)(FAR struct i2s_dev_s *dev,
int cmd, unsigned long arg);
};
/* I2S private data. This structure only defines the initial fields of the