mirror of
https://github.com/apache/nuttx.git
synced 2026-05-22 05:42:05 +08:00
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:
committed by
Gregory Nutt
parent
1f2e7f4b52
commit
fb07bd7e27
File diff suppressed because it is too large
Load Diff
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
|
||||
****************************************************************************/
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user