/************************************************************************************ * configs/sam4l-xplained/src/sam4l-xplained.h * * 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. * ************************************************************************************/ #ifndef __CONFIGS_SAM4L_XPLAINED_SRC_SAM4L_XPLAINED_H #define __CONFIGS_SAM4L_XPLAINED_SRC_SAM4L_XPLAINED_H /************************************************************************************ * Included Files ************************************************************************************/ #include #include #include #include #include #include "chip/sam_pinmap.h" /************************************************************************************ * Pre-processor Definitions ************************************************************************************/ /* LEDs: There are three LEDs on board the SAM4L Xplained Pro board: The EDBG * controls two of the LEDs, a power LED and a status LED. There is only * one user controllable LED, a yellow LED labeled LED0 near the SAM4L USB * connector. * * This LED is controlled by PC07 and LED0 can be activated by driving the * PC07 to GND. * * When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will * control LED0 as follows: * * SYMBOL Meaning LED0 * ------------------- ----------------------- ------ * LED_STARTED NuttX has been started OFF * LED_HEAPALLOCATE Heap has been allocated OFF * LED_IRQSENABLED Interrupts enabled OFF * LED_STACKCREATED Idle stack created ON * LED_INIRQ In an interrupt N/C * LED_SIGNAL In a signal handler N/C * LED_ASSERTION An assertion failed N/C * LED_PANIC The system has crashed FLASH * * Thus is LED0 is statically on, NuttX has successfully booted and is, * apparently, running normmally. If LED0 is flashing at approximately * 2Hz, then a fatal error has been detected and the system has halted. */ #define GPIO_LED0 (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTC | GPIO_PIN7) /* QTouch button: The SAM4L Xplained Pro kit has one QTouch button. The connection * to the SAM4L is: * * PC13 CATB_SENSE15 * PC14 CATB_DIS */ /* Mechanical buttons: * * The SAM4L Xplained Pro contains two mechanical buttons. One button is the * RESET button connected to the SAM4L reset line and the other is a generic user * configurable button. When a button is pressed it will drive the I/O line to GND. * * PC24 SW0 */ #define GPIO_SW0 (GPIO_INTERRUPT | GPIO_PULL_UP | GPIO_GLITCH_FILTER | \ GPIO_PORTC | GPIO_PIN24) #define IRQ_SW0 SAM_IRQ_PC24 /* LCD1 * * EXT5 SAM4L BOARD LCD1 SHARED * PIN PIN FUNCTION FUNCTION WITH * 1 PA09 COM3 COM3 EXT3 * 2 PA10 COM2 COM2 EXT3 * 3 PA11 COM1 COM1 EXT4 * 4 PA12 COM0 COM0 EXT4 * 5 PC15 SEG0 SEG0 EXT3 * 6 PC16 SEG1 SEG1 EXT3 * 7 PC17 SEG2 SEG2 EXT4 * 8 PC18 SEG3 SEG3 EXT4 * 9 PC19 SEG4 SEG4 * 10 PA13 SEG5 SEG5 EXT4 * 11 PA14 SEG6 SEG6 * 12 PA15 SEG7 SEG7 EXT4 * 13 PA16 SEG8 SEG8 EXT4 * 14 PA17 SEG9 SEG9 EXT3 * 15 PC20 SEG10 SEG10 * 16 PC21 SEG11 SEG11 * 17 PC22 SEG12 SEG12 * 18 PC23 SEG13 SEG13 * 19 PB08 SEG14 SEG14 * 20 PB09 SEG15 SEG15 * 21 PB10 SEG16 SEG16 EXT2 * 22 PB11 SEG17 SEG17 EXT2 * 23 PA18 SEG18 SEG18 EXT3-4 * 24 PA19 SEG19 SEG19 EXT3-4 * 25 PA20 SEG20 SEG20 EXT3-4 * 26 PB07 SEG21 SEG21 * 27 PB06 SEG22 SEG22 * 28 PA08 SEG23 SEG32 EXT3 * 29 PC24 SEG24 N/C * 30 PC25 SEG25 N/C EXT1 * 31 PC26 SEG26 N/C EXT2-3 * 32 PC27 SEG27 N/C EXT2-3 * 33 PC28 SEG28 N/C * 34 PC29 SEG29 N/C * 35 PC30 SEG30 N/C EXT1-2 * 36 PC31 SEG31 N/C * 37 PB12 SEG32 N/C EXT1 * 38 PB13 SEG33 N/C EXT1 * 39 PA21 SEG34 N/C EXT1-2 * 40 PA22 SEG35 N/C EXT1-2 * 41 PB14 SEG36 N/C EXT2-4 * 42 PB15 SEG37 N/C EXT2-4 * 43 PA23 SEG38 N/C EXT1 * 44 PA24 SEG39 N/C EXT1 * 45 --- N/C N/C * 46 --- N/C N/C * 47 --- VCC_P3V3 BL V+ * 48 --- GND BL V- * 49 PC05 BL BL CTRL EXT2 * 50 --- ID ID * 51 --- GND GND * * The backlight control is active high. */ #ifdef CONFIG_SAM4L_XPLAINED_SLCD1MODULE # ifndef CONFIG_SAM34_LCDCA # error CONFIG_SAM34_LCDCA is required to use the LCD1 module # endif # define GPIO_LCD1_BL (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_CLEAR | \ GPIO_PORTC | GPIO_PIN5) #endif /* I/O1 * * Support for the microSD card slot on the I/O1 module. The I/O1 requires * SPI support and two GPIOs. These the GPIOs will vary if the I/O1 * is installed on the EXT1 or EXT2 connector: * * * PIN EXT1 EXT2 Description * --- -------------- --------------- ------------------------------------- * 15 PC03 SPI/NPCS0 PB11 SPI/NPCS2 Active low chip select OUTPUT, pulled * high on board. * 10 PB13 SPI/NPCS1 PC09 GPIO Active low card detect INPUT, must * use internal pull-up. */ #ifdef CONFIG_SAM4L_XPLAINED_IOMODULE # ifndef CONFIG_SAM34_SPI0 # error CONFIG_SAM34_SPI0 is required to use the I/O1 module # endif # if defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT1) # if defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE) && \ defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE_EXT1) # error I/O1 and OLED1 modules cannot both reside in EXT1 # endif # define GPIO_SD_CD (GPIO_INTERRUPT | GPIO_INT_CHANGE | GPIO_PULL_UP | \ GPIO_GLITCH_FILTER | GPIO_PORTB | GPIO_PIN13) # define IRQ_SD_CD SAM_IRQ_PB13 # define GPIO_SD_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTC | GPIO_PIN3) # define SD_CSNO 0 # elif defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT2) # ifndef CONFIG_SAM4L_XPLAINED_SLCD1MODULE # error I/O1 cannot be in EXT2 if the LCD1 module is connected # endif # if defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE) && \ defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE_EXT2) # error I/O1 and OLED1 modules cannot both reside in EXT2 # endif # define GPIO_CD (GPIO_INTERRUPT | GPIO_INT_CHANGE | GPIO_PULL_UP | \ GPIO_GLITCH_FILTER | GPIO_PORTC | GPIO_PIN9) # define IRQ_CD SAM_IRQ_PC9 # define GPIO_SD_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTB | GPIO_PIN11) # define SD_CSNO 2 # else # error Which connector is the I/O1 module installed in? # endif #endif /* OLED1 * * Support for the microSD card slot on the I/O1 module. The I/O1 requires * SPI support and three output GPIOs. These the GPIOs will vary if the OLED1 * is installed on the EXT1 or EXT2 connector: * * * PIN EXT1 EXT2 Description * --- -------------- --------------- ------------------------------------- * 5 PB12 GPIO PC08 GPIO DATA_CMD_SEL * 10 PB13 SPI/NPCS1 PC09 GPIO DISPLAY_RESET. Active low. * 15 PC03 SPI/NPCS0 PB11 SPI/NPCS2 DISPLAY_SS. Active low. */ #ifdef CONFIG_SAM4L_XPLAINED_OLED1MODULE # ifndef CONFIG_SAM34_SPI0 # error CONFIG_SAM34_SPI0 is required to use the OLED1 module # endif # ifndef CONFIG_SPI_CMDDATA # error CONFIG_SPI_CMDDATA is required to use the OLED1 module # endif # ifndef CONFIG_LCD_SSD1306 # error CONFIG_LCD_SSD1306 is required to use the OLED1 module # endif # ifndef CONFIG_LCD_UG2832HSWEG04 # error CONFIG_LCD_UG2832HSWEG04 is required to use the OLED1 module # endif # if defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE_EXT1) # if defined(CONFIG_SAM4L_XPLAINED_IOMODULE) && \ defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT1) # error OLED1 and I/O1 modules cannot both reside in EXT1 # endif # define GPIO_OLED_DATA (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_CLEAR | \ GPIO_PORTB | GPIO_PIN12) # define GPIO_OLED_RST (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_CLEAR | \ GPIO_PORTB | GPIO_PIN13) # define GPIO_OLED_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTC | GPIO_PIN3) # define OLED_CSNO 0 # elif defined(CONFIG_SAM4L_XPLAINED_OLED1MODULE_EXT2) # ifndef CONFIG_SAM4L_XPLAINED_SLCD1MODULE # error OLED1 cannot be in EXT2 if the LCD1 module is connected # endif # if defined(CONFIG_SAM4L_XPLAINED_IOMODULE) && \ defined(CONFIG_SAM4L_XPLAINED_IOMODULE_EXT2) # error OLED1 and I/O1 modules cannot both reside in EXT2 # endif # define GPIO_OLED_DATA (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_CLEAR | \ GPIO_PORTC | GPIO_PIN8) # define GPIO_OLED_RST (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_CLEAR | \ GPIO_PORTc | GPIO_PIN9) # define GPIO_OLED_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTB | GPIO_PIN11) # define OLED_CSNO 2 # else # error Which connector is the OLED1 module installed in? # endif #endif #if defined(CONFIG_LCD_UG2864AMBAG01) || defined(CONFIG_LCD_UG2864HSWEG01) # define GPIO_SD_CS (GPIO_OUTPUT | GPIO_PULL_NONE | GPIO_OUTPUT_SET | \ GPIO_PORTB | GPIO_PIN11) #endif /************************************************************************************ * Public Types ************************************************************************************/ /************************************************************************************ * Public data ************************************************************************************/ #ifndef __ASSEMBLY__ /************************************************************************************ * Public Functions ************************************************************************************/ /************************************************************************************ * Name: sam_spiinitialize * * Description: * Called to configure SPI chip select GPIO pins for the SAM3U-EK board. * ************************************************************************************/ void weak_function sam_spiinitialize(void); /************************************************************************************ * Name: sam_sdinitialize * * Description: * Initialize the SPI-based SD card. Requires CONFIG_SAM4L_XPLAINED_IOMODULE=y, * CONFIG_DISABLE_MOUNTPOINT=n, CONFIG_MMCSD=y, and CONFIG_SAM34_SPI0=y * ************************************************************************************/ #if defined(CONFIG_SAM34_SPI0) && defined(CONFIG_SAM4L_XPLAINED_IOMODULE) int sam_sdinitialize(int minor); #endif /**************************************************************************** * Name: sam_slcd_initialize * * Description: * Initialize the SAM4L Xplained Pro LCD hardware and register the character * driver as /dev/slcd. * ****************************************************************************/ #if defined(CONFIG_SAM34_LCDCA) && defined(CONFIG_SAM4L_XPLAINED_SLCD1MODULE) int sam_slcd_initialize(void); #endif /************************************************************************************ * Name: up_ledinit ************************************************************************************/ #ifdef CONFIG_ARCH_LEDS void up_ledinit(void); #endif #endif /* __ASSEMBLY__ */ #endif /* __CONFIGS_SAM4L_XPLAINED_SRC_SAM4L_XPLAINED_H */