summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-11-11 15:17:37 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-11-11 15:17:37 -0600
commit35805fc983f9cd16b745f4326582e2f936e74cc5 (patch)
treef9350463e2324ea19c21ae63a3fb59aa48e76b44
parent352075388a3dd601e3443f392eea600223e0abec (diff)
downloadnuttx-35805fc983f9cd16b745f4326582e2f936e74cc5.tar.gz
nuttx-35805fc983f9cd16b745f4326582e2f936e74cc5.tar.bz2
nuttx-35805fc983f9cd16b745f4326582e2f936e74cc5.zip
SAMA5D3x-EK: Add support for the apps/examples/i2schar test
-rw-r--r--nuttx/configs/sama5d3x-ek/Kconfig36
-rw-r--r--nuttx/configs/sama5d3x-ek/src/Makefile10
-rw-r--r--nuttx/configs/sama5d3x-ek/src/sam_i2schar.c124
3 files changed, 167 insertions, 3 deletions
diff --git a/nuttx/configs/sama5d3x-ek/Kconfig b/nuttx/configs/sama5d3x-ek/Kconfig
index bcc388ff4..d577cc8a8 100644
--- a/nuttx/configs/sama5d3x-ek/Kconfig
+++ b/nuttx/configs/sama5d3x-ek/Kconfig
@@ -20,7 +20,7 @@ config SAMA5_MT47H64M16HR
---help---
Micron 1Gbit x16 DDR2-800 64Mb
-endchoice
+endchoice # SAMA5D3x-EK DRAM Type
config SAMA5_NOR_MAIN
bool "Build nor_main"
@@ -78,7 +78,7 @@ config SAMA5_AT25_NXFFS
a wear-leveling, NuttX FLASH file system (NXFFS). The downside of
NXFFS is that it can be very slow.
-endchoice
+endchoice # AT25 serial FLASH configuration
config SAMA5_AT24_AUTOMOUNT
bool "AT24 Serial EEPROM auto-mount"
@@ -119,7 +119,7 @@ config SAMA5_AT24_NXFFS
a wear-leveling, NuttX FLASH file system (NXFFS). The downside of
NXFFS is that it can be very slow.
-endchoice
+endchoice # AT24 serial EPPROM configuration
config SAMA5D3X_EK_CHANNEL
int "PWM channel number"
@@ -134,3 +134,33 @@ config SAMA5D3X_EK_CHANNEL
test. See apps/examples/pwm.
endif
+
+if AUDIO_I2SCHAR && (SAMA5_SSC0 || SAMA5_SSC1)
+
+if SAMA5_SSC0 && SAMA5_SSC1
+
+config SAMA5D3X_EK_SSC_PORT
+ int "SSC port number"
+ default 0
+ range 0 1
+ ---help---
+ Specify the I2S port to use, i.e., 0 for SSC0 or 1 for SSC1
+
+else
+
+config SAMA5D3X_EK_SSC_PORT
+ int
+ default 0 if SAMA5_SSC0
+ default 1 if SAMA5_SSC1
+
+endif # SAMA5_SSC0 && SAMA5_SSC1
+
+config SAMA5D3X_EK_I2SCHAR_MINOR
+ int "I2S character driver minor number"
+ default 0
+ ---help---
+ The minor device number to use when registering the I2S character
+ device. The driver will be registered at /dev/is2charN where N is
+ the value provided by this setting.
+
+endif # ARCH_BOARD_SAMA5D3X_EK
diff --git a/nuttx/configs/sama5d3x-ek/src/Makefile b/nuttx/configs/sama5d3x-ek/src/Makefile
index dee4d74a6..89e330495 100644
--- a/nuttx/configs/sama5d3x-ek/src/Makefile
+++ b/nuttx/configs/sama5d3x-ek/src/Makefile
@@ -118,6 +118,16 @@ ifeq ($(CONFIG_CAN),y)
CSRCS += sam_can.c
endif
+ifeq ($(CONFIG_AUDIO_I2SCHAR),y)
+ifeq ($(CONFIG_SAMA5_SSC0),y)
+CSRCS += sam_i2schar.c
+else
+ifeq ($(CONFIG_SAMA5_SSC1),y)
+CSRCS += sam_i2schar.c
+endif
+endif
+endif
+
ifeq ($(CONFIG_USBMSC),y)
CSRCS += sam_usbmsc.c
endif
diff --git a/nuttx/configs/sama5d3x-ek/src/sam_i2schar.c b/nuttx/configs/sama5d3x-ek/src/sam_i2schar.c
new file mode 100644
index 000000000..d443e6315
--- /dev/null
+++ b/nuttx/configs/sama5d3x-ek/src/sam_i2schar.c
@@ -0,0 +1,124 @@
+/************************************************************************************
+ * configs/sama5d3x-ek/src/sam_i2schar.c
+ *
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <gnutt@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************************************/
+
+/************************************************************************************
+ * Included Files
+ ************************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/audio/i2s.h>
+
+#include "sam_ssc.h"
+#include "sama5d3x-ek.h"
+
+#if defined(CONFIG_AUDIO_I2SCHAR) && \
+ (defined(CONFIG_SAMA5_SSC0) || defined(CONFIG_SAMA5_SSC1))
+
+/************************************************************************************
+ * Pre-processor Definitions
+ ************************************************************************************/
+
+#ifndef CONFIG_SAMA5D3X_EK_SSC_PORT
+# if defined(CONFIG_SAMA5_SSC0)
+# define CONFIG_SAMA5D3X_EK_SSC_PORT 0
+# elif defined(CONFIG_SAMA5_SSC1)
+# define CONFIG_SAMA5D3X_EK_SSC_PORT 1
+# endif
+#endif
+
+#ifndef CONFIG_SAMA5D3X_EK_I2SCHAR_MINOR
+# define CONFIG_SAMA5D3X_EK_I2SCHAR_MINOR 0
+#endif
+
+/************************************************************************************
+ * Private Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Public Functions
+ ************************************************************************************/
+
+/************************************************************************************
+ * Name: i2schar_devinit
+ *
+ * Description:
+ * All architectures must provide the following interface in order to work with
+ * apps/examples/i2schar.
+ *
+ ************************************************************************************/
+
+int i2schar_devinit(void)
+{
+ static bool initialized = false;
+ struct i2s_dev_s *i2s;
+ int ret;
+
+ /* Have we already initialized? */
+
+ if (!initialized)
+ {
+ /* Call sam_ssc_initialize() to get an instance of the SSC/I2S interface */
+
+ i2s = sam_ssc_initialize(CONFIG_SAMA5D3X_EK_SSC_PORT);
+ if (!i2s)
+ {
+ dbg("ERROR: Failed to get the SAMA5 SSC/I2S driver for SSC%d\n",
+ CONFIG_SAMA5D3X_EK_SSC_PORT);
+ return -ENODEV;
+ }
+
+ /* Register the I2S character driver at "/dev/i2schar0" */
+
+ ret = i2schar_register(i2s, CONFIG_SAMA5D3X_EK_I2SCHAR_MINOR);
+ if (ret < 0)
+ {
+ adbg("ERROR: i2schar_register failed: %d\n", ret);
+ return ret;
+ }
+
+ /* Now we are initialized */
+
+ initialized = true;
+ }
+
+ return OK;
+}
+
+#endif /* CONFIG_AUDIO_I2SCHAR && (CONFIG_SAMA5_SSC0 || CONFIG_SAMA5_SSC1) */