/* -*- mode: c -*- */ #ifndef __MAX2837_REGS_DEF #define __MAX2837_REGS_DEF /* Generate static inline accessors that operate on the global * regs. Done this way to (1) allow defs to be scraped out and used * elsewhere, e.g. in scripts, (2) to avoid dealing with endian * (structs). This may be used in firmware, or on host predefined * register loads. */ #define MAX2837_REG_SET_CLEAN(_d, _r) (_d->regs_dirty &= ~(1UL<<_r)) #define MAX2837_REG_SET_DIRTY(_d, _r) (_d->regs_dirty |= (1UL<<_r)) /* On set_, register is always set dirty, even if nothing * changed. This makes sure that write that have side effects, * e.g. frequency setting, are not skipped. */ /* n=name, r=regnum, o=offset (bits from LSB), l=length (bits) */ #define __MREG__(n,r,o,l) \ static inline uint16_t get_##n(max2837_driver_t* const _d) { \ return (_d->regs[r] >> (o-l+1)) & ((1<regs[r] &= ~(((1<regs[r] |= ((v&((1< 992/0uA correction, 15 -> 0/992uA correction ... if TX_DCCORR_SPI_EN __MREG__(MAX2837_TX_DCCORR_I,31,4,5) __MREG__(MAX2837_TX_DCCORR_Q,31,9,5) #endif // __MAX2837_REGS_DEF