From 35805fc983f9cd16b745f4326582e2f936e74cc5 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 11 Nov 2013 15:17:37 -0600 Subject: SAMA5D3x-EK: Add support for the apps/examples/i2schar test --- nuttx/configs/sama5d3x-ek/Kconfig | 36 +++++++- nuttx/configs/sama5d3x-ek/src/Makefile | 10 +++ nuttx/configs/sama5d3x-ek/src/sam_i2schar.c | 124 ++++++++++++++++++++++++++++ 3 files changed, 167 insertions(+), 3 deletions(-) create mode 100644 nuttx/configs/sama5d3x-ek/src/sam_i2schar.c 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 + * + * 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 + +#include +#include +#include + +#include + +#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) */ -- cgit v1.2.3