Skip to content
Snippets Groups Projects
Commit 066cca18 authored by Gregory Nutt's avatar Gregory Nutt
Browse files

SAM4X Xplained Pro board configuration updated by Bob Doison

parent 1fb0384f
No related branches found
No related tags found
No related merge requests found
......@@ -50,6 +50,7 @@ CONFIG_ARCH_HAVE_STACKCHECK=y
#
# CONFIG_DEBUG_MM is not set
# CONFIG_DEBUG_SCHED is not set
# CONFIG_DEBUG_USB is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_DEBUG_LIB is not set
# CONFIG_DEBUG_BINFMT is not set
......@@ -67,6 +68,7 @@ CONFIG_DEBUG_STACK=y
# CONFIG_DEBUG_DMA is not set
# CONFIG_DEBUG_RTC is not set
# CONFIG_DEBUG_WATCHDOG is not set
# CONFIG_DEBUG_TIMER is not set
# CONFIG_DEBUG_AUDIO is not set
CONFIG_DEBUG_SYMBOLS=y
CONFIG_ARCH_HAVE_CUSTOMOPT=y
......@@ -209,7 +211,7 @@ CONFIG_SAM34_RTC=y
CONFIG_SAM34_SMC=y
# CONFIG_SAM34_SPI0 is not set
# CONFIG_SAM34_SSC is not set
# CONFIG_SAM34_TC0 is not set
CONFIG_SAM34_TC0=y
# CONFIG_SAM34_TC1 is not set
# CONFIG_SAM34_TC2 is not set
# CONFIG_SAM34_TC3 is not set
......@@ -221,7 +223,7 @@ CONFIG_SAM34_SMC=y
# CONFIG_SAM34_TWIS1 is not set
CONFIG_SAM34_UART0=y
CONFIG_SAM34_UART1=y
# CONFIG_SAM34_UDP is not set
CONFIG_SAM34_UDP=y
# CONFIG_SAM34_USART0 is not set
CONFIG_SAM34_USART1=y
CONFIG_SAM34_WDT=y
......@@ -246,20 +248,25 @@ CONFIG_SAM34_GPIOC_IRQ=y
#
# AT91SAM3/4 HSMCI device driver options
#
CONFIG_SAM34_HSMCI_RDPROOF=y
CONFIG_SAM34_HSMCI_WRPROOF=y
# CONFIG_SAM34_HSMCI_RDPROOF is not set
# CONFIG_SAM34_HSMCI_WRPROOF is not set
#
# AT91SAM3/4 USB Full Speed Device Controller driver (DCD) options
#
# CONFIG_SAM34_UDP_REGDEBUG is not set
#
# AT91SAM3/4 Watchdog Configuration
#
CONFIG_WDT_ENABLED_ON_RESET=y
# CONFIG_WDT_DISABLE_ON_RESET is not set
CONFIG_WDT_TIMEOUT=4000
CONFIG_WDT_MINTIME=2000
CONFIG_WDT_TIMEOUT=5000
CONFIG_WDT_MINTIME=2500
CONFIG_WDT_THREAD=y
CONFIG_WDT_THREAD_NAME="wdog"
CONFIG_WDT_THREAD_INTERVAL=2000
CONFIG_WDT_THREAD_PRIORITY=220
CONFIG_WDT_THREAD_INTERVAL=2500
CONFIG_WDT_THREAD_PRIORITY=200
CONFIG_WDT_THREAD_STACKSIZE=512
#
......@@ -431,7 +438,7 @@ CONFIG_PTHREAD_STACK_DEFAULT=4096
#
# Device Drivers
#
# CONFIG_DISABLE_POLL is not set
CONFIG_DISABLE_POLL=y
CONFIG_DEV_NULL=y
CONFIG_DEV_ZERO=y
# CONFIG_LOOP is not set
......@@ -448,6 +455,7 @@ CONFIG_RTC_DATETIME=y
CONFIG_RTC_ALARM=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_DEVPATH="/dev/watchdog0"
CONFIG_TIMER=y
# CONFIG_ANALOG is not set
# CONFIG_AUDIO_DEVICES is not set
# CONFIG_VIDEO_DEVICES is not set
......@@ -473,6 +481,7 @@ CONFIG_PIPES=y
# CONFIG_SERCOMM_CONSOLE is not set
CONFIG_SERIAL=y
# CONFIG_DEV_LOWCONSOLE is not set
CONFIG_SERIAL_REMOVABLE=y
# CONFIG_16550_UART is not set
# CONFIG_ARCH_HAVE_UART is not set
CONFIG_ARCH_HAVE_UART0=y
......@@ -502,7 +511,6 @@ CONFIG_ARCH_HAVE_USART1=y
CONFIG_USART1_ISUART=y
CONFIG_MCU_SERIAL=y
CONFIG_STANDARD_SERIAL=y
CONFIG_SERIAL_NPOLLWAITERS=2
# CONFIG_SERIAL_TIOCSERGSTRUCT is not set
CONFIG_UART0_SERIAL_CONSOLE=y
# CONFIG_UART1_SERIAL_CONSOLE is not set
......@@ -546,7 +554,48 @@ CONFIG_USART1_2STOP=0
# CONFIG_USART1_OFLOWCONTROL is not set
# CONFIG_SERIAL_IFLOWCONTROL is not set
# CONFIG_SERIAL_OFLOWCONTROL is not set
# CONFIG_USBDEV is not set
CONFIG_USBDEV=y
#
# USB Device Controller Driver Options
#
# CONFIG_USBDEV_ISOCHRONOUS is not set
# CONFIG_USBDEV_DUALSPEED is not set
CONFIG_USBDEV_SELFPOWERED=y
# CONFIG_USBDEV_BUSPOWERED is not set
CONFIG_USBDEV_MAXPOWER=100
# CONFIG_USBDEV_DMA is not set
CONFIG_ARCH_USBDEV_STALLQUEUE=y
# CONFIG_USBDEV_TRACE is not set
#
# USB Device Class Driver Options
#
# CONFIG_USBDEV_COMPOSITE is not set
# CONFIG_PL2303 is not set
CONFIG_CDCACM=y
CONFIG_CDCACM_DEVMINOR=0
# CONFIG_CDCACM_CONSOLE is not set
CONFIG_CDCACM_EP0MAXPACKET=64
CONFIG_CDCACM_EPINTIN=1
CONFIG_CDCACM_EPINTIN_FSSIZE=64
CONFIG_CDCACM_EPINTIN_HSSIZE=64
CONFIG_CDCACM_EPBULKOUT=3
CONFIG_CDCACM_EPBULKOUT_FSSIZE=64
CONFIG_CDCACM_EPBULKOUT_HSSIZE=512
CONFIG_CDCACM_EPBULKIN=2
CONFIG_CDCACM_EPBULKIN_FSSIZE=64
CONFIG_CDCACM_EPBULKIN_HSSIZE=512
CONFIG_CDCACM_NWRREQS=4
CONFIG_CDCACM_NRDREQS=4
CONFIG_CDCACM_BULKIN_REQLEN=250
CONFIG_CDCACM_RXBUFSIZE=1024
CONFIG_CDCACM_TXBUFSIZE=1024
CONFIG_CDCACM_VENDORID=0x0525
CONFIG_CDCACM_PRODUCTID=0xa4a7
CONFIG_CDCACM_VENDORSTR="NuttX"
CONFIG_CDCACM_PRODUCTSTR="CDC/ACM Serial"
# CONFIG_USBMSC is not set
# CONFIG_USBHOST is not set
# CONFIG_WIRELESS is not set
......@@ -639,8 +688,8 @@ CONFIG_BUILTIN=y
#
# Standard C Library Options
#
CONFIG_STDIO_BUFFER_SIZE=0
# CONFIG_STDIO_LINEBUFFER is not set
CONFIG_STDIO_BUFFER_SIZE=256
CONFIG_STDIO_LINEBUFFER=y
CONFIG_NUNGET_CHARS=2
# CONFIG_LIBM is not set
# CONFIG_NOPRINTF_FIELDWIDTH is not set
......@@ -733,6 +782,7 @@ CONFIG_EXAMPLES_NSH_CXXINITIALIZE=y
# CONFIG_EXAMPLES_ROMFS is not set
# CONFIG_EXAMPLES_SENDMAIL is not set
CONFIG_EXAMPLES_SERIALBLASTER=y
CONFIG_EXAMPLES_SERIALRX=y
# CONFIG_EXAMPLES_SERLOOP is not set
# CONFIG_EXAMPLES_SLCD is not set
# CONFIG_EXAMPLES_SMART_TEST is not set
......@@ -856,10 +906,12 @@ CONFIG_NSH_NESTDEPTH=3
# CONFIG_NSH_DISABLE_LOOPS is not set
# CONFIG_NSH_DISABLEBG is not set
CONFIG_NSH_CONSOLE=y
# CONFIG_NSH_USBCONSOLE is not set
#
# USB Trace Support
#
# CONFIG_NSH_USBDEV_TRACE is not set
CONFIG_NSH_CONDEV="/dev/console"
CONFIG_NSH_ARCHINIT=y
......@@ -933,7 +985,7 @@ CONFIG_READLINE_ECHO=y
#
# SD Card
#
CONFIG_SYSTEM_SDCARD=y
# CONFIG_SYSTEM_SDCARD is not set
#
# Sysinfo
......@@ -957,6 +1009,7 @@ CONFIG_SYSTEM_STACKMONITOR_INTERVAL=2
#
# USB CDC/ACM Device Commands
#
# CONFIG_SYSTEM_CDCACM is not set
#
# USB Composite Device Commands
......
......@@ -57,7 +57,7 @@
#define HAVE_HSMCI 1
#define HAVE_PROC 1
#define HAVE_USBDEV 0
#define HAVE_USBDEV 1
#undef HAVE_USBMONITOR
/* HSMCI */
......@@ -95,7 +95,7 @@
* device.
*/
#if !defined(CONFIG_SAM34_UDP) || !defined(CONFIG_USBDEV)
#if !defined(CONFIG_SAM34_UDP) || !defined(CONFIG_USBDEV) ||!defined(CONFIG_CDCACM)
# undef HAVE_USBDEV
#endif
......@@ -207,10 +207,8 @@ int sam_hsmci_initialize(void);
*
************************************************************************************/
#ifdef HAVE_HSMCI
#if defined(HAVE_HSMCI) && defined(CONFIG_MMCSD_HAVECARDDETECT)
bool sam_cardinserted(int slotno);
#else
# define sam_cardinserted(slotno) (false)
#endif
/************************************************************************************
......
......@@ -83,14 +83,18 @@ static struct sam_hsmci_state_s g_hsmci;
****************************************************************************/
/****************************************************************************
* Name: sam_hsmci_cardetect
* Name: sam_hsmci_cardetect_int
*
* Description:
* Card detect interrupt handler
*
* TODO: Any way to automatically moun/unmount filesystem based on card
* detect status? Yes... send a message or signal to an application.
*
****************************************************************************/
static int sam_hsmci_cardetect(int irq, void *regs)
#ifdef CONFIG_MMCSD_HAVECARDDETECT
static int sam_hsmci_cardetect_int(int irq, void *regs)
{
bool inserted;
......@@ -100,7 +104,7 @@ static int sam_hsmci_cardetect(int irq, void *regs)
/* Has the card detect state changed? */
if (inserted == g_hsmci.inserted)
if (inserted != g_hsmci.inserted)
{
/* Yes... remember that new state and inform the HSMCI driver */
......@@ -113,6 +117,7 @@ static int sam_hsmci_cardetect(int irq, void *regs)
return OK;
}
#endif
/****************************************************************************
* Public Functions
......@@ -135,10 +140,6 @@ int sam_hsmci_initialize(void)
if (!g_hsmci.initialized)
{
/* Initialize card-detect GPIO. There is no write-protection GPIO. */
sam_configgpio(GPIO_MCI_CD);
/* Mount the SDIO-based MMC/SD block driver */
/* First, get an instance of the SDIO interface */
......@@ -158,14 +159,21 @@ int sam_hsmci_initialize(void)
return ret;
}
#ifdef CONFIG_MMCSD_HAVECARDDETECT
/* Initialize card-detect GPIO. There is no write-protection GPIO. */
sam_configgpio(GPIO_MCI_CD);
/* Configure card detect interrupts */
sam_gpioirq(GPIO_MCI_CD);
(void)irq_attach(MCI_CD_IRQ, sam_hsmci_cardetect);
(void)irq_attach(MCI_CD_IRQ, sam_hsmci_cardetect_int);
g_hsmci.inserted = sam_cardinserted(0);
#else
g_hsmci.inserted = true; /* An assumption? */
#endif
/* Then inform the HSMCI driver if there is or is not a card in the slot. */
g_hsmci.inserted = sam_cardinserted(0);
sdio_mediachange(g_hsmci.hsmci, g_hsmci.inserted);
/* Now we are initialized */
......@@ -174,7 +182,9 @@ int sam_hsmci_initialize(void)
/* Enable card detect interrupts */
#ifdef CONFIG_MMCSD_HAVECARDDETECT
sam_gpioirqenable(MCI_CD_IRQ);
#endif
}
return OK;
......@@ -188,6 +198,7 @@ int sam_hsmci_initialize(void)
*
****************************************************************************/
#ifdef CONFIG_MMCSD_HAVECARDDETECT
bool sam_cardinserted(int slotno)
{
bool removed;
......@@ -199,6 +210,7 @@ bool sam_cardinserted(int slotno)
return !removed;
}
#endif
/****************************************************************************
* Name: sam_writeprotected
......
......@@ -101,10 +101,21 @@
int nsh_archinitialize(void)
{
#if defined(HAVE_HSMCI) || defined (HAVE_PROC) || defined(HAVE_USBMONITOR)
#if defined (HAVE_USBDEV) || defined(HAVE_HSMCI) || defined (HAVE_PROC) || \
defined(HAVE_USBMONITOR)
int ret;
#endif
#ifdef HAVE_USBDEV
message("Registering CDC/ACM serial driver\n");
ret = cdcacm_initialize(CONFIG_CDCACM_DEVMINOR, NULL);
if (ret < 0)
{
message("ERROR: Failed to create the CDC/ACM serial device: %d\n", errno);
return ret;
}
#endif
#ifdef HAVE_HSMCI
/* Initialize the HSMCI driver */
......@@ -123,31 +134,21 @@ int nsh_archinitialize(void)
message("Mounting procfs to /proc\n");
ret = mount(NULL, "/proc", "procfs", 0, NULL);
if (ret < 0)
{
message("ERROR: Failed to mount the PROC filesystem: %d\n", errno);
return ret;
}
#endif
#ifdef HAVE_USBMONITOR
/* Start the USB Monitor */
message("Starting USB Monitor\n");
ret = usbmonitor_start(0, NULL);
if (ret != OK)
{
message("nsh_archinitialize: Start USB monitor: %d\n", ret);
message("ERROR: Failed to mount the PROC filesystem: %d\n", errno);
return ret;
}
#endif
#if HAVE_HSMCI
message("Mounting /dev/mmcsd0 to /fat\n");
ret = mount("/dev/mmcsd0", "/fat", "vfat", 0, NULL);
if (ret < 0)
{
message("ERROR: Failed to mount the FAT filesystem: %d\n", errno);
return ret;
}
{
message("ERROR: Failed to mount the FAT filesystem: %d\n", errno);
return ret;
}
#endif
#ifdef CONFIG_TIMER
/* Registers the timer driver and starts an async interrupt. */
......@@ -155,5 +156,17 @@ int nsh_archinitialize(void)
up_timerinitialize();
#endif
#ifdef HAVE_USBMONITOR
/* Start the USB Monitor */
message("Starting USB Monitor\n");
ret = usbmonitor_start(0, NULL);
if (ret != OK)
{
message("nsh_archinitialize: Start USB monitor: %d\n", ret);
return ret;
}
#endif
return OK;
}
......@@ -61,7 +61,7 @@
* Definitions
************************************************************************************/
/* Configuration *******************************************************************/
/* Wathdog hardware should be enabled */
/* Watchdog hardware should be enabled */
#if !defined(CONFIG_SAM34_WDT)
# warning "CONFIG_SAM34_WDT must be defined"
......@@ -77,6 +77,10 @@
# endif
#endif
#if (CONFIG_WDT_THREAD_INTERVAL < CONFIG_WDT_MINTIME)
# error "WDT_THREAD_INTERVAL must be greater than or equal to WDT_MINTIME"
#endif
/* Debug ***************************************************************************/
/* Non-standard debug that may be enabled just for testing the watchdog timer */
......@@ -109,10 +113,8 @@
* Public Functions
************************************************************************************/
/* Watchdog kicker task */
/*
Watchdog kicker task
*/
#if defined(CONFIG_WDT_THREAD)
static int wdog_daemon(int argc, char *argv[])
{
......@@ -172,7 +174,6 @@ errout:
int up_wdginitialize(void)
{
#if (defined(CONFIG_SAM34_WDT) && !defined(CONFIG_WDT_DISABLE_ON_RESET))
int fd;
int ret;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment