mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
0d9f6ca3f4
Signed-off-by: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
172 lines
5.1 KiB
C
172 lines
5.1 KiB
C
/*
|
|
* Copyright (C) 2020 Locha Inc
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup cpu_cc26xx_cc13xx_definitions
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief CC26xx/CC13xx MCU I/O register definitions
|
|
*
|
|
* @author Jean Pierre Dudey <jeandudey@hotmail.com>
|
|
*/
|
|
|
|
#ifndef CC26XX_CC13XX_RFC_H
|
|
#define CC26XX_CC13XX_RFC_H
|
|
|
|
#include "cc26xx_cc13xx.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief RFC_DBELL registers
|
|
*/
|
|
typedef struct {
|
|
reg32_t CMDR; /**< Doorbell Command Register */
|
|
reg32_t CMDSTA; /**< Doorbell Command Status Register */
|
|
reg32_t RFHWIFG; /**< Interrupt Flags From RF Hardware Modules */
|
|
reg32_t RFHWIEN; /**< Interrupt Enable For RF Hardware Modules */
|
|
reg32_t RFCPEIFG; /**< Interrupt Flags For Command and Packet Engine
|
|
Generated Interrupts */
|
|
reg32_t RFCPEIEN; /**< Interrupt Enable For Command and Packet Engine
|
|
Generated Interrupts */
|
|
reg32_t RFCPEISL; /**< Interrupt Vector Selection For Command and Packet
|
|
Engine Generated Interrupts */
|
|
reg32_t RFACKIFG; /**< Doorbell Command Acknowledgement Interrupt Flag */
|
|
reg32_t SYSGPOCTL; /**< RF Core General Purpose Output Control */
|
|
} rfc_dbell_regs_t;
|
|
|
|
/**
|
|
* @brief RFC_DBELL definitions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief RFCHWIFG/RFCHWIEN interrupt flags
|
|
*/
|
|
typedef enum {
|
|
HW_IRQ_FSCA = (1 << 1),
|
|
HW_IRQ_MDMDONE = (1 << 2),
|
|
HW_IRQ_MDMIN = (1 << 3),
|
|
HW_IRQ_MDMOUT = (1 << 4),
|
|
HW_IRQ_MDMSOFT = (1 << 5),
|
|
HW_IRQ_TRCTK = (1 << 6),
|
|
HW_IRQ_RFEDONE = (1 << 8),
|
|
HW_IRQ_RFESOFT0 = (1 << 9),
|
|
HW_IRQ_RFESOFT1 = (1 << 10),
|
|
HW_IRQ_RFESOFT2 = (1 << 11),
|
|
HW_IRQ_RATCH0 = (1 << 12),
|
|
HW_IRQ_RATCH1 = (1 << 13),
|
|
HW_IRQ_RATCH2 = (1 << 14),
|
|
HW_IRQ_RATCH3 = (1 << 15),
|
|
HW_IRQ_RATCH4 = (1 << 16),
|
|
HW_IRQ_RATCH5 = (1 << 17),
|
|
HW_IRQ_RATCH6 = (1 << 18),
|
|
HW_IRQ_RATCH7 = (1 << 19)
|
|
} rf_hw_irq_t;
|
|
|
|
/**
|
|
* @brief RFCPEIEN/RFCPEIFG/RFCPEISL interrupt flags
|
|
*/
|
|
typedef enum {
|
|
CPE_IRQ_COMMAND_DONE = (1 << 0),
|
|
CPE_IRQ_LAST_COMMAND_DONE = (1 << 1),
|
|
CPE_IRQ_FG_COMMAND_DONE = (1 << 2),
|
|
CPE_IRQ_LAST_FG_COMMAND_DONE = (1 << 3),
|
|
CPE_IRQ_TX_DONE = (1 << 4),
|
|
CPE_IRQ_TX_ACK = (1 << 5),
|
|
CPE_IRQ_TX_CTRL = (1 << 6),
|
|
CPE_IRQ_TX_CTRL_ACK = (1 << 7),
|
|
CPE_IRQ_TX_CTRL_ACK_ACK = (1 << 8),
|
|
CPE_IRQ_TX_RETRANS = (1 << 9),
|
|
CPE_IRQ_TX_ENTRY_DONE = (1 << 10),
|
|
CPE_IRQ_TX_BUFFER_CHANGED = (1 << 11),
|
|
#ifdef CPU_VARIANT_X2
|
|
CPE_IRQ_COMMAND_STARTED = (1 << 12),
|
|
CPE_IRQ_FG_COMMAND_STARTED = (1 << 13),
|
|
#else
|
|
CPE_IRQ_IRQ12 = (1 << 12),
|
|
CPE_IRQ_IRQ13 = (1 << 13),
|
|
#endif
|
|
CPE_IRQ_IRQ14 = (1 << 14),
|
|
CPE_IRQ_IRQ15 = (1 << 15),
|
|
CPE_IRQ_RX_OK = (1 << 16),
|
|
CPE_IRQ_RX_NOK = (1 << 17),
|
|
CPE_IRQ_RX_IGNORED = (1 << 18),
|
|
CPE_IRQ_RX_EMPTY = (1 << 19),
|
|
CPE_IRQ_RX_CTRL = (1 << 20),
|
|
CPE_IRQ_RX_CTRL_ACK = (1 << 21),
|
|
CPE_IRQ_RX_BUF_FULL = (1 << 22),
|
|
CPE_IRQ_RX_ENTRY_DONE = (1 << 23),
|
|
CPE_IRQ_RX_DATA_WRITTEN = (1 << 24),
|
|
CPE_IRQ_RX_N_DATA_WRITTEN = (1 << 25),
|
|
CPE_IRQ_RX_ABORTED = (1 << 26),
|
|
CPE_IRQ_IRQ27 = (1 << 27),
|
|
CPE_IRQ_SYNTH_NO_LOCK = (1 << 28),
|
|
CPE_IRQ_MODULES_UNLOCKED = (1 << 29),
|
|
CPE_IRQ_BOOT_DONE = (1 << 30),
|
|
CPE_IRQ_INTERNAL_ERROR = (1 << 31),
|
|
} rf_cpe_irq_t;
|
|
|
|
#define RFACKIFG_ACKFLAG 0x1
|
|
/** @} */
|
|
|
|
/**
|
|
* @ingroup cpu_specific_peripheral_memory_map
|
|
* @{
|
|
*/
|
|
#define RFC_DBELL_BASE (PERIPH_BASE + 0x41000) /**< RFC_DBELL base address */
|
|
#define RFC_DBELL_BASE_NONBUF (PERIPH_BASE_NONBUF + 0x41000) /**< RFC_DBELL base address */
|
|
/** @} */
|
|
|
|
#define RFC_DBELL ((rfc_dbell_regs_t *) (RFC_DBELL_BASE)) /**< RFC_DBELL register bank */
|
|
#define RFC_DBELL_NONBUF ((rfc_dbell_regs_t *) (RFC_DBELL_BASE_NONBUF)) /**< RFC_DBELL register bank */
|
|
|
|
/**
|
|
* @brief RFC_PWR registers
|
|
*/
|
|
typedef struct {
|
|
reg32_t PWMCLKEN; /**< RF Core Power Management and Clock Enable */
|
|
} rfc_pwr_regs_t;
|
|
|
|
/**
|
|
* @brief RFC_PWR definitions
|
|
* @{
|
|
*/
|
|
#define PWMCLKEN_RFCTRC 0x400
|
|
#define PWMCLKEN_FSCA 0x200
|
|
#define PWMCLKEN_PHA 0x100
|
|
#define PWMCLKEN_RAT 0x80
|
|
#define PWMCLKEN_RFERAM 0x40
|
|
#define PWMCLKEN_MDMRAM 0x10
|
|
#define PWMCLKEN_MDM 0x8
|
|
#define PWMCLKEN_CPERAM 0x4
|
|
#define PWMCLKEN_CPE 0x2
|
|
#define PWMCLKEN_RFC 0x1
|
|
/** @} */
|
|
|
|
/**
|
|
* @ingroup cpu_specific_peripheral_memory_map
|
|
* @{
|
|
*/
|
|
#define RFC_PWR_BASE (PERIPH_BASE + 0x40000) /**< RFC_PWR base address */
|
|
#define RFC_PWR_BASE_NONBUF (PERIPH_BASE_NONBUF + 0x40000) /**< RFC_PWR base address */
|
|
/** @} */
|
|
|
|
#define RFC_PWR ((rfc_pwr_regs_t *) (RFC_PWR_BASE)) /**< RFC_PWR register bank */
|
|
#define RFC_PWR_NONBUF ((rfc_pwr_regs_t *) (RFC_PWR_BASE_NONBUF)) /**< RFC_PWR register bank */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* CC26XX_CC13XX_RFC_H */
|
|
/** @} */
|