nuttx/configs/launchxl-cc1310/src/cc1310_buttons.c
Gregory Nutt f41b9fead9 arch/arm/src/tiva/cc13xx: The trim files from the TI DriverLib now compile successfully. This merge also brings in the ROM files from the TI DriverLib which do NOT year compile correctly. This is still a work in progress. There merge also adds unverified support for the LaunchXL-CC1310.
Squashed commit of the following:

    confgs/launchxl-cc1310:  Add board support for the LaunchXL-CC1310.  This is a work in progress and does not yet build error free.

     arch/arm/src/tiva/cc13xx: cc13x0_trim.c now compiles; Make xxx_rom.h header files conform a little more closely to the NuttX coding style.

    arch/arm/src/tiva/cc13xx:  CC13x2 (V1 and V2) rom.c files now build with no errors or warnings. Still have to work through the CC13x0 version.

    arch/arm/src/tiva/hardware:  Add CC13x0/CC13x2_CC26x2 AON BATMON register definition header file.

    arch/arm/src/tiva/cc13xx: A little more progress converting TI DriverLib ROM code to NuttX coding style.  Lots of possibilities for breakage here!

    arch/arm/src/tiva/cc13xx:  Remove functions from cc13x._rom.c that are defined from ROM access in cc13x._rom.h; Add prototypes in cc13x._rom.h for functions in cc13x._rom.c that are not defined in cc13x._rom.h.

    arch/arm/src/tiva/cc13xx:  Remove some dangling whitespace at the end of lines.

    arch/arm/src/tiva/cc13xx:  Second (and final) round of name changes to get ROM function-like defines consistent with NuttX coding standard

    arch/arm/src/tiva/cc13xx:  Fix a few errors in last big name conversion.

    arch/arm/src/tiva/cc13xx:  First round of name changes to get ROM function-like defines consistent with NuttX coding standard

    arch/arm/src/tiva/cc13xx:  Remove ROM_ prefix from function-like defines.
2019-01-22 15:21:58 -06:00

153 lines
5.0 KiB
C

/****************************************************************************
* configs/launchxl-cc1310/src/cc1310_buttons.c
*
* Copyright (C) 2019 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <stdint.h>
#include <errno.h>
#include <nuttx/arch.h>
#include <nuttx/board.h>
#include <nuttx/irq.h>
#include <nuttx/irq.h>
#include "tiva_gpio.h"
#include "launchxl-cc1310.h"
#include <arch/board/board.h>
#ifdef CONFIG_ARCH_BUTTONS
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: board_button_initialize
*
* Description:
* board_button_initialize() must be called to initialize button resources.
* After that, board_buttons() may be called to collect the current state
* of all buttons or board_button_irq() may be called to register button
* interrupt handlers.
*
****************************************************************************/
void board_button_initialize(void)
{
#warning Missing logic
}
/****************************************************************************
* Name: board_buttons
*
* Description:
* After board_button_initialize() has been called, board_buttons() may be
* called to collect the state of all buttons. board_buttons() returns an
* 32-bit bit set with each bit associated with a button. See the BUTTON*
* definitions above for the meaning of each bit in the returned value.
*
****************************************************************************/
uint32_t board_buttons(void)
{
#warning Missing logic
return 0;
}
/****************************************************************************
* Name: board_button_irq
*
* Description:
* This function may be called to register an interrupt handler that will
* be called when a button is depressed or released. The ID value is one
* of the BUTTON* definitions provided above.
*
* Configuration Notes:
* Configuration CONFIG_SAMA5_PIO_IRQ must be selected to enable the
* overall PIO IRQ feature and CONFIG_SAMA5_PIOB_IRQ must be enabled to
* select PIOs to support interrupts on PIOE.
*
****************************************************************************/
#if defined(CONFIG_ARCH_IRQBUTTONS) && defined(CONFIG_TIVA_GPIOP_IRQS)
int board_button_irq(int id, xcpt_t irqhandler, FAR void *arg)
{
#if 0
irqstate_t flags;
int ret = -EINVAL;
/* Interrupts are supported only on ports P and Q and, hence, only on button SW4 */
if (id == BUTTON_SW4)
{
/* The following should be atomic */
flags = enter_critical_section();
/* Detach and disable the button interrupt */
up_disable_irq(IRQ_SW4);
irq_detach(IRQ_SW4);
/* Attach the new handler if so requested */
if (irqhandler != NULL)
{
ret = irq_attach(IRQ_SW4, irqhandler, arg);
if (ret == OK)
{
up_enable_irq(IRQ_SW4);
}
}
leave_critical_section(flags);
}
return ret;
#else
#warning Missing logic
return -ENOSYS;
#endif
}
#endif
#endif /* CONFIG_ARCH_BUTTONS */