|  | /* ieee802154_cc2520_regs.h - Registers definition for TI CC2520 */ | 
|  |  | 
|  | /* | 
|  | * Copyright (c) 2016 Intel Corporation. | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #ifndef ZEPHYR_DRIVERS_IEEE802154_IEEE802154_CC2520_REGS_H_ | 
|  | #define ZEPHYR_DRIVERS_IEEE802154_IEEE802154_CC2520_REGS_H_ | 
|  |  | 
|  | /* Instructions (see chapter 13) */ | 
|  | #define CC2520_INS_SNOP				(0x00) | 
|  | #define CC2520_INS_IBUFLD			(0x02) | 
|  | #define CC2520_INS_SIBUFEX			(0x03) | 
|  | #define CC2520_INS_SSAMPLECCA			(0x04) | 
|  | #define CC2520_INS_SRES				(0x0F) | 
|  | #define CC2520_INS_MEMRD			(0x10) | 
|  | #define CC2520_INS_MEMWR			(0x20) | 
|  | #define CC2520_INS_RXBUF			(0x30) | 
|  | #define CC2520_INS_RXBUFCP			(0x38) | 
|  | #define CC2520_INS_RXBUFMOV			(0x32) | 
|  | #define CC2520_INS_TXBUF			(0x3A) | 
|  | #define CC2520_INS_TXBUFCP			(0x3E) | 
|  | #define CC2520_INS_RANDOM			(0x3C) | 
|  | #define CC2520_INS_SXOSCON			(0x40) | 
|  | #define CC2520_INS_STXCAL			(0x41) | 
|  | #define CC2520_INS_SRXON			(0x42) | 
|  | #define CC2520_INS_STXON			(0x43) | 
|  | #define CC2520_INS_STXONCCA			(0x44) | 
|  | #define CC2520_INS_SRFOFF			(0x45) | 
|  | #define CC2520_INS_SXOSCOFF			(0x46) | 
|  | #define CC2520_INS_SFLUSHRX			(0x47) | 
|  | #define CC2520_INS_SFLUSHTX			(0x48) | 
|  | #define CC2520_INS_SACK				(0x49) | 
|  | #define CC2520_INS_SACKPEND			(0x4A) | 
|  | #define CC2520_INS_SNACK			(0x4B) | 
|  | #define CC2520_INS_SRXMASKBITSET		(0x4C) | 
|  | #define CC2520_INS_SRXMASKBITCLR		(0x4D) | 
|  | #define CC2520_INS_RXMASKAND			(0x4E) | 
|  | #define CC2520_INS_RXMASKOR			(0x4F) | 
|  | #define CC2520_INS_MEMCP			(0x50) | 
|  | #define CC2520_INS_MEMCPR			(0x52) | 
|  | #define CC2520_INS_MEMXCP			(0x54) | 
|  | #define CC2520_INS_MEMXWR			(0x56) | 
|  | #define CC2520_INS_BCLR				(0x58) | 
|  | #define CC2520_INS_BSET				(0x59) | 
|  | #define CC2520_INS_CTR_UCTR			(0x60) | 
|  | #define CC2520_INS_CBCMAC			(0x64) | 
|  | #define CC2520_INS_UCBCMAC			(0x66) | 
|  | #define CC2520_INS_CCM				(0x68) | 
|  | #define CC2520_INS_UCCM				(0x6A) | 
|  | #define CC2520_INS_ECB				(0x70) | 
|  | #define CC2520_INS_ECBO				(0x72) | 
|  | #define CC2520_INS_ECBX				(0x74) | 
|  | #define CC2520_INS_INC				(0x78) | 
|  | #define CC2520_INS_ABORT			(0x7F) | 
|  | #define CC2520_INS_REGRD			(0x80) | 
|  | #define CC2520_INS_REGWR			(0xC0) | 
|  |  | 
|  | /* FREG registers (see chapter 28 part 3) */ | 
|  | #define CC2520_FREG_FRMFILT0			(0x00) | 
|  | #define FRMFILT0_FRAME_FILTER_EN		BIT(0) | 
|  | #define FRMFILT0_PAN_COORDINATOR		BIT(1) | 
|  | #define FRMFILT0_MAX_FRAME_VERSION(_mfv_)	(_mfv_ << 2) | 
|  |  | 
|  | #define CC2520_FREG_FRMFILT1			(0x01) | 
|  | #define FRMFILT1_ACCEPT_FT_0_BEACON		BIT(3) | 
|  | #define FRMFILT1_ACCEPT_FT_1_DATA		BIT(4) | 
|  | #define FRMFILT1_ACCEPT_FT_2_ACK		BIT(5) | 
|  | #define FRMFILT1_ACCEPT_FT_3_MAC_CMD		BIT(6) | 
|  | #define FRMFILT1_ACCEPT_ALL			(FRMFILT1_ACCEPT_FT_0_BEACON | \ | 
|  | FRMFILT1_ACCEPT_FT_1_DATA | \ | 
|  | FRMFILT1_ACCEPT_FT_2_ACK | \ | 
|  | FRMFILT1_ACCEPT_FT_3_MAC_CMD) | 
|  |  | 
|  | #define CC2520_FREG_SRCMATCH			(0x02) | 
|  | #define SRCMATCH_SRC_MATCH_EN			BIT(0) | 
|  | #define SRCMATCH_AUTOPEND			BIT(1) | 
|  | #define SRCMATCH_PEND_DATAREQ_ONLY		BIT(2) | 
|  | #define SRCMATCH_DEFAULTS			(SRCMATCH_SRC_MATCH_EN | \ | 
|  | SRCMATCH_AUTOPEND | \ | 
|  | SRCMATCH_PEND_DATAREQ_ONLY) | 
|  |  | 
|  | #define CC2520_FREG_SRCSHORTEN0			(0x04) | 
|  | #define CC2520_FREG_SRCSHORTEN1			(0x05) | 
|  | #define CC2520_FREG_SRCSHORTEN2			(0x06) | 
|  | #define CC2520_FREG_SRCEXTEN0			(0x08) | 
|  | #define CC2520_FREG_SRCEXTEN1			(0x09) | 
|  | #define CC2520_FREG_SRCEXTEN2			(0x0A) | 
|  |  | 
|  | #define CC2520_FREG_FRMCTRL0			(0x0C) | 
|  | #define FRMCTRL0_ENERGY_SCAN			BIT(4) | 
|  | #define FRMCTRL0_AUTOACK			BIT(5) | 
|  | #define FRMCTRL0_AUTOCRC			BIT(6) | 
|  | #define FRMCTRL0_APPEND_DATA_MODE		BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_FRMCTRL1			(0x0D) | 
|  | #define FRMCTRL1_SET_RXENMASK_ON_TX		BIT(0) | 
|  | #define FRMCTRL1_IGNORE_TX_UNDERF		BIT(1) | 
|  | #define FRMCTRL1_PENDING_OR			BIT(2) | 
|  |  | 
|  | #define CC2520_FREG_RXENABLE0			(0x0E) | 
|  | #define CC2520_FREG_RXENABLE1			(0x0F) | 
|  | #define CC2520_FREG_EXCFLAG0			(0x10) | 
|  | #define EXCFLAG0_RF_IDLE			BIT(0) | 
|  | #define EXCFLAG0_TX_FRM_DONE			BIT(1) | 
|  | #define EXCFLAG0_TX_ACK_DONE			BIT(2) | 
|  | #define EXCFLAG0_TX_UNDERFLOW			BIT(3) | 
|  | #define EXCFLAG0_TX_OVERFLOW			BIT(4) | 
|  | #define EXCFLAG0_RX_UNDERFLOW			BIT(5) | 
|  | #define EXCFLAG0_RX_OVERFLOW			BIT(6) | 
|  | #define EXCFLAG0_RXENABLE_ZERO			BIT(7) | 
|  | #define EXCFLAG0_RESET_TX_FLAGS			((uint8_t) \ | 
|  | ~(EXCFLAG0_TX_FRM_DONE | \ | 
|  | EXCFLAG0_TX_ACK_DONE | \ | 
|  | EXCFLAG0_TX_UNDERFLOW | \ | 
|  | EXCFLAG0_TX_OVERFLOW)) | 
|  | #define EXCFLAG0_RESET_RX_FLAGS			((uint8_t) \ | 
|  | ~(EXCFLAG0_RX_UNDERFLOW | \ | 
|  | EXCFLAG0_RX_OVERFLOW | \ | 
|  | EXCFLAG0_RXENABLE_ZERO)) | 
|  |  | 
|  | #define CC2520_FREG_EXCFLAG1			(0x11) | 
|  | #define EXCFLAG1_RX_FRM_DONE			BIT(0) | 
|  | #define EXCFLAG1_RX_FRM_ACCEPTED		BIT(1) | 
|  | #define EXCFLAG1_SRC_MATCH_DONE			BIT(2) | 
|  | #define EXCFLAG1_SRC_MATCH_FOUND		BIT(3) | 
|  | #define EXCFLAG1_FIFOP				BIT(4) | 
|  | #define EXCFLAG1_SFD				BIT(5) | 
|  | #define EXCFLAG1_DPU_DONE_L			BIT(6) | 
|  | #define EXCFLAG1_DPU_DONE_H			BIT(7) | 
|  | #define EXCFLAG1_RESET_RX_FLAGS			((uint8_t) \ | 
|  | ~(EXCFLAG1_RX_FRM_DONE | \ | 
|  | EXCFLAG1_RX_FRM_ACCEPTED | \ | 
|  | EXCFLAG1_FIFOP)) | 
|  |  | 
|  | #define CC2520_FREG_EXCFLAG2			(0x12) | 
|  | #define EXCFLAG2_MEMADDR_ERROR			BIT(0) | 
|  | #define EXCFLAG2_USAGE_ERROR			BIT(1) | 
|  | #define EXCFLAG2_OPERAND_ERROR			BIT(2) | 
|  | #define EXCFLAG2_SPI_ERROR			BIT(3) | 
|  | #define EXCFLAG2_RF_NO_LOCK			BIT(4) | 
|  | #define EXCFLAG2_RX_FRM_ABORTED			BIT(5) | 
|  | #define EXCFLAG2_RFBUFMOV_TIMEOUT		BIT(6) | 
|  | #define EXCFLAG2_UNUSED				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_EXMASKA0			(0x13) | 
|  | #define CC2520_FREG_EXMASKA1			(0x14) | 
|  | #define CC2520_FREG_EXMASKA2			(0x15) | 
|  | #define CC2520_FREG_EXMASKB0			(0x18) | 
|  | #define CC2520_FREG_EXMASKB1			(0x19) | 
|  | #define CC2520_FREG_EXMASKB2			(0x1A) | 
|  | #define CC2520_FREG_EXCBINDX0			(0x1C) | 
|  | #define CC2520_FREG_EXCBINDX1			(0x1D) | 
|  | #define CC2520_FREG_EXCBINDY0			(0x1E) | 
|  | #define CC2520_FREG_EXCBINDY1			(0x1F) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL0			(0x20) | 
|  | #define GPIOCTRL0_CTRL0(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL0_IN0				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL1			(0x21) | 
|  | #define GPIOCTRL1_CTRL1(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL1_IN1				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL2			(0x22) | 
|  | #define GPIOCTRL2_CTRL2(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL2_IN2				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL3			(0x23) | 
|  | #define GPIOCTRL3_CTRL3(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL3_IN3				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL4			(0x24) | 
|  | #define GPIOCTRL4_CTRL4(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL4_IN4				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL5			(0x25) | 
|  | #define GPIOCTRL5_CTRL5(_ctrl_)			(_ctrl_ & 0x7F) | 
|  | #define GPIOCTRL5_IN5				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_GPIOPOLARITY		(0x26) | 
|  | #define GPIOPOLARITY_POLARITY0			BIT(0) | 
|  | #define GPIOPOLARITY_POLARITY1			BIT(1) | 
|  | #define GPIOPOLARITY_POLARITY2			BIT(2) | 
|  | #define GPIOPOLARITY_POLARITY3			BIT(3) | 
|  | #define GPIOPOLARITY_POLARITY4			BIT(4) | 
|  | #define GPIOPOLARITY_POLARITY5			BIT(5) | 
|  |  | 
|  | #define CC2520_FREG_GPIOCTRL			(0x28) | 
|  | #define GPIOCTRL_GPIO_PUE0			BIT(0) | 
|  | #define GPIOCTRL_GPIO_PUE1			BIT(1) | 
|  | #define GPIOCTRL_GPIO_PUE2			BIT(2) | 
|  | #define GPIOCTRL_GPIO_PUE3			BIT(3) | 
|  | #define GPIOCTRL_GPIO_PUE4			BIT(4) | 
|  | #define GPIOCTRL_GPIO_PUE5			BIT(5) | 
|  | #define GPIOCTRL_GPIO_ACTRL			BIT(6) | 
|  | #define GPIOCTRL_SC				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_DPUCON			(0x2A) | 
|  | #define DPUCON_RXTIMEOUT			BIT(0) | 
|  |  | 
|  | #define CC2520_FREG_DPUSTAT			(0x2C) | 
|  | #define DPUSTAT_DPUL_ACTIVE			BIT(0) | 
|  | #define DPUSTAT_DPUH_ACTIVE			BIT(1) | 
|  | #define DPUSTAT_AUTHSTAT_L			BIT(2) | 
|  | #define DPUSTAT_AUTHSTAT_H			BIT(3) | 
|  |  | 
|  | #define CC2520_FREG_FREQCTRL			(0x2E) | 
|  | #define FREQCTRL_FREQ(_f_)			(_f_ & 0x7F) | 
|  |  | 
|  | #define CC2520_FREG_FREQTUNE			(0x2F) | 
|  | #define FREQTUNE_XOSC32M_TUNE(_xt_)		(_xt_ & 0x07) | 
|  |  | 
|  | #define CC2520_FREG_TXPOWER			(0x30) | 
|  | #define CC2520_FREG_TXCTRL			(0x31) | 
|  |  | 
|  | #define CC2520_FREG_FSMSTAT0			(0x32) | 
|  | #define FSMSTAT0_CAL_RUNNING			BIT(6) | 
|  | #define FSMSTAT0_CAL_DONE			BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_FSMSTAT1			(0x33) | 
|  | #define FSMSTAT1_RX_ACTIVE			BIT(0) | 
|  | #define FSMSTAT1_TX_ACTIVE			BIT(1) | 
|  | #define FSMSTAT1_LOCK_STATUS			BIT(2) | 
|  | #define FSMSTAT1_CCA_SAMPLED			BIT(3) | 
|  | #define FSMSTAT1_CCA				BIT(4) | 
|  | #define FSMSTAT1_SFD				BIT(5) | 
|  | #define FSMSTAT1_FIFOP				BIT(6) | 
|  | #define FSMSTAT1_FIFO				BIT(7) | 
|  |  | 
|  | #define CC2520_FREG_FIFOPCTRL			(0x34) | 
|  | #define FIFOPCTRL_FIFOP_THR(_ft_)		(_ft_ & 0x7F) | 
|  |  | 
|  | #define CC2520_FREG_FSMCTRL			(0x35) | 
|  | #define FSMCTRL_RX2RX_TIME_OFF			BIT(0) | 
|  | #define FSMCTRL_SLOTTED_ACK			BIT(1) | 
|  |  | 
|  | #define CC2520_FREG_CCACTRL0			(0x36) | 
|  | #define CC2520_FREG_CCACTRL1			(0x37) | 
|  | #define CCACTRL1_CCA_HYST(_ch_)			(_ch_ & 0x07) | 
|  | #define CCACTRL1_CCA_MODE(_cm_)			((_cm_ << 3) & 0x18) | 
|  |  | 
|  | #define CC2520_FREG_RSSI			(0x38) | 
|  | #define RSSI_RSSI_VALID				BIT(0) | 
|  |  | 
|  | #define CC2520_FREG_RSSISTAT			(0x39) | 
|  | #define CC2520_FREG_RXFIRST			(0x3C) | 
|  | #define CC2520_FREG_RXFIFOCNT			(0x3E) | 
|  | #define CC2520_FREG_TXFIFOCNT			(0x3F) | 
|  |  | 
|  |  | 
|  | /* SREG registers (see chapter 28 part 3) */ | 
|  | #define CC2520_SREG_CHIPID			(0x40) | 
|  | #define CC2520_SREG_VERSION			(0x42) | 
|  |  | 
|  | #define CC2520_SREG_EXTCLOCK			(0x44) | 
|  | #define EXTCLOCK_EXT_FREQ(_ef_)			(_ef_ & 0x1F) | 
|  | #define EXTCLOCK_EXTCLOCK_EN			BIT(5) | 
|  |  | 
|  | #define CC2520_SREG_MDMCTRL0			(0x46) | 
|  | #define MDMCTRL0_TX_FILTER			BIT(0) | 
|  | #define MDMCTRL0_PREAMBLE_LENGTH(_pl_)		((_pl_ << 1) & 0x1E) | 
|  | #define MDMCTRL0_DEMOD_AVG_MODE			BIT(5) | 
|  | #define MDMCTRL0_DEM_NUM_ZEROS(_dnz_)		((_dnz_ << 6) & 0xC0) | 
|  |  | 
|  | #define CC2520_SREG_MDMCTRL1			(0x47) | 
|  | #define MDMCTRL1_CORR_THR(_ct_)			(_ct_ & 0x1F) | 
|  | #define MDMCTRL1_CORR_THR_SFD			BIT(5) | 
|  |  | 
|  | #define CC2520_SREG_FREQEST			(0x48) | 
|  |  | 
|  | #define CC2520_SREG_MDMTEST1			(0x49) | 
|  | #define MDMTEST1_MODULATION_MODE		BIT(1) | 
|  | #define MDMTEST1_RFC_SNIFF_EN			BIT(2) | 
|  |  | 
|  | #define CC2520_SREG_RXCTRL			(0x4A) | 
|  | #define CC2520_SREG_FSCTRL			(0x4C) | 
|  | #define CC2520_SREG_FSCAL0			(0x4E) | 
|  | #define CC2520_SREG_FSCAL1			(0x4F) | 
|  | #define CC2520_SREG_FSCAL2			(0x50) | 
|  | #define CC2520_SREG_FSCAL3			(0x51) | 
|  | #define CC2520_SREG_AGCCTRL0			(0x52) | 
|  | #define CC2520_SREG_AGCCTRL1			(0x53) | 
|  | #define CC2520_SREG_AGCCTRL2			(0x54) | 
|  | #define CC2520_SREG_AGCCTRL3			(0x55) | 
|  | #define CC2520_SREG_ADCTEST0			(0x56) | 
|  | #define CC2520_SREG_ADCTEST1			(0x57) | 
|  | #define CC2520_SREG_ADCTEST2			(0x58) | 
|  | #define CC2520_SREG_MDMTEST0			(0x5A) | 
|  | #define CC2520_SREG_DACTEST0			(0x5C) | 
|  | #define CC2520_SREG_DACTEST1			(0x5D) | 
|  | #define CC2520_SREG_ATEST			(0x5E) | 
|  | #define CC2520_SREG_DACTEST2			(0x5F) | 
|  | #define CC2520_SREG_PTEST0			(0x60) | 
|  | #define CC2520_SREG_PTEST1			(0x61) | 
|  | #define CC2520_SREG_DPUBIST			(0x7A) | 
|  | #define CC2520_SREG_ACTBIST			(0x7C) | 
|  | #define CC2520_SREG_RAMBIST			(0x7E) | 
|  |  | 
|  | /* Useful RAM addresses (see chapter 15 part 6) */ | 
|  | #define CC2520_MEM_SHORT_ADDR			(0x03F4) | 
|  | #define CC2520_MEM_PAN_ID			(0x03F2) | 
|  | #define CC2520_MEM_EXT_ADDR			(0x03EA) | 
|  | #define CC2520_MEM_SRCSHORTPENDEN2		(0x03E9) | 
|  | #define CC2520_MEM_SRCSHORTPENDEN1		(0x03E8) | 
|  | #define CC2520_MEM_SRCSHORTPENDEN0		(0x03E7) | 
|  | #define CC2520_MEM_SRCEXTPENDEN2		(0x03E6) | 
|  | #define CC2520_MEM_SRCEXTPENDEN1		(0x03E5) | 
|  | #define CC2520_MEM_SRCEXTPENDEN0		(0x03E4) | 
|  | #define CC2520_MEM_SRCRESINDEX			(0x03E3) | 
|  | #define CC2520_MEM_SRCRESMASK2			(0x03E2) | 
|  | #define CC2520_MEM_SRCRESMASK1			(0x03E1) | 
|  | #define CC2520_MEM_SRCRESMASK0			(0x03E0) | 
|  |  | 
|  | #define CC2520_MEM_START			(0x0200) | 
|  | #define CC2520_MEM_DATA				(CC2520_MEM_START) | 
|  | #define CC2520_MEM_KEY_POS			(0x90) | 
|  | #define CC2520_MEM_KEY				(CC2520_MEM_START +	\ | 
|  | CC2520_MEM_KEY_POS) | 
|  | #define CC2520_MEM_NONCE_POS			(0xa0) | 
|  | #define CC2520_MEM_NONCE			(CC2520_MEM_START +	\ | 
|  | CC2520_MEM_NONCE_POS) | 
|  |  | 
|  | /* Default settings (see chapter 28 part 1) */ | 
|  | #define CC2520_TXPOWER_DEFAULT			(0x32) | 
|  | #define CC2520_CCACTRL0_DEFAULT			(0xF8) | 
|  | #define CC2520_MDMCTRL0_DEFAULT			(0x85) | 
|  | #define CC2520_MDMCTRL1_DEFAULT			(0x14) | 
|  | #define CC2520_RXCTRL_DEFAULT			(0x3F) | 
|  | #define CC2520_FSCTRL_DEFAULT			(0x5A) | 
|  | #define CC2520_FSCAL1_DEFAULT			(0x2B) | 
|  | #define CC2520_AGCCTRL1_DEFAULT			(0x11) | 
|  | #define CC2520_ADCTEST0_DEFAULT			(0x10) | 
|  | #define CC2520_ADCTEST1_DEFAULT			(0x0E) | 
|  | #define CC2520_ADCTEST2_DEFAULT			(0x03) | 
|  |  | 
|  | /* Status bits (see chapter 13 part 4) */ | 
|  | #define CC2520_STATUS_RX_ACTIVE			BIT(0) | 
|  | #define CC2520_STATUS_TX_ACTIVE			BIT(1) | 
|  | #define CC2520_STATUS_DPU_L_ACTIVE		BIT(2) | 
|  | #define CC2520_STATUS_DPU_H_ACTIVE		BIT(3) | 
|  | #define CC2520_STATUS_EXCEPTION_CHANNEL_B	BIT(4) | 
|  | #define CC2520_STATUS_EXCEPTION_CHANNEL_A	BIT(5) | 
|  | #define CC2520_STATUS_RSSI_VALID		BIT(6) | 
|  | #define CC2520_STATUS_XOSC_STABLE_N_RUNNING	BIT(7) | 
|  |  | 
|  | #define CC2520_FCS_CRC_OK			(0x80) | 
|  | #define CC2520_FCS_CORRELATION			(0x7f) | 
|  |  | 
|  | #endif /* ZEPHYR_DRIVERS_IEEE802154_IEEE802154_CC2520_REGS_H_ */ |