diff options
author | Myles Watson <mylesgw@chromium.org> | 2014-12-23 16:52:47 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-28 02:26:30 +0000 |
commit | 199edf4be12ad477cff34bb17fce5032186ed47a (patch) | |
tree | deb7142818ed0cdf9bee997770a314ecf19024ec | |
parent | 1dccd0450e7ba7cfa4d61fbd0ddac4c910b5b763 (diff) | |
download | chrome-ec-199edf4be12ad477cff34bb17fce5032186ed47a.tar.gz |
nrf51: add definitions for RADIO and FICR registers.
TEST=tested that the radio sends and receives packets correctly.
BRANCH=NONE
BUG=None
Signed-off-by: Myles Watson <mylesgw@chromium.org>
Change-Id: I7f59521062558be90c217013e2ea2dae502005c4
Reviewed-on: https://chromium-review.googlesource.com/254110
Tested-by: Myles Watson <mylesgw@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Myles Watson <mylesgw@chromium.org>
-rw-r--r-- | chip/nrf51/registers.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/chip/nrf51/registers.h b/chip/nrf51/registers.h index 0619c2b409..7fb4f2c041 100644 --- a/chip/nrf51/registers.h +++ b/chip/nrf51/registers.h @@ -82,6 +82,52 @@ #define NRF51_MAX_ALT_FUNCS 22 /* + * Configuration Registers + */ + +/* + * FICR + */ +#define NRF51_FICR_BASE 0x10000000 +#define NRF51_FICR_CODEPAGESIZE REG32(NRF51_FICR_BASE + 0x010) +#define NRF51_FICR_CLENR0 REG32(NRF51_FICR_BASE + 0x014) +#define NRF51_FICR_PPFC REG32(NRF51_FICR_BASE + 0x028) +#define NRF51_FICR_NUMRAMBLOCK REG32(NRF51_FICR_BASE + 0x02C) +#define NRF51_FICR_SIZERAMBLOCK(n) REG32(NRF51_FICR_BASE + 0x034 + ((n)*4)) +#define NRF51_FICR_CONFIGID REG32(NRF51_FICR_BASE + 0x05C) +#define NRF51_FICR_DEVICEID(n) REG32(NRF51_FICR_BASE + 0x060 + ((n)*4)) +#define NRF51_FICR_ER(n) REG32(NRF51_FICR_BASE + 0x080 + ((n)*4)) +#define NRF51_FICR_IR(n) REG32(NRF51_FICR_BASE + 0x090 + ((n)*4)) +#define NRF51_FICR_DEVICEADDRTYPE REG32(NRF51_FICR_BASE + 0x0A0) +#define NRF51_FICR_DEVICEADDR(n) REG32(NRF51_FICR_BASE + 0x0A4 + ((n)*4)) +#define NRF51_FICR_OVERRIDDEN REG32(NRF51_FICR_BASE + 0x0AC) +#define NRF51_FICR_BLE_1MBIT(n) REG32(NRF51_FICR_BASE + 0x0EC + ((n)*4)) + +/* DEVICEADDRTYPE */ +#define NRF51_FICR_DEVICEADDRTYPE_RANDOM 1 + +/* OVERRIDDEN */ +#define NRF51_FICR_OVERRIDDEN_NRF_BIT_N 1 +#define NRF51_FICR_OVERRIDDEN_BLE_BIT_N 8 + +/* + * UICR + */ +#define NRF51_UICR_BASE 0x10001000 +#define NRF51_UICR_CLENR0 REG32(NRF51_UICR_BASE + 0x000) +#define NRF51_UICR_RBPCONF REG32(NRF51_UICR_BASE + 0x004) +#define NRF51_UICR_XTALFREQ REG32(NRF51_UICR_BASE + 0x008) +#define NRF51_UICR_FWID REG32(NRF51_UICR_BASE + 0x010) +#define NRF51_UICR_FWID_CUSTOMER(n) REG32(NRF51_UICR_BASE + 0x080 + ((n)*4)) + +#define NRF51_UICR_XTALFREQ_16MHZ 0xFF +#define NRF51_UICR_XTALFREQ_32MHZ 0x00 + +/* + * Devices + */ + +/* * Power */ #define NRF51_POWER_BASE 0x40000000 @@ -129,6 +175,143 @@ #define NRF51_CLOCK_XTALFREQ REG32(NRF51_CLOCK_BASE + 0x550) /* + * Radio + */ +#define NRF51_RADIO_BASE 0x40001000 +/* Tasks */ +#define NRF51_RADIO_TXEN REG32(NRF51_RADIO_BASE + 0x000) +#define NRF51_RADIO_RXEN REG32(NRF51_RADIO_BASE + 0x004) +#define NRF51_RADIO_START REG32(NRF51_RADIO_BASE + 0x008) +#define NRF51_RADIO_STOP REG32(NRF51_RADIO_BASE + 0x00C) +#define NRF51_RADIO_DISABLE REG32(NRF51_RADIO_BASE + 0x010) +#define NRF51_RADIO_RSSISTART REG32(NRF51_RADIO_BASE + 0x014) +#define NRF51_RADIO_RSSISTOP REG32(NRF51_RADIO_BASE + 0x018) +#define NRF51_RADIO_BCSTART REG32(NRF51_RADIO_BASE + 0x01C) +#define NRF51_RADIO_BCSTOP REG32(NRF51_RADIO_BASE + 0x020) +/* Events */ +#define NRF51_RADIO_READY REG32(NRF51_RADIO_BASE + 0x100) +#define NRF51_RADIO_ADDRESS REG32(NRF51_RADIO_BASE + 0x104) +#define NRF51_RADIO_PAYLOAD REG32(NRF51_RADIO_BASE + 0x108) +#define NRF51_RADIO_END REG32(NRF51_RADIO_BASE + 0x10C) +#define NRF51_RADIO_DISABLED REG32(NRF51_RADIO_BASE + 0x110) +#define NRF51_RADIO_DEVMATCH REG32(NRF51_RADIO_BASE + 0x114) +#define NRF51_RADIO_DEVMISS REG32(NRF51_RADIO_BASE + 0x118) +#define NRF51_RADIO_RSSIEND REG32(NRF51_RADIO_BASE + 0x11C) +#define NRF51_RADIO_BCMATCH REG32(NRF51_RADIO_BASE + 0x128) +/* Registers */ +#define NRF51_RADIO_SHORTS REG32(NRF51_RADIO_BASE + 0x200) +#define NRF51_RADIO_INTENSET REG32(NRF51_RADIO_BASE + 0x304) +#define NRF51_RADIO_INTENCLR REG32(NRF51_RADIO_BASE + 0x308) +#define NRF51_RADIO_CRCSTATUS REG32(NRF51_RADIO_BASE + 0x400) +#define NRF51_RADIO_RXMATCH REG32(NRF51_RADIO_BASE + 0x408) +#define NRF51_RADIO_RXCRC REG32(NRF51_RADIO_BASE + 0x40C) +#define NRF51_RADIO_DAI REG32(NRF51_RADIO_BASE + 0x410) +#define NRF51_RADIO_PACKETPTR REG32(NRF51_RADIO_BASE + 0x504) +#define NRF51_RADIO_FREQUENCY REG32(NRF51_RADIO_BASE + 0x508) +#define NRF51_RADIO_TXPOWER REG32(NRF51_RADIO_BASE + 0x50C) +#define NRF51_RADIO_MODE REG32(NRF51_RADIO_BASE + 0x510) +#define NRF51_RADIO_PCNF0 REG32(NRF51_RADIO_BASE + 0x514) +#define NRF51_RADIO_PCNF1 REG32(NRF51_RADIO_BASE + 0x518) +#define NRF51_RADIO_BASE0 REG32(NRF51_RADIO_BASE + 0x51C) +#define NRF51_RADIO_BASE1 REG32(NRF51_RADIO_BASE + 0x520) +#define NRF51_RADIO_PREFIX0 REG32(NRF51_RADIO_BASE + 0x524) +#define NRF51_RADIO_PREFIX1 REG32(NRF51_RADIO_BASE + 0x528) +#define NRF51_RADIO_TXADDRESS REG32(NRF51_RADIO_BASE + 0x52C) +#define NRF51_RADIO_RXADDRESSES REG32(NRF51_RADIO_BASE + 0x530) +#define NRF51_RADIO_CRCCNF REG32(NRF51_RADIO_BASE + 0x534) +#define NRF51_RADIO_CRCPOLY REG32(NRF51_RADIO_BASE + 0x538) +#define NRF51_RADIO_CRCINIT REG32(NRF51_RADIO_BASE + 0x53C) +#define NRF51_RADIO_TEST REG32(NRF51_RADIO_BASE + 0x540) +#define NRF51_RADIO_TIFS REG32(NRF51_RADIO_BASE + 0x544) +#define NRF51_RADIO_RSSISAMPLE REG32(NRF51_RADIO_BASE + 0x548) +#define NRF51_RADIO_STATE REG32(NRF51_RADIO_BASE + 0x550) +#define NRF51_RADIO_DATAWHITEIV REG32(NRF51_RADIO_BASE + 0x554) +#define NRF51_RADIO_BCC REG32(NRF51_RADIO_BASE + 0x560) +#define NRF51_RADIO_DAB(n) REG32(NRF51_RADIO_BASE + 0x600 + ((n) * 4)) +#define NRF51_RADIO_DAP(n) REG32(NRF51_RADIO_BASE + 0x620 + ((n) * 4)) +#define NRF51_RADIO_DACNF REG32(NRF51_RADIO_BASE + 0x640) +#define NRF51_RADIO_OVERRIDE(n) REG32(NRF51_RADIO_BASE + 0x724 + ((n) * 4)) +#define NRF51_RADIO_POWER REG32(NRF51_RADIO_BASE + 0xFFC) + +/* Shorts */ +#define NRF51_RADIO_SHORTS_READY_START 0x001 +#define NRF51_RADIO_SHORTS_END_DISABLE 0x002 +#define NRF51_RADIO_SHORTS_DISABLED_TXEN 0x004 +#define NRF51_RADIO_SHORTS_DISABLED_RXEN 0x008 +#define NRF51_RADIO_SHORTS_ADDRESS_RSSISTART 0x010 +/* NRF51_RADIO_SHORTS_END_START (0x20) is Broken (PAN 2.4) */ +#define NRF51_RADIO_SHORTS_ADDRESS_BCSTART 0x040 +#define NRF51_RADIO_SHORTS_DISABLED_RSSISTOP 0x100 + +/* CRC Status */ +#define NRF51_RADIO_CRCSTATUS_OK 0x1 + +/* Frequency (in MHz) */ +#define NRF51_RADIO_FREQUENCY_VAL(x) ((x) - 2400) + +/* TX Power */ +#define NRF51_RADIO_TXPOWER_POS_4_DBM 0x04 +#define NRF51_RADIO_TXPOWER_0_DBM 0x00 +#define NRF51_RADIO_TXPOWER_NEG_8_DBM 0xFC +#define NRF51_RADIO_TXPOWER_NEG_12_DBM 0xF8 +#define NRF51_RADIO_TXPOWER_NEG_16_DBM 0xF4 +#define NRF51_RADIO_TXPOWER_NEG_20_DBM 0xEC +#define NRF51_RADIO_TXPOWER_NEG_30_DBM 0xD8 + +/* TX Mode */ +#define NRF51_RADIO_MODE_BLE_1MBIT 0x03 + +/* PCNF0 Packet Configuration */ +#define NRF51_RADIO_PCNF0_LFLEN_SHIFT 0 +#define NRF51_RADIO_PCNF0_S0LEN_SHIFT 8 +#define NRF51_RADIO_PCNF0_S1LEN_SHIFT 16 + +/* PCNF1 Packet Configuration */ +#define NRF51_RADIO_PCNF1_MAXLEN_SHIFT 0 +#define NRF51_RADIO_PCNF1_STATLEN_SHIFT 8 +#define NRF51_RADIO_PCNF1_BALEN_SHIFT 16 +#define NRF51_RADIO_PCNF1_ENDIAN_BIG 0x1000000 +#define NRF51_RADIO_PCNF1_WHITEEN 0x2000000 + +/* PREFIX0 */ +#define NRF51_RADIO_PREFIX0_AP0_SHIFT 0 +#define NRF51_RADIO_PREFIX0_AP1_SHIFT 8 +#define NRF51_RADIO_PREFIX0_AP2_SHIFT 16 +#define NRF51_RADIO_PREFIX0_AP3_SHIFT 24 + +/* PREFIX1 */ +#define NRF51_RADIO_PREFIX1_AP4_SHIFT 0 +#define NRF51_RADIO_PREFIX1_AP5_SHIFT 8 +#define NRF51_RADIO_PREFIX1_AP6_SHIFT 16 +#define NRF51_RADIO_PREFIX1_AP7_SHIFT 24 + +/* CRCCNF */ +#define NRF51_RADIO_CRCCNF_SKIP_ADDR 0x100 + +/* TEST */ +#define NRF51_RADIO_TEST_CONST_CARRIER_EN 0x01 +#define NRF51_RADIO_TEST_PLL_LOCK_EN 0x02 + +/* STATE */ +#define NRF51_RADIO_STATE_DISABLED 0 +#define NRF51_RADIO_STATE_RXRU 1 +#define NRF51_RADIO_STATE_RXIDLE 2 +#define NRF51_RADIO_STATE_RX 3 +#define NRF51_RADIO_STATE_RXDISABLE 4 +#define NRF51_RADIO_STATE_TXRU 9 +#define NRF51_RADIO_STATE_TXIDLE 10 +#define NRF51_RADIO_STATE_TX 11 +#define NRF51_RADIO_STATE_TXDISABLE 12 + +/* DACNF */ +#define NRF51_RADIO_DACNF_ENA(n) (1 << (n)) +#define NRF51_RADIO_DACNF_TXADD(n) (1 << ((n)+8)) + +/* OVERRIDE4 */ +#define NRF51_RADIO_OVERRIDE_EN (1 << 31) + + +/* * UART */ #define NRF51_UART_BASE 0x40002000 |