sensortag: Add TI's SensorTag board.

Add support for TI's SensorTag board, which uses a CC2650 SoC.

Signed-off-by: Geoffrey Le Gourriérec <geoffrey.legourrierec@smile.fr>
This commit is contained in:
Geoffrey Le Gourriérec 2017-06-16 17:42:05 +02:00 committed by Anas Nashif
commit 0abeba8b1a
11 changed files with 225 additions and 1 deletions

View file

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

View file

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

View file

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

View file

@ -0,0 +1,4 @@
# SPDX-License-Identifier: Apache-2.0
# Temporary solution: always launch pinmux init
obj-y += pinmux.o

View file

@ -0,0 +1,58 @@
/*
* 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

@ -0,0 +1,46 @@
# SPDX-License-Identifier: Apache-2.0
# General options
CONFIG_HAS_DTS=y
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=48000000
CONFIG_FLASH=y
CONFIG_FLASH_BASE_ADDRESS=0x00000000
CONFIG_SRAM_BASE_ADDRESS=0x20000000
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_FAMILY_TISIMPLELINK=y
CONFIG_SOC_SERIES_CC2650=y
CONFIG_SOC_CC2650=y
# Pinmux driver
CONFIG_PINMUX=y
CONFIG_PINMUX_CC2650=y
CONFIG_PINMUX_CC2650_INIT_PRIO=1
# GPIO driver
CONFIG_GPIO=y
CONFIG_GPIO_CC2650=y
CONFIG_GPIO_CC2650_INIT_PRIO=0
# UART driver
CONFIG_SERIAL=y
CONFIG_SERIAL_HAS_DRIVER=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_RANDOM_GENERATOR=y
CONFIG_CC2650_TRNG_RANDOM_GENERATOR=y
CONFIG_CC2650_TRNG_IRQ_PRIO=0

View file

@ -0,0 +1,43 @@
/*
* 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 <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

@ -41,6 +41,6 @@ dtb-$(CONFIG_BOARD_SAM_E70_XPLAINED) = sam_e70_xplained.dts_compiled
dtb-$(CONFIG_BOARD_ARDUINO_DUE) = arduino_due.dts_compiled
dtb-$(CONFIG_BOARD_SAM4S_XPLAINED) = sam4s_xplained.dts_compiled
dtb-$(CONFIG_BOARD_OLIMEX_STM32_E407) = olimex_stm32_e407.dts_compiled
dtb-$(CONFIG_BOARD_CC2650_SENSORTAG) = cc2650_sensortag.dts_compiled
always := $(dtb-y)
endif

View file

@ -0,0 +1,37 @@
/* 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;
};
};
&gpioa {
status = "ok";
};
&trng0 {
status = "ok";
};
&uart0 {
status = "ok";
current-speed = <115200>;
};

View file

@ -0,0 +1,8 @@
#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V7M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS
#define TI_STELLARIS_UART_4000C000_BASE_ADDRESS TI_STELLARIS_UART_40001000_BASE_ADDRESS
#define TI_STELLARIS_UART_4000C000_CURRENT_SPEED TI_STELLARIS_UART_40001000_CURRENT_SPEED
#define UART_STELLARIS_CLK_FREQ CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
#define TI_STELLARIS_UART_4000C000_IRQ_0 TI_STELLARIS_UART_40001000_IRQ_0
#define TI_STELLARIS_UART_4000C000_IRQ_0_PRIORITY TI_STELLARIS_UART_40001000_IRQ_0_PRIORITY
#define TI_STELLARIS_UART_4000C000_LABEL TI_STELLARIS_UART_40001000_LABEL

View file

@ -57,6 +57,7 @@
reg = <0x40001000 0x4C>;
interrupts = <5 0>, <6 0>;
status = "disabled";
label = "UART_0";
};
};
};