[BACK]Return to sa2400reg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/sa2400reg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: sa2400reg.h,v 1.1 2004/12/29 01:02:31 jsg Exp $       */
                      2: /* $NetBSD: sa2400reg.h,v 1.2 2004/12/12 06:37:59 dyoung Exp $ */
                      3:
                      4: /*
                      5:  * Copyright (c) 2005 David Young.  All rights reserved.
                      6:  *
                      7:  * This code was written by David Young.
                      8:  *
                      9:  * Redistribution and use in source and binary forms, with or without
                     10:  * modification, are permitted provided that the following conditions
                     11:  * are met:
                     12:  * 1. Redistributions of source code must retain the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer.
                     14:  * 2. Redistributions in binary form must reproduce the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer in the
                     16:  *    documentation and/or other materials provided with the distribution.
                     17:  * 3. Neither the name of the author nor the names of any co-contributors
                     18:  *    may be used to endorse or promote products derived from this software
                     19:  *    without specific prior written permission.
                     20:  *
                     21:  * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
                     22:  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
                     23:  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                     24:  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL David
                     25:  * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
                     26:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
                     27:  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
                     29:  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
                     30:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
                     32:  * OF SUCH DAMAGE.
                     33:  */
                     34:
                     35: #ifndef _DEV_IC_SA2400REG_H_
                     36: #define        _DEV_IC_SA2400REG_H_
                     37:
                     38: /*
                     39:  * Serial bus format for Philips SA2400 Single-chip Transceiver.
                     40:  */
                     41: #define SA2400_TWI_DATA_MASK   BITS(31,8)
                     42: #define SA2400_TWI_WREN                BIT(7)          /* enable write */
                     43: #define SA2400_TWI_ADDR_MASK   BITS(6,0)
                     44:
                     45: /*
                     46:  * Registers for Philips SA2400 Single-chip Transceiver.
                     47:  */
                     48: #define SA2400_SYNA            0               /* Synthesizer Register A */
                     49: #define SA2400_SYNA_FM         BIT(21)         /* fractional modulus select,
                     50:                                                 * 0: /8 (default)
                     51:                                                 * 1: /5
                     52:                                                 */
                     53: #define        SA2400_SYNA_NF_MASK     BITS(20,18)     /* fractional increment value,
                     54:                                                 * 0 to 7, default 4
                     55:                                                 */
                     56: #define        SA2400_SYNA_N_MASK      BITS(17,2)      /* main divider division ratio,
                     57:                                                 * 512 to 65535, default 615
                     58:                                                 */
                     59:
                     60: #define SA2400_SYNB            1               /* Synthesizer Register B */
                     61: #define SA2400_SYNB_R_MASK     BITS(21,12)     /* reference divider ratio,
                     62:                                                 * 4 to 1023, default 11
                     63:                                                 */
                     64: #define SA2400_SYNB_L_MASK     BITS(11,10)     /* lock detect mode */
                     65: #define SA2400_SYNB_L_INACTIVE0        LSHIFT(0, SA2400_SYNB_L_MASK)
                     66: #define SA2400_SYNB_L_INACTIVE1        LSHIFT(1, SA2400_SYNB_L_MASK)
                     67: #define SA2400_SYNB_L_NORMAL   LSHIFT(2, SA2400_SYNB_L_MASK)
                     68: #define SA2400_SYNB_L_INACTIVE2        LSHIFT(3, SA2400_SYNB_L_MASK)
                     69:
                     70: #define        SA2400_SYNB_ON          BIT(9)          /* power on/off,
                     71:                                                 * 0: inverted chip mode control
                     72:                                                 * 1: as defined by chip mode
                     73:                                                 *    (see SA2400_OPMODE)
                     74:                                                 */
                     75: #define        SA2400_SYNB_ONE         BIT(8)          /* always 1 */
                     76: #define        SA2400_SYNB_FC_MASK     BITS(7,0)       /* fractional compensation
                     77:                                                 * charge pump current DAC,
                     78:                                                 * 0 to 255, default 80.
                     79:                                                 */
                     80:
                     81: #define SA2400_SYNC            2               /* Synthesizer Register C */
                     82: #define SA2400_SYNC_CP_MASK    BITS(7,6)       /* charge pump current
                     83:                                                 * setting
                     84:                                                 */
                     85: #define SA2400_SYNC_CP_NORMAL_ LSHIFT(0, SA2400_SYNC_CP_MASK)
                     86: #define SA2400_SYNC_CP_THIRD_  LSHIFT(1, SA2400_SYNC_CP_MASK)
                     87: #define SA2400_SYNC_CP_NORMAL  LSHIFT(2, SA2400_SYNC_CP_MASK) /* recommended */
                     88: #define SA2400_SYNC_CP_THIRD   LSHIFT(3, SA2400_SYNC_CP_MASK)
                     89:
                     90: #define SA2400_SYNC_SM_MASK    BITS(5,3)       /* comparison divider select,
                     91:                                                 * 0 to 4, extra division
                     92:                                                 * ratio is 2**SM.
                     93:                                                 */
                     94: #define SA2400_SYNC_ZERO       BIT(2)          /* always 0 */
                     95:
                     96: #define SA2400_SYND            3               /* Synthesizer Register D */
                     97: #define SA2400_SYND_ZERO1_MASK BITS(21,17)     /* always 0 */
                     98: #define SA2400_SYND_TPHPSU     BIT(16)         /* T[phpsu], 1: disable
                     99:                                                 * PHP speedup pump,
                    100:                                                 * overrides SA2400_SYND_TSPU
                    101:                                                 */
                    102: #define SA2400_SYND_TPSU       BIT(15)         /* T[spu], 1: speedup on,
                    103:                                                 * 0: speedup off
                    104:                                                 */
                    105: #define SA2400_SYND_ZERO2_MASK BITS(14,3)      /* always 0 */
                    106:
                    107: #define        SA2400_OPMODE           4               /* Operating mode, filter tuner,
                    108:                                                 * other controls
                    109:                                                 */
                    110: #define SA2400_OPMODE_ADC      BIT(19) /* 1: in Rx mode, RSSI-ADC always on
                    111:                                         * 0: RSSI-ADC only on during AGC
                    112:                                         */
                    113: #define SA2400_OPMODE_FTERR    BIT(18) /* read-only filter tuner error:
                    114:                                         * 1 if tuner out of range
                    115:                                         */
                    116: /* Rx & Tx filter tuning, write tuning value (test mode only) or
                    117:  * read tuner setting (in normal mode).
                    118:  */
                    119: #define SA2400_OPMODE_FILTTUNE_MASK    BITS(17,15)
                    120:
                    121: #define SA2400_OPMODE_V2P5     BIT(14) /* external reference voltage
                    122:                                         * (pad v2p5) on
                    123:                                         */
                    124: #define SA2400_OPMODE_I1M      BIT(13) /* external reference current ... */
                    125: #define SA2400_OPMODE_I0P3     BIT(12) /* external reference current ... */
                    126: #define SA2400_OPMODE_IN22     BIT(10) /* xtal input frequency,
                    127:                                         * 0: 44 MHz
                    128:                                         * 1: 22 MHz
                    129:                                         */
                    130: #define SA2400_OPMODE_CLK      BIT(9)  /* reference clock output on */
                    131: #define SA2400_OPMODE_XO       BIT(8)  /* xtal oscillator on */
                    132: #define SA2400_OPMODE_DIGIN    BIT(7)  /* use digital Tx inputs (FIRDAC) */
                    133: #define SA2400_OPMODE_RXLV     BIT(6)  /* Rx output common mode voltage,
                    134:                                         * 0: V[DD]/2
                    135:                                         * 1: 1.25V
                    136:                                         */
                    137: #define SA2400_OPMODE_VEO       BIT(5) /* make internal vco
                    138:                                         * available at vco pads (vcoextout)
                    139:                                         */
                    140: #define SA2400_OPMODE_VEI      BIT(4)  /* use external vco input (vcoextin) */
                    141: /* main operating mode */
                    142: #define SA2400_OPMODE_MODE_MASK                BITS(3,0)
                    143: #define SA2400_OPMODE_MODE_SLEEP       LSHIFT(0, SA2400_OPMODE_MODE_MASK)
                    144: #define SA2400_OPMODE_MODE_TXRX                LSHIFT(1, SA2400_OPMODE_MODE_MASK)
                    145: #define SA2400_OPMODE_MODE_WAIT                LSHIFT(2, SA2400_OPMODE_MODE_MASK)
                    146: #define SA2400_OPMODE_MODE_RXMGC       LSHIFT(3, SA2400_OPMODE_MODE_MASK)
                    147: #define SA2400_OPMODE_MODE_FCALIB      LSHIFT(4, SA2400_OPMODE_MODE_MASK)
                    148: #define SA2400_OPMODE_MODE_DCALIB      LSHIFT(5, SA2400_OPMODE_MODE_MASK)
                    149: #define SA2400_OPMODE_MODE_FASTTXRXMGC LSHIFT(6, SA2400_OPMODE_MODE_MASK)
                    150: #define SA2400_OPMODE_MODE_RESET       LSHIFT(7, SA2400_OPMODE_MODE_MASK)
                    151: #define SA2400_OPMODE_MODE_VCOCALIB    LSHIFT(8, SA2400_OPMODE_MODE_MASK)
                    152:
                    153: #define        SA2400_OPMODE_DEFAULTS                                          \
                    154:        (SA2400_OPMODE_XO | SA2400_OPMODE_RXLV | SA2400_OPMODE_CLK |    \
                    155:         SA2400_OPMODE_I0P3 | LSHIFT(3, SA2400_OPMODE_FILTTUNE_MASK))
                    156:
                    157: #define        SA2400_AGC              5               /* AGC adjustment */
                    158: #define SA2400_AGC_TARGETSIGN  BIT(23)         /* fine-tune AGC target:
                    159:                                                 * -7dB to 7dB, sign bit ... */
                    160: #define SA2400_AGC_TARGET_MASK BITS(22,20)     /* ... plus 0dB - 7dB */
                    161: #define SA2400_AGC_MAXGAIN_MASK        BITS(19,15)     /* maximum AGC gain, 0 to 31,
                    162:                                                 * (yields 54dB to 85dB)
                    163:                                                 */
                    164: /* write: settling time after baseband gain switching, units of
                    165:  *        182 nanoseconds.
                    166:  * read:  output of RSSI/Tx-peak detector's ADC in 5-bit Gray code.
                    167:  */
                    168: #define SA2400_AGC_BBPDELAY_MASK       BITS(14,10)
                    169: #define SA2400_AGC_ADCVAL_MASK         SA2400_AGC_BBPDELAY_MASK
                    170:
                    171: /* write: settling time after LNA gain switching, units of
                    172:  *        182 nanoseconds
                    173:  * read:  2nd sample of RSSI in AGC cycle
                    174:  */
                    175: #define SA2400_AGC_LNADELAY_MASK       BITS(9,5)
                    176: #define SA2400_AGC_SAMPLE2_MASK                SA2400_AGC_LNADELAY_MASK
                    177:
                    178: /* write: time between turning on Rx and AGCSET, units of
                    179:  *        182 nanoseconds
                    180:  * read:  1st sample of RSSI in AGC cycle
                    181:  */
                    182: #define SA2400_AGC_RXONDELAY_MASK      BITS(4,0)
                    183: #define SA2400_AGC_SAMPLE1_MASK                SA2400_AGC_RXONDELAY_MASK
                    184:
                    185: #define SA2400_MANRX           6       /* Manual receiver control settings */
                    186: #define SA2400_MANRX_AHSN      BIT(23) /* 1: AGC w/ high S/N---switch LNA at
                    187:                                         *    step 52 (recommended)
                    188:                                         * 0: switch LNA at step 60
                    189:                                         */
                    190:
                    191: /* If _RXOSQON, Q offset is
                    192:  * (_RXOSQSIGN ? -1 : 1) * (1 + _RXOSQ_MASK) * 8 millivolts,
                    193:  * otherwise, Q offset is 0.
                    194:  *
                    195:  * Ditto I offset.
                    196:  */
                    197: #define SA2400_MANRX_RXOSQON   BIT(22)         /* Rx Q-channel correction. */
                    198: #define SA2400_MANRX_RXOSQSIGN BIT(21)
                    199: #define SA2400_MANRX_RXOSQ_MASK        BITS(20,18)
                    200:
                    201: #define SA2400_MANRX_RXOSION   BIT(17)         /* Rx I-channel correction. */
                    202: #define SA2400_MANRX_RXOSISIGN BIT(16)
                    203: #define SA2400_MANRX_RXOSI_MASK        BITS(15,13)
                    204: #define SA2400_MANRX_TEN       BIT(12)         /* use 10MHz offset cancellation
                    205:                                                 * cornerpoint for brief period
                    206:                                                 * after each gain change
                    207:                                                 */
                    208:
                    209: /* DC offset cancellation cornerpoint select
                    210:  * write: in RXMGC, set the cornerpoint
                    211:  * read:  in other modes, read AGC-controlled cornerpoint
                    212:  */
                    213: #define SA2400_MANRX_CORNERFREQ_MASK   BITS(11,10)
                    214:
                    215: /* write: in RXMGC mode, sets receiver gain
                    216:  * read:  in other modes, read AGC-controlled gain
                    217:  */
                    218: #define SA2400_MANRX_RXGAIN_MASK       BITS(9,0)
                    219:
                    220: #define SA2400_TX      7               /* Transmitter settings */
                    221: /* Tx offsets
                    222:  *
                    223:  * write: in test mode, sets the offsets
                    224:  * read:  in normal mode, returns automatic settings
                    225:  */
                    226: #define SA2400_TX_TXOSQON      BIT(19)
                    227: #define SA2400_TX_TXOSQSIGN    BIT(18)
                    228: #define SA2400_TX_TXOSQ_MASK   BITS(17,15)
                    229: #define SA2400_TX_TXOSION      BIT(14)
                    230: #define SA2400_TX_TXOSISIGN    BIT(13)
                    231: #define SA2400_TX_TXOSI_MASK   BITS(12,10)
                    232:
                    233: #define SA2400_TX_RAMP_MASK    BITS(9,8)       /* Ramp-up delay,
                    234:                                                 * 0: 1us
                    235:                                                 * 1: 2us
                    236:                                                 * 2: 3us
                    237:                                                 * 3: 4us
                    238:                                                 * datasheet says, "ramp-up
                    239:                                                 * time always 1us". huh?
                    240:                                                 */
                    241: #define SA2400_TX_HIGAIN_MASK  BITS(7,4)       /* Transmitter gain settings
                    242:                                                 * for TXHI output
                    243:                                                 */
                    244: #define SA2400_TX_LOGAIN_MASK  BITS(3,0)       /* Transmitter gain settings
                    245:                                                 * for TXLO output
                    246:                                                 */
                    247:
                    248: #define SA2400_VCO     8                       /* VCO settings */
                    249: #define SA2400_VCO_ZERO                BITS(6,5)       /* always zero */
                    250: #define SA2400_VCO_VCERR       BIT(4)  /* VCO calibration error flag---no
                    251:                                         * band with low enough frequency
                    252:                                         * could be found
                    253:                                         */
                    254: #define SA2400_VCO_VCOBAND_MASK        BITS(3,0)       /* VCO band,
                    255:                                                 * write: in test mode, sets
                    256:                                                 *        VCO band
                    257:                                                 * read:  in normal mode,
                    258:                                                 *        the result of
                    259:                                                 *        calibration (VCOCAL).
                    260:                                                 *        0 = highest
                    261:                                                 *        frequencies
                    262:                                                 */
                    263: #endif /* _DEV_IC_SA2400REG_H_ */

CVSweb