arm: Removed support for CC2650

The SoC, driver, and board support for the CC2650 and CC2650 Sensortag
aren't currently supported and we are removing them as such.  If anyone
is interesting in supporting this platform we can easily recovery it
from git.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
Kumar Gala 2020-01-17 08:22:00 -06:00 committed by Kumar Gala
parent e393a26270
commit b1602c8e39
38 changed files with 2 additions and 3115 deletions

View file

@ -1,5 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
zephyr_library()
zephyr_library_sources(pinmux.c)
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)

View file

@ -1,7 +0,0 @@
# TI CC2650 SensorTag configuration
# SPDX-License-Identifier: Apache-2.0
if BOARD_CC2650_SENSORTAG
endif # BOARD_CC2650_SENSORTAG

View file

@ -1,7 +0,0 @@
# TI SimpleLink CC2650 SensorTag Board
# SPDX-License-Identifier: Apache-2.0
config BOARD_CC2650_SENSORTAG
bool "TI CC2650 SensorTag"
depends on SOC_CC2650

View file

@ -1,13 +0,0 @@
# TI CC2650 SensorTag board configuration
# SPDX-License-Identifier: Apache-2.0
if BOARD_CC2650_SENSORTAG
config BOARD
default "cc2650_sensortag"
config BOARD_DEPRECATED_RELEASE
default "2.2.0"
endif # BOARD_CC2650_SENSORTAG

View file

@ -1,58 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Board-specific information for Texas Instruments'
* SensorTag device.
*/
#ifndef _CC2650_SENSORTAG_BOARD_H_
#define _CC2650_SENSORTAG_BOARD_H_
/* Match a feature on the board to an I/O pin
* (DIOx in local jargon)
*/
#define SENSORTAG_BUTTON2 0
#define SENSORTAG_TMP_RDY 1
#define SENSORTAG_AUDIO_D 2
#define SENSORTAG_REED 3
#define SENSORTAG_BUTTON1 4
#define SENSORTAG_SDA 5
#define SENSORTAG_SCL 6
#define SENSORTAG_MPU_INT 7
#define SENSORTAG_SDA_HP 8
#define SENSORTAG_SCL_HP 9
#define SENSORTAG_LED1 10
#define SENSORTAG_DP7 11
#define SENSORTAG_AUDIO_CLK SENSORTAG_DP7
#define SENSORTAG_MPU_PWR 12
#define SENSORTAG_MIC_PWR 13
#define SENSORTAG_FLASH_CS 14
#define SENSORTAG_LED2 15
#define SENSORTAG_DP12 16
#define SENSORTAG_AUDIO_FS SENSORTAG_DP12
#define SENSORTAG_TDO SENSORTAG_DP12
#define SENSORTAG_DP8 17
#define SENSORTAG_SCLK SENSORTAG_DP8
#define SENSORTAG_TDI SENSORTAG_DP8
#define SENSORTAG_DP9 18
#define SENSORTAG_MISO SENSORTAG_DP9
#define SENSORTAG_DP10 19
#define SENSORTAG_MOSI SENSORTAG_DP10
#define SENSORTAG_DP11 20
#define SENSORTAG_CSN SENSORTAG_DP11
#define SENSORTAG_BUZZER 21
#define SENSORTAG_DP6 22
#define SENSORTAG_AUDIO_DO SENSORTAG_DP6
#define SENSORTAG_DP2 23
#define SENSORTAG_DP1 24
#define SENSORTAG_DP0 25
#define SENSORTAG_VDD 26
#define SENSORTAG_DP3 27
#define SENSORTAG_DP4 28
#define SENSORTAG_UART_RX SENSORTAG_DP4
#define SENSORTAG_DP5 29
#define SENSORTAG_UART_TX SENSORTAG_DP5
#define SENSORTAG_DP_D 30
#endif /* _CC2650_SENSORTAG_BOARD_H_ */

View file

@ -1,39 +0,0 @@
/* SPDX-License-Identifier: Apache-2.0 */
/dts-v1/;
#include "ti/cc2650.dtsi"
/ {
model = "TI CC2650 SensorTag";
compatible = "ti,cc2650";
aliases {
gpio-a = &gpioa;
pinmux-a = &pinmux_a;
prcm0 = &prcm0;
trng0 = &trng0;
uart-0 = &uart0;
};
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
};
};
&gpioa {
status = "okay";
};
&trng0 {
status = "okay";
};
&uart0 {
status = "okay";
current-speed = <115200>;
};

View file

@ -1,9 +0,0 @@
identifier: cc2650_sensortag
name: SimpleLink multi-standard CC2650 SensorTag kit
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
ram: 20

View file

@ -1,37 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
# General options
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=48000000
CONFIG_BOOTLOADER_SRAM_SIZE=0
CONFIG_XIP=y
CONFIG_PRINTK=y
# Platform-specific options
CONFIG_ARM=y
CONFIG_CORTEX_M_SYSTICK=y
CONFIG_BOARD_CC2650_SENSORTAG=y
CONFIG_SOC_SERIES_CC2650=y
CONFIG_SOC_CC2650=y
# Pinmux driver
CONFIG_PINMUX=y
CONFIG_PINMUX_CC2650=y
# GPIO driver
CONFIG_GPIO=y
CONFIG_GPIO_CC2650=y
CONFIG_GPIO_CC2650_INIT_PRIO=0
# UART driver
CONFIG_SERIAL=y
CONFIG_UART_STELLARIS=y
CONFIG_UART_STELLARIS_PORT_0=y
# Console driver
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
# Random number generator driver
CONFIG_ENTROPY_GENERATOR=y

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View file

@ -1,215 +0,0 @@
.. _cc2650_sensortag:
CC2650 SensorTag
################
Overview
********
The SimpleLink CC2650 SensorTag is a Texas Instruments board based
on the CC2650 wireless MCU. It contains multiple sensors and provides
Bluetooth and IEEE 802.15.4 connectivity.
.. image:: img/cc2650_sensortag.jpg
:width: 600px
:height: 600px
:align: center
:alt: TI SensorTag v2
Features
========
* CC2650 low-power wireless MCU: Bluetooth + IEEE 802.15.4 connectivity
* Autonomous low-power sensor controller
* Autonomous radio controller
* Program, debug, and serial line through "DevPack" JTAG probe's USB port
* Power from DevPack USB or batteries
* 2 buttons and 2 LEDs for user interaction
Hardware
********
The SensorTag board provides the following hardware:
* CC2650 SoC in RGZ (7x7mm) 48 pins format package
* Programmable Cortex-M3 CPU, clocked at 48MHz
* Proprietary sensor controller
* 12-bit ADC, 200ks/s
* 2 comparators
* SPI + I2C digital interfaces for sensors
* Programmable with register-based interface
* Cortex-M0 "RF Core" radio controller
* 4KB of dedicated SRAM
* Single transceiver, with modem and frequency synthesizer
* Programmable with register-based interface
* 128KB flash
* 20KB SRAM
* 8KB cache
* SPI
* I2C
* I2S
* UART
* 31 GPIOs
* 4 32-bit timers
* True Random Number Generator
* Real Time Clock
* Watchdog timer
* 32 channels DMA controller
* 10 sensors: ambient light, digital microphone, magnetic sensor, humidity,
pressure, accelerometer, gyroscope, magnetometer, object temperature and
ambient temperature
Supported features
==================
The following SensorTag features are currently supported:
+-----------+------------+------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+====================================+
| NVIC | on-chip | Nested Vector Interrupt Controller |
+-----------+------------+------------------------------------+
| UART | on-chip | serial port polling |
+-----------+------------+------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+------------------------------------+
Connections and IOs
===================
The SensorTag has one GPIO controller, along with a flexible pin
multiplexer. In practice, the pins are routed as described in
:zephyr_file:`boards/arm/cc2650_sensortag/board.h`; the most commonly used being:
+----------------+---------------+----------------------+
| Physical pin # | Digital I/O # | Signal |
+================+===============+======================+
| 5 | DIO_0 | BUTTON_2 (right) |
+----------------+---------------+----------------------+
| 9 | DIO_4 | BUTTON_1 (left) |
+----------------+---------------+----------------------+
| 10 | DIO_5 | SDA |
+----------------+---------------+----------------------+
| 11 | DIO_6 | SCL |
+----------------+---------------+----------------------+
| 16 | DIO_10 | LED_1 (red) |
+----------------+---------------+----------------------+
| 21 | DIO_15 | LED_2 (green) |
+----------------+---------------+----------------------+
| 27 | DIO_17 | SCLK |
+----------------+---------------+----------------------+
| 28 | DIO_18 | MISO |
+----------------+---------------+----------------------+
| 29 | DIO_19 | MOSI |
+----------------+---------------+----------------------+
| 31 | DIO_21 | BUZZER |
+----------------+---------------+----------------------+
| 41 | DIO_28 | UART_RX |
+----------------+---------------+----------------------+
| 42 | DIO_29 | UART_TX |
+----------------+---------------+----------------------+
System Clock
============
The CC2650 clocks its Cortex-M3 CPU through a 48MHz internal oscillator
by default. 2 system clocks, a high-frequency one and a low-frequency one,
are available to clock the CPU and the peripherals.
Available clock sources for them are:
* 48MHz internal oscillator
* 24MHz internal oscillator
* 32KHz internal oscillator
* 32.768KHz external oscillator
Programming and debugging
*************************
The ROM in the CC2650 contains a proprietary bootloader, executed
before the program stored on flash. The bootloader looks at a special
configuration area expected to be written at the end of flash, the
CCFG ("Customer Configuration" area). A 32-bit word in this area,
*IMAGE_VALID_CONF*, needs to be 0 in order for the bootloader to actually
pass control to your program. You can find more information on the CCFG
in the `CC2650 reference manual`_, section 9.1. The current CC2650 port
for Zephyr already does this by default; if you wish to check or modify
the CCFG content, see :zephyr_file:`soc/arm/ti_simplelink/cc2650/soc.c`.
Building
========
You can build an application in the usual way. Here is an example for
the :ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: cc2650_sensortag
:goals: build flash
Flashing
========
The CC2650 SensorTag can be flashed using a XDS110 JTAG device, the "DevPack",
designed to plug on it. For now, flashing with it is not supported
within Zephyr. However, you can use Uniflash, a TI proprietary tool, to do
the job for now.
.. note::
Uniflash comes with some firmware for the "DevPeck" XDS110 JTAG probe.
Different versions of Uniflash may have different firmware version.
Currently, the most stable version is the 3.4. You should be able
to grab it here:
http://processors.wiki.ti.com/index.php/CCS_UniFlash_v3.4.1_Release_Notes
To update the "DevPack", reach the installation path of Uniflash 3.4,
then to the :file:`ccs_base/common/uscif/xds110/` subdirectory.
Then follow the :file:`ReadMe.txt`'s instructions:
.. code-block:: console
$ ./xdsdfu -m
$ ./xdsdfu -f firmware.bin -r
The green LED of the "DevPack" should blink repeatedly during the
operation, then light up again upon completion.
Debugging
=========
Debugging can be done with OpenOCD 0.10, which is supported
by the Zephyr SDK since v0.9.2. A basic configuration file for the
SensorTag board would be:
.. code-block:: console
source [find interface/cmsis-dap.cfg]
transport select jtag
gdb_memory_map enable
gdb_flash_program enable
source [find target/cc26xx.cfg]
adapter_khz 5000
Copy this in a file named ``ti-sensortag.cfg``, located in the
:file:`scripts/board` subdirectory of your local OpenOCD installation path.
When you wish to launch the OpenOCD server, just type:
.. code-block:: console
$ openocd -f board/ti-sensortag.cfg
References
**********
TI CC2650 datasheet:
http://www.ti.com/lit/ds/symlink/cc2650.pdf
CC2650 reference manual:
http://www.ti.com/lit/ug/swcu117h/swcu117h.pdf
Uniflash 3.4 release notes:
http://processors.wiki.ti.com/index.php/CCS_UniFlash_v3.4.1_Release_Notes
.. _CC2650 reference manual:
http://www.ti.com/lit/ug/swcu117h/swcu117h.pdf

View file

@ -1,43 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Board-specific pin multiplexing for Texas Instruments'
* SensorTag device.
*
* For now, this only setups a default configuration
* at initialization (not a real pinmux driver).
*/
#include <toolchain/gcc.h>
#include <init.h>
#include <drivers/pinmux.h>
#include <soc.h>
#include "board.h"
static int sensortag_pinmux_init(struct device *dev)
{
dev = device_get_binding(CONFIG_PINMUX_NAME);
/* DIO10 is LED 1 */
pinmux_pin_set(dev, SENSORTAG_LED1, CC2650_IOC_GPIO);
pinmux_pin_input_enable(dev, SENSORTAG_LED1, PINMUX_OUTPUT_ENABLED);
/* DIO15 is LED 2 */
pinmux_pin_set(dev, SENSORTAG_LED2, CC2650_IOC_GPIO);
pinmux_pin_input_enable(dev, SENSORTAG_LED2, PINMUX_OUTPUT_ENABLED);
/* UART RX */
pinmux_pin_set(dev, SENSORTAG_UART_RX, CC2650_IOC_MCU_UART0_RX);
pinmux_pin_input_enable(dev, SENSORTAG_UART_RX, PINMUX_INPUT_ENABLED);
/* UART TX */
pinmux_pin_set(dev, SENSORTAG_UART_TX, CC2650_IOC_MCU_UART0_TX);
pinmux_pin_input_enable(dev, SENSORTAG_UART_TX, PINMUX_OUTPUT_ENABLED);
return 0;
}
SYS_INIT(sensortag_pinmux_init, PRE_KERNEL_1,
CONFIG_PINMUX_INIT_PRIORITY);

View file

@ -316,7 +316,6 @@ html_redirect_pages = [
('boards/arm/arduino_zero/doc/arduino_zero', 'boards/arm/arduino_zero/doc/index'),
('boards/arm/atsamd20_xpro/doc/atsamd20_xpro', 'boards/arm/atsamd20_xpro/doc/index'),
('boards/arm/bbc_microbit/doc/board', 'boards/arm/bbc_microbit/doc/index'),
('boards/arm/cc2650_sensortag/doc/cc2650_sensortag', 'boards/arm/cc2650_sensortag/doc/index'),
('boards/arm/cc3220sf_launchxl/doc/cc3220sf_launchxl', 'boards/arm/cc3220sf_launchxl/doc/index'),
('boards/arm/colibri_imx7d_m4/doc/colibri_imx7d_m4', 'boards/arm/colibri_imx7d_m4/doc/index'),
('boards/arm/disco_l475_iot1/doc/disco_l475_iot1', 'boards/arm/disco_l475_iot1/doc/index'),

View file

@ -76,7 +76,7 @@ Architectures
* ARM:
* <TBD>
* Removed support for CC2650
* POSIX:

View file

@ -3,7 +3,6 @@
zephyr_library()
zephyr_library_sources_ifdef(CONFIG_GPIO_CC13XX_CC26XX gpio_cc13xx_cc26xx.c)
zephyr_library_sources_ifdef(CONFIG_GPIO_CC2650 gpio_cc2650.c)
zephyr_library_sources_ifdef(CONFIG_GPIO_CC32XX gpio_cc32xx.c)
zephyr_library_sources_ifdef(CONFIG_GPIO_CMSDK_AHB gpio_cmsdk_ahb.c)
zephyr_library_sources_ifdef(CONFIG_GPIO_DW gpio_dw.c)

View file

@ -43,8 +43,6 @@ source "drivers/gpio/Kconfig.cc32xx"
source "drivers/gpio/Kconfig.sifive"
source "drivers/gpio/Kconfig.cc2650"
source "drivers/gpio/Kconfig.esp32"
source "drivers/gpio/Kconfig.gecko"

View file

@ -1,23 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
# GPIO configuration options for the CC2650 SoC (Texas Instruments).
menuconfig GPIO_CC2650
bool "TI CC2650 GPIO driver"
depends on SOC_SERIES_CC2650
help
Enable the GPIO driver on boards equipped with TI CC2650.
if GPIO_CC2650
# A single block of GPIO exist.
config GPIO_CC2650_NAME
string "GPIO driver name."
default "GPIO_0"
config GPIO_CC2650_INIT_PRIO
int "GPIO driver initialization priority."
default 40
endif # GPIO_CC2650

View file

@ -1,336 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* GPIO driver for the CC2650 SOC from Texas Instruments.
*/
#include <toolchain/gcc.h>
#include <device.h>
#include <drivers/gpio.h>
#include <init.h>
#include <soc.h>
#include <sys/sys_io.h>
#include "gpio_utils.h"
struct gpio_cc2650_data {
u32_t pin_callback_enables;
sys_slist_t callbacks;
};
/* Pre-declarations */
static int gpio_cc2650_init(struct device *dev);
static int gpio_cc2650_config(struct device *port, int access_op,
u32_t pin, int flags);
static int gpio_cc2650_write(struct device *port, int access_op,
u32_t pin, u32_t value);
static int gpio_cc2650_read(struct device *port, int access_op,
u32_t pin, u32_t *value);
static int gpio_cc2650_manage_callback(struct device *port,
struct gpio_callback *callback,
bool set);
static int gpio_cc2650_enable_callback(struct device *port,
int access_op,
u32_t pin);
static int gpio_cc2650_disable_callback(struct device *port,
int access_op,
u32_t pin);
static u32_t gpio_cc2650_get_pending_int(struct device *dev);
/* GPIO registers */
static const u32_t doutset31_0 =
REG_ADDR(DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS,
CC2650_GPIO_DOUTSET31_0);
static const u32_t doutclr31_0 =
REG_ADDR(DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS,
CC2650_GPIO_DOUTCLR31_0);
static const u32_t din31_0 =
REG_ADDR(DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS,
CC2650_GPIO_DIN31_0);
static const u32_t doe31_0 =
REG_ADDR(DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS,
CC2650_GPIO_DOE31_0);
static const u32_t evflags31_0 =
REG_ADDR(DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS,
CC2650_GPIO_EVFLAGS31_0);
static struct gpio_cc2650_data gpio_cc2650_data = {
.pin_callback_enables = 0
};
static const struct gpio_driver_api gpio_cc2650_funcs = {
.config = gpio_cc2650_config,
.write = gpio_cc2650_write,
.read = gpio_cc2650_read,
.manage_callback = gpio_cc2650_manage_callback,
.enable_callback = gpio_cc2650_enable_callback,
.disable_callback = gpio_cc2650_disable_callback,
.get_pending_int = gpio_cc2650_get_pending_int
};
DEVICE_AND_API_INIT(gpio_cc2650_0, CONFIG_GPIO_CC2650_NAME,
gpio_cc2650_init, &gpio_cc2650_data, NULL,
PRE_KERNEL_1, CONFIG_GPIO_CC2650_INIT_PRIO,
&gpio_cc2650_funcs);
static void disconnect(const int pin, u32_t *gpiodoe31_0,
u32_t *iocfg)
{
*gpiodoe31_0 &= ~BIT(pin);
*iocfg &= ~(CC2650_IOC_IOCFGX_PULL_CTL_MASK |
CC2650_IOC_IOCFGX_IE_MASK);
*iocfg |= CC2650_IOC_INPUT_DISABLED |
CC2650_IOC_NO_PULL;
}
/* Configure a single pin.
* If any asked option is not implementable, rollback entirely to
* previous configuration.
*
* Note: For pin drive strength, the CC2650 devices only support
* symmetric sink/source capabilities.
* Thus, you may ONLY determine the common drive strength with
* GPIO *low output state* flags. Flags for *high output state*
* will be ignored.
*/
static int gpio_cc2650_config_pin(int pin, int flags)
{
const u32_t iocfg = REG_ADDR(DT_TI_CC2650_PINMUX_40081000_BASE_ADDRESS,
CC2650_IOC_IOCFG0 + 0x4 * pin);
u32_t iocfg_config = sys_read32(iocfg);
u32_t gpio_doe31_0_config = sys_read32(doe31_0);
/* Reset all configurable fields to 0 */
iocfg_config &= ~(CC2650_IOC_IOCFGX_IOSTR_MASK |
CC2650_IOC_IOCFGX_PULL_CTL_MASK |
CC2650_IOC_IOCFGX_EDGE_DET_MASK |
CC2650_IOC_IOCFGX_EDGE_IRQ_EN_MASK |
CC2650_IOC_IOCFGX_IOMODE_MASK |
CC2650_IOC_IOCFGX_IE_MASK |
CC2650_IOC_IOCFGX_HYST_EN_MASK);
if (flags & GPIO_DIR_OUT) {
gpio_doe31_0_config |= BIT(pin);
iocfg_config |= CC2650_IOC_INPUT_DISABLED;
} else {
gpio_doe31_0_config &= ~BIT(pin);
iocfg_config |= CC2650_IOC_INPUT_ENABLED;
}
if (flags & GPIO_INT) {
if (!(flags & GPIO_INT_EDGE) &&
!(flags & GPIO_INT_DOUBLE_EDGE)) {
/* Can't do level-based interrupt */
/* Don't commit changes */
return -ENOTSUP;
}
iocfg_config |= BIT(CC2650_IOC_IOCFGX_EDGE_IRQ_EN_POS);
if (flags & GPIO_INT_EDGE) {
if (flags & GPIO_INT_ACTIVE_HIGH) {
iocfg_config |= CC2650_IOC_POS_EDGE_DET;
} else {
iocfg_config |= CC2650_IOC_NEG_EDGE_DET;
}
} else if (flags & GPIO_INT_DOUBLE_EDGE) {
iocfg_config |= CC2650_IOC_NEG_AND_POS_EDGE_DET;
}
if (flags & GPIO_INT_DEBOUNCE) {
iocfg_config |= CC2650_IOC_HYSTERESIS_ENABLED;
} else {
iocfg_config |= CC2650_IOC_HYSTERESIS_DISABLED;
}
}
if (flags & GPIO_POL_INV) {
iocfg_config |= CC2650_IOC_INVERTED_IO;
} else {
iocfg_config |= CC2650_IOC_NORMAL_IO;
}
if (flags & GPIO_PUD_PULL_UP) {
iocfg_config |= CC2650_IOC_PULL_UP;
} else if (flags & GPIO_PUD_PULL_DOWN) {
iocfg_config |= CC2650_IOC_PULL_DOWN;
} else {
iocfg_config |= CC2650_IOC_NO_PULL;
}
/* Remember, we only look at GPIO_DS_*_LOW ! */
if (flags & GPIO_DS_DISCONNECT_LOW) {
disconnect(pin, &gpio_doe31_0_config, &iocfg_config);
}
if (flags & GPIO_DS_ALT_LOW) {
iocfg_config |= CC2650_IOC_MAX_DRIVE_STRENGTH;
} else {
iocfg_config |= CC2650_IOC_MIN_DRIVE_STRENGTH;
}
/* Commit changes */
sys_write32(iocfg_config, iocfg);
sys_write32(gpio_doe31_0_config, doe31_0);
return 0;
}
static inline void gpio_cc2650_write_pin(int pin, u32_t value)
{
value ? sys_write32(BIT(pin), doutset31_0) :
sys_write32(BIT(pin), doutclr31_0);
}
static inline void gpio_cc2650_read_pin(int pin, u32_t *value)
{
*value = sys_read32(din31_0) & BIT(pin);
}
static void gpio_cc2650_isr(void *arg)
{
struct device *dev = (struct device *)arg;
struct gpio_cc2650_data *data = dev->driver_data;
const u32_t events = sys_read32(evflags31_0);
const u32_t call_mask = events & data->pin_callback_enables;
/* Clear GPIO trigger events */
u32_t evflags = sys_read32(evflags31_0);
sys_write32(evflags | call_mask, evflags31_0);
gpio_fire_callbacks(&data->callbacks, dev, call_mask);
}
static int gpio_cc2650_init(struct device *dev)
{
ARG_UNUSED(dev);
/* ISR setup */
IRQ_CONNECT(DT_TI_CC2650_GPIO_40022000_IRQ_0,
DT_TI_CC2650_GPIO_40022000_IRQ_0_PRIORITY,
gpio_cc2650_isr, DEVICE_GET(gpio_cc2650_0),
0);
irq_enable(DT_TI_CC2650_GPIO_40022000_IRQ_0);
return 0;
}
static int gpio_cc2650_config(struct device *port, int access_op,
u32_t pin, int flags)
{
ARG_UNUSED(port);
if (access_op == GPIO_ACCESS_BY_PIN) {
return gpio_cc2650_config_pin(pin, flags);
}
const u32_t nb_pins = 32U;
for (u8_t i = 0; i < nb_pins; ++i) {
if (pin & 0x1 &&
gpio_cc2650_config_pin(i, flags) == -ENOTSUP) {
/* The flags being treated the same for
* every pin, if we get here then it's
* necessarily the first pin on which we act.
*
* We expect gpio_cc2650_config_pin() to
* NOT commit its changes if any problem
* arises, thus we do nothing special here
* to implement rollback to previous
* configuration.
*/
return -ENOTSUP;
}
pin >>= 1;
}
return 0;
}
static int gpio_cc2650_write(struct device *port, int access_op,
u32_t pin, u32_t value)
{
ARG_UNUSED(port);
if (access_op == GPIO_ACCESS_BY_PIN) {
gpio_cc2650_write_pin(pin, value);
} else {
const u32_t nb_pins = 32U;
for (u32_t i = 0; i < nb_pins; ++i) {
if (pin & 0x1) {
gpio_cc2650_write_pin(i, value);
}
pin >>= 1;
}
}
return 0;
}
static int gpio_cc2650_read(struct device *port, int access_op,
u32_t pin, u32_t *value)
{
ARG_UNUSED(port);
if (access_op == GPIO_ACCESS_BY_PIN) {
gpio_cc2650_read_pin(pin, value);
*value >>= pin;
} else {
const u32_t nb_pins = 32U;
for (u32_t i = 0; i < nb_pins; ++i) {
if (pin & 0x1) {
gpio_cc2650_read_pin(i, value);
}
pin >>= 1;
}
}
return 0;
}
static int gpio_cc2650_manage_callback(struct device *port,
struct gpio_callback *callback,
bool set)
{
struct gpio_cc2650_data *data = port->driver_data;
return gpio_manage_callback(&data->callbacks, callback, set);
}
static int gpio_cc2650_enable_callback(struct device *port,
int access_op,
u32_t pin)
{
struct gpio_cc2650_data *data = port->driver_data;
if (access_op == GPIO_ACCESS_BY_PIN) {
data->pin_callback_enables |= BIT(pin);
} else {
data->pin_callback_enables |= pin;
}
return 0;
}
static int gpio_cc2650_disable_callback(struct device *port,
int access_op,
u32_t pin)
{
struct gpio_cc2650_data *data = port->driver_data;
if (access_op == GPIO_ACCESS_BY_PIN) {
data->pin_callback_enables &= ~BIT(pin);
} else {
data->pin_callback_enables &= ~pin;
}
return 0;
}
static u32_t gpio_cc2650_get_pending_int(struct device *dev)
{
ARG_UNUSED(dev);
return sys_read32(evflags31_0);
}

View file

@ -2,7 +2,6 @@
# Board initialization
zephyr_sources_ifdef(CONFIG_PINMUX_CC13XX_CC26XX pinmux_cc13xx_cc26xx.c)
zephyr_sources_ifdef(CONFIG_PINMUX_CC2650 pinmux_cc2650.c)
zephyr_sources_ifdef(CONFIG_PINMUX_ESP32 pinmux_esp32.c)
zephyr_sources_ifdef(CONFIG_PINMUX_SIFIVE pinmux_sifive.c)
zephyr_sources_ifdef(CONFIG_PINMUX_XEC pinmux_mchp_xec.c)

View file

@ -42,8 +42,6 @@ source "drivers/pinmux/Kconfig.sifive"
source "drivers/pinmux/Kconfig.cc13xx_cc26xx"
source "drivers/pinmux/Kconfig.cc2650"
source "drivers/pinmux/Kconfig.esp32"
source "drivers/pinmux/Kconfig.sam0"

View file

@ -1,16 +0,0 @@
# TI CC2650 SoC pinmux driver.
# SPDX-License-Identifier: Apache-2.0
config PINMUX_CC2650
bool "Pinmux driver for CC2650 SoC"
depends on SOC_SERIES_CC2650
depends on GPIO
depends on GPIO_CC2650
help
Enable pin multiplexer for CC2650 SoC.
For hardware reasons, the pinmux depends on the GPIO module
being activated; it must initialize *before* the pinmux does.
Please take care that the pinmux init priority value is *lower*
that the GPIO driver init priority.

View file

@ -1,155 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Driver for the I/O controller (pinmux) for
* Texas Instrument's CC2650 SoC.
*
* For these SoCs, available pin functions are as follows:
*
* 0x00 - GPIO
* 0x07 - AON 32 Khz clock
* 0x08 - AUX IO
* 0x09 - SSI0 RX
* 0x0A - SSI0 TX
* 0x0B - SSI0 FSS
* 0x0C - SSI0 CLK
* 0x0D - I2C SDA
* 0x0E - I2C SCL
* 0x0F - UART0 RX
* 0x10 - UART0 TX
* 0x11 - UART0 CTS
* 0x12 - UART0 RTS
* 0x17 - Port event 0
* 0x18 - Port event 1
* 0x19 - Port event 2
* 0x1A - Port event 3
* 0x1B - Port event 4
* 0x1C - Port event 5
* 0x1D - Port event 6
* 0x1E - Port event 7
* 0x20 - CPU SWV
* 0x21 - SSI1 RX
* 0x22 - SSI1 TX
* 0x23 - SSI1 FSS
* 0x24 - SSI1 CLK
* 0x25 - I2S data 0
* 0x26 - I2S data 1
* 0x27 - I2S WCLK
* 0x28 - I2S BCLK
* 0x29 - I2S MCLK
* 0x2E - RF Core Trace
* 0x2F - RF Core data out 0
* 0x30 - RF Core data out 1
* 0x31 - RF Core data out 2
* 0x32 - RF Core data out 3
* 0x33 - RF Core data in 0
* 0x34 - RF Core data in 1
* 0x35 - RF Core SMI data link out
* 0x36 - RF Core SMI data link in
* 0x37 - RF Core SMI command link out
* 0x38 - RF Core SMI command link in
*/
#include <sys/__assert.h>
#include <sys/util.h>
#include <toolchain.h>
#include <device.h>
#include <drivers/pinmux.h>
#include <soc.h>
#include <sys/sys_io.h>
#define IOCFG_REG(Func) \
REG_ADDR(DT_TI_CC2650_PINMUX_40081000_BASE_ADDRESS, \
CC2650_IOC_IOCFG0 + 0x4 * Func)
static int pinmux_cc2650_init(struct device *dev)
{
/* Do nothing */
ARG_UNUSED(dev);
return 0;
}
static int pinmux_cc2650_set(struct device *dev, u32_t pin,
u32_t func)
{
const u32_t iocfg = IOCFG_REG(pin);
u32_t conf = sys_read32(iocfg);
conf &= ~CC2650_IOC_IOCFGX_PORT_ID_MASK;
conf |= func & CC2650_IOC_IOCFGX_PORT_ID_MASK;
sys_write32(conf, iocfg);
return 0;
};
static int pinmux_cc2650_get(struct device *dev, u32_t pin,
u32_t *func)
{
const u32_t iocfg = IOCFG_REG(pin);
u32_t conf = sys_read32(iocfg);
*func = conf & CC2650_IOC_IOCFGX_PORT_ID_MASK;
return 0;
}
static int pinmux_cc2650_pullup(struct device *dev, u32_t pin,
u8_t func)
{
__ASSERT((func == PINMUX_PULLUP_ENABLE) |
(func == PINMUX_PULLUP_DISABLE),
"Pullup mode is invalid");
const u32_t iocfg = IOCFG_REG(pin);
u32_t conf = sys_read32(iocfg);
conf &= ~CC2650_IOC_IOCFGX_PULL_CTL_MASK;
if (func == PINMUX_PULLUP_ENABLE) {
conf |= CC2650_IOC_PULL_UP;
} else {
conf |= CC2650_IOC_NO_PULL;
}
sys_write32(conf, iocfg);
return 0;
}
static int pinmux_cc2650_input(struct device *dev, u32_t pin,
u8_t func)
{
__ASSERT((func == PINMUX_INPUT_ENABLED) |
(func == PINMUX_OUTPUT_ENABLED),
"I/O mode is invalid");
const u32_t iocfg = IOCFG_REG(pin);
const u32_t gpio_doe = DT_TI_CC2650_GPIO_40022000_BASE_ADDRESS +
CC2650_GPIO_DOE31_0;
u32_t iocfg_conf = sys_read32(iocfg);
u32_t gpio_doe_conf = sys_read32(gpio_doe);
iocfg_conf &= ~CC2650_IOC_IOCFGX_IE_MASK;
if (func == PINMUX_INPUT_ENABLED) {
iocfg_conf |= CC2650_IOC_INPUT_ENABLED;
gpio_doe_conf &= ~BIT(pin);
} else {
iocfg_conf |= CC2650_IOC_INPUT_DISABLED;
gpio_doe_conf |= BIT(pin);
}
sys_write32(iocfg_conf, iocfg);
sys_write32(gpio_doe_conf, gpio_doe);
return 0;
}
const struct pinmux_driver_api pinmux_cc2650_funcs = {
.set = pinmux_cc2650_set,
.get = pinmux_cc2650_get,
.pullup = pinmux_cc2650_pullup,
.input = pinmux_cc2650_input
};
DEVICE_AND_API_INIT(pinmux_cc2650_0, CONFIG_PINMUX_NAME,
pinmux_cc2650_init, NULL, NULL,
PRE_KERNEL_1, CONFIG_PINMUX_INIT_PRIORITY,
&pinmux_cc2650_funcs);

View file

@ -2,7 +2,7 @@
menuconfig UART_STELLARIS
bool "Stellaris serial driver"
depends on SOC_TI_LM3S6965 || SOC_CC2650
depends on SOC_TI_LM3S6965
select SERIAL_HAS_DRIVER
select SERIAL_SUPPORT_INTERRUPT
help

View file

@ -1,78 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Device Tree include file for CC2650 SoC from Texas Instruments.
*/
#include "armv7-m.dtsi"
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m3";
reg = <0>;
};
};
sram0: memory@20000000 {
compatible = "mmio-sram";
reg = <0x20000000 0x5000>;
};
flash0: serial-flash@0 {
compatible = "serial-flash";
reg = <0x0 0x20000>;
};
sysclk: system-clock {
compatible = "fixed-clock";
clock-frequency = <48000000>;
#clock-cells = <0>;
};
soc {
gpioa: gpio@40022000 {
compatible = "ti,cc2650-gpio";
reg = <0x40022000 0xE4>;
interrupts = <0 0>;
status = "disabled";
gpio-controller;
#gpio-cells = <1>;
};
pinmux_a: pinmux@40081000 {
compatible = "ti,cc2650-pinmux";
reg = <0x40081000 0x80>;
};
prcm0: prcm@40082000 {
compatible = "ti,cc2650-prcm";
reg = <0x40082000 0x228>;
};
trng0: trng@40028000 {
compatible = "ti,cc2650-trng";
reg = <0x40028000 0x1FFC>;
interrupts = <33 0>;
status = "disabled";
};
uart0: uart@40001000 {
compatible = "ti,stellaris-uart";
reg = <0x40001000 0x4C>;
clocks = <&sysclk>;
interrupts = <5 0>, <6 0>;
status = "disabled";
label = "UART_0";
};
};
};
&nvic {
arm,num-irq-priority-bits = <3>;
};

View file

@ -1,11 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
description: TI CC2650 PRCM (Power, Reset, and Clock control Module)
compatible: "ti,cc2650-prcm"
include: base.yaml
properties:
reg:
required: true

View file

@ -1,13 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
description: TI CC2650 GPIO node
compatible: "ti,cc2650-gpio"
include: [gpio-controller.yaml, base.yaml]
properties:
reg:
required: true
interrupts:
required: true

View file

@ -1,14 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
description: TI CC2650 pinmux node
compatible: "ti,cc2650-pinmux"
include: base.yaml
properties:
reg:
required: true
pinmux-cells:
- pin
- function

View file

@ -1,3 +0,0 @@
# SPDX-License-Identifier: Apache-2.0
zephyr_sources(soc.c)

View file

@ -1,16 +0,0 @@
# TI SimpleLink CC2650
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_CC2650
config SOC_SERIES
default "cc2650"
config SYS_CLOCK_HW_CYCLES_PER_SEC
default 48000000
config NUM_IRQS
default 34
endif # SOC_SERIES_CC2650

View file

@ -1,10 +0,0 @@
# TI SimpleLink CC2650
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_CC2650
bool "TI SimpleLink Family CC2650"
select CPU_CORTEX_M3
select SOC_FAMILY_TISIMPLELINK
help
Enable support for TI SimpleLink CC2650.

View file

@ -1,26 +0,0 @@
# Texas Instruments CC2650
# SPDX-License-Identifier: Apache-2.0
choice
prompt "TI SimpleLink MCU Selection"
depends on SOC_SERIES_CC2650
config SOC_CC2650
bool "CC2650"
endchoice
if SOC_SERIES_CC2650
config TI_CCFG_PRESENT
bool
default y
config SOC
default "cc2650"
config SOC_DEPRECATED_RELEASE
default "2.2.0"
endif # SOC_SERIES_CC2650

View file

@ -1,14 +0,0 @@
/* SPDX-License-Identifier: Apache-2.0 */
/* SoC level DTS fixup file */
#define DT_NUM_IRQ_PRIO_BITS DT_ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
#define DT_TI_STELLARIS_UART_4000C000_BASE_ADDRESS DT_TI_STELLARIS_UART_40001000_BASE_ADDRESS
#define DT_TI_STELLARIS_UART_4000C000_CURRENT_SPEED DT_TI_STELLARIS_UART_40001000_CURRENT_SPEED
#define DT_TI_STELLARIS_UART_4000C000_CLOCKS_CLOCK_FREQUENCY DT_TI_STELLARIS_UART_40001000_CLOCKS_CLOCK_FREQUENCY
#define DT_TI_STELLARIS_UART_4000C000_IRQ_0 DT_TI_STELLARIS_UART_40001000_IRQ_0
#define DT_TI_STELLARIS_UART_4000C000_IRQ_0_PRIORITY DT_TI_STELLARIS_UART_40001000_IRQ_0_PRIORITY
#define DT_TI_STELLARIS_UART_4000C000_LABEL DT_TI_STELLARIS_UART_40001000_LABEL
/* End of SoC Level DTS fixup file */

View file

@ -1,7 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* linker.ld - Linker command/script file
*/
#include <arch/arm/aarch32/cortex_m/scripts/linker.ld>

View file

@ -1,749 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* CCFG (User configuration area) interface registers and bit offsets
* for the CC2650 System on Chip.
*/
#ifndef _CC2650_CCFG_H_
#define _CC2650_CCFG_H_
/* Registers */
enum CC2650_CCFG_Registers {
CC2650_CCFG_EXT_LF_CLK = 0xFA8,
CC2650_CCFG_MODE_CONF_1 = 0xFAC,
CC2650_CCFG_SIZE_AND_DIS_FLAGS = 0xFB0,
CC2650_CCFG_MODE_CONF = 0xFB4,
CC2650_CCFG_VOLT_LOAD_0 = 0xFB8,
CC2650_CCFG_VOLT_LOAD_1 = 0xFBC,
CC2650_CCFG_RTC_OFFSET = 0xFC0,
CC2650_CCFG_FREQ_OFFSET = 0xFC4,
CC2650_CCFG_IEEE_MAC_0 = 0xFC8,
CC2650_CCFG_IEEE_MAC_1 = 0xFCC,
CC2650_CCFG_IEEE_BLE_0 = 0xFD0,
CC2650_CCFG_IEEE_BLE_1 = 0xFD4,
CC2650_CCFG_BL_CONFIG = 0xFD8,
CC2650_CCFG_ERASE_CONF = 0xFDC,
CC2650_CCFG_CCFG_TI_OPTIONS = 0xFE0,
CC2650_CCFG_CCFG_TAP_DAP_0 = 0xFE4,
CC2650_CCFG_CCFG_TAP_DAP_1 = 0xFE8,
CC2650_CCFG_IMAGE_VALID_CONF = 0xFEC,
CC2650_CCFG_CCFG_PROT_31_0 = 0xFF0,
CC2650_CCFG_CCFG_PROT_63_32 = 0xFF4,
CC2650_CCFG_CCFG_PROT_95_64 = 0xFF8,
CC2650_CCFG_CCFG_PROT_127_96 = 0xFFC
};
/* Register-specific bits */
/* EXT_LF_CLK */
enum CC2650_CCFG_EXT_LF_CLK_POS {
CC2650_CCFG_EXT_LF_CLK_RTC_INCREMENT_POS = 0,
CC2650_CCFG_EXT_LF_CLK_DIO_POS = 24
};
enum CC2650_CCFG_EXT_LF_CLK_MASK {
CC2650_CCFG_EXT_LF_CLK_RTC_INCREMENT_MASK = 0x00FFFFFF,
CC2650_CCFG_EXT_LF_CLK_DIO_MASK = 0xFF000000
};
/* MODE_CONF_1 */
enum CC2650_CCFG_MODE_CONF_1_POS {
CC2650_CCFG_MODE_CONF_1_XOSC_MAX_START_POS = 0,
CC2650_CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET_POS = 8,
CC2650_CCFG_MODE_CONF_1_DELTA_IBIAS_INIT_POS = 12,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_IPEAK_POS = 16,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN_POS = 19,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_VMIN_POS = 20
};
enum CC2650_CCFG_MODE_CONF_1_MASK {
CC2650_CCFG_MODE_CONF_1_XOSC_MAX_START_MASK = 0x000000FF,
CC2650_CCFG_MODE_CONF_1_DELTA_IBIAS_OFFSET_MASK = 0x00000F00,
CC2650_CCFG_MODE_CONF_1_DELTA_IBIAS_INIT_MASK = 0x0000F000,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_IPEAK_MASK = 0x00070000,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_DITHER_EN_MASK = 0x00080000,
CC2650_CCFG_MODE_CONF_1_ALT_DCDC_VMIN_MASK = 0x00F00000
};
/* SIZE_AND_DIS_FLAGS */
enum CC2650_CCFG_SIZE_AND_DIS_FLAGS_POS {
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR_POS = 0,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCD_C_SETTING_POS = 1,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM_POS = 2,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO_POS = 3,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_POS = 4,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG_POS = 16
};
enum CC2650_CCFG_SIZE_AND_DIS_FLAGS_MASK {
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_XOSC_OVR_MASK =
0x00000001,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_ALT_DCD_C_SETTING_MASK =
0x00000002,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM_MASK =
0x00000004,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DIS_TCXO_MASK =
0x00000008,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_DISABLE_FLAGS_MASK =
0x0000FFF0,
CC2650_CCFG_SIZE_AND_DIS_FLAGS_SIZE_OF_CCFG_MASK =
0xFFFF0000
};
/* MODE_CONF */
enum CC2650_CCFG_MODE_CONF_POS {
CC2650_CCFG_MODE_CONF_VDDR_CAP_POS = 0,
CC2650_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA_POS = 8,
CC2650_CCFG_MODE_CONF_HF_COMP_POS = 16,
CC2650_CCFG_MODE_CONF_XOSC_CAP_MOD_POS = 17,
CC2650_CCFG_MODE_CONF_XOSC_FREQ_POS = 18,
CC2650_CCFG_MODE_CONF_RTC_COMP_POS = 20,
CC2650_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC_POS = 21,
CC2650_CCFG_MODE_CONF_SCLK_LF_OPTION_POS = 22,
CC2650_CCFG_MODE_CONF_VDDS_BOD_LEVEL_POS = 24,
CC2650_CCFG_MODE_CONF_VDDR_EXT_LOAD_POS = 25,
CC2650_CCFG_MODE_CONF_DCDC_ACTIVE_POS = 26,
CC2650_CCFG_MODE_CONF_DCDC_RECHARGE_POS = 27,
CC2650_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA_POS = 28
};
enum CC2650_CCFG_MODE_CONF_MASK {
CC2650_CCFG_MODE_CONF_VDDR_CAP_MASK =
0x000000FF,
CC2650_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA_MASK =
0x0000FF00,
CC2650_CCFG_MODE_CONF_HF_COMP_MASK =
0x00010000,
CC2650_CCFG_MODE_CONF_XOSC_CAP_MOD_MASK =
0x00020000,
CC2650_CCFG_MODE_CONF_XOSC_FREQ_MASK =
0x000C0000,
CC2650_CCFG_MODE_CONF_RTC_COMP_MASK =
0x00100000,
CC2650_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_TC_MASK =
0x00200000,
CC2650_CCFG_MODE_CONF_SCLK_LF_OPTION_MASK =
0x00C00000,
CC2650_CCFG_MODE_CONF_VDDS_BOD_LEVEL_MASK =
0x01000000,
CC2650_CCFG_MODE_CONF_VDDR_EXT_LOAD_MASK =
0x02000000,
CC2650_CCFG_MODE_CONF_DCDC_ACTIVE_MASK =
0x04000000,
CC2650_CCFG_MODE_CONF_DCDC_RECHARGE_MASK =
0x08000000,
CC2650_CCFG_MODE_CONF_VDDR_TRIM_SLEEP_DELTA_MASK =
0xF0000000
};
/* VOLT_LOAD_0 */
enum CC2650_CCFG_VOLT_LOAD_0_POS {
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TM15_POS = 0,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP5_POS = 8,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP25_POS = 16,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP45_POS = 24
};
enum CC2650_CCFG_VOLT_LOAD_0_MASK {
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TM15_MASK = 0x000000FF,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP5_MASK = 0x0000FF00,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP25_MASK = 0x00FF0000,
CC2650_CCFG_VOLT_LOAD_0_VDDR_EXT_TP45_MASK = 0xFF000000
};
/* VOLT_LOAD_1 */
enum CC2650_CCFG_VOLT_LOAD_1_POS {
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP65_POS = 0,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP85_POS = 8,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP105_POS = 16,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP125_POS = 24
};
enum CC2650_CCFG_VOLT_LOAD_1_MASK {
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP65_MASK = 0x000000FF,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP85_MASK = 0x0000FF00,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP105_MASK = 0x00FF0000,
CC2650_CCFG_VOLT_LOAD_1_VDDR_EXT_TP125_MASK = 0xFF000000
};
/* RTC_OFFSET */
enum CC2650_CCFG_RTC_OFFSET_POS {
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P2_POS = 0,
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P1_POS = 8,
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P0_POS = 16
};
enum CC2650_CCFG_RTC_OFFSET_MASK {
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P2_MASK = 0x000000FF,
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P1_MASK = 0x0000FF00,
CC2650_CCFG_RTC_OFFSET_RTC_COMP_P0_MASK = 0xFFFF0000
};
/* FREQ_OFFSET */
enum CC2650_CCFG_FREQ_OFFSET_POS {
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P2_POS = 0,
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P1_POS = 8,
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P0_POS = 16
};
enum CC2650_CCFG_FREQ_OFFSET_MASK {
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P2_MASK = 0x000000FF,
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P1_MASK = 0x0000FF00,
CC2650_CCFG_FREQ_OFFSET_HF_COMP_P0_MASK = 0xFFFF0000
};
/* IEEE_MAC_0 */
enum CC2650_CCFG_IEEE_MAC_0_POS {
CC2650_CCFG_IEEE_MAC_0_ADDR_POS = 0
};
enum CC2650_CCFG_IEEE_MAC_0_MASK {
CC2650_CCFG_IEEE_MAC_0_ADDR_MASK = 0xFFFFFFFF
};
/* IEEE_MAC_1 */
enum CC2650_CCFG_IEEE_MAC_1_POS {
CC2650_CCFG_IEEE_MAC_1_ADDR_POS = 0
};
enum CC2650_CCFG_IEEE_MAC_1_MASK {
CC2650_CCFG_IEEE_MAC_1_ADDR_MASK = 0xFFFFFFFF
};
/* IEEE_BLE_0 */
enum CC2650_CCFG_IEEE_BLE_POS {
CC2650_CCFG_IEEE_BLE_0_ADDR_POS = 0
};
enum CC2650_CCFG_IEEE_BLE_MASK {
CC2650_CCFG_IEEE_BLE_0_ADDR_MASK = 0xFFFFFFFF
};
/* IEEE_BLE_1 */
enum CC2650_CCFG_IEEE_BLE_1_POS {
CC2650_CCFG_IEEE_BLE_1_ADDR_POS = 0
};
enum CC2650_CCFG_IEEE_BLE_1_MASK {
CC2650_CCFG_IEEE_BLE_1_ADDR_MASK = 0xFFFFFFFF
};
/* BL_CONFIG */
enum CC2650_CCFG_BL_CONFIG_POS {
CC2650_CCFG_BL_CONFIG_BL_ENABLE_POS = 0,
CC2650_CCFG_BL_CONFIG_BL_PIN_NUMBER_POS = 8,
CC2650_CCFG_BL_CONFIG_BL_LEVEL_POS = 16,
CC2650_CCFG_BL_CONFIG_BOOTLOADER_ENABLE_POS = 24
};
enum CC2650_CCFG_BL_CONFIG_MASK {
CC2650_CCFG_BL_CONFIG_BL_ENABLE_MASK = 0x000000FF,
CC2650_CCFG_BL_CONFIG_BL_PIN_NUMBER_MASK = 0x0000FF00,
CC2650_CCFG_BL_CONFIG_BL_LEVEL_MASK = 0x00010000,
CC2650_CCFG_BL_CONFIG_BOOTLOADER_ENABLE_MASK = 0xFF000000
};
enum CC2650_CCFG_BL_CONFIG_VALUES {
CC2650_CCFG_BACKDOOR_ENABLED =
0xC5 << CC2650_CCFG_BL_CONFIG_BL_ENABLE_POS,
CC2650_CCFG_BACKDOOR_DISABLED =
0x00 << CC2650_CCFG_BL_CONFIG_BL_ENABLE_POS,
CC2650_CCFG_BACKDOOR_ACTIVE_HIGH =
0x1 << CC2650_CCFG_BL_CONFIG_BL_LEVEL_POS,
CC2650_CCFG_BACKDOOR_ACTIVE_LOW =
0x0 << CC2650_CCFG_BL_CONFIG_BL_LEVEL_POS,
CC2650_CCFG_BOOTLOADER_ENABLED =
0xC5 << CC2650_CCFG_BL_CONFIG_BOOTLOADER_ENABLE_POS,
CC2650_CCFG_BOOTLOADER_DISABLED =
0x00 << CC2650_CCFG_BL_CONFIG_BOOTLOADER_ENABLE_POS
};
/* ERASE_CONF */
enum CC2650_CCFG_ERASE_CONF_POS {
CC2650_CCFG_ERASE_CONF_BANK_ERASE_DIS_N_POS = 0,
CC2650_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N_POS = 8
};
enum CC2650_CCFG_ERASE_CONF_MASK {
CC2650_CCFG_ERASE_CONF_BANK_ERASE_DIS_N_MASK = 0x00000001,
CC2650_CCFG_ERASE_CONF_CHIP_ERASE_DIS_N_MASK = 0x00000100
};
/* CCFG_TI_OPTIONS */
enum CC2650_CCFG_TI_OPTIONS_POS {
CC2650_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_POS = 0
};
enum CC2650_CCFG_TI_OPTIONS_MASK {
CC2650_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_MASK = 0x000000FF
};
enum CC2650_CCFG_TI_OPTIONS_VALUES {
CC2650_CCFG_TI_FA_ENABLED =
0xC5 << CC2650_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_POS,
CC2650_CCFG_TI_FA_DISABLED =
0x00 << CC2650_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE_POS
};
/* CCFG_TAP_DAP_0 */
enum CC2650_CCFG_TAP_DAP_0_POS {
CC2650_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE_POS = 0,
CC2650_CCFG_CCFG_TAP_DAP_0_PRCM_TAP_ENABLE_POS = 8,
CC2650_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE_POS = 16
};
enum CC2650_CCFG_TAP_DAP_0_MASK {
CC2650_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE_MASK =
0x000000FF,
CC2650_CCFG_CCFG_TAP_DAP_0_PRCM_TAP_ENABLE_MASK =
0x0000FF00,
CC2650_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE_MASK =
0x00FF0000
};
/* CCFG_TAP_DAP_1 */
enum CC2650_CCFG_CCFG_TAP_DAP_1_POS {
CC2650_CCFG_CCFG_TAP_DAP_1_WUC_TAP_ENABLE_POS = 0,
CC2650_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE_POS = 8,
CC2650_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE_POS = 16
};
enum CC2650_CCFG_CCFG_TAP_DAP_1_MASK {
CC2650_CCFG_CCFG_TAP_DAP_1_WUC_TAP_ENABLE_MASK =
0x000000FF,
CC2650_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE_MASK =
0x0000FF00,
CC2650_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE_MASK =
0x00FF0000
};
/* IMAGE_VALID_CONF */
enum CC2650_CCFG_IMAGE_VALID_CONF_POS {
CC2650_CCFG_IMAGE_VALID_CONF_IMAGE_VALID_POS = 0
};
enum CC2650_CCFG_IMAGE_VALID_CONF_MASK {
CC2650_CCFG_IMAGE_VALID_CONF_IMAGE_VALID_MASK = 0xFFFFFFFF
};
enum CC2650_CCFG_IMAGE_VALID_CONF_VALUES {
CC2650_CCFG_IMAGE_IS_VALID =
0x00000000 << CC2650_CCFG_IMAGE_VALID_CONF_IMAGE_VALID_POS
};
/* CCFG_PROT_31_0 */
enum CC2650_CCFG_CCFG_PROT_31_0_POS {
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_0_POS = 0,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_1_POS = 1,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_2_POS = 2,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_3_POS = 3,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_4_POS = 4,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_5_POS = 5,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_6_POS = 6,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_7_POS = 7,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_8_POS = 8,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_9_POS = 9,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_10_POS = 10,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_11_POS = 11,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_12_POS = 12,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_13_POS = 13,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_14_POS = 14,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_15_POS = 15,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_16_POS = 16,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_17_POS = 17,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_18_POS = 18,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_19_POS = 19,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_20_POS = 20,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_21_POS = 21,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_22_POS = 22,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_23_POS = 23,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_24_POS = 24,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_25_POS = 25,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_26_POS = 26,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_27_POS = 27,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_28_POS = 28,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_29_POS = 29,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_30_POS = 30,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_31_POS = 31
};
enum CC2650_CCFG_CCFG_PROT_31_0_MASK {
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_0_MASK =
0x00000001,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_1_MASK =
0x00000002,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_2_MASK =
0x00000004,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_3_MASK =
0x00000008,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_4_MASK =
0x00000010,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_5_MASK =
0x00000020,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_6_MASK =
0x00000040,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_7_MASK =
0x00000080,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_8_MASK =
0x00000100,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_9_MASK =
0x00000200,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_10_MASK =
0x00000400,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_11_MASK =
0x00000800,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_12_MASK =
0x00001000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_13_MASK =
0x00002000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_14_MASK =
0x00004000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_15_MASK =
0x00008000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_16_MASK =
0x00010000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_17_MASK =
0x00020000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_18_MASK =
0x00040000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_19_MASK =
0x00080000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_20_MASK =
0x00100000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_21_MASK =
0x00200000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_22_MASK =
0x00400000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_23_MASK =
0x00800000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_24_MASK =
0x01000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_25_MASK =
0x02000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_26_MASK =
0x04000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_27_MASK =
0x08000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_28_MASK =
0x10000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_29_MASK =
0x20000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_30_MASK =
0x40000000,
CC2650_CCFG_CCFG_PROT_31_0_WRT_PROT_SEC_31_MASK =
0x80000000
};
/* CCFG_PROT_63_32 */
enum CC2650_CCFG_CCFG_PROT_63_32_POS {
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_32_POS = 32,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_33_POS = 33,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_34_POS = 34,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_35_POS = 35,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_36_POS = 36,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_37_POS = 37,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_38_POS = 38,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_39_POS = 39,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_40_POS = 40,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_41_POS = 41,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_42_POS = 42,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_43_POS = 43,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_44_POS = 44,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_45_POS = 45,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_46_POS = 46,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_47_POS = 47,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_48_POS = 48,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_49_POS = 49,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_50_POS = 50,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_51_POS = 51,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_52_POS = 52,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_53_POS = 53,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_54_POS = 54,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_55_POS = 55,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_56_POS = 56,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_57_POS = 57,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_58_POS = 58,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_59_POS = 59,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_60_POS = 60,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_61_POS = 61,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_62_POS = 62,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_63_POS = 63
};
enum CC2650_CCFG_CCFG_PROT_63_32_MASK {
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_32_MASK =
0x00000001,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_33_MASK =
0x00000002,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_34_MASK =
0x00000004,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_35_MASK =
0x00000008,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_36_MASK =
0x00000010,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_37_MASK =
0x00000020,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_38_MASK =
0x00000040,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_39_MASK =
0x00000080,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_40_MASK =
0x00000100,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_41_MASK =
0x00000200,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_42_MASK =
0x00000400,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_43_MASK =
0x00000800,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_44_MASK =
0x00001000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_45_MASK =
0x00002000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_46_MASK =
0x00004000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_47_MASK =
0x00008000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_48_MASK =
0x00010000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_49_MASK =
0x00020000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_50_MASK =
0x00040000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_51_MASK =
0x00080000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_52_MASK =
0x00100000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_53_MASK =
0x00200000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_54_MASK =
0x00400000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_55_MASK =
0x00800000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_56_MASK =
0x01000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_57_MASK =
0x02000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_58_MASK =
0x04000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_59_MASK =
0x08000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_60_MASK =
0x10000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_61_MASK =
0x20000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_62_MASK =
0x40000000,
CC2650_CCFG_CCFG_PROT_63_32_WRT_PROT_SEC_63_MASK =
0x80000000
};
/* CCFG_PROT_95_64 */
enum CC2650_CCFG_CCFG_PROT_95_64_POS {
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_64_POS = 64,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_65_POS = 65,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_66_POS = 66,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_67_POS = 67,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_68_POS = 68,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_69_POS = 69,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_70_POS = 70,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_71_POS = 71,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_72_POS = 72,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_73_POS = 73,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_74_POS = 74,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_75_POS = 75,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_76_POS = 76,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_77_POS = 77,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_78_POS = 78,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_79_POS = 79,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_80_POS = 80,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_81_POS = 81,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_82_POS = 82,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_83_POS = 83,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_84_POS = 84,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_85_POS = 85,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_86_POS = 86,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_87_POS = 87,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_88_POS = 88,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_89_POS = 89,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_90_POS = 90,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_91_POS = 91,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_92_POS = 92,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_93_POS = 93,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_94_POS = 94,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_95_POS = 95
};
enum CC2650_CCFG_CCFG_PROT_95_64_MASK {
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_64_MASK =
0x00000001,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_65_MASK =
0x00000002,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_66_MASK =
0x00000004,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_67_MASK =
0x00000008,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_68_MASK =
0x00000010,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_69_MASK =
0x00000020,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_70_MASK =
0x00000040,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_71_MASK =
0x00000080,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_72_MASK =
0x00000100,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_73_MASK =
0x00000200,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_74_MASK =
0x00000400,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_75_MASK =
0x00000800,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_76_MASK =
0x00001000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_77_MASK =
0x00002000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_78_MASK =
0x00004000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_79_MASK =
0x00008000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_80_MASK =
0x00010000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_81_MASK =
0x00020000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_82_MASK =
0x00040000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_83_MASK =
0x00080000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_84_MASK =
0x00100000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_85_MASK =
0x00200000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_86_MASK =
0x00400000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_87_MASK =
0x00800000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_88_MASK =
0x01000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_89_MASK =
0x02000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_90_MASK =
0x04000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_91_MASK =
0x08000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_92_MASK =
0x10000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_93_MASK =
0x20000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_94_MASK =
0x40000000,
CC2650_CCFG_CCFG_PROT_95_64_WRT_PROT_SEC_95_MASK =
0x80000000
};
/* CCFG_PROT_127_96 */
enum CC2650_CCFG_CCFG_PROT_127_96_POS {
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_96_POS = 96,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_97_POS = 97,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_98_POS = 98,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_99_POS = 99,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_100_POS = 100,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_101_POS = 101,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_102_POS = 102,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_103_POS = 103,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_104_POS = 104,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_105_POS = 105,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_106_POS = 106,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_107_POS = 107,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_108_POS = 108,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_109_POS = 109,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_110_POS = 110,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_111_POS = 111,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_112_POS = 112,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_113_POS = 113,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_114_POS = 114,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_115_POS = 115,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_116_POS = 116,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_117_POS = 117,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_118_POS = 118,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_119_POS = 119,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_120_POS = 120,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_121_POS = 121,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_122_POS = 122,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_123_POS = 123,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_124_POS = 124,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_125_POS = 125,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_126_POS = 126,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_127_POS = 127
};
enum CC2650_CCFG_CCFG_PROT_127_96_MASK {
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_96_MASK =
0x00000001,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_97_MASK =
0x00000002,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_98_MASK =
0x00000004,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_99_MASK =
0x00000008,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_100_MASK =
0x00000010,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_101_MASK =
0x00000020,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_102_MASK =
0x00000040,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_103_MASK =
0x00000080,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_104_MASK =
0x00000100,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_105_MASK =
0x00000200,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_106_MASK =
0x00000400,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_107_MASK =
0x00000800,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_108_MASK =
0x00001000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_109_MASK =
0x00002000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_110_MASK =
0x00004000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_111_MASK =
0x00008000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_112_MASK =
0x00010000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_113_MASK =
0x00020000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_114_MASK =
0x00040000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_115_MASK =
0x00080000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_116_MASK =
0x00100000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_117_MASK =
0x00200000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_118_MASK =
0x00400000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_119_MASK =
0x00800000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_120_MASK =
0x01000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_121_MASK =
0x02000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_122_MASK =
0x04000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_123_MASK =
0x08000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_124_MASK =
0x10000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_125_MASK =
0x20000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_126_MASK =
0x40000000,
CC2650_CCFG_CCFG_PROT_127_96_WRT_PROT_SEC_127_MASK =
0x80000000
};
#endif /* _CC2650_CCFG_H_ */

View file

@ -1,658 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* GPIO registers and bit offsets for the CC2650 System on Chip.
*/
#ifndef _CC2650_GPIO_H_
#define _CC2650_GPIO_H_
/* Registers */
enum CC2650_GPIO_Registers {
CC2650_GPIO_DOUT3_0 = 0x0,
CC2650_GPIO_DOUT7_4 = 0x4,
CC2650_GPIO_DOUT11_8 = 0x8,
CC2650_GPIO_DOUT15_12 = 0xC,
CC2650_GPIO_DOUT19_16 = 0x10,
CC2650_GPIO_DOUT23_20 = 0x14,
CC2650_GPIO_DOUT27_24 = 0x18,
CC2650_GPIO_DOUT31_28 = 0x1C,
/* Reserved */
CC2650_GPIO_DOUT31_0 = 0x80,
/* Reserved */
CC2650_GPIO_DOUTSET31_0 = 0x90,
/* Reserved */
CC2650_GPIO_DOUTCLR31_0 = 0XA0,
/* Reserved */
CC2650_GPIO_DOUTTGL31_0 = 0xB0,
/* Reserved */
CC2650_GPIO_DIN31_0 = 0xC0,
/* Reserved */
CC2650_GPIO_DOE31_0 = 0xD0,
/* Reserved */
CC2650_GPIO_EVFLAGS31_0 = 0xE0
};
/* Register-specific bits */
/* DOUT3_0 */
enum CC2650_GPIO_DOUT3_0_POS {
CC2650_GPIO_DOUT3_0_DIO0_POS = 0,
CC2650_GPIO_DOUT3_0_DIO1_POS = 8,
CC2650_GPIO_DOUT3_0_DIO2_POS = 16,
CC2650_GPIO_DOUT3_0_DIO3_POS = 24
};
enum CC2650_GPIO_DOUT3_0_MASK {
CC2650_GPIO_DOUT3_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOUT3_0_DIO1_MASK = 0x00000100,
CC2650_GPIO_DOUT3_0_DIO2_MASK = 0x00010000,
CC2650_GPIO_DOUT3_0_DIO3_MASK = 0x01000000
};
/* DOUT7_4 */
enum CC2650_GPIO_DOUT7_4_POS {
CC2650_GPIO_DOUT7_4_DIO4_POS = 0,
CC2650_GPIO_DOUT7_4_DIO5_POS = 8,
CC2650_GPIO_DOUT7_4_DIO6_POS = 16,
CC2650_GPIO_DOUT7_4_DIO7_POS = 24
};
enum CC2650_GPIO_DOUT7_4_MASK {
CC2650_GPIO_DOUT7_4_DIO4_MASK = 0x00000001,
CC2650_GPIO_DOUT7_4_DIO5_MASK = 0x00000100,
CC2650_GPIO_DOUT7_4_DIO6_MASK = 0x00010000,
CC2650_GPIO_DOUT7_4_DIO7_MASK = 0x01000000
};
/* DOUT11_8 */
enum CC2650_GPIO_DOUT11_8_POS {
CC2650_GPIO_DOUT11_8_DIO8_POS = 0,
CC2650_GPIO_DOUT11_8_DIO9_POS = 8,
CC2650_GPIO_DOUT11_8_DIO10_POS = 16,
CC2650_GPIO_DOUT11_8_DIO11_POS = 24
};
enum CC2650_GPIO_DOUT11_8_MASK {
CC2650_GPIO_DOUT11_8_DIO8_MASK = 0x00000001,
CC2650_GPIO_DOUT11_8_DIO9_MASK = 0x00000100,
CC2650_GPIO_DOUT11_8_DIO10_MASK = 0x00010000,
CC2650_GPIO_DOUT11_8_DIO11_MASK = 0x01000000
};
/* DOUT15_12 */
enum CC2650_GPIO_DOUT15_12_POS {
CC2650_GPIO_DOUT15_12_DIO12_POS = 0,
CC2650_GPIO_DOUT15_12_DIO13_POS = 8,
CC2650_GPIO_DOUT15_12_DIO14_POS = 16,
CC2650_GPIO_DOUT15_12_DIO15_POS = 24
};
enum CC2650_GPIO_DOUT15_12_MASK {
CC2650_GPIO_DOUT15_12_DIO12_MASK = 0x00000001,
CC2650_GPIO_DOUT15_12_DIO13_MASK = 0x00000100,
CC2650_GPIO_DOUT15_12_DIO14_MASK = 0x00010000,
CC2650_GPIO_DOUT15_12_DIO15_MASK = 0x01000000
};
/* DOUT19_16 */
enum CC2650_GPIO_DOUT19_16_POS {
CC2650_GPIO_DOUT19_16_DIO16_POS = 0,
CC2650_GPIO_DOUT19_16_DIO17_POS = 8,
CC2650_GPIO_DOUT19_16_DIO18_POS = 16,
CC2650_GPIO_DOUT19_16_DIO19_POS = 24
};
enum CC2650_GPIO_DOUT19_16_MASK {
CC2650_GPIO_DOUT19_16_DIO16_MASK = 0x00000001,
CC2650_GPIO_DOUT19_16_DIO17_MASK = 0x00000100,
CC2650_GPIO_DOUT19_16_DIO18_MASK = 0x00010000,
CC2650_GPIO_DOUT19_16_DIO19_MASK = 0x01000000
};
/* DOUT23_20 */
enum CC2650_GPIO_DOUT23_20_POS {
CC2650_GPIO_DOUT23_20_DIO20_POS = 0,
CC2650_GPIO_DOUT23_20_DIO21_POS = 8,
CC2650_GPIO_DOUT23_20_DIO22_POS = 16,
CC2650_GPIO_DOUT23_20_DIO23_POS = 24
};
enum CC2650_GPIO_DOUT23_20_MASK {
CC2650_GPIO_DOUT23_20_DIO20_MASK = 0x00000001,
CC2650_GPIO_DOUT23_20_DIO21_MASK = 0x00000100,
CC2650_GPIO_DOUT23_20_DIO22_MASK = 0x00010000,
CC2650_GPIO_DOUT23_20_DIO23_MASK = 0x01000000
};
/* DOUT27_24 */
enum CC2650_GPIO_DOUT27_24_POS {
CC2650_GPIO_DOUT27_24_DIO24_POS = 0,
CC2650_GPIO_DOUT27_24_DIO25_POS = 8,
CC2650_GPIO_DOUT27_24_DIO26_POS = 16,
CC2650_GPIO_DOUT27_24_DIO27_POS = 24
};
enum CC2650_GPIO_DOUT27_24_MASK {
CC2650_GPIO_DOUT27_24_DIO24_MASK = 0x00000001,
CC2650_GPIO_DOUT27_24_DIO25_MASK = 0x00000100,
CC2650_GPIO_DOUT27_24_DIO26_MASK = 0x00010000,
CC2650_GPIO_DOUT27_24_DIO27_MASK = 0x01000000
};
/* DOUT31_28 */
enum CC2650_GPIO_DOUT31_28_POS {
CC2650_GPIO_DOUT31_28_DIO28_POS = 0,
CC2650_GPIO_DOUT31_28_DIO29_POS = 8,
CC2650_GPIO_DOUT31_28_DIO30_POS = 16,
CC2650_GPIO_DOUT31_28_DIO31_POS = 24
};
enum CC2650_GPIO_DOUT31_28_MASK {
CC2650_GPIO_DOUT31_28_DIO28 = 0x00000001,
CC2650_GPIO_DOUT31_28_DIO29 = 0x00000100,
CC2650_GPIO_DOUT31_28_DIO30 = 0x00010000,
CC2650_GPIO_DOUT31_28_DIO31 = 0x01000000
};
/* DOUT31_0 */
enum CC2650_GPIO_DOUT31_0_POS {
CC2650_GPIO_DOUT31_0_DIO0_POS = 0,
CC2650_GPIO_DOUT31_0_DIO1_POS = 1,
CC2650_GPIO_DOUT31_0_DIO2_POS = 2,
CC2650_GPIO_DOUT31_0_DIO3_POS = 3,
CC2650_GPIO_DOUT31_0_DIO4_POS = 4,
CC2650_GPIO_DOUT31_0_DIO5_POS = 5,
CC2650_GPIO_DOUT31_0_DIO6_POS = 6,
CC2650_GPIO_DOUT31_0_DIO7_POS = 7,
CC2650_GPIO_DOUT31_0_DIO8_POS = 8,
CC2650_GPIO_DOUT31_0_DIO9_POS = 9,
CC2650_GPIO_DOUT31_0_DIO10_POS = 10,
CC2650_GPIO_DOUT31_0_DIO11_POS = 11,
CC2650_GPIO_DOUT31_0_DIO12_POS = 12,
CC2650_GPIO_DOUT31_0_DIO13_POS = 13,
CC2650_GPIO_DOUT31_0_DIO14_POS = 14,
CC2650_GPIO_DOUT31_0_DIO15_POS = 15,
CC2650_GPIO_DOUT31_0_DIO16_POS = 16,
CC2650_GPIO_DOUT31_0_DIO17_POS = 17,
CC2650_GPIO_DOUT31_0_DIO18_POS = 18,
CC2650_GPIO_DOUT31_0_DIO19_POS = 19,
CC2650_GPIO_DOUT31_0_DIO20_POS = 20,
CC2650_GPIO_DOUT31_0_DIO21_POS = 21,
CC2650_GPIO_DOUT31_0_DIO22_POS = 22,
CC2650_GPIO_DOUT31_0_DIO23_POS = 23,
CC2650_GPIO_DOUT31_0_DIO24_POS = 24,
CC2650_GPIO_DOUT31_0_DIO25_POS = 25,
CC2650_GPIO_DOUT31_0_DIO26_POS = 26,
CC2650_GPIO_DOUT31_0_DIO27_POS = 27,
CC2650_GPIO_DOUT31_0_DIO28_POS = 28,
CC2650_GPIO_DOUT31_0_DIO29_POS = 29,
CC2650_GPIO_DOUT31_0_DIO30_POS = 30,
CC2650_GPIO_DOUT31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DOUT31_0_MASK {
CC2650_GPIO_DOUT31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOUT31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DOUT31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DOUT31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DOUT31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DOUT31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DOUT31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DOUT31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DOUT31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DOUT31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DOUT31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DOUT31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DOUT31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DOUT31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DOUT31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DOUT31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DOUT31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DOUT31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DOUT31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DOUT31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DOUT31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DOUT31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DOUT31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DOUT31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DOUT31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DOUT31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DOUT31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DOUT31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DOUT31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DOUT31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DOUT31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DOUT31_0_DIO31_MASK = 0x80000000
};
/* DOUTSET31_0 */
enum CC2650_GPIO_DOUTSET31_0_POS {
CC2650_GPIO_DOUTSET31_0_DIO0_POS = 0,
CC2650_GPIO_DOUTSET31_0_DIO1_POS = 1,
CC2650_GPIO_DOUTSET31_0_DIO2_POS = 2,
CC2650_GPIO_DOUTSET31_0_DIO3_POS = 3,
CC2650_GPIO_DOUTSET31_0_DIO4_POS = 4,
CC2650_GPIO_DOUTSET31_0_DIO5_POS = 5,
CC2650_GPIO_DOUTSET31_0_DIO6_POS = 6,
CC2650_GPIO_DOUTSET31_0_DIO7_POS = 7,
CC2650_GPIO_DOUTSET31_0_DIO8_POS = 8,
CC2650_GPIO_DOUTSET31_0_DIO9_POS = 9,
CC2650_GPIO_DOUTSET31_0_DIO10_POS = 10,
CC2650_GPIO_DOUTSET31_0_DIO11_POS = 11,
CC2650_GPIO_DOUTSET31_0_DIO12_POS = 12,
CC2650_GPIO_DOUTSET31_0_DIO13_POS = 13,
CC2650_GPIO_DOUTSET31_0_DIO14_POS = 14,
CC2650_GPIO_DOUTSET31_0_DIO15_POS = 15,
CC2650_GPIO_DOUTSET31_0_DIO16_POS = 16,
CC2650_GPIO_DOUTSET31_0_DIO17_POS = 17,
CC2650_GPIO_DOUTSET31_0_DIO18_POS = 18,
CC2650_GPIO_DOUTSET31_0_DIO19_POS = 19,
CC2650_GPIO_DOUTSET31_0_DIO20_POS = 20,
CC2650_GPIO_DOUTSET31_0_DIO21_POS = 21,
CC2650_GPIO_DOUTSET31_0_DIO22_POS = 22,
CC2650_GPIO_DOUTSET31_0_DIO23_POS = 23,
CC2650_GPIO_DOUTSET31_0_DIO24_POS = 24,
CC2650_GPIO_DOUTSET31_0_DIO25_POS = 25,
CC2650_GPIO_DOUTSET31_0_DIO26_POS = 26,
CC2650_GPIO_DOUTSET31_0_DIO27_POS = 27,
CC2650_GPIO_DOUTSET31_0_DIO28_POS = 28,
CC2650_GPIO_DOUTSET31_0_DIO29_POS = 29,
CC2650_GPIO_DOUTSET31_0_DIO30_POS = 30,
CC2650_GPIO_DOUTSET31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DOUTSET31_0_MASK {
CC2650_GPIO_DOUTSET31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOUTSET31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DOUTSET31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DOUTSET31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DOUTSET31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DOUTSET31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DOUTSET31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DOUTSET31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DOUTSET31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DOUTSET31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DOUTSET31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DOUTSET31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DOUTSET31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DOUTSET31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DOUTSET31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DOUTSET31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DOUTSET31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DOUTSET31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DOUTSET31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DOUTSET31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DOUTSET31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DOUTSET31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DOUTSET31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DOUTSET31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DOUTSET31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DOUTSET31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DOUTSET31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DOUTSET31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DOUTSET31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DOUTSET31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DOUTSET31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DOUTSET31_0_DIO31_MASK = 0x80000000
};
/* DOUTCLR31_0 */
enum CC2650_GPIO_DOUTCLR31_0_POS {
CC2650_GPIO_DOUTCLR31_0_DIO0_POS = 0,
CC2650_GPIO_DOUTCLR31_0_DIO1_POS = 1,
CC2650_GPIO_DOUTCLR31_0_DIO2_POS = 2,
CC2650_GPIO_DOUTCLR31_0_DIO3_POS = 3,
CC2650_GPIO_DOUTCLR31_0_DIO4_POS = 4,
CC2650_GPIO_DOUTCLR31_0_DIO5_POS = 5,
CC2650_GPIO_DOUTCLR31_0_DIO6_POS = 6,
CC2650_GPIO_DOUTCLR31_0_DIO7_POS = 7,
CC2650_GPIO_DOUTCLR31_0_DIO8_POS = 8,
CC2650_GPIO_DOUTCLR31_0_DIO9_POS = 9,
CC2650_GPIO_DOUTCLR31_0_DIO10_POS = 10,
CC2650_GPIO_DOUTCLR31_0_DIO11_POS = 11,
CC2650_GPIO_DOUTCLR31_0_DIO12_POS = 12,
CC2650_GPIO_DOUTCLR31_0_DIO13_POS = 13,
CC2650_GPIO_DOUTCLR31_0_DIO14_POS = 14,
CC2650_GPIO_DOUTCLR31_0_DIO15_POS = 15,
CC2650_GPIO_DOUTCLR31_0_DIO16_POS = 16,
CC2650_GPIO_DOUTCLR31_0_DIO17_POS = 17,
CC2650_GPIO_DOUTCLR31_0_DIO18_POS = 18,
CC2650_GPIO_DOUTCLR31_0_DIO19_POS = 19,
CC2650_GPIO_DOUTCLR31_0_DIO20_POS = 20,
CC2650_GPIO_DOUTCLR31_0_DIO21_POS = 21,
CC2650_GPIO_DOUTCLR31_0_DIO22_POS = 22,
CC2650_GPIO_DOUTCLR31_0_DIO23_POS = 23,
CC2650_GPIO_DOUTCLR31_0_DIO24_POS = 24,
CC2650_GPIO_DOUTCLR31_0_DIO25_POS = 25,
CC2650_GPIO_DOUTCLR31_0_DIO26_POS = 26,
CC2650_GPIO_DOUTCLR31_0_DIO27_POS = 27,
CC2650_GPIO_DOUTCLR31_0_DIO28_POS = 28,
CC2650_GPIO_DOUTCLR31_0_DIO29_POS = 29,
CC2650_GPIO_DOUTCLR31_0_DIO30_POS = 30,
CC2650_GPIO_DOUTCLR31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DOUTCLR31_0_MASK {
CC2650_GPIO_DOUTCLR31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOUTCLR31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DOUTCLR31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DOUTCLR31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DOUTCLR31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DOUTCLR31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DOUTCLR31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DOUTCLR31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DOUTCLR31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DOUTCLR31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DOUTCLR31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DOUTCLR31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DOUTCLR31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DOUTCLR31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DOUTCLR31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DOUTCLR31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DOUTCLR31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DOUTCLR31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DOUTCLR31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DOUTCLR31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DOUTCLR31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DOUTCLR31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DOUTCLR31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DOUTCLR31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DOUTCLR31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DOUTCLR31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DOUTCLR31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DOUTCLR31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DOUTCLR31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DOUTCLR31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DOUTCLR31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DOUTCLR31_0_DIO31_MASK = 0x80000000
};
/* DOUTTGL31_0 */
enum CC2650_GPIO_DOUTTGL31_0_POS {
CC2650_GPIO_DOUTTGL31_0_DIO0_POS = 0,
CC2650_GPIO_DOUTTGL31_0_DIO1_POS = 1,
CC2650_GPIO_DOUTTGL31_0_DIO2_POS = 2,
CC2650_GPIO_DOUTTGL31_0_DIO3_POS = 3,
CC2650_GPIO_DOUTTGL31_0_DIO4_POS = 4,
CC2650_GPIO_DOUTTGL31_0_DIO5_POS = 5,
CC2650_GPIO_DOUTTGL31_0_DIO6_POS = 6,
CC2650_GPIO_DOUTTGL31_0_DIO7_POS = 7,
CC2650_GPIO_DOUTTGL31_0_DIO8_POS = 8,
CC2650_GPIO_DOUTTGL31_0_DIO9_POS = 9,
CC2650_GPIO_DOUTTGL31_0_DIO10_POS = 10,
CC2650_GPIO_DOUTTGL31_0_DIO11_POS = 11,
CC2650_GPIO_DOUTTGL31_0_DIO12_POS = 12,
CC2650_GPIO_DOUTTGL31_0_DIO13_POS = 13,
CC2650_GPIO_DOUTTGL31_0_DIO14_POS = 14,
CC2650_GPIO_DOUTTGL31_0_DIO15_POS = 15,
CC2650_GPIO_DOUTTGL31_0_DIO16_POS = 16,
CC2650_GPIO_DOUTTGL31_0_DIO17_POS = 17,
CC2650_GPIO_DOUTTGL31_0_DIO18_POS = 18,
CC2650_GPIO_DOUTTGL31_0_DIO19_POS = 19,
CC2650_GPIO_DOUTTGL31_0_DIO20_POS = 20,
CC2650_GPIO_DOUTTGL31_0_DIO21_POS = 21,
CC2650_GPIO_DOUTTGL31_0_DIO22_POS = 22,
CC2650_GPIO_DOUTTGL31_0_DIO23_POS = 23,
CC2650_GPIO_DOUTTGL31_0_DIO24_POS = 24,
CC2650_GPIO_DOUTTGL31_0_DIO25_POS = 25,
CC2650_GPIO_DOUTTGL31_0_DIO26_POS = 26,
CC2650_GPIO_DOUTTGL31_0_DIO27_POS = 27,
CC2650_GPIO_DOUTTGL31_0_DIO28_POS = 28,
CC2650_GPIO_DOUTTGL31_0_DIO29_POS = 29,
CC2650_GPIO_DOUTTGL31_0_DIO30_POS = 30,
CC2650_GPIO_DOUTTGL31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DOUTTGL31_0_MASK {
CC2650_GPIO_DOUTTGL31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOUTTGL31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DOUTTGL31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DOUTTGL31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DOUTTGL31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DOUTTGL31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DOUTTGL31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DOUTTGL31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DOUTTGL31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DOUTTGL31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DOUTTGL31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DOUTTGL31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DOUTTGL31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DOUTTGL31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DOUTTGL31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DOUTTGL31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DOUTTGL31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DOUTTGL31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DOUTTGL31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DOUTTGL31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DOUTTGL31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DOUTTGL31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DOUTTGL31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DOUTTGL31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DOUTTGL31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DOUTTGL31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DOUTTGL31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DOUTTGL31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DOUTTGL31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DOUTTGL31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DOUTTGL31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DOUTTGL31_0_DIO31_MASK = 0x80000000
};
/* DIN31_0 */
enum CC2650_GPIO_DIN31_0_POS {
CC2650_GPIO_DIN31_0_DIO0_POS = 0,
CC2650_GPIO_DIN31_0_DIO1_POS = 1,
CC2650_GPIO_DIN31_0_DIO2_POS = 2,
CC2650_GPIO_DIN31_0_DIO3_POS = 3,
CC2650_GPIO_DIN31_0_DIO4_POS = 4,
CC2650_GPIO_DIN31_0_DIO5_POS = 5,
CC2650_GPIO_DIN31_0_DIO6_POS = 6,
CC2650_GPIO_DIN31_0_DIO7_POS = 7,
CC2650_GPIO_DIN31_0_DIO8_POS = 8,
CC2650_GPIO_DIN31_0_DIO9_POS = 9,
CC2650_GPIO_DIN31_0_DIO10_POS = 10,
CC2650_GPIO_DIN31_0_DIO11_POS = 11,
CC2650_GPIO_DIN31_0_DIO12_POS = 12,
CC2650_GPIO_DIN31_0_DIO13_POS = 13,
CC2650_GPIO_DIN31_0_DIO14_POS = 14,
CC2650_GPIO_DIN31_0_DIO15_POS = 15,
CC2650_GPIO_DIN31_0_DIO16_POS = 16,
CC2650_GPIO_DIN31_0_DIO17_POS = 17,
CC2650_GPIO_DIN31_0_DIO18_POS = 18,
CC2650_GPIO_DIN31_0_DIO19_POS = 19,
CC2650_GPIO_DIN31_0_DIO20_POS = 20,
CC2650_GPIO_DIN31_0_DIO21_POS = 21,
CC2650_GPIO_DIN31_0_DIO22_POS = 22,
CC2650_GPIO_DIN31_0_DIO23_POS = 23,
CC2650_GPIO_DIN31_0_DIO24_POS = 24,
CC2650_GPIO_DIN31_0_DIO25_POS = 25,
CC2650_GPIO_DIN31_0_DIO26_POS = 26,
CC2650_GPIO_DIN31_0_DIO27_POS = 27,
CC2650_GPIO_DIN31_0_DIO28_POS = 28,
CC2650_GPIO_DIN31_0_DIO29_POS = 29,
CC2650_GPIO_DIN31_0_DIO30_POS = 30,
CC2650_GPIO_DIN31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DIN31_0_MASK {
CC2650_GPIO_DIN31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DIN31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DIN31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DIN31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DIN31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DIN31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DIN31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DIN31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DIN31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DIN31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DIN31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DIN31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DIN31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DIN31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DIN31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DIN31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DIN31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DIN31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DIN31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DIN31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DIN31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DIN31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DIN31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DIN31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DIN31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DIN31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DIN31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DIN31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DIN31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DIN31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DIN31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DIN31_0_DIO31_MASK = 0x80000000
};
/* DOE31_0 */
enum CC2650_GPIO_DOE31_0_POS {
CC2650_GPIO_DOE31_0_DIO0_POS = 0,
CC2650_GPIO_DOE31_0_DIO1_POS = 1,
CC2650_GPIO_DOE31_0_DIO2_POS = 2,
CC2650_GPIO_DOE31_0_DIO3_POS = 3,
CC2650_GPIO_DOE31_0_DIO4_POS = 4,
CC2650_GPIO_DOE31_0_DIO5_POS = 5,
CC2650_GPIO_DOE31_0_DIO6_POS = 6,
CC2650_GPIO_DOE31_0_DIO7_POS = 7,
CC2650_GPIO_DOE31_0_DIO8_POS = 8,
CC2650_GPIO_DOE31_0_DIO9_POS = 9,
CC2650_GPIO_DOE31_0_DIO10_POS = 10,
CC2650_GPIO_DOE31_0_DIO11_POS = 11,
CC2650_GPIO_DOE31_0_DIO12_POS = 12,
CC2650_GPIO_DOE31_0_DIO13_POS = 13,
CC2650_GPIO_DOE31_0_DIO14_POS = 14,
CC2650_GPIO_DOE31_0_DIO15_POS = 15,
CC2650_GPIO_DOE31_0_DIO16_POS = 16,
CC2650_GPIO_DOE31_0_DIO17_POS = 17,
CC2650_GPIO_DOE31_0_DIO18_POS = 18,
CC2650_GPIO_DOE31_0_DIO19_POS = 19,
CC2650_GPIO_DOE31_0_DIO20_POS = 20,
CC2650_GPIO_DOE31_0_DIO21_POS = 21,
CC2650_GPIO_DOE31_0_DIO22_POS = 22,
CC2650_GPIO_DOE31_0_DIO23_POS = 23,
CC2650_GPIO_DOE31_0_DIO24_POS = 24,
CC2650_GPIO_DOE31_0_DIO25_POS = 25,
CC2650_GPIO_DOE31_0_DIO26_POS = 26,
CC2650_GPIO_DOE31_0_DIO27_POS = 27,
CC2650_GPIO_DOE31_0_DIO28_POS = 28,
CC2650_GPIO_DOE31_0_DIO29_POS = 29,
CC2650_GPIO_DOE31_0_DIO30_POS = 30,
CC2650_GPIO_DOE31_0_DIO31_POS = 31
};
enum CC2650_GPIO_DOE31_0_MASK {
CC2650_GPIO_DOE31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_DOE31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_DOE31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_DOE31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_DOE31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_DOE31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_DOE31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_DOE31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_DOE31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_DOE31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_DOE31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_DOE31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_DOE31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_DOE31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_DOE31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_DOE31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_DOE31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_DOE31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_DOE31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_DOE31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_DOE31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_DOE31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_DOE31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_DOE31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_DOE31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_DOE31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_DOE31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_DOE31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_DOE31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_DOE31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_DOE31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_DOE31_0_DIO31_MASK = 0x80000000
};
/* EVFLAGS31_0 */
enum CC2650_GPIO_EVFLAGS31_0_POS {
CC2650_GPIO_EVFLAGS31_0_DIO0_POS = 0,
CC2650_GPIO_EVFLAGS31_0_DIO1_POS = 1,
CC2650_GPIO_EVFLAGS31_0_DIO2_POS = 2,
CC2650_GPIO_EVFLAGS31_0_DIO3_POS = 3,
CC2650_GPIO_EVFLAGS31_0_DIO4_POS = 4,
CC2650_GPIO_EVFLAGS31_0_DIO5_POS = 5,
CC2650_GPIO_EVFLAGS31_0_DIO6_POS = 6,
CC2650_GPIO_EVFLAGS31_0_DIO7_POS = 7,
CC2650_GPIO_EVFLAGS31_0_DIO8_POS = 8,
CC2650_GPIO_EVFLAGS31_0_DIO9_POS = 9,
CC2650_GPIO_EVFLAGS31_0_DIO10_POS = 10,
CC2650_GPIO_EVFLAGS31_0_DIO11_POS = 11,
CC2650_GPIO_EVFLAGS31_0_DIO12_POS = 12,
CC2650_GPIO_EVFLAGS31_0_DIO13_POS = 13,
CC2650_GPIO_EVFLAGS31_0_DIO14_POS = 14,
CC2650_GPIO_EVFLAGS31_0_DIO15_POS = 15,
CC2650_GPIO_EVFLAGS31_0_DIO16_POS = 16,
CC2650_GPIO_EVFLAGS31_0_DIO17_POS = 17,
CC2650_GPIO_EVFLAGS31_0_DIO18_POS = 18,
CC2650_GPIO_EVFLAGS31_0_DIO19_POS = 19,
CC2650_GPIO_EVFLAGS31_0_DIO20_POS = 20,
CC2650_GPIO_EVFLAGS31_0_DIO21_POS = 21,
CC2650_GPIO_EVFLAGS31_0_DIO22_POS = 22,
CC2650_GPIO_EVFLAGS31_0_DIO23_POS = 23,
CC2650_GPIO_EVFLAGS31_0_DIO24_POS = 24,
CC2650_GPIO_EVFLAGS31_0_DIO25_POS = 25,
CC2650_GPIO_EVFLAGS31_0_DIO26_POS = 26,
CC2650_GPIO_EVFLAGS31_0_DIO27_POS = 27,
CC2650_GPIO_EVFLAGS31_0_DIO28_POS = 28,
CC2650_GPIO_EVFLAGS31_0_DIO29_POS = 29,
CC2650_GPIO_EVFLAGS31_0_DIO30_POS = 30,
CC2650_GPIO_EVFLAGS31_0_DIO31_POS = 31
};
enum CC2650_GPIO_EVFLAGS31_0_MASK {
CC2650_GPIO_EVFLAGS31_0_DIO0_MASK = 0x00000001,
CC2650_GPIO_EVFLAGS31_0_DIO1_MASK = 0x00000002,
CC2650_GPIO_EVFLAGS31_0_DIO2_MASK = 0x00000004,
CC2650_GPIO_EVFLAGS31_0_DIO3_MASK = 0x00000008,
CC2650_GPIO_EVFLAGS31_0_DIO4_MASK = 0x00000010,
CC2650_GPIO_EVFLAGS31_0_DIO5_MASK = 0x00000020,
CC2650_GPIO_EVFLAGS31_0_DIO6_MASK = 0x00000040,
CC2650_GPIO_EVFLAGS31_0_DIO7_MASK = 0x00000080,
CC2650_GPIO_EVFLAGS31_0_DIO8_MASK = 0x00000100,
CC2650_GPIO_EVFLAGS31_0_DIO9_MASK = 0x00000200,
CC2650_GPIO_EVFLAGS31_0_DIO10_MASK = 0x00000400,
CC2650_GPIO_EVFLAGS31_0_DIO11_MASK = 0x00000800,
CC2650_GPIO_EVFLAGS31_0_DIO12_MASK = 0x00001000,
CC2650_GPIO_EVFLAGS31_0_DIO13_MASK = 0x00002000,
CC2650_GPIO_EVFLAGS31_0_DIO14_MASK = 0x00004000,
CC2650_GPIO_EVFLAGS31_0_DIO15_MASK = 0x00008000,
CC2650_GPIO_EVFLAGS31_0_DIO16_MASK = 0x00010000,
CC2650_GPIO_EVFLAGS31_0_DIO17_MASK = 0x00020000,
CC2650_GPIO_EVFLAGS31_0_DIO18_MASK = 0x00040000,
CC2650_GPIO_EVFLAGS31_0_DIO19_MASK = 0x00080000,
CC2650_GPIO_EVFLAGS31_0_DIO20_MASK = 0x00100000,
CC2650_GPIO_EVFLAGS31_0_DIO21_MASK = 0x00200000,
CC2650_GPIO_EVFLAGS31_0_DIO22_MASK = 0x00400000,
CC2650_GPIO_EVFLAGS31_0_DIO23_MASK = 0x00800000,
CC2650_GPIO_EVFLAGS31_0_DIO24_MASK = 0x01000000,
CC2650_GPIO_EVFLAGS31_0_DIO25_MASK = 0x02000000,
CC2650_GPIO_EVFLAGS31_0_DIO26_MASK = 0x04000000,
CC2650_GPIO_EVFLAGS31_0_DIO27_MASK = 0x08000000,
CC2650_GPIO_EVFLAGS31_0_DIO28_MASK = 0x10000000,
CC2650_GPIO_EVFLAGS31_0_DIO29_MASK = 0x20000000,
CC2650_GPIO_EVFLAGS31_0_DIO30_MASK = 0x40000000,
CC2650_GPIO_EVFLAGS31_0_DIO31_MASK = 0x80000000
};
#endif /* _CC2650_GPIO_H_ */

View file

@ -1,270 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* GPIO & I/O controller registers and bit offsets for the
* CC2650 System on Chip.
*/
#ifndef _CC2650_IOC_H_
#define _CC2650_IOC_H_
/* Registers */
enum CC2650_IOC_Registers {
CC2650_IOC_IOCFG0 = 0x0,
CC2650_IOC_IOCFG1 = 0x4,
CC2650_IOC_IOCFG2 = 0x8,
CC2650_IOC_IOCFG3 = 0xC,
CC2650_IOC_IOCFG4 = 0x10,
CC2650_IOC_IOCFG5 = 0x14,
CC2650_IOC_IOCFG6 = 0x18,
CC2650_IOC_IOCFG7 = 0x1C,
CC2650_IOC_IOCFG8 = 0x20,
CC2650_IOC_IOCFG9 = 0x24,
CC2650_IOC_IOCFG10 = 0x28,
CC2650_IOC_IOCFG11 = 0x2C,
CC2650_IOC_IOCFG12 = 0x30,
CC2650_IOC_IOCFG13 = 0x34,
CC2650_IOC_IOCFG14 = 0x38,
CC2650_IOC_IOCFG15 = 0x3C,
CC2650_IOC_IOCFG16 = 0x40,
CC2650_IOC_IOCFG17 = 0x44,
CC2650_IOC_IOCFG18 = 0x48,
CC2650_IOC_IOCFG19 = 0x4C,
CC2650_IOC_IOCFG20 = 0x50,
CC2650_IOC_IOCFG21 = 0x54,
CC2650_IOC_IOCFG22 = 0x58,
CC2650_IOC_IOCFG23 = 0x5C,
CC2650_IOC_IOCFG24 = 0x60,
CC2650_IOC_IOCFG25 = 0x64,
CC2650_IOC_IOCFG26 = 0x68,
CC2650_IOC_IOCFG27 = 0x6C,
CC2650_IOC_IOCFG28 = 0x70,
CC2650_IOC_IOCFG29 = 0x74,
CC2650_IOC_IOCFG30 = 0x78,
CC2650_IOC_IOCFG31 = 0x7C
};
/* Register-specific bits */
/* I/O Controller */
/* All IOCFGx registers are the same. */
enum CC2650_IOC_IOCFGX_POS {
CC2650_IOC_IOCFGX_PORT_ID_POS = 0,
CC2650_IOC_IOCFGX_IOSTR_POS = 8,
CC2650_IOC_IOCFGX_IOCURR_POS = 10,
CC2650_IOC_IOCFGX_SLEW_RED_POS = 12,
CC2650_IOC_IOCFGX_PULL_CTL_POS = 13,
CC2650_IOC_IOCFGX_EDGE_DET_POS = 16,
CC2650_IOC_IOCFGX_EDGE_IRQ_EN_POS = 18,
CC2650_IOC_IOCFGX_IOMODE_POS = 24,
CC2650_IOC_IOCFGX_WU_CFG_POS = 27,
CC2650_IOC_IOCFGX_IE_POS = 29,
CC2650_IOC_IOCFGX_HYST_EN_POS = 30
};
enum CC2650_IOC_IOCFGX_MASK {
CC2650_IOC_IOCFGX_PORT_ID_MASK = 0x0000003F,
CC2650_IOC_IOCFGX_IOSTR_MASK = 0x00000300,
CC2650_IOC_IOCFGX_IOCURR_MASK = 0x00000C00,
CC2650_IOC_IOCFGX_SLEW_RED_MASK = 0x00001000,
CC2650_IOC_IOCFGX_PULL_CTL_MASK = 0x00006000,
CC2650_IOC_IOCFGX_EDGE_DET_MASK = 0x00030000,
CC2650_IOC_IOCFGX_EDGE_IRQ_EN_MASK = 0x00040000,
CC2650_IOC_IOCFGX_IOMODE_MASK = 0x07000000,
CC2650_IOC_IOCFGX_WU_CFG_MASK = 0x18000000,
CC2650_IOC_IOCFGX_IE_MASK = 0x20000000,
CC2650_IOC_IOCFGX_HYST_EN_MASK = 0x40000000
};
/* Port-IDs available */
enum CC2650_IOC_PORTID {
CC2650_IOC_GPIO =
0 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_AON_SCS =
1 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_AON_SCK =
2 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_AON_SDI =
3 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_AON_SDO =
4 << CC2650_IOC_IOCFGX_PORT_ID_POS,
/* Reserved */
CC2650_IOC_AON_CLK32K =
7 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_AUX_IO =
8 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI0_RX =
9 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI0_TX =
10 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI0_FSS =
11 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI0_CLK =
12 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2C_MSSDA =
13 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2C_MSSCL =
14 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_UART0_RX =
15 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_UART0_TX =
16 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_UART0_CTS =
17 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_UART0_RTS =
18 << CC2650_IOC_IOCFGX_PORT_ID_POS,
/* Reserved */
CC2650_IOC_MCU_GPTM_GPTM0 =
23 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM1 =
24 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM2 =
25 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM3 =
26 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM4 =
27 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM5 =
28 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM6 =
29 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_GPTM_GPTM7 =
30 << CC2650_IOC_IOCFGX_PORT_ID_POS,
/* Reserved */
CC2650_IOC_MCU_CM3_SWV =
32 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI1_RX =
33 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI1_TX =
34 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI1_FSS =
35 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_SSI1_CLK =
36 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2S_AD0 =
37 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2S_AD1 =
38 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2S_WCLK =
39 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2S_BCLK =
40 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_MCU_I2S_MCLK =
41 << CC2650_IOC_IOCFGX_PORT_ID_POS,
/* Reserved */
CC2650_IOC_RFC_GP0 =
47 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_RFC_GP1 =
48 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_RFC_GP2 =
49 << CC2650_IOC_IOCFGX_PORT_ID_POS,
CC2650_IOC_RFC_GP3 =
50 << CC2650_IOC_IOCFGX_PORT_ID_POS
/* Reserved */
};
/* IOSTR (drive strength) values available */
enum CC2650_IOC_IOSTR {
CC2650_IOC_AUTO_DRIVE_STRENGTH =
0 << CC2650_IOC_IOCFGX_IOSTR_POS,
CC2650_IOC_MIN_DRIVE_STRENGTH =
1 << CC2650_IOC_IOCFGX_IOSTR_POS,
CC2650_IOC_MED_DRIVE_STRENGTH =
2 << CC2650_IOC_IOCFGX_IOSTR_POS,
CC2650_IOC_MAX_DRIVE_STRENGTH =
3 << CC2650_IOC_IOCFGX_IOSTR_POS
};
/* IOCURR (IO current) values available */
enum CC2650_IOC_IOCURR {
CC2650_IOC_LOW_CURRENT_MODE =
0 << CC2650_IOC_IOCFGX_IOCURR_POS,
CC2650_IOC_HIGH_CURRENT_MODE =
1 << CC2650_IOC_IOCFGX_IOCURR_POS,
CC2650_IOC_EXTENDED_CURRENT_MODE =
2 << CC2650_IOC_IOCFGX_IOCURR_POS
};
/* SLEW_RED (slew rate) values available */
enum CC2650_IOC_SLEW_RED {
CC2650_IOC_NORMAL_SLEW_RATE =
0 << CC2650_IOC_IOCFGX_SLEW_RED_POS,
CC2650_IOC_REDUCED_SLEW_RATE =
1 << CC2650_IOC_IOCFGX_SLEW_RED_POS
};
/* PULL_CTL (pull-* modes) values available */
enum CC2650_IOC_PULL_CTL {
CC2650_IOC_PULL_DOWN =
1 << CC2650_IOC_IOCFGX_PULL_CTL_POS,
CC2650_IOC_PULL_UP =
2 << CC2650_IOC_IOCFGX_PULL_CTL_POS,
CC2650_IOC_NO_PULL =
3 << CC2650_IOC_IOCFGX_PULL_CTL_POS
};
/* EDGE_DET (edge detection) values available */
enum CC2650_IOC_EDGE_DET {
CC2650_IOC_NO_EDGE_DET =
0 << CC2650_IOC_IOCFGX_EDGE_DET_POS,
CC2650_IOC_NEG_EDGE_DET =
1 << CC2650_IOC_IOCFGX_EDGE_DET_POS,
CC2650_IOC_POS_EDGE_DET =
2 << CC2650_IOC_IOCFGX_EDGE_DET_POS,
CC2650_IOC_NEG_AND_POS_EDGE_DET =
3 << CC2650_IOC_IOCFGX_EDGE_DET_POS
};
/* IOMODE values available */
enum CC2650_IOC_IOMODE {
CC2650_IOC_NORMAL_IO =
0 << CC2650_IOC_IOCFGX_IOMODE_POS,
CC2650_IOC_INVERTED_IO =
1 << CC2650_IOC_IOCFGX_IOMODE_POS,
CC2650_IOC_OPEN_DRAIN_IO =
4 << CC2650_IOC_IOCFGX_IOMODE_POS,
CC2650_IOC_OPEN_DRAIN_INVERTED_IO =
5 << CC2650_IOC_IOCFGX_IOMODE_POS,
CC2650_IOC_OPEN_SOURCE_IO =
6 << CC2650_IOC_IOCFGX_IOMODE_POS,
CC2650_IOC_OPEN_SOURCE_INVERTED_IO =
7 << CC2650_IOC_IOCFGX_IOMODE_POS
};
/* WU_CFG (Wake-up control) values available */
enum CC2650_IOC_WU_CFG {
/* Values' meaning change with PORT_ID, so here we only
* give very generic names...
*/
CC2650_IOC_WAKE_UP_0 =
0 << CC2650_IOC_IOCFGX_WU_CFG_POS,
CC2650_IOC_WAKE_UP_1 =
1 << CC2650_IOC_IOCFGX_WU_CFG_POS,
CC2650_IOC_WAKE_UP_2 =
2 << CC2650_IOC_IOCFGX_WU_CFG_POS,
CC2650_IOC_WAKE_UP_3 =
3 << CC2650_IOC_IOCFGX_WU_CFG_POS
};
/* IE (Input control) values available */
enum CC2650_IOC_IE {
CC2650_IOC_INPUT_DISABLED =
0 << CC2650_IOC_IOCFGX_IE_POS,
CC2650_IOC_INPUT_ENABLED =
1 << CC2650_IOC_IOCFGX_IE_POS
};
/* HYST_EN (Hysteresis control) values available */
enum CC2650_IOC_HYST_EN {
CC2650_IOC_HYSTERESIS_DISABLED =
0 << CC2650_IOC_IOCFGX_HYST_EN_POS,
CC2650_IOC_HYSTERESIS_ENABLED =
1 << CC2650_IOC_IOCFGX_HYST_EN_POS
};
#endif /* _CC2650_IOC_H_ */

View file

@ -1,108 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Offsets for the Power, Reset, and Clock Management module
* registers, in the CC2650 System on Chip.
*/
#ifndef _CC2650_PRCM_H_
#define _CC2650_PRCM_H_
/* Registers */
enum CC2650_PRCM_Registers {
CC2650_PRCM_CLKLOADCTL = 0x28,
CC2650_PRCM_SECDMACLKGR = 0x3C,
CC2650_PRCM_GPIOCLKGR = 0x48,
CC2650_PRCM_UARTCLKGR = 0x6C,
CC2650_PRCM_UARTCLKGS = 0x70,
CC2650_PRCM_UARTCLKGDS = 0x74,
CC2650_PRCM_PDCTL0 = 0x12C,
CC2650_PRCM_PDSTAT0 = 0x140
};
/* Register-specific bits */
/* CLKLOADCTL */
enum CC2650_PRCM_CLKLOADCT_POS {
CC2650_PRCM_CLKLOADCTL_LOAD_POS = 0,
CC2650_PRCM_CLKLOADCTL_LOAD_DONE_POS = 1
};
enum CC2650_PRCM_CLKLOADCTL_MASK {
CC2650_PRCM_CLKLOADCTL_LOAD_MASK = 0x00000001,
CC2650_PRCM_CLKLOADCTL_LOAD_DONE_MASK = 0x00000002
};
/* SECDMACLKGR */
enum CC2650_PRCM_SECDMACLKGR_POS {
CC2650_PRCM_SECDMACLKGR_TRNG_CLK_EN_POS = 1
};
enum CC2650_PRCM_SECDMACLKGR_MASK {
CC2650_PRCM_SECDMACLKGR_TRNG_CLK_EN_MASK = 0x00000002
};
/* GPIOCLKGR */
enum CC2650_PRCM_GPIOCLKGR_POS {
CC2650_PRCM_GPIOCLKGR_CLK_EN_POS = 0
};
enum CC2650_PRCM_GPIOCLKGR_MASK {
CC2650_PRCM_GPIOCLKGR_CLK_EN_MASK = 0x00000001
};
/* UARTCLKGR */
enum CC2650_PRCM_UARTCLKGR_POS {
CC2650_PRCM_UARTCLKGR_CLK_EN_POS = 0
};
enum CC2650_PRCM_UARTCLKGR_MASK {
CC2650_PRCM_UARTCLKGR_CLK_EN_MASK = 0x00000001
};
/* UARTCLKGS */
enum CC2650_PRCM_UARTCLKGS_POS {
CC2650_PRCM_UARTCLKGS_CLK_EN_POS = 0
};
enum CC2650_PRCM_UARTCLKGS_MASK {
CC2650_PRCM_UARTCLKGS_CLK_EN_MASK = 0x00000001
};
/* UARTCLKGDS */
enum CC2650_PRCM_UARTCLKGDS_POS {
CC2650_PRCM_UARTCLKGDS_CLK_EN_POS = 0
};
enum CC2650_PRCM_UARTCLKGDS_MASK {
CC2650_PRCM_UARTCLKGDS_CLK_EN_MASK = 0x00000001
};
/* PDCTL0 */
enum CC2650_PRCM_PDCTL0_POS {
CC2650_PRCM_PDCTL0_SERIAL_ON_POS = 1,
CC2650_PRCM_PDCTL0_PERIPH_ON_POS = 2
};
enum CC2650_PRCM_PDCTL0_MASK {
CC2650_PRCM_PDCTL0_SERIAL_ON_MASK = 0x00000002,
CC2650_PRCM_PDCTL0_PERIPH_ON_MASK = 0x00000004
};
/* PDSTAT0 */
enum CC2650_PRCM_PDSTAT0_POS {
CC2650_PRCM_PDSTAT0_RFC_ON_POS = 0,
CC2650_PRCM_PDSTAT0_SERIAL_ON_POS = 1,
CC2650_PRCM_PDSTAT0_PERIPH_ON_POS = 2
};
enum CC2650_PRCM_PDSTAT0_MASK {
CC2650_PRCM_PDSTAT0_RFC_ON_MASK = 0x00000001,
CC2650_PRCM_PDSTAT0_SERIAL_ON_MASK = 0x00000002,
CC2650_PRCM_PDSTAT0_PERIPH_ON_MASK = 0x00000004
};
#endif /* _CC2650_PRCM_H_ */

View file

@ -1,141 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Basic initialization for the CC2650 System on Chip.
*/
#include <toolchain/gcc.h>
#include <init.h>
#include <sys/sys_io.h>
#include "soc.h"
#define CCFG_SIZE 88
/* The bootloader of the SoC (in ROM) reads configuration
* data (CCFG) at a fixed address (last page of flash).
* The most notable information being whether to run the
* code stored in flash or not.
*
* We put configuration data in a specific section so that
* the linker script can map it accordingly.
*/
const u32_t
__ti_ccfg_section
ti_ccfg[CCFG_SIZE / sizeof(u32_t)] = {
0x00008001, /* EXT_LF_CLK: default values */
0xFF13FFFF, /* MODE_CONF_1: default values */
0x0058FFFF, /* SIZE_AND_DIS_FLAGS: 88 bytes long, no external osc. */
0xFFFFFFFF, /* MODE_CONF: default values */
0xFFFFFFFF, /* VOLT_LOAD_0: default values */
0xFFFFFFFF, /* VOLT_LOAD_1: default values */
0xFFFFFFFF, /* RTC_OFFSET: default values */
0xFFFFFFFF, /* FREQ_OFFSET: default values */
0xFFFFFFFF, /* IEEE_MAC_0: use MAC address from FCFG */
0xFFFFFFFF, /* IEEE_MAC_1: use MAC address from FCFG */
0xFFFFFFFF, /* IEEE_BLE_0: use BLE address from FCFG */
0xFFFFFFFF, /* IEEE_BLE_1: use BLE address from FCFG */
/* BL_CONFIG: disable backdoor and bootloader,
* default pin, default active level (high)
*/
CC2650_CCFG_BACKDOOR_DISABLED |
(0xFF << CC2650_CCFG_BL_CONFIG_BL_PIN_NUMBER_POS) |
(0x1 << CC2650_CCFG_BL_CONFIG_BL_LEVEL_POS) |
0x00FE0000 | /* reserved */
CC2650_CCFG_BOOTLOADER_DISABLED,
0xFFFFFFFF, /* ERASE_CONF: default values (banks + chip erase) */
/* CCFG_TI_OPTIONS: disable TI failure analysis */
CC2650_CCFG_TI_FA_DISABLED |
0xFFFFFF00, /* reserved */
0xFFC5C5C5, /* CCFG_TAP_DAP_0: default values */
0xFFC5C5C5, /* CCFG_TAP_DAP_1: default values */
/* IMAGE_VALID_CONF: authorize program on flash to run */
CC2650_CCFG_IMAGE_IS_VALID,
/* Make all flash chip programmable + erasable
* (which is default)
*/
0xFFFFFFFF, /* CCFG_PROT_31_0 */
0xFFFFFFFF, /* CCFG_PROT_61_32 */
0xFFFFFFFF, /* CCFG_PROT_95_64 */
0xFFFFFFFF /* CCFG_PROT_127_96 */
};
/* PRCM Registers */
static const u32_t clkloadctl =
REG_ADDR(DT_TI_CC2650_PRCM_40082000_BASE_ADDRESS,
CC2650_PRCM_CLKLOADCTL);
static const u32_t gpioclkgr =
REG_ADDR(DT_TI_CC2650_PRCM_40082000_BASE_ADDRESS,
CC2650_PRCM_GPIOCLKGR);
static const u32_t pdctl0 =
REG_ADDR(DT_TI_CC2650_PRCM_40082000_BASE_ADDRESS,
CC2650_PRCM_PDCTL0);
static const u32_t pdstat0 =
REG_ADDR(DT_TI_CC2650_PRCM_40082000_BASE_ADDRESS,
CC2650_PRCM_PDSTAT0);
#ifdef CONFIG_SERIAL
static const u32_t uartclkgr =
REG_ADDR(DT_TI_CC2650_PRCM_40082000_BASE_ADDRESS,
CC2650_PRCM_UARTCLKGR);
#endif
/* Setup power and clock for needed hardware modules. */
static void setup_modules_prcm(void)
{
#if defined(CONFIG_GPIO_CC2650) || \
defined(CONFIG_SERIAL)
/* Setup power */
#if defined(CONFIG_GPIO_CC2650)
sys_set_bit(pdctl0, CC2650_PRCM_PDCTL0_PERIPH_ON_POS);
#endif
#ifdef CONFIG_SERIAL
sys_set_bit(pdctl0, CC2650_PRCM_PDCTL0_SERIAL_ON_POS);
#endif
/* Setup clocking */
#ifdef CONFIG_GPIO_CC2650
sys_set_bit(gpioclkgr, CC2650_PRCM_GPIOCLKGR_CLK_EN_POS);
#endif
#ifdef CONFIG_SERIAL
sys_set_bit(uartclkgr, CC2650_PRCM_UARTCLKGR_CLK_EN_POS);
#endif
/* Reload clocking configuration for device */
sys_set_bit(clkloadctl, CC2650_PRCM_CLKLOADCTL_LOAD_POS);
/* Wait for power to be completely on, to avoid bus faults
* when accessing modules' registers.
*/
#if defined(CONFIG_GPIO_CC2650)
while (!(sys_read32(pdstat0) &
BIT(CC2650_PRCM_PDSTAT0_PERIPH_ON_POS))) {
continue;
}
#endif
#if defined(CONFIG_SERIAL)
while (!(sys_read32(pdstat0) &
BIT(CC2650_PRCM_PDSTAT0_SERIAL_ON_POS))) {
continue;
}
#endif
#endif
}
static int ti_cc2650(struct device *dev)
{
ARG_UNUSED(dev);
NMI_INIT();
setup_modules_prcm();
return 0;
}
SYS_INIT(ti_cc2650, PRE_KERNEL_1, 0);
int bit_is_set(u32_t reg, u8_t bit)
{
return sys_read32(reg) & BIT(bit);
}

View file

@ -1,25 +0,0 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* General header for the CC2650 System on Chip.
*/
#ifndef _CC2650_SOC_H_
#define _CC2650_SOC_H_
#include <sys/util.h>
#include "registers/ccfg.h"
#include "registers/gpio.h"
#include "registers/ioc.h"
#include "registers/prcm.h"
/* Helper functions and macros */
#define REG_ADDR(Base, Offset) (u32_t)(Base + (u32_t)Offset)
int bit_is_set(u32_t reg, u8_t bit);
#endif /* _CC2650_SOC_H_ */