http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.c
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.c 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.c
deleted file mode 100755
index 24ee27f..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/**
- * \file
- *
- * \brief SAM System Interrupt Driver
- *
- * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#include "system_interrupt.h"
-
-/**
- * \brief Check if a interrupt line is pending.
- *
- * Checks if the requested interrupt vector is pending.
- *
- * \param[in] vector  Interrupt vector number to check
- *
- * \returns A boolean identifying if the requested interrupt vector is pending.
- *
- * \retval true   Specified interrupt vector is pending
- * \retval false  Specified interrupt vector is not pending
- *
- */
-bool system_interrupt_is_pending(
-               const enum system_interrupt_vector vector)
-{
-       bool result;
-
-       if (vector >= _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START) {
-               result = ((NVIC->ISPR[0] & (1 << vector)) != 0);
-       } else if (vector == SYSTEM_INTERRUPT_SYSTICK) {
-               result = ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk) != 0);
-       } else {
-               Assert(false);
-               result = false;
-       }
-
-       return result;
-}
-
-/**
- * \brief Set a interrupt vector as pending.
- *
- * Set the requested interrupt vector as pending (i.e. issues a software
- * interrupt request for the specified vector). The software handler will be
- * handled (if enabled) in a priority order based on vector number and
- * configured priority settings.
- *
- * \param[in] vector  Interrupt vector number which is set as pending
- *
- * \returns Status code identifying if the vector was successfully set as
- *          pending.
- *
- * \retval STATUS_OK           If no error was detected
- * \retval STATUS_INVALID_ARG  If an unsupported interrupt vector number was 
given
- */
-enum status_code system_interrupt_set_pending(
-               const enum system_interrupt_vector vector)
-{
-       enum status_code status = STATUS_OK;
-
-       if (vector >= _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START) {
-               NVIC->ISPR[0] = (1 << vector);
-       } else if (vector == SYSTEM_INTERRUPT_NON_MASKABLE) {
-               /* Note: Because NMI has highest priority it will be executed
-                * immediately after it has been set pending */
-               SCB->ICSR = SCB_ICSR_NMIPENDSET_Msk;
-       } else if (vector == SYSTEM_INTERRUPT_SYSTICK) {
-               SCB->ICSR = SCB_ICSR_PENDSTSET_Msk;
-       } else {
-               /* The user want to set something unsupported as pending */
-               Assert(false);
-               status = STATUS_ERR_INVALID_ARG;
-       }
-
-       return status;
-}
-
-/**
- * \brief Clear pending interrupt vector.
- *
- * Clear a pending interrupt vector, so the software handler is not executed.
- *
- * \param[in] vector  Interrupt vector number to clear
- *
- * \returns A status code identifying if the interrupt pending state was
- *          successfully cleared.
- *
- * \retval STATUS_OK           If no error was detected
- * \retval STATUS_INVALID_ARG  If an unsupported interrupt vector number was 
given
- */
-enum status_code system_interrupt_clear_pending(
-               const enum system_interrupt_vector vector)
-{
-       enum status_code status = STATUS_OK;
-
-       if (vector >= _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START) {
-               NVIC->ICPR[0] = (1 << vector);
-       } else if (vector == SYSTEM_INTERRUPT_NON_MASKABLE) {
-               /* Note: Clearing of NMI pending interrupts does not make sense 
and is
-                * not supported by the device, as it has the highest priority 
and will
-                * always be executed at the moment it is set */
-               return STATUS_ERR_INVALID_ARG;
-       } else if (vector == SYSTEM_INTERRUPT_SYSTICK) {
-               SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk;
-       } else {
-               Assert(false);
-               status = STATUS_ERR_INVALID_ARG;
-       }
-
-       return status;
-}
-
-/**
- * \brief Set interrupt vector priority level.
- *
- * Set the priority level of an external interrupt or exception.
- *
- * \param[in] vector          Interrupt vector to change
- * \param[in] priority_level  New vector priority level to set
- *
- * \returns Status code indicating if the priority level of the interrupt was
- *          successfully set.
- *
- * \retval STATUS_OK           If no error was detected
- * \retval STATUS_INVALID_ARG  If an unsupported interrupt vector number was 
given
- */
-enum status_code system_interrupt_set_priority(
-               const enum system_interrupt_vector vector,
-               const enum system_interrupt_priority_level priority_level)
-{
-       enum status_code status = STATUS_OK;
-
-       if (vector >= _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START) {
-               uint8_t register_num = vector / 4;
-               uint8_t priority_pos = ((vector % 4) * 8) + (8 - 
__NVIC_PRIO_BITS);
-
-               NVIC->IP[register_num] =
-                               (NVIC->IP[register_num] & 
~(_SYSTEM_INTERRUPT_PRIORITY_MASK << priority_pos)) |
-                               (priority_level << priority_pos);
-
-       } else if (vector == SYSTEM_INTERRUPT_SYSTICK) {
-               SCB->SHP[1] = (priority_level << 
_SYSTEM_INTERRUPT_SYSTICK_PRI_POS);
-       } else {
-               Assert(false);
-               status = STATUS_ERR_INVALID_ARG;
-       }
-
-       return status;
-}
-
-/**
- * \brief Get interrupt vector priority level.
- *
- * Retrieves the priority level of the requested external interrupt or 
exception.
- *
- * \param[in] vector  Interrupt vector of which the priority level will be read
- *
- * \return Currently configured interrupt priority level of the given interrupt
- *         vector.
- */
-enum system_interrupt_priority_level system_interrupt_get_priority(
-               const enum system_interrupt_vector vector)
-{
-       uint8_t register_num = vector / 4;
-       uint8_t priority_pos = ((vector % 4) * 8) + (8 - __NVIC_PRIO_BITS);
-
-       enum system_interrupt_priority_level priority = 
SYSTEM_INTERRUPT_PRIORITY_LEVEL_0;
-
-       if (vector >= 0) {
-               priority = (enum system_interrupt_priority_level)
-                               ((NVIC->IP[register_num] >> priority_pos) & 
_SYSTEM_INTERRUPT_PRIORITY_MASK);
-       } else if (vector == SYSTEM_INTERRUPT_SYSTICK) {
-               priority = (enum system_interrupt_priority_level)
-                               ((SCB->SHP[1] >> 
_SYSTEM_INTERRUPT_SYSTICK_PRI_POS) & _SYSTEM_INTERRUPT_PRIORITY_MASK);
-       }
-
-       return priority;
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.h 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.h
deleted file mode 100755
index f7452d9..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt.h
+++ /dev/null
@@ -1,429 +0,0 @@
-/**
- * \file
- *
- * \brief SAM System Interrupt Driver
- *
- * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#ifndef SYSTEM_INTERRUPT_H_INCLUDED
-#define SYSTEM_INTERRUPT_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \defgroup asfdoc_sam0_system_interrupt_group SAM System Interrupt (SYSTEM 
INTERRUPT) Driver
- *
- * This driver for Atmel&reg; | SMART ARM&reg;-based microcontrollers provides
- * an interface for the configuration and management of internal software and
- * hardware interrupts/exceptions.
- *
- * The following peripheral is used by this module:
- *  - NVIC (Nested Vector Interrupt Controller)
- *
- * The following devices can use this module:
- *  - Atmel | SMART SAM D20/D21
- *  - Atmel | SMART SAM R21
- *  - Atmel | SMART SAM D09/D10/D11
- *  - Atmel | SMART SAM L21/L22
- *  - Atmel | SMART SAM DA1
- *  - Atmel | SMART SAM C20/C21
- *
- * The outline of this documentation is as follows:
- *  - \ref asfdoc_sam0_system_interrupt_prerequisites
- *  - \ref asfdoc_sam0_system_interrupt_module_overview
- *  - \ref asfdoc_sam0_system_interrupt_special_considerations
- *  - \ref asfdoc_sam0_system_interrupt_extra_info
- *  - \ref asfdoc_sam0_system_interrupt_examples
- *  - \ref asfdoc_sam0_system_interrupt_api_overview
- *
- *
- * \section asfdoc_sam0_system_interrupt_prerequisites Prerequisites
- *
- * There are no prerequisites for this module.
- *
- *
- * \section asfdoc_sam0_system_interrupt_module_overview Module Overview
- *
- * The ARM&reg; Cortex&reg; M0+ core contains an interrupt and exception 
vector table, which
- * can be used to configure the device's interrupt handlers; individual
- * interrupts and exceptions can be enabled and disabled, as well as configured
- * with a variable priority.
- *
- * This driver provides a set of wrappers around the core interrupt functions,
- * to expose a simple API for the management of global and individual 
interrupts
- * within the device.
- *
- * \subsection asfdoc_sam0_system_interrupt_module_overview_criticalsec 
Critical Sections
- * In some applications it is important to ensure that no interrupts may be
- * executed by the system whilst a critical portion of code is being run; for
- * example, a buffer may be copied from one context to another - during which
- * interrupts must be disabled to avoid corruption of the source buffer 
contents
- * until the copy has completed. This driver provides a basic API to enter and
- * exit nested critical sections, so that global interrupts can be kept 
disabled
- * for as long as necessary to complete a critical application code section.
- *
- * \subsection asfdoc_sam0_system_interrupt_module_overview_softints Software 
Interrupts
- * For some applications, it may be desirable to raise a module or core
- * interrupt via software. For this reason, a set of APIs to set an interrupt 
or
- * exception as pending are provided to the user application.
- *
- * \section asfdoc_sam0_system_interrupt_special_considerations Special 
Considerations
- *
- * Interrupts from peripherals in the SAM devices are on a per-module basis;
- * an interrupt raised from any source within a module will cause a single,
- * module-common handler to execute. It is the user application or driver's
- * responsibility to de-multiplex the module-common interrupt to determine the
- * exact interrupt cause.
- *
- * \section asfdoc_sam0_system_interrupt_extra_info Extra Information
- *
- * For extra information, see \ref asfdoc_sam0_system_interrupt_extra. This 
includes:
- *  - \ref asfdoc_sam0_system_interrupt_extra_acronyms
- *  - \ref asfdoc_sam0_system_interrupt_extra_dependencies
- *  - \ref asfdoc_sam0_system_interrupt_extra_errata
- *  - \ref asfdoc_sam0_system_interrupt_extra_history
- *
- *
- * \section asfdoc_sam0_system_interrupt_examples Examples
- *
- * For a list of examples related to this driver, see
- * \ref asfdoc_sam0_system_interrupt_exqsg.
- *
- * \section asfdoc_sam0_system_interrupt_api_overview API Overview
- * @{
- */
-
-#include <compiler.h>
-#include <cmsis-core/core_cm0plus.h>
-#include "system_interrupt_features.h"
-
-/**
- * \brief Table of possible system interrupt/exception vector priorities.
- *
- * Table of all possible interrupt and exception vector priorities within the
- * device.
- */
-enum system_interrupt_priority_level {
-       /** Priority level 0, the highest possible interrupt priority */
-       SYSTEM_INTERRUPT_PRIORITY_LEVEL_0  = 0,
-       /** Priority level 1 */
-       SYSTEM_INTERRUPT_PRIORITY_LEVEL_1  = 1,
-       /** Priority level 2 */
-       SYSTEM_INTERRUPT_PRIORITY_LEVEL_2  = 2,
-       /** Priority level 3, the lowest possible interrupt priority */
-       SYSTEM_INTERRUPT_PRIORITY_LEVEL_3  = 3,
-};
-
-/**
- * \name Critical Section Management
- * @{
- */
-
-/**
- * \brief Enters a critical section.
- *
- * Disables global interrupts. To support nested critical sections, an internal
- * count of the critical section nesting will be kept, so that global 
interrupts
- * are only re-enabled upon leaving the outermost nested critical section.
- *
- */
-static inline void system_interrupt_enter_critical_section(void)
-{
-       cpu_irq_enter_critical();
-}
-
-/**
- * \brief Leaves a critical section.
- *
- * Enables global interrupts. To support nested critical sections, an internal
- * count of the critical section nesting will be kept, so that global 
interrupts
- * are only re-enabled upon leaving the outermost nested critical section.
- *
- */
-static inline void system_interrupt_leave_critical_section(void)
-{
-       cpu_irq_leave_critical();
-}
-
-/** @} */
-
-/**
- * \name Interrupt Enabling/Disabling
- * @{
- */
-
-/**
- * \brief Check if global interrupts are enabled.
- *
- * Checks if global interrupts are currently enabled.
- *
- * \returns A boolean that identifies if the global interrupts are enabled or 
not.
- *
- * \retval true   Global interrupts are currently enabled
- * \retval false  Global interrupts are currently disabled
- *
- */
-static inline bool system_interrupt_is_global_enabled(void)
-{
-       return cpu_irq_is_enabled();
-}
-
-/**
- * \brief Enables global interrupts.
- *
- * Enables global interrupts in the device to fire any enabled interrupt 
handlers.
- */
-static inline void system_interrupt_enable_global(void)
-{
-       cpu_irq_enable();
-}
-
-/**
- * \brief Disables global interrupts.
- *
- * Disabled global interrupts in the device, preventing any enabled interrupt
- * handlers from executing.
- */
-static inline void system_interrupt_disable_global(void)
-{
-       cpu_irq_disable();
-}
-
-/**
- * \brief Checks if an interrupt vector is enabled or not.
- *
- * Checks if a specific interrupt vector is currently enabled.
- *
- * \param[in] vector  Interrupt vector number to check
- *
- * \returns A variable identifying if the requested interrupt vector is 
enabled.
- *
- * \retval true   Specified interrupt vector is currently enabled
- * \retval false  Specified interrupt vector is currently disabled
- *
- */
-static inline bool system_interrupt_is_enabled(
-               const enum system_interrupt_vector vector)
-{
-       return (bool)((NVIC->ISER[0] >> (uint32_t)vector) & 0x00000001);
-}
-
-/**
- * \brief Enable interrupt vector.
- *
- * Enables execution of the software handler for the requested interrupt 
vector.
- *
- * \param[in] vector Interrupt vector to enable
- */
-static inline void system_interrupt_enable(
-               const enum system_interrupt_vector vector)
-{
-       NVIC->ISER[0] = (uint32_t)(1 << ((uint32_t)vector & 0x0000001f));
-}
-
-/**
- * \brief Disable interrupt vector.
- *
- * Disables execution of the software handler for the requested interrupt 
vector.
- *
- * \param[in] vector  Interrupt vector to disable
- */
-static inline void system_interrupt_disable(
-               const enum system_interrupt_vector vector)
-{
-       NVIC->ICER[0] = (uint32_t)(1 << ((uint32_t)vector & 0x0000001f));
-}
-
-/** @} */
-
-/**
- * \name Interrupt State Management
- * @{
- */
-
-/**
- * \brief Get active interrupt (if any).
- *
- * Return the vector number for the current executing software handler, if any.
- *
- * \return Interrupt number that is currently executing.
- */
-static inline enum system_interrupt_vector system_interrupt_get_active(void)
-{
-       uint32_t IPSR = __get_IPSR();
-       /* The IPSR returns the Exception number, which with an offset 16 to 
IRQ number. */
-       return (enum system_interrupt_vector)((IPSR & 
_SYSTEM_INTERRUPT_IPSR_MASK) - 16);
-}
-
-bool system_interrupt_is_pending(
-               const enum system_interrupt_vector vector);
-
-enum status_code system_interrupt_set_pending(
-               const enum system_interrupt_vector vector);
-
-enum status_code system_interrupt_clear_pending(
-               const enum system_interrupt_vector vector);
-
-/** @} */
-
-/**
- * \name Interrupt Priority Management
- * @{
- */
-
-enum status_code system_interrupt_set_priority(
-               const enum system_interrupt_vector vector,
-               const enum system_interrupt_priority_level priority_level);
-
-enum system_interrupt_priority_level system_interrupt_get_priority(
-               const enum system_interrupt_vector vector);
-
-/** @} */
-
-/** @} */
-
-/**
- * \page asfdoc_sam0_system_interrupt_extra Extra Information for SYSTEM 
INTERRUPT Driver
- *
- * \section asfdoc_sam0_system_interrupt_extra_acronyms Acronyms
- * The table below presents the acronyms used in this module:
- *
- * <table>
- *     <tr>
- *             <th>Acronym</th>
- *             <th>Description</th>
- *     </tr>
- *     <tr>
- *             <td>ISR</td>
- *             <td>Interrupt Service Routine</td>
- *     </tr>
- *     <tr>
- *             <td>NMI</td>
- *             <td>Non-maskable Interrupt</td>
- *     </tr>
- *     <tr>
- *             <td>SERCOM</td>
- *             <td>Serial Communication Interface</td>
- *     </tr>
- * </table>
- *
- *
- * \section asfdoc_sam0_system_interrupt_extra_dependencies Dependencies
- * This driver has the following dependencies:
- *
- *  - None
- *
- *
- * \section asfdoc_sam0_system_interrupt_extra_errata Errata
- * There are no errata related to this driver.
- *
- *
- * \section asfdoc_sam0_system_interrupt_extra_history Module History
- * An overview of the module history is presented in the table below, with
- * details on the enhancements and fixes made to the module since its first
- * release. The current version of this corresponds to the newest version in
- * the table.
- *
- * <table>
- *     <tr>
- *             <th>Changelog</th>
- *     </tr>
- *     <tr>
- *             <td>Initial Release</td>
- *     </tr>
- * </table>
- */
-
-/**
- * \page asfdoc_sam0_system_interrupt_exqsg Examples for SYSTEM INTERRUPT 
Driver
- *
- * This is a list of the available Quick Start guides (QSGs) and example
- * applications for \ref asfdoc_sam0_system_interrupt_group. QSGs are simple 
examples with
- * step-by-step instructions to configure and use this driver in a selection of
- * use cases. Note that a QSG can be compiled as a standalone application or be
- * added to the user application.
- *
- *  - \subpage asfdoc_sam0_system_interrupt_critsec_use_case
- *  - \subpage asfdoc_sam0_system_interrupt_enablemodint_use_case
- *
- * \page asfdoc_sam0_system_interrupt_document_revision_history Document 
Revision History
- *
- * <table>
- *     <tr>
- *             <th>Doc. Rev.</th>
- *             <th>Date</th>
- *             <th>Comments</th>
- *     </tr>
- *     <tr>
- *             <td>42122E</td>
- *             <td>12/2015</td>
- *             <td>Added support for SAM L21/L22, SAM DA1, SAM D09, and SAM 
C20/C21</td>
- *     </tr>
- *     <tr>
- *             <td>42122D</td>
- *             <td>12/2014</td>
- *             <td>Added support for SAM R21 and SAM D10/D11</td>
- *     </tr>
- *     <tr>
- *             <td>42122C</td>
- *             <td>01/2014</td>
- *             <td>Added support for SAM D21</td>
- *     </tr>
- *     <tr>
- *             <td>42122B</td>
- *             <td>06/2013</td>
- *             <td>Corrected documentation typos</td>
- *     </tr>
- *     <tr>
- *             <td>42122A</td>
- *             <td>06/2013</td>
- *             <td>Initial release</td>
- *     </tr>
- * </table>
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // #ifndef SYSTEM_INTERRUPT_H_INCLUDED

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samd21/system_interrupt_features.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samd21/system_interrupt_features.h
 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samd21/system_interrupt_features.h
deleted file mode 100755
index 25dfa83..0000000
--- 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samd21/system_interrupt_features.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * \file
- *
- * \brief SAM D21 System Interrupt Driver
- *
- * Copyright (C) 2013-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-
-#ifndef SYSTEM_INTERRUPT_FEATURES_H_INCLUDED
-#define SYSTEM_INTERRUPT_FEATURES_H_INCLUDED
-
-#if !defined(__DOXYGEN__)
-
-/* Generates a interrupt vector table enum list entry for a given module type
-   and index (e.g. "SYSTEM_INTERRUPT_MODULE_TC0 = TC0_IRQn,"). */
-#  define _MODULE_IRQn(n, module) \
-               SYSTEM_INTERRUPT_MODULE_##module##n = module##n##_IRQn,
-
-/* Generates interrupt vector table enum list entries for all instances of a
-   given module type on the selected device. */
-#  define _SYSTEM_INTERRUPT_MODULES(name) \
-               MREPEAT(name##_INST_NUM, _MODULE_IRQn, name)
-
-#  define _SYSTEM_INTERRUPT_IPSR_MASK              0x0000003f
-#  define _SYSTEM_INTERRUPT_PRIORITY_MASK          0x00000003
-
-#  define _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START  0
-
-#  define _SYSTEM_INTERRUPT_SYSTICK_PRI_POS        30
-#endif
-
-/**
- * \addtogroup asfdoc_sam0_system_interrupt_group
- * @{
- */
-
-/**
- * \brief Table of possible system interrupt/exception vector numbers.
- *
- * Table of all possible interrupt and exception vector indexes within the
- * SAM D21 device. Check peripherals configuration in SAM D21 datasheet for
- * available vector index for specific device.
- *
- */
-#if defined(__DOXYGEN__)
-/** \note The actual enumeration name is "system_interrupt_vector". */
-enum system_interrupt_vector_samd21 {
-#else
-enum system_interrupt_vector {
-#endif
-       /** Interrupt vector index for a NMI interrupt */
-       SYSTEM_INTERRUPT_NON_MASKABLE      = NonMaskableInt_IRQn,
-       /** Interrupt vector index for a Hard Fault memory access exception */
-       SYSTEM_INTERRUPT_HARD_FAULT        = HardFault_IRQn,
-       /** Interrupt vector index for a Supervisor Call exception */
-       SYSTEM_INTERRUPT_SV_CALL           = SVCall_IRQn,
-       /** Interrupt vector index for a Pending Supervisor interrupt */
-       SYSTEM_INTERRUPT_PENDING_SV        = PendSV_IRQn,
-       /** Interrupt vector index for a System Tick interrupt */
-       SYSTEM_INTERRUPT_SYSTICK           = SysTick_IRQn,
-
-       /** Interrupt vector index for a Power Manager peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_PM         = PM_IRQn,
-       /** Interrupt vector index for a System Control peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_SYSCTRL    = SYSCTRL_IRQn,
-       /** Interrupt vector index for a Watch Dog peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_WDT        = WDT_IRQn,
-       /** Interrupt vector index for a Real Time Clock peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_RTC        = RTC_IRQn,
-       /** Interrupt vector index for an External Interrupt peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_EIC        = EIC_IRQn,
-       /** Interrupt vector index for a Non Volatile Memory Controller 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_NVMCTRL    = NVMCTRL_IRQn,
-       /** Interrupt vector index for a Direct Memory Access interrupt */
-       SYSTEM_INTERRUPT_MODULE_DMA        = DMAC_IRQn,
-#if defined(__DOXYGEN__) || defined(ID_USB)
-       /** Interrupt vector index for a Universal Serial Bus interrupt */
-       SYSTEM_INTERRUPT_MODULE_USB        = USB_IRQn,
-#endif
-       /** Interrupt vector index for an Event System interrupt */
-       SYSTEM_INTERRUPT_MODULE_EVSYS      = EVSYS_IRQn,
-#if defined(__DOXYGEN__)
-       /** Interrupt vector index for a SERCOM peripheral interrupt.
-        *
-        *  Each specific device may contain several SERCOM peripherals; each 
module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_SERCOM0).
-        */
-       SYSTEM_INTERRUPT_MODULE_SERCOMn    = SERCOMn_IRQn,
-
-       /** Interrupt vector index for a Timer/Counter Control peripheral 
interrupt.
-        *
-        *  Each specific device may contain several TCC peripherals; each 
module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_TCC0).
-        */
-       SYSTEM_INTERRUPT_MODULE_TCCn        = TCCn_IRQn,
-
-       /** Interrupt vector index for a Timer/Counter peripheral interrupt.
-        *
-        *  Each specific device may contain several TC peripherals; each module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_TC3).
-        */
-       SYSTEM_INTERRUPT_MODULE_TCn        = TCn_IRQn,
-#else
-       _SYSTEM_INTERRUPT_MODULES(SERCOM)
-
-       _SYSTEM_INTERRUPT_MODULES(TCC)
-
-       SYSTEM_INTERRUPT_MODULE_TC3        = TC3_IRQn,
-       SYSTEM_INTERRUPT_MODULE_TC4        = TC4_IRQn,
-       SYSTEM_INTERRUPT_MODULE_TC5        = TC5_IRQn,
-#  if defined(ID_TC6)
-       SYSTEM_INTERRUPT_MODULE_TC6        = TC6_IRQn,
-#  endif
-#  if defined(ID_TC7)
-       SYSTEM_INTERRUPT_MODULE_TC7        = TC7_IRQn,
-#  endif
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_ADC)
-       /** Interrupt vector index for an Analog-to-Digital peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_ADC        = ADC_IRQn,
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_AC)
-       /** Interrupt vector index for an Analog Comparator peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_AC         = AC_IRQn,
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_DAC)
-       /** Interrupt vector index for a Digital-to-Analog peripheral interrupt 
*/
-       SYSTEM_INTERRUPT_MODULE_DAC        = DAC_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_PTC)
-       /** Interrupt vector index for a Peripheral Touch Controller peripheral
-        *  interrupt */
-       SYSTEM_INTERRUPT_MODULE_PTC        = PTC_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_I2S)
-       /** Interrupt vector index for a Inter-IC Sound Interface peripheral
-        *  interrupt */
-       SYSTEM_INTERRUPT_MODULE_I2S        = I2S_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_AC1)
-       /** Interrupt vector index for an Analog Comparator 1 peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_AC1        = AC1_IRQn,
-#endif
-};
-
-/** @} */
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samda/system_interrupt_features.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samda/system_interrupt_features.h
 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samda/system_interrupt_features.h
deleted file mode 100755
index a67ee59..0000000
--- 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/interrupt/system_interrupt_samda/system_interrupt_features.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/**
- * \file
- *
- * \brief SAM DA0/DA1 System Interrupt Driver
- *
- * Copyright (C) 2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-
-#ifndef SYSTEM_INTERRUPT_FEATURES_H_INCLUDED
-#define SYSTEM_INTERRUPT_FEATURES_H_INCLUDED
-
-#if !defined(__DOXYGEN__)
-
-/* Generates a interrupt vector table enum list entry for a given module type
-   and index (e.g. "SYSTEM_INTERRUPT_MODULE_TC0 = TC0_IRQn,"). */
-#  define _MODULE_IRQn(n, module) \
-               SYSTEM_INTERRUPT_MODULE_##module##n = module##n##_IRQn,
-
-/* Generates interrupt vector table enum list entries for all instances of a
-   given module type on the selected device. */
-#  define _SYSTEM_INTERRUPT_MODULES(name) \
-               MREPEAT(name##_INST_NUM, _MODULE_IRQn, name)
-
-#  define _SYSTEM_INTERRUPT_IPSR_MASK              0x0000003f
-#  define _SYSTEM_INTERRUPT_PRIORITY_MASK          0x00000003
-
-#  define _SYSTEM_INTERRUPT_EXTERNAL_VECTOR_START  0
-
-#  define _SYSTEM_INTERRUPT_SYSTICK_PRI_POS        30
-#endif
-
-/**
- * \addtogroup asfdoc_sam0_system_interrupt_group
- * @{
- */
-
-/**
- * \brief Table of possible system interrupt/exception vector numbers.
- *
- * Table of all possible interrupt and exception vector indexes within the
- * SAM DA1 device. Check peripherals configuration in SAM DA1 datasheet for
- * available vector index for specific device.
- *
- */
-#if defined(__DOXYGEN__)
-/** \note The actual enumeration name is "system_interrupt_vector". */
-enum system_interrupt_vector_samdax {
-#else
-enum system_interrupt_vector {
-#endif
-       /** Interrupt vector index for a NMI interrupt */
-       SYSTEM_INTERRUPT_NON_MASKABLE      = NonMaskableInt_IRQn,
-       /** Interrupt vector index for a Hard Fault memory access exception */
-       SYSTEM_INTERRUPT_HARD_FAULT        = HardFault_IRQn,
-       /** Interrupt vector index for a Supervisor Call exception */
-       SYSTEM_INTERRUPT_SV_CALL           = SVCall_IRQn,
-       /** Interrupt vector index for a Pending Supervisor interrupt */
-       SYSTEM_INTERRUPT_PENDING_SV        = PendSV_IRQn,
-       /** Interrupt vector index for a System Tick interrupt */
-       SYSTEM_INTERRUPT_SYSTICK           = SysTick_IRQn,
-
-       /** Interrupt vector index for a Power Manager peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_PM         = PM_IRQn,
-       /** Interrupt vector index for a System Control peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_SYSCTRL    = SYSCTRL_IRQn,
-       /** Interrupt vector index for a Watch Dog peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_WDT        = WDT_IRQn,
-       /** Interrupt vector index for a Real Time Clock peripheral interrupt */
-       SYSTEM_INTERRUPT_MODULE_RTC        = RTC_IRQn,
-       /** Interrupt vector index for an External Interrupt peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_EIC        = EIC_IRQn,
-       /** Interrupt vector index for a Non Volatile Memory Controller 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_NVMCTRL    = NVMCTRL_IRQn,
-       /** Interrupt vector index for a Direct Memory Access interrupt */
-       SYSTEM_INTERRUPT_MODULE_DMA        = DMAC_IRQn,
-#if defined(__DOXYGEN__) || defined(ID_USB)
-       /** Interrupt vector index for a Universal Serial Bus interrupt */
-       SYSTEM_INTERRUPT_MODULE_USB        = USB_IRQn,
-#endif
-       /** Interrupt vector index for an Event System interrupt */
-       SYSTEM_INTERRUPT_MODULE_EVSYS      = EVSYS_IRQn,
-#if defined(__DOXYGEN__)
-       /** Interrupt vector index for a SERCOM peripheral interrupt.
-        *
-        *  Each specific device may contain several SERCOM peripherals; each 
module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_SERCOM0).
-        */
-       SYSTEM_INTERRUPT_MODULE_SERCOMn    = SERCOMn_IRQn,
-
-       /** Interrupt vector index for a Timer/Counter Control peripheral 
interrupt.
-        *
-        *  Each specific device may contain several TCC peripherals; each 
module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_TCC0).
-        */
-       SYSTEM_INTERRUPT_MODULE_TCCn        = TCCn_IRQn,
-
-       /** Interrupt vector index for a Timer/Counter peripheral interrupt.
-        *
-        *  Each specific device may contain several TC peripherals; each module
-        *  instance will have its own entry in the table, with the instance 
number
-        *  substituted for "n" in the entry name (e.g.
-        *  \c SYSTEM_INTERRUPT_MODULE_TC3).
-        */
-       SYSTEM_INTERRUPT_MODULE_TCn        = TCn_IRQn,
-#else
-       _SYSTEM_INTERRUPT_MODULES(SERCOM)
-
-       _SYSTEM_INTERRUPT_MODULES(TCC)
-
-       SYSTEM_INTERRUPT_MODULE_TC3        = TC3_IRQn,
-       SYSTEM_INTERRUPT_MODULE_TC4        = TC4_IRQn,
-       SYSTEM_INTERRUPT_MODULE_TC5        = TC5_IRQn,
-#  if defined(ID_TC6)
-       SYSTEM_INTERRUPT_MODULE_TC6        = TC6_IRQn,
-#  endif
-#  if defined(ID_TC7)
-       SYSTEM_INTERRUPT_MODULE_TC7        = TC7_IRQn,
-#  endif
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_ADC)
-       /** Interrupt vector index for an Analog-to-Digital peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_ADC        = ADC_IRQn,
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_AC)
-       /** Interrupt vector index for an Analog Comparator peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_AC         = AC_IRQn,
-#endif
-
-#if defined(__DOXYGEN__) || defined(ID_DAC)
-       /** Interrupt vector index for a Digital-to-Analog peripheral interrupt 
*/
-       SYSTEM_INTERRUPT_MODULE_DAC        = DAC_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_PTC)
-       /** Interrupt vector index for a Peripheral Touch Controller peripheral
-        *  interrupt */
-       SYSTEM_INTERRUPT_MODULE_PTC        = PTC_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_I2S)
-       /** Interrupt vector index for a Inter-IC Sound Interface peripheral
-        *  interrupt */
-       SYSTEM_INTERRUPT_MODULE_I2S        = I2S_IRQn,
-#endif
-#if defined(__DOXYGEN__) || defined(ID_AC1)
-       /** Interrupt vector index for an Analog Comparator 1 peripheral 
interrupt */
-       SYSTEM_INTERRUPT_MODULE_AC1        = AC1_IRQn,
-#endif
-};
-
-/** @} */
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.c
----------------------------------------------------------------------
diff --git a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.c 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.c
deleted file mode 100755
index a2c9c7c..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/**
- * \file
- *
- * \brief SAM Pin Multiplexer Driver
- *
- * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#include <pinmux.h>
-
-/**
- * \internal
- * Writes out a given configuration of a Port pin configuration to the
- * hardware module.
- *
- * \note If the pin direction is set as an output, the pull-up/pull-down input
- *       configuration setting is ignored.
- *
- * \param[in] port      Base of the PORT module to configure
- * \param[in] pin_mask  Mask of the port pin to configure
- * \param[in] config    Configuration settings for the pin
- */
-static void _system_pinmux_config(
-               PortGroup *const port,
-               const uint32_t pin_mask,
-               const struct system_pinmux_config *const config)
-{
-       Assert(port);
-       Assert(config);
-
-       /* Track the configuration bits into a temporary variable before 
writing */
-       uint32_t pin_cfg = 0;
-
-       /* Enabled powersave mode, don't create configuration */
-       if (!config->powersave) {
-               /* Enable the pin peripheral MUX flag if non-GPIO selected 
(pinmux will
-                * be written later) and store the new MUX mask */
-               if (config->mux_position != SYSTEM_PINMUX_GPIO) {
-                       pin_cfg |= PORT_WRCONFIG_PMUXEN;
-                       pin_cfg |= (config->mux_position << 
PORT_WRCONFIG_PMUX_Pos);
-               }
-
-               /* Check if the user has requested that the input buffer be 
enabled */
-               if ((config->direction == SYSTEM_PINMUX_PIN_DIR_INPUT) ||
-                               (config->direction == 
SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK)) {
-                       /* Enable input buffer flag */
-                       pin_cfg |= PORT_WRCONFIG_INEN;
-
-                       /* Enable pull-up/pull-down control flag if requested */
-                       if (config->input_pull != SYSTEM_PINMUX_PIN_PULL_NONE) {
-                               pin_cfg |= PORT_WRCONFIG_PULLEN;
-                       }
-
-                       /* Clear the port DIR bits to disable the output buffer 
*/
-                       port->DIRCLR.reg = pin_mask;
-               }
-
-               /* Check if the user has requested that the output buffer be 
enabled */
-               if ((config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT) ||
-                               (config->direction == 
SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK)) {
-                       /* Cannot use a pull-up if the output driver is enabled,
-                        * if requested the input buffer can only sample the 
current
-                        * output state */
-                       pin_cfg &= ~PORT_WRCONFIG_PULLEN;
-               }
-       } else {
-               port->DIRCLR.reg = pin_mask;
-       }
-
-       /* The Write Configuration register (WRCONFIG) requires the
-        * pins to to grouped into two 16-bit half-words - split them out here 
*/
-       uint32_t lower_pin_mask = (pin_mask & 0xFFFF);
-       uint32_t upper_pin_mask = (pin_mask >> 16);
-
-       /* Configure the lower 16-bits of the port to the desired configuration,
-        * including the pin peripheral multiplexer just in case it is enabled 
*/
-       port->WRCONFIG.reg
-               = (lower_pin_mask << PORT_WRCONFIG_PINMASK_Pos) |
-                       pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG;
-
-       /* Configure the upper 16-bits of the port to the desired configuration,
-        * including the pin peripheral multiplexer just in case it is enabled 
*/
-       port->WRCONFIG.reg
-               = (upper_pin_mask << PORT_WRCONFIG_PINMASK_Pos) |
-                       pin_cfg | PORT_WRCONFIG_WRPMUX | PORT_WRCONFIG_WRPINCFG 
|
-                       PORT_WRCONFIG_HWSEL;
-
-       if(!config->powersave) {
-               /* Set the pull-up state once the port pins are configured if 
one was
-                * requested and it does not violate the valid set of port
-                * configurations */
-               if (pin_cfg & PORT_WRCONFIG_PULLEN) {
-                       /* Set the OUT register bits to enable the pull-up if 
requested,
-                        * clear to enable pull-down */
-                       if (config->input_pull == SYSTEM_PINMUX_PIN_PULL_UP) {
-                               port->OUTSET.reg = pin_mask;
-                       } else {
-                               port->OUTCLR.reg = pin_mask;
-                       }
-               }
-
-               /* Check if the user has requested that the output buffer be 
enabled */
-               if ((config->direction == SYSTEM_PINMUX_PIN_DIR_OUTPUT) ||
-                               (config->direction == 
SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK)) {
-                       /* Set the port DIR bits to enable the output buffer */
-                       port->DIRSET.reg = pin_mask;
-               }
-       }
-}
-
-/**
- * \brief Writes a Port pin configuration to the hardware module.
- *
- * Writes out a given configuration of a Port pin configuration to the hardware
- * module.
- *
- * \note If the pin direction is set as an output, the pull-up/pull-down input
- *       configuration setting is ignored.
- *
- * \param[in] gpio_pin  Index of the GPIO pin to configure
- * \param[in] config    Configuration settings for the pin
- */
-void system_pinmux_pin_set_config(
-               const uint8_t gpio_pin,
-               const struct system_pinmux_config *const config)
-{
-       PortGroup *const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-       uint32_t pin_mask = (1UL << (gpio_pin % 32));
-
-       _system_pinmux_config(port, pin_mask, config);
-}
-
-/**
- * \brief Writes a Port pin group configuration to the hardware module.
- *
- * Writes out a given configuration of a Port pin group configuration to the
- * hardware module.
- *
- * \note If the pin direction is set as an output, the pull-up/pull-down input
- *       configuration setting is ignored.
- *
- * \param[in] port      Base of the PORT module to configure
- * \param[in] mask      Mask of the port pin(s) to configure
- * \param[in] config    Configuration settings for the pin
- */
-void system_pinmux_group_set_config(
-               PortGroup *const port,
-               const uint32_t mask,
-               const struct system_pinmux_config *const config)
-{
-       Assert(port);
-
-       for (int i = 0; i < 32; i++) {
-               if (mask & (1UL << i)) {
-                       _system_pinmux_config(port, (1UL << i), config);
-               }
-       }
-}
-
-/**
- * \brief Configures the input sampling mode for a group of pins.
- *
- * Configures the input sampling mode for a group of pins, to
- * control when the physical I/O pin value is sampled and
- * stored inside the microcontroller.
- *
- * \param[in] port     Base of the PORT module to configure
- * \param[in] mask     Mask of the port pin(s) to configure
- * \param[in] mode     New pin sampling mode to configure
- */
-void system_pinmux_group_set_input_sample_mode(
-               PortGroup *const port,
-               const uint32_t mask,
-               const enum system_pinmux_pin_sample mode)
-{
-       Assert(port);
-
-       if (mode == SYSTEM_PINMUX_PIN_SAMPLE_ONDEMAND) {
-               port->CTRL.reg |= mask;
-       } else {
-               port->CTRL.reg &= ~mask;
-       }
-}
-
-#ifdef FEATURE_SYSTEM_PINMUX_SLEWRATE_LIMITER
-/**
- * \brief Configures the output slew rate mode for a group of pins.
- *
- * Configures the output slew rate mode for a group of pins, to
- * control the speed at which the physical output pin can react to
- * logical changes of the I/O pin value.
- *
- * \param[in] port     Base of the PORT module to configure
- * \param[in] mask     Mask of the port pin(s) to configure
- * \param[in] mode     New pin slew rate mode to configure
- */
-void system_pinmux_group_set_output_slew_rate(
-               PortGroup *const port,
-               const uint32_t mask,
-               const enum system_pinmux_pin_slew_rate mode)
-{
-       Assert(port);
-
-       for (int i = 0; i < 32; i++) {
-               if (mask & (1UL << i)) {
-                       if (mode == SYSTEM_PINMUX_PIN_SLEW_RATE_LIMITED) {
-                               port->PINCFG[i].reg |=  PORT_PINCFG_SLEWLIM;
-                       } else {
-                               port->PINCFG[i].reg &= ~PORT_PINCFG_SLEWLIM;
-                       }
-               }
-       }
-}
-#endif
-
-#ifdef FEATURE_SYSTEM_PINMUX_DRIVE_STRENGTH
-/**
- * \brief Configures the output driver strength mode for a group of pins.
- *
- * Configures the output drive strength for a group of pins, to
- * control the amount of current the pad is able to sink/source.
- *
- * \param[in] port     Base of the PORT module to configure
- * \param[in] mask     Mask of the port pin(s) to configure
- * \param[in] mode     New output driver strength mode to configure
- */
-void system_pinmux_group_set_output_strength(
-               PortGroup *const port,
-               const uint32_t mask,
-               const enum system_pinmux_pin_strength mode)
-{
-       Assert(port);
-
-       for (int i = 0; i < 32; i++) {
-               if (mask & (1UL << i)) {
-                       if (mode == SYSTEM_PINMUX_PIN_STRENGTH_HIGH) {
-                               port->PINCFG[i].reg |=  PORT_PINCFG_DRVSTR;
-                       } else {
-                               port->PINCFG[i].reg &= ~PORT_PINCFG_DRVSTR;
-                       }
-               }
-       }
-}
-#endif
-
-#ifdef FEATURE_SYSTEM_PINMUX_OPEN_DRAIN
-/**
- * \brief Configures the output driver mode for a group of pins.
- *
- * Configures the output driver mode for a group of pins, to
- * control the pad behavior.
- *
- * \param[in] port Base of the PORT module to configure
- * \param[in] mask Mask of the port pin(s) to configure
- * \param[in] mode New pad output driver mode to configure
- */
-void system_pinmux_group_set_output_drive(
-               PortGroup *const port,
-               const uint32_t mask,
-               const enum system_pinmux_pin_drive mode)
-{
-       Assert(port);
-
-       for (int i = 0; i < 32; i++) {
-               if (mask & (1UL << i)) {
-                       if (mode == SYSTEM_PINMUX_PIN_DRIVE_OPEN_DRAIN) {
-                               port->PINCFG[i].reg |= PORT_PINCFG_ODRAIN;
-                       } else {
-                               port->PINCFG[i].reg &= ~PORT_PINCFG_ODRAIN;
-                       }
-               }
-       }
-}
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.h
----------------------------------------------------------------------
diff --git a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.h 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.h
deleted file mode 100755
index ac4ddf5..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/pinmux/pinmux.h
+++ /dev/null
@@ -1,678 +0,0 @@
-/**
- * \file
- *
- * \brief SAM Pin Multiplexer Driver
- *
- * Copyright (C) 2012-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#ifndef PINMUX_H_INCLUDED
-#define PINMUX_H_INCLUDED
-
-/**
- * \defgroup asfdoc_sam0_system_pinmux_group SAM System Pin Multiplexer 
(SYSTEM PINMUX) Driver
- *
- * This driver for Atmel&reg; | SMART ARM&reg;-based microcontrollers provides
- * an interface for the configuration and management of the device's physical
- * I/O Pins, to alter the direction and input/drive characteristics as well as
- * to configure the pin peripheral multiplexer selection.
- *
- * The following peripheral is used by this module:
- *  - PORT (Port I/O Management)
- *
- * The following devices can use this module:
- *  - Atmel | SMART SAM D20/D21
- *  - Atmel | SMART SAM R21
- *  - Atmel | SMART SAM D09/D10/D11
- *  - Atmel | SMART SAM L21/L22
- *  - Atmel | SMART SAM DA1
- *  - Atmel | SMART SAM C20/C21
- *
- * Physically, the modules are interconnected within the device as shown in the
- * following diagram:
- *
- * The outline of this documentation is as follows:
- *  - \ref asfdoc_sam0_system_pinmux_prerequisites
- *  - \ref asfdoc_sam0_system_pinmux_module_overview
- *  - \ref asfdoc_sam0_system_pinmux_special_considerations
- *  - \ref asfdoc_sam0_system_pinmux_extra_info
- *  - \ref asfdoc_sam0_system_pinmux_examples
- *  - \ref asfdoc_sam0_system_pinmux_api_overview
- *
- *
- * \section asfdoc_sam0_system_pinmux_prerequisites Prerequisites
- *
- * There are no prerequisites for this module.
- *
- *
- * \section asfdoc_sam0_system_pinmux_module_overview Module Overview
- *
- * The SAM devices contain a number of General Purpose I/O pins, used to
- * interface the user application logic and internal hardware peripherals to
- * an external system. The Pin Multiplexer (PINMUX) driver provides a method
- * of configuring the individual pin peripheral multiplexers to select
- * alternate pin functions.
- *
- * \subsection asfdoc_sam0_system_pinmux_features Driver Feature Macro 
Definition
- * <table>
- *  <tr>
- *    <th>Driver Feature Macro</th>
- *    <th>Supported devices</th>
- *  </tr>
- *  <tr>
- *    <td>FEATURE_SYSTEM_PINMUX_DRIVE_STRENGTH</td>
- *    <td>SAM L21, SAM C20/C21</td>
- *  </tr>
- * </table>
- * \note The specific features are only available in the driver when the
- * selected device supports those features.
- *
- * \subsection asfdoc_sam0_system_pinmux_physical_logical_pins Physical and 
Logical GPIO Pins
- * SAM devices use two naming conventions for the I/O pins in the device; one
- * physical and one logical. Each physical pin on a device package is assigned
- * both a physical port and pin identifier (e.g. "PORTA.0") as well as a
- * monotonically incrementing logical GPIO number (e.g. "GPIO0"). While the
- * former is used to map physical pins to their physical internal device module
- * counterparts, for simplicity the design of this driver uses the logical GPIO
- * numbers instead.
- *
- * \subsection asfdoc_sam0_system_pinmux_peripheral_muxing Peripheral 
Multiplexing
- * SAM devices contain a peripheral MUX, which is individually controllable
- * for each I/O pin of the device. The peripheral MUX allows you to select the
- * function of a physical package pin - whether it will be controlled as a user
- * controllable GPIO pin, or whether it will be connected internally to one of
- * several peripheral modules (such as an I<SUP>2</SUP>C module). When a pin is
- * configured in GPIO mode, other peripherals connected to the same pin will be
- * disabled.
- *
- * \subsection asfdoc_sam0_system_pinmux_pad_characteristics Special Pad 
Characteristics
- * There are several special modes that can be selected on one or more I/O pins
- * of the device, which alter the input and output characteristics of the pad.
- *
- * \subsubsection asfdoc_sam0_system_pinmux_drive_strength Drive Strength
- * The Drive Strength configures the strength of the output driver on the
- * pad. Normally, there is a fixed current limit that each I/O pin can safely
- * drive, however some I/O pads offer a higher drive mode which increases this
- * limit for that I/O pin at the expense of an increased power consumption.
- *
- * \subsubsection asfdoc_sam0_system_pinmux_slew_rate Slew Rate
- * The Slew Rate configures the slew rate of the output driver, limiting the
- * rate at which the pad output voltage can change with time.
- *
- * \subsubsection asfdoc_sam0_system_pinmux_input_sample_mode Input Sample Mode
- * The Input Sample Mode configures the input sampler buffer of the pad. By
- * default, the input buffer is only sampled "on-demand", i.e. when the user
- * application attempts to read from the input buffer. This mode is the most
- * power efficient, but increases the latency of the input sample by two clock
- * cycles of the port clock. To reduce latency, the input sampler can instead
- * be configured to always sample the input buffer on each port clock cycle, at
- * the expense of an increased power consumption.
- *
- * \subsection asfdoc_sam0_system_pinmux_module_overview_physical Physical 
Connection
- *
- * \ref asfdoc_sam0_system_pinmux_intconnections "The diagram below" shows
- * how this module is interconnected within the device:
- *
- * \anchor asfdoc_sam0_system_pinmux_intconnections
- * \dot
- * digraph overview {
- *   node [label="Port Pad" shape=square] pad;
- *
- *   subgraph driver {
- *     node [label="Peripheral MUX" shape=trapezium] pinmux;
- *     node [label="GPIO Module" shape=ellipse shape=ellipse style=filled 
fillcolor=lightgray] gpio;
- *     node [label="Other Peripheral Modules" shape=ellipse style=filled 
fillcolor=lightgray] peripherals;
- *   }
- *
- *   pinmux -> gpio;
- *   pad    -> pinmux;
- *   pinmux -> peripherals;
- * }
- * \enddot
- *
- * \section asfdoc_sam0_system_pinmux_special_considerations Special 
Considerations
- *
- * The SAM port pin input sampling mode is set in groups of four physical
- * pins; setting the sampling mode of any pin in a sub-group of eight I/O pins
- * will configure the sampling mode of the entire sub-group.
- *
- * High Drive Strength output driver mode is not available on all device pins -
- * refer to your device specific datasheet.
- *
- *
- * \section asfdoc_sam0_system_pinmux_extra_info Extra Information
- *
- * For extra information, see \ref asfdoc_sam0_system_pinmux_extra. This 
includes:
- *  - \ref asfdoc_sam0_system_pinmux_extra_acronyms
- *  - \ref asfdoc_sam0_system_pinmux_extra_dependencies
- *  - \ref asfdoc_sam0_system_pinmux_extra_errata
- *  - \ref asfdoc_sam0_system_pinmux_extra_history
- *
- *
- * \section asfdoc_sam0_system_pinmux_examples Examples
- *
- * For a list of examples related to this driver, see
- * \ref asfdoc_sam0_system_pinmux_exqsg.
- *
- *
- * \section asfdoc_sam0_system_pinmux_api_overview API Overview
- * @{
- */
-
-#include <compiler.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*@{*/
-#if (SAML21) || (SAMC20) || (SAMC21) || (SAMD21) || defined(__DOXYGEN__)
-/** Output Driver Strength Selection feature support */
-#  define FEATURE_SYSTEM_PINMUX_DRIVE_STRENGTH
-#endif
-/*@}*/
-
-/** Peripheral multiplexer index to select GPIO mode for a pin */
-#define SYSTEM_PINMUX_GPIO    (1 << 7)
-
-/**
- * \brief Port pin direction configuration enum.
- *
- * Enum for the possible pin direction settings of the port pin configuration
- * structure, to indicate the direction the pin should use.
- */
-enum system_pinmux_pin_dir {
-       /** The pin's input buffer should be enabled, so that the pin state can
-        *  be read */
-       SYSTEM_PINMUX_PIN_DIR_INPUT,
-       /** The pin's output buffer should be enabled, so that the pin state can
-        *  be set (but not read back) */
-       SYSTEM_PINMUX_PIN_DIR_OUTPUT,
-       /** The pin's output and input buffers should both be enabled, so that 
the
-        *  pin state can be set and read back */
-       SYSTEM_PINMUX_PIN_DIR_OUTPUT_WITH_READBACK,
-};
-
-/**
- * \brief Port pin input pull configuration enum.
- *
- * Enum for the possible pin pull settings of the port pin configuration
- * structure, to indicate the type of logic level pull the pin should use.
- */
-enum system_pinmux_pin_pull {
-       /** No logical pull should be applied to the pin */
-       SYSTEM_PINMUX_PIN_PULL_NONE,
-       /** Pin should be pulled up when idle */
-       SYSTEM_PINMUX_PIN_PULL_UP,
-       /** Pin should be pulled down when idle */
-       SYSTEM_PINMUX_PIN_PULL_DOWN,
-};
-
-/**
- * \brief Port pin digital input sampling mode enum.
- *
- * Enum for the possible input sampling modes for the port pin configuration
- * structure, to indicate the type of sampling a port pin should use.
- */
-enum system_pinmux_pin_sample {
-       /** Pin input buffer should continuously sample the pin state */
-       SYSTEM_PINMUX_PIN_SAMPLE_CONTINUOUS,
-       /** Pin input buffer should be enabled when the IN register is read */
-       SYSTEM_PINMUX_PIN_SAMPLE_ONDEMAND,
-};
-
-/**
- * \brief Port pin configuration structure.
- *
- * Configuration structure for a port pin instance. This structure should
- * be initialized by the \ref system_pinmux_get_config_defaults() function
- * before being modified by the user application.
- */
-struct system_pinmux_config {
-       /** MUX index of the peripheral that should control the pin, if 
peripheral
-        *  control is desired. For GPIO use, this should be set to
-        *  \ref SYSTEM_PINMUX_GPIO. */
-       uint8_t mux_position;
-
-       /** Port buffer input/output direction */
-       enum system_pinmux_pin_dir direction;
-
-       /** Logic level pull of the input buffer */
-       enum system_pinmux_pin_pull input_pull;
-
-       /** Enable lowest possible powerstate on the pin.
-        *
-        *  \note All other configurations will be ignored, the pin will be 
disabled.
-        */
-       bool powersave;
-};
-
-/** \name Configuration and Initialization
- * @{
- */
-
-/**
- * \brief Initializes a Port pin configuration structure to defaults.
- *
- * Initializes a given Port pin configuration structure to a set of
- * known default values. This function should be called on all new
- * instances of these configuration structures before being modified by the
- * user application.
- *
- * The default configuration is as follows:
- *  \li Non peripheral (i.e. GPIO) controlled
- *  \li Input mode with internal pull-up enabled
- *
- * \param[out] config  Configuration structure to initialize to default values
- */
-static inline void system_pinmux_get_config_defaults(
-               struct system_pinmux_config *const config)
-{
-       /* Sanity check arguments */
-       Assert(config);
-
-       /* Default configuration values */
-       config->mux_position = SYSTEM_PINMUX_GPIO;
-       config->direction    = SYSTEM_PINMUX_PIN_DIR_INPUT;
-       config->input_pull   = SYSTEM_PINMUX_PIN_PULL_UP;
-       config->powersave    = false;
-}
-
-void system_pinmux_pin_set_config(
-               const uint8_t gpio_pin,
-               const struct system_pinmux_config *const config);
-
-void system_pinmux_group_set_config(
-               PortGroup *const port,
-               const uint32_t mask,
-               const struct system_pinmux_config *const config);
-
-/** @} */
-
-/** \name Special Mode Configuration (Physical Group Orientated)
- *  @{
- */
-
-/**
- * \brief Retrieves the PORT module group instance from a given GPIO pin 
number.
- *
- * Retrieves the PORT module group instance associated with a given logical
- * GPIO pin number.
- *
- * \param[in] gpio_pin  Index of the GPIO pin to convert
- *
- * \return Base address of the associated PORT module.
- */
-static inline PortGroup* system_pinmux_get_group_from_gpio_pin(
-               const uint8_t gpio_pin)
-{
-       uint8_t port_index  = (gpio_pin / 128);
-       uint8_t group_index = (gpio_pin / 32);
-
-       /* Array of available ports */
-       Port *const ports[PORT_INST_NUM] = PORT_INSTS;
-
-       if (port_index < PORT_INST_NUM) {
-               return &(ports[port_index]->Group[group_index]);
-       } else {
-               Assert(false);
-               return NULL;
-       }
-}
-
-void system_pinmux_group_set_input_sample_mode(
-               PortGroup *const port,
-               const uint32_t mask,
-               const enum system_pinmux_pin_sample mode);
-
-/** @} */
-
-/** \name Special Mode Configuration (Logical Pin Orientated)
- *  @{
- */
-
-/**
- * \brief Retrieves the currently selected MUX position of a logical pin.
- *
- * Retrieves the selected MUX peripheral on a given logical GPIO pin.
- *
- * \param[in]  gpio_pin  Index of the GPIO pin to configure
- *
- * \return Currently selected peripheral index on the specified pin.
- */
-static inline uint8_t system_pinmux_pin_get_mux_position(
-               const uint8_t gpio_pin)
-{
-       PortGroup *const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-       uint32_t pin_index = (gpio_pin % 32);
-
-       if (!(port->PINCFG[pin_index].reg & PORT_PINCFG_PMUXEN)) {
-               return SYSTEM_PINMUX_GPIO;
-       }
-
-       uint32_t pmux_reg = port->PMUX[pin_index / 2].reg;
-
-       if (pin_index & 1) {
-               return (pmux_reg & PORT_PMUX_PMUXO_Msk) >> PORT_PMUX_PMUXO_Pos;
-       }
-       else {
-               return (pmux_reg & PORT_PMUX_PMUXE_Msk) >> PORT_PMUX_PMUXE_Pos;
-       }
-}
-
-/**
- * \brief Configures the input sampling mode for a GPIO pin.
- *
- * Configures the input sampling mode for a GPIO input, to
- * control when the physical I/O pin value is sampled and
- * stored inside the microcontroller.
- *
- * \param[in] gpio_pin Index of the GPIO pin to configure
- * \param[in] mode     New pin sampling mode to configure
- */
-static inline void system_pinmux_pin_set_input_sample_mode(
-               const uint8_t gpio_pin,
-               const enum system_pinmux_pin_sample mode)
-{
-       PortGroup* const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-       uint32_t pin_index = (gpio_pin % 32);
-
-       if (mode == SYSTEM_PINMUX_PIN_SAMPLE_ONDEMAND) {
-               port->CTRL.reg |= (1 << pin_index);
-       } else {
-               port->CTRL.reg &= ~(1 << pin_index);
-       }
-}
-
-/** @} */
-
-#ifdef FEATURE_SYSTEM_PINMUX_DRIVE_STRENGTH
-/**
- * \brief Port pin drive output strength enum.
- *
- * Enum for the possible output drive strengths for the port pin
- * configuration structure, to indicate the driver strength the pin should
- * use.
- */
-enum system_pinmux_pin_strength {
-  /** Normal output driver strength */
-  SYSTEM_PINMUX_PIN_STRENGTH_NORMAL,
-  /** High current output driver strength */
-  SYSTEM_PINMUX_PIN_STRENGTH_HIGH,
-};
-
-/**
- * \brief Configures the output driver strength mode for a GPIO pin.
- *
- * Configures the output drive strength for a GPIO output, to
- * control the amount of current the pad is able to sink/source.
- *
- * \param[in] gpio_pin  Index of the GPIO pin to configure
- * \param[in] mode      New output driver strength mode to configure
- */
-static inline void system_pinmux_pin_set_output_strength(
-    const uint8_t gpio_pin,
-    const enum system_pinmux_pin_strength mode)
-{
-  PortGroup* const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-  uint32_t pin_index = (gpio_pin % 32);
-
-  if (mode == SYSTEM_PINMUX_PIN_STRENGTH_HIGH) {
-    port->PINCFG[pin_index].reg |=  PORT_PINCFG_DRVSTR;
-  }
- else {
-    port->PINCFG[pin_index].reg &= ~PORT_PINCFG_DRVSTR;
- }
-}
-
-void system_pinmux_group_set_output_strength(
-    PortGroup *const port,
-    const uint32_t mask,
-    const enum system_pinmux_pin_strength mode);
-#endif
-
-#ifdef FEATURE_SYSTEM_PINMUX_SLEWRATE_LIMITER
-/**
- * \brief Port pin output slew rate enum.
- *
- * Enum for the possible output drive slew rates for the port pin
- * configuration structure, to indicate the driver slew rate the pin should
- * use.
- */
-enum system_pinmux_pin_slew_rate {
-  /** Normal pin output slew rate */
-  SYSTEM_PINMUX_PIN_SLEW_RATE_NORMAL,
-  /** Enable slew rate limiter on the pin */
-  SYSTEM_PINMUX_PIN_SLEW_RATE_LIMITED,
-};
-
-/**
- * \brief Configures the output slew rate mode for a GPIO pin.
- *
- * Configures the output slew rate mode for a GPIO output, to
- * control the speed at which the physical output pin can react to
- * logical changes of the I/O pin value.
- *
- * \param[in] gpio_pin  Index of the GPIO pin to configure
- * \param[in] mode      New pin slew rate mode to configure
- */
-static inline void system_pinmux_pin_set_output_slew_rate(
-    const uint8_t gpio_pin,
-    const enum system_pinmux_pin_slew_rate mode)
-{
-  PortGroup* const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-  uint32_t pin_index = (gpio_pin % 32);
-
-  if (mode == SYSTEM_PINMUX_PIN_SLEW_RATE_LIMITED) {
-    port->PINCFG[pin_index].reg |=  PORT_PINCFG_SLEWLIM;
-  }
-  else {
-    port->PINCFG[pin_index].reg &= ~PORT_PINCFG_SLEWLIM;
-  }
-}
-
-void system_pinmux_group_set_output_slew_rate(
-   PortGroup *const port,
-    const uint32_t mask,
-    const enum system_pinmux_pin_slew_rate mode);
-#endif
-
-#ifdef FEATURE_SYSTEM_PINMUX_OPEN_DRAIN
-/**
- * \brief Port pin output drive mode enum.
- *
- * Enum for the possible output drive modes for the port pin configuration
- * structure, to indicate the output mode the pin should use.
- */
-enum system_pinmux_pin_drive {
-  /** Use totem pole output drive mode */
-  SYSTEM_PINMUX_PIN_DRIVE_TOTEM,
-  /** Use open drain output drive mode */
-  SYSTEM_PINMUX_PIN_DRIVE_OPEN_DRAIN,
-};
-
-/**
- * \brief Configures the output driver mode for a GPIO pin.
- *
- * Configures the output driver mode for a GPIO output, to
- * control the pad behavior.
- *
- * \param[in] gpio_pin  Index of the GPIO pin to configure
- * \param[in] mode      New pad output driver mode to configure
- */
-static inline void system_pinmux_pin_set_output_drive(
-    const uint8_t gpio_pin,
-    const enum system_pinmux_pin_drive mode)
-{
-  PortGroup* const port = system_pinmux_get_group_from_gpio_pin(gpio_pin);
-  uint32_t pin_index = (gpio_pin % 32);
-
-  if (mode == SYSTEM_PINMUX_PIN_DRIVE_OPEN_DRAIN) {
-    port->PINCFG[pin_index].reg |=  PORT_PINCFG_ODRAIN;
-  }
-  else {
-    port->PINCFG[pin_index].reg &= ~PORT_PINCFG_ODRAIN;
-  }
-}
-
-void system_pinmux_group_set_output_drive(
-    PortGroup *const port,
-    const uint32_t mask,
-    const enum system_pinmux_pin_drive mode);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/** @} */
-
-/**
- * \page asfdoc_sam0_system_pinmux_extra Extra Information for SYSTEM PINMUX 
Driver
- *
- * \section asfdoc_sam0_system_pinmux_extra_acronyms Acronyms
- * The table below presents the acronyms used in this module:
- *
- * <table>
- *     <tr>
- *             <th>Acronym</th>
- *             <th>Description</th>
- *     </tr>
- *     <tr>
- *             <td>GPIO</td>
- *             <td>General Purpose Input/Output</td>
- *     </tr>
- *     <tr>
- *             <td>MUX</td>
- *             <td>Multiplexer</td>
- *     </tr>
- * </table>
- *
- *
- * \section asfdoc_sam0_system_pinmux_extra_dependencies Dependencies
- * This driver has the following dependencies:
- *
- *  - None
- *
- *
- * \section asfdoc_sam0_system_pinmux_extra_errata Errata
- * There are no errata related to this driver.
- *
- *
- * \section asfdoc_sam0_system_pinmux_extra_history Module History
- * An overview of the module history is presented in the table below, with
- * details on the enhancements and fixes made to the module since its first
- * release. The current version of this corresponds to the newest version in
- * the table.
- *
- * <table>
- *     <tr>
- *             <th>Changelog</th>
- *     </tr>
- *     <tr>
- *             <td>Removed code of open drain, slew limit and drive strength
- *             features</td>
- *     </tr>
- *     <tr>
- *             <td>Fixed broken sampling mode function implementations, which 
wrote
- *                 corrupt configuration values to the device registers</td>
- *     </tr>
- *     <tr>
- *             <td>Added missing NULL pointer asserts to the PORT driver 
functions</td>
- *     </tr>
- *     <tr>
- *             <td>Initial Release</td>
- *     </tr>
- * </table>
- */
-
-/**
- * \page asfdoc_sam0_system_pinmux_exqsg Examples for SYSTEM PINMUX Driver
- *
- * This is a list of the available Quick Start guides (QSGs) and example
- * applications for \ref asfdoc_sam0_system_pinmux_group. QSGs are simple
- * examples with step-by-step instructions to configure and use this driver in 
a
- * selection of use cases. Note that a QSG can be compiled as a standalone
- * application or be added to the user application.
- *
- *  - \subpage asfdoc_sam0_system_pinmux_basic_use_case
- *
- * \page asfdoc_sam0_system_pinmux_document_revision_history Document Revision 
History
- *
- * <table>
- *     <tr>
- *             <th>Doc. Rev.</td>
- *             <th>Date</td>
- *             <th>Comments</td>
- *     </tr>
- *     <tr>
- *             <td>42121F</td>
- *             <td>08/2015</td>
- *             <td>Added support for SAM L21/L22, SAM DA1, and SAM C20/C21</td>
- *     </tr>
- *     <tr>
- *             <td>42121E</td>
- *             <td>12/2014</td>
- *             <td>Added support for SAM R21 and SAM D10/D11</td>
- *     </tr>
- *     <tr>
- *             <td>42121D</td>
- *             <td>01/2014</td>
- *             <td>Added support for SAM D21</td>
- *     </tr>
- *     <tr>
- *             <td>42121C</td>
- *             <td>09/2013</td>
- *             <td>Fixed incorrect documentation for the device pin sampling 
mode</td>
- *     </tr>
- *     <tr>
- *             <td>42121B</td>
- *             <td>06/2013</td>
- *             <td>Corrected documentation typos</td>
- *     </tr>
- *     <tr>
- *             <td>42121A</td>
- *             <td>06/2013</td>
- *             <td>Initial release</td>
- *     </tr>
- * </table>
- */
-
-#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/power/power_sam_d_r/power.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/power/power_sam_d_r/power.h 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/power/power_sam_d_r/power.h
deleted file mode 100755
index 3f8abb3..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/power/power_sam_d_r/power.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
- * \file
- *
- * \brief SAM Power related functionality
- *
- * Copyright (C) 2014-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#ifndef POWER_H_INCLUDED
-#define POWER_H_INCLUDED
-
-#include <compiler.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup asfdoc_sam0_system_group
- * @{
- */
-
-/**
- * \brief Voltage references within the device.
- *
- * List of available voltage references (VREF) that may be used within the
- * device.
- */
-enum system_voltage_reference {
-       /** Temperature sensor voltage reference */
-       SYSTEM_VOLTAGE_REFERENCE_TEMPSENSE,
-       /** Bandgap voltage reference */
-       SYSTEM_VOLTAGE_REFERENCE_BANDGAP,
-};
-
-/**
- * \brief Device sleep modes.
- *
- * List of available sleep modes in the device. A table of clocks available in
- * different sleep modes can be found in \ref 
asfdoc_sam0_system_module_overview_sleep_mode.
- */
-enum system_sleepmode {
-       /** IDLE 0 sleep mode */
-       SYSTEM_SLEEPMODE_IDLE_0,
-       /** IDLE 1 sleep mode */
-       SYSTEM_SLEEPMODE_IDLE_1,
-       /** IDLE 2 sleep mode */
-       SYSTEM_SLEEPMODE_IDLE_2,
-       /** Standby sleep mode */
-       SYSTEM_SLEEPMODE_STANDBY,
-};
-
-
-
-/**
- * \name Voltage References
- * @{
- */
-
-/**
- * \brief Enable the selected voltage reference
- *
- * Enables the selected voltage reference source, making the voltage reference
- * available on a pin as well as an input source to the analog peripherals.
- *
- * \param[in] vref  Voltage reference to enable
- */
-static inline void system_voltage_reference_enable(
-               const enum system_voltage_reference vref)
-{
-       switch (vref) {
-               case SYSTEM_VOLTAGE_REFERENCE_TEMPSENSE:
-                       SYSCTRL->VREF.reg |= SYSCTRL_VREF_TSEN;
-                       break;
-
-               case SYSTEM_VOLTAGE_REFERENCE_BANDGAP:
-                       SYSCTRL->VREF.reg |= SYSCTRL_VREF_BGOUTEN;
-                       break;
-
-               default:
-                       Assert(false);
-                       return;
-       }
-}
-
-/**
- * \brief Disable the selected voltage reference
- *
- * Disables the selected voltage reference source.
- *
- * \param[in] vref  Voltage reference to disable
- */
-static inline void system_voltage_reference_disable(
-               const enum system_voltage_reference vref)
-{
-       switch (vref) {
-               case SYSTEM_VOLTAGE_REFERENCE_TEMPSENSE:
-                       SYSCTRL->VREF.reg &= ~SYSCTRL_VREF_TSEN;
-                       break;
-
-               case SYSTEM_VOLTAGE_REFERENCE_BANDGAP:
-                       SYSCTRL->VREF.reg &= ~SYSCTRL_VREF_BGOUTEN;
-                       break;
-
-               default:
-                       Assert(false);
-                       return;
-       }
-}
-
-/**
- * @}
- */
-
-
-/**
- * \name Device Sleep Control
- * @{
- */
-
-/**
- * \brief Set the sleep mode of the device
- *
- * Sets the sleep mode of the device; the configured sleep mode will be entered
- * upon the next call of the \ref system_sleep() function.
- *
- * For an overview of which systems are disabled in sleep for the different
- * sleep modes, see \ref asfdoc_sam0_system_module_overview_sleep_mode.
- *
- * \param[in] sleep_mode  Sleep mode to configure for the next sleep operation
- *
- * \retval STATUS_OK               Operation completed successfully
- * \retval STATUS_ERR_INVALID_ARG  The requested sleep mode was invalid or not
- *                                 available
- */
-static inline enum status_code system_set_sleepmode(
-       const enum system_sleepmode sleep_mode)
-{
-#if (SAMD20 || SAMD21)
-       /* Errata: Make sure that the Flash does not power all the way down
-        * when in sleep mode. */
-       NVMCTRL->CTRLB.bit.SLEEPPRM = NVMCTRL_CTRLB_SLEEPPRM_DISABLED_Val;
-#endif
-
-       switch (sleep_mode) {
-               case SYSTEM_SLEEPMODE_IDLE_0:
-               case SYSTEM_SLEEPMODE_IDLE_1:
-               case SYSTEM_SLEEPMODE_IDLE_2:
-                       SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
-                       PM->SLEEP.reg = sleep_mode;
-                       break;
-
-               case SYSTEM_SLEEPMODE_STANDBY:
-                       SCB->SCR |=  SCB_SCR_SLEEPDEEP_Msk;
-                       break;
-
-               default:
-                       return STATUS_ERR_INVALID_ARG;
-       }
-
-       return STATUS_OK;
-}
-
-/**
- * \brief Put the system to sleep waiting for interrupt
- *
- * Executes a device DSB (Data Synchronization Barrier) instruction to ensure
- * all ongoing memory accesses have completed, then a WFI (Wait For Interrupt)
- * instruction to place the device into the sleep mode specified by
- * \ref system_set_sleepmode until woken by an interrupt.
- */
-static inline void system_sleep(void)
-{
-       __DSB();
-       __WFI();
-}
-
-/**
- * @}
- */
-
-/** @} */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* POWER_H_INCLUDED */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_c/reset.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_c/reset.h 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_c/reset.h
deleted file mode 100755
index 647296b..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_c/reset.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * \file
- *
- * \brief SAM C2x Reset functionality
- *
- * Copyright (C) 2014-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-#ifndef RESET_H_INCLUDED
-#define RESET_H_INCLUDED
-
-#include <compiler.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup asfdoc_sam0_system_group
- * @{
- */
-
-/**
- * \brief Reset causes of the system.
- *
- * List of possible reset causes of the system.
- */
-enum system_reset_cause {
-       /** The system was last reset by a software reset */
-       SYSTEM_RESET_CAUSE_SOFTWARE       = RSTC_RCAUSE_SYST,
-       /** The system was last reset by the watchdog timer */
-       SYSTEM_RESET_CAUSE_WDT            = RSTC_RCAUSE_WDT,
-       /** The system was last reset because the external reset 
-               line was pulled low */
-       SYSTEM_RESET_CAUSE_EXTERNAL_RESET = RSTC_RCAUSE_EXT,
-       /** The system was last reset by VDD brown out detector */
-       SYSTEM_RESET_CAUSE_BODVDD         = RSTC_RCAUSE_BODVDD,
-       /** The system was last reset by VDDCORE brown out detector */
-       SYSTEM_RESET_CAUSE_BODCORE        = RSTC_RCAUSE_BODCORE,
-       /** The system was last reset by the POR (Power on reset) */
-       SYSTEM_RESET_CAUSE_POR            = RSTC_RCAUSE_POR,
-};
-
-/**
- * \name Reset Control
- * @{
- */
-
-/**
- * \brief Reset the MCU.
- *
- * Resets the MCU and all associated peripherals and registers, except RTC,
- * OSC32KCTRL, RSTC, GCLK(if WRTLOCK is set) and I/O retention state of PM.
- *
- */
-static inline void system_reset(void)
-{
-       NVIC_SystemReset();
-}
-
-/**
- * \brief Get the reset cause.
- *
- * Retrieves the cause of the last system reset.
- *
- * \return An enum value indicating the cause of the last system reset.
- */
-static inline enum system_reset_cause system_get_reset_cause(void)
-{
-       return (enum system_reset_cause)RSTC->RCAUSE.reg;
-}
-
-/**
- * @}
- */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RESET_H_INCLUDED */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a280628a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_d_r/reset.h
----------------------------------------------------------------------
diff --git 
a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_d_r/reset.h 
b/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_d_r/reset.h
deleted file mode 100755
index befed28..0000000
--- a/hw/mcu/atmel/samd21xx/src/sam0/drivers/system/reset/reset_sam_d_r/reset.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * \file
- *
- * \brief SAM Reset related functionality
- *
- * Copyright (C) 2014-2015 Atmel Corporation. All rights reserved.
- *
- * \asf_license_start
- *
- * \page License
- *
- * 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. The name of Atmel may not be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * 4. This software may only be redistributed and used in connection with an
- *    Atmel microcontroller product.
- *
- * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
- * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL 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.
- *
- * \asf_license_stop
- *
- */
-/*
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/";>Atmel 
Support</a>
- */
-#ifndef RESET_H_INCLUDED
-#define RESET_H_INCLUDED
-
-#include <compiler.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * \addtogroup asfdoc_sam0_system_group
- * @{
- */
-
-/**
- * \brief Reset causes of the system.
- *
- * List of possible reset causes of the system.
- */
-enum system_reset_cause {
-       /** The system was last reset by a software reset */
-       SYSTEM_RESET_CAUSE_SOFTWARE       = PM_RCAUSE_SYST,
-       /** The system was last reset by the watchdog timer */
-       SYSTEM_RESET_CAUSE_WDT            = PM_RCAUSE_WDT,
-       /** The system was last reset because the external reset line was 
pulled low */
-       SYSTEM_RESET_CAUSE_EXTERNAL_RESET = PM_RCAUSE_EXT,
-       /** The system was last reset by the BOD33 */
-       SYSTEM_RESET_CAUSE_BOD33          = PM_RCAUSE_BOD33,
-       /** The system was last reset by the BOD12 */
-       SYSTEM_RESET_CAUSE_BOD12          = PM_RCAUSE_BOD12,
-       /** The system was last reset by the POR (Power on reset) */
-       SYSTEM_RESET_CAUSE_POR            = PM_RCAUSE_POR,
-};
-
-
-/**
- * \name Reset Control
- * @{
- */
-
-/**
- * \brief Reset the MCU.
- *
- * Resets the MCU and all associated peripherals and registers, except RTC, 
all 32KHz sources,
- * WDT (if ALWAYSON is set) and GCLK (if WRTLOCK is set).
- *
- */
-static inline void system_reset(void)
-{
-       NVIC_SystemReset();
-}
-
-/**
- * \brief Return the reset cause.
- *
- * Retrieves the cause of the last system reset.
- *
- * \return An enum value indicating the cause of the last system reset.
- */
-static inline enum system_reset_cause system_get_reset_cause(void)
-{
-       return (enum system_reset_cause)PM->RCAUSE.reg;
-}
-
-/**
- * @}
- */
-
-/** @} */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RESET_H_INCLUDED */

Reply via email to