Skip to content
si4463.h 39.9 KiB
Newer Older

#define PKT_CRC_CONFIG_SEED_0000        (0 << 7)
#define PKT_CRC_CONFIG_SEED_FFFF        (1 << 7)
#define PKT_CRC_CONFIG_POLY_NONE        (0 << 0)
#define PKT_CRC_CONFIG_POLY_ITU_T_CRC8  (1 << 0)
#define PKT_CRC_CONFIG_POLY_IEC_16      (2 << 0)
#define PKT_CRC_CONFIG_POLY_BAICHEVA_16 (3 << 0)
#define PKT_CRC_CONFIG_POLY_CRC_16_IBM  (4 << 0)
#define PKT_CRC_CONFIG_POLY_CCITT_16    (5 << 0)
#define PKT_CRC_CONFIG_POLY_KOOPMAN     (6 << 0)
#define PKT_CRC_CONFIG_POLY_IEEE_802_3  (7 << 0)
#define PKT_CRC_CONFIG_POLY_CASTAGNOLI  (8 << 0)
#define PKT_CRC_CONFIG_POLY_CRC_16_DNP  (9 << 0)

/* 0x1206 PKT_CONFIG1 */

#define PKT_CONFIG1_BIT_ORDER_MSBF  (0 << 0)
#define PKT_CONFIG1_BIT_ORDER_LSBF  (1 << 0)
#define PKT_CONFIG1_CRC_ENDIAN_LSBF (0 << 1)
#define PKT_CONFIG1_CRC_ENDIAN_MSBF (1 << 1)
#define PKT_CONFIG1_CRC_INVERT      (1 << 2)
#define PKT_CONFIG1_MANCH_POL_10    (0 << 3)
#define PKT_CONFIG1_MANCH_POL_01    (1 << 3)
#define PKT_CONFIG1_4FSK_EN         (1 << 5)
#define PKT_CONFIG1_PH_RX_DISABLE   (1 << 6)
#define PKT_CONFIG1_PH_FIELD_SPLIT  (1 << 7)


/* 0x1207 PKT_CONFIG2 */
/* Not in B1B */

/* 0x1208 PKT_LEN */

#define PKT_LEN_DST_FIELD_SHIFT 0
#define PKT_LEN_DST_FIELD_MASK  (7 << PKT_LEN_DST_FIELD_SHIFT)
#define PKT_LEN_IN_FIFO         (1<<3)
#define PKT_LEN_SIZE_1          (0<<4)
#define PKT_LEN_SIZE_2          (1<<4)
#define PKT_LEN_ENDIAN_LIL      (0<<5)
#define PKT_LEN_ENDIAN_BIG      (1<<5)

/* 0x1209 PKT_LEN_FIELD_SOURCE */

#define PKT_LEN_FIELD_SOURCE_SRC_FIELD_SHIFT 0
#define PKT_LEN_FIELD_SOURCE_SRC_FIELD_MASK  (7 << PKT_LEN_DST_FIELD_SHIFT)

/* 0x120F/13/17/1B/1F PKT_FIELD_X_CONFIG */

#define PKT_FIELD_CONFIG_MANCH    (1 << 0)
#define PKT_FIELD_CONFIG_WHITEN   (1 << 1)
#define PKT_FIELD_CONFIG_PN_START (1 << 2)
#define PKT_FIELD_CONFIG_4FSK     (1 << 4)

/* 0x1210/14/18/1C/20 PKT_FIELD_X_CRC_CONFIG */

#define PKT_FIELD_CRC_CONFIG_ENABLE (1 << 1)
#define PKT_FIELD_CRC_CONFIG_CHECK  (1 << 3)
#define PKT_FIELD_CRC_CONFIG_SEND   (1 << 5)
#define PKT_FIELD_CRC_CONFIG_START  (1 << 7)

/* 0x2000 PROP_MODEM_MOD_TYPE */

#define MOD_TYPE_TX_DIRECT_MODE_ASYNC      (1<<7) /* Async direct mode, else sync */
#define MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT 5
#define MOD_TYPE_TX_DIRECT_MODE_GPIO_MASK  (3 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_TX_DIRECT_MODE_GPIO(n)    (((n)&3) << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_SOURCE_SHIFT          3
#define MOD_TYPE_MOD_SOURCE_MASK           (3 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_SOURCE_PACKET         (0 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_SOURCE_DIRECT         (1 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_SOURCE_PSEUDO         (2 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_SHIFT            0
#define MOD_TYPE_MOD_TYPE_MASK             (7 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_CW               (0 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_OOK              (1 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_2FSK             (2 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_2GFSK            (3 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_4FSK             (4 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)
#define MOD_TYPE_MOD_TYPE_4GFSK            (5 << MOD_TYPE_TX_DIRECT_MODE_GPIO_SHIFT)

/* 0x2006 MODEM_TX_NCO_MODE */

#define MODEM_TX_NCO_MODE_TXOSR_SHIFT 2
#define MODEM_TX_NCO_MODE_TXOSR_MASK (3 << MODEM_TX_NCO_MODE_TXOSR_SHIFT)
#define MODEM_TX_NCO_MODE_TXOSR_10   (0 << MODEM_TX_NCO_MODE_TXOSR_SHIFT)
#define MODEM_TX_NCO_MODE_TXOSR_40   (1 << MODEM_TX_NCO_MODE_TXOSR_SHIFT) /* WARNING Yes, order is strange! */
#define MODEM_TX_NCO_MODE_TXOSR_20   (2 << MODEM_TX_NCO_MODE_TXOSR_SHIFT)

Sebastien Lorquet's avatar
Sebastien Lorquet committed
/* 0x2051 MODEM_CLKGEN_BAND */

#define MODEM_CLKGEN_BAND_SY_SEL         (1<<3) /* Select high performance mode (else low power) */
#define MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT 0
#define MODEM_CLKGEN_BAND_FVCO_DIV_MASK  (7 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT)
#define MODEM_CLKGEN_BAND_FVCO_DIV_4     (0 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/4. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_6     (1 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/6. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_8     (2 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/8. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_12    (3 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/12. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_16    (4 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/16. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_24    (5 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/24. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_24_2  (6 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/24. */
#define MODEM_CLKGEN_BAND_FVCO_DIV_24_3  (7 << MODEM_CLKGEN_BAND_FVCO_DIV_SHIFT) /* Output is FVCO/24. */

Sebastien Lorquet's avatar
Sebastien Lorquet committed
#endif /* __DRIVERS_WIRELESS_GENERIC_SI4463_H */