123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596 |
- #ifndef __LINUX_TAVARUA_H
- #define __LINUX_TAVARUA_H
- #ifdef __KERNEL__
- #include <linux/types.h>
- #include <asm/sizes.h>
- #else
- #include <stdint.h>
- #endif
- #include <linux/ioctl.h>
- #include <linux/videodev2.h>
- #undef FM_DEBUG
- /* constants */
- #define RDS_BLOCKS_NUM (4)
- #define BYTES_PER_BLOCK (3)
- #define MAX_PS_LENGTH (96)
- #define MAX_RT_LENGTH (64)
- #define RX_STATIONS0_LEN (15)
- #define XFRDAT0 (0x20)
- #define XFRDAT1 (0x21)
- #define XFRDAT2 (0x22)
- #define INTDET_PEEK_MSB (0x88)
- #define INTDET_PEEK_LSB (0x26)
- #define RMSSI_PEEK_MSB (0x88)
- #define RMSSI_PEEK_LSB (0xA8)
- #define MPX_DCC_BYPASS_POKE_MSB (0x88)
- #define MPX_DCC_BYPASS_POKE_LSB (0xC0)
- #define MPX_DCC_PEEK_MSB_REG1 (0x88)
- #define MPX_DCC_PEEK_LSB_REG1 (0xC2)
- #define MPX_DCC_PEEK_MSB_REG2 (0x88)
- #define MPX_DCC_PEEK_LSB_REG2 (0xC3)
- #define MPX_DCC_PEEK_MSB_REG3 (0x88)
- #define MPX_DCC_PEEK_LSB_REG3 (0xC4)
- #define ON_CHANNEL_TH_MSB (0x0B)
- #define ON_CHANNEL_TH_LSB (0xA8)
- #define OFF_CHANNEL_TH_MSB (0x0B)
- #define OFF_CHANNEL_TH_LSB (0xAC)
- #define ENF_200Khz (1)
- #define SRCH200KHZ_OFFSET (7)
- #define SRCH_MASK (1 << SRCH200KHZ_OFFSET)
- /* Standard buffer size */
- #define STD_BUF_SIZE (256)
- /* Search direction */
- #define SRCH_DIR_UP (0)
- #define SRCH_DIR_DOWN (1)
- /* control options */
- #define CTRL_ON (1)
- #define CTRL_OFF (0)
- #define US_LOW_BAND (87.5)
- #define US_HIGH_BAND (108)
- /* constant for Tx */
- #define MASK_PI (0x0000FFFF)
- #define MASK_PI_MSB (0x0000FF00)
- #define MASK_PI_LSB (0x000000FF)
- #define MASK_PTY (0x0000001F)
- #define MASK_TXREPCOUNT (0x0000000F)
- #undef FMDBG
- #ifdef FM_DEBUG
- #define FMDBG(fmt, args...) printk(KERN_INFO "tavarua_radio: " fmt, ##args)
- #else
- #define FMDBG(fmt, args...)
- #endif
- #undef FMDERR
- #define FMDERR(fmt, args...) printk(KERN_INFO "tavarua_radio: " fmt, ##args)
- #undef FMDBG_I2C
- #ifdef FM_DEBUG_I2C
- #define FMDBG_I2C(fmt, args...) printk(KERN_INFO "fm_i2c: " fmt, ##args)
- #else
- #define FMDBG_I2C(fmt, args...)
- #endif
- /* function declarations */
- /* FM Core audio paths. */
- #define TAVARUA_AUDIO_OUT_ANALOG_OFF (0)
- #define TAVARUA_AUDIO_OUT_ANALOG_ON (1)
- #define TAVARUA_AUDIO_OUT_DIGITAL_OFF (0)
- #define TAVARUA_AUDIO_OUT_DIGITAL_ON (1)
- int tavarua_set_audio_path(int digital_on, int analog_on);
- /* defines and enums*/
- #define MARIMBA_A0 0x01010013
- #define MARIMBA_2_1 0x02010204
- #define BAHAMA_1_0 0x0302010A
- #define BAHAMA_2_0 0x04020205
- #define BAHAMA_2_1 0x04020309
- #define WAIT_TIMEOUT 2000
- #define RADIO_INIT_TIME 15
- #define TAVARUA_DELAY 10
- /*
- * The frequency is set in units of 62.5 Hz when using V4L2_TUNER_CAP_LOW,
- * 62.5 kHz otherwise.
- * The tuner is able to have a channel spacing of 50, 100 or 200 kHz.
- * tuner->capability is therefore set to V4L2_TUNER_CAP_LOW
- * The FREQ_MUL is then: 1 MHz / 62.5 Hz = 16000
- */
- #define FREQ_MUL (1000000 / 62.5)
- enum v4l2_cid_private_tavarua_t {
- V4L2_CID_PRIVATE_TAVARUA_SRCHMODE = (V4L2_CID_PRIVATE_BASE + 1),
- V4L2_CID_PRIVATE_TAVARUA_SCANDWELL,
- V4L2_CID_PRIVATE_TAVARUA_SRCHON,
- V4L2_CID_PRIVATE_TAVARUA_STATE,
- V4L2_CID_PRIVATE_TAVARUA_TRANSMIT_MODE,
- V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK,
- V4L2_CID_PRIVATE_TAVARUA_REGION,
- V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH,
- V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY,
- V4L2_CID_PRIVATE_TAVARUA_SRCH_PI,
- V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT,
- V4L2_CID_PRIVATE_TAVARUA_EMPHASIS,
- V4L2_CID_PRIVATE_TAVARUA_RDS_STD,
- V4L2_CID_PRIVATE_TAVARUA_SPACING,
- V4L2_CID_PRIVATE_TAVARUA_RDSON,
- V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC,
- V4L2_CID_PRIVATE_TAVARUA_LP_MODE,
- V4L2_CID_PRIVATE_TAVARUA_ANTENNA,
- V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF,
- V4L2_CID_PRIVATE_TAVARUA_PSALL,
- /*v4l2 Tx controls*/
- V4L2_CID_PRIVATE_TAVARUA_TX_SETPSREPEATCOUNT,
- V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_PS_NAME,
- V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_RT,
- V4L2_CID_PRIVATE_TAVARUA_IOVERC,
- V4L2_CID_PRIVATE_TAVARUA_INTDET,
- V4L2_CID_PRIVATE_TAVARUA_MPX_DCC,
- V4L2_CID_PRIVATE_TAVARUA_AF_JUMP,
- V4L2_CID_PRIVATE_TAVARUA_RSSI_DELTA,
- V4L2_CID_PRIVATE_TAVARUA_HLSI,
- /*
- * Here we have IOCTl's that are specific to IRIS
- * (V4L2_CID_PRIVATE_BASE + 0x1E to V4L2_CID_PRIVATE_BASE + 0x28)
- */
- V4L2_CID_PRIVATE_SOFT_MUTE,/* 0x800001E*/
- V4L2_CID_PRIVATE_RIVA_ACCS_ADDR,
- V4L2_CID_PRIVATE_RIVA_ACCS_LEN,
- V4L2_CID_PRIVATE_RIVA_PEEK,
- V4L2_CID_PRIVATE_RIVA_POKE,
- V4L2_CID_PRIVATE_SSBI_ACCS_ADDR,
- V4L2_CID_PRIVATE_SSBI_PEEK,
- V4L2_CID_PRIVATE_SSBI_POKE,
- V4L2_CID_PRIVATE_TX_TONE,
- V4L2_CID_PRIVATE_RDS_GRP_COUNTERS,
- V4L2_CID_PRIVATE_SET_NOTCH_FILTER,/* 0x8000028 */
- V4L2_CID_PRIVATE_TAVARUA_SET_AUDIO_PATH,/* 0x8000029 */
- V4L2_CID_PRIVATE_TAVARUA_DO_CALIBRATION,/* 0x800002A : IRIS */
- V4L2_CID_PRIVATE_TAVARUA_SRCH_ALGORITHM,/* 0x800002B */
- V4L2_CID_PRIVATE_IRIS_GET_SINR, /* 0x800002C : IRIS */
- V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD, /* 0x800002D */
- V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD, /* 0x800002E */
- V4L2_CID_PRIVATE_SINR_THRESHOLD, /* 0x800002F : IRIS */
- V4L2_CID_PRIVATE_SINR_SAMPLES, /* 0x8000030 : IRIS */
- V4L2_CID_PRIVATE_SPUR_FREQ,
- V4L2_CID_PRIVATE_SPUR_FREQ_RMSSI,
- V4L2_CID_PRIVATE_SPUR_SELECTION,
- V4L2_CID_PRIVATE_UPDATE_SPUR_TABLE,
- V4L2_CID_PRIVATE_VALID_CHANNEL,
- };
- enum tavarua_buf_t {
- TAVARUA_BUF_SRCH_LIST,
- TAVARUA_BUF_EVENTS,
- TAVARUA_BUF_RT_RDS,
- TAVARUA_BUF_PS_RDS,
- TAVARUA_BUF_RAW_RDS,
- TAVARUA_BUF_AF_LIST,
- TAVARUA_BUF_MAX
- };
- enum tavarua_xfr_t {
- TAVARUA_XFR_SYNC,
- TAVARUA_XFR_ERROR,
- TAVARUA_XFR_SRCH_LIST,
- TAVARUA_XFR_RT_RDS,
- TAVARUA_XFR_PS_RDS,
- TAVARUA_XFR_AF_LIST,
- TAVARUA_XFR_MAX
- };
- enum channel_spacing {
- FM_CH_SPACE_200KHZ,
- FM_CH_SPACE_100KHZ,
- FM_CH_SPACE_50KHZ
- };
- enum step_size {
- NO_SRCH200khz,
- ENF_SRCH200khz
- };
- enum emphasis {
- EMP_75,
- EMP_50
- };
- enum rds_std {
- RBDS_STD,
- RDS_STD
- };
- /* offsets */
- #define RAW_RDS 0x0F
- #define RDS_BLOCK 3
- /* registers*/
- #define MARIMBA_XO_BUFF_CNTRL 0x07
- #define RADIO_REGISTERS 0x30
- #define XFR_REG_NUM 16
- #define STATUS_REG_NUM 3
- /* TX constants */
- #define HEADER_SIZE 4
- #define TX_ON 0x80
- #define TAVARUA_TX_RT RDS_RT_0
- #define TAVARUA_TX_PS RDS_PS_0
- enum register_t {
- STATUS_REG1 = 0,
- STATUS_REG2,
- STATUS_REG3,
- RDCTRL,
- FREQ,
- TUNECTRL,
- SRCHRDS1,
- SRCHRDS2,
- SRCHCTRL,
- IOCTRL,
- RDSCTRL,
- ADVCTRL,
- AUDIOCTRL,
- RMSSI,
- IOVERC,
- AUDIOIND = 0x1E,
- XFRCTRL,
- FM_CTL0 = 0xFF,
- LEAKAGE_CNTRL = 0xFE,
- };
- #define BAHAMA_RBIAS_CTL1 0x07
- #define BAHAMA_FM_MODE_REG 0xFD
- #define BAHAMA_FM_CTL1_REG 0xFE
- #define BAHAMA_FM_CTL0_REG 0xFF
- #define BAHAMA_FM_MODE_NORMAL 0x00
- #define BAHAMA_LDO_DREG_CTL0 0xF0
- #define BAHAMA_LDO_AREG_CTL0 0xF4
- /* Radio Control */
- #define RDCTRL_STATE_OFFSET 0
- #define RDCTRL_STATE_MASK (3 << RDCTRL_STATE_OFFSET)
- #define RDCTRL_BAND_OFFSET 2
- #define RDCTRL_BAND_MASK (1 << RDCTRL_BAND_OFFSET)
- #define RDCTRL_CHSPACE_OFFSET 3
- #define RDCTRL_CHSPACE_MASK (3 << RDCTRL_CHSPACE_OFFSET)
- #define RDCTRL_DEEMPHASIS_OFFSET 5
- #define RDCTRL_DEEMPHASIS_MASK (1 << RDCTRL_DEEMPHASIS_OFFSET)
- #define RDCTRL_HLSI_OFFSET 6
- #define RDCTRL_HLSI_MASK (3 << RDCTRL_HLSI_OFFSET)
- #define RDSAF_OFFSET 6
- #define RDSAF_MASK (1 << RDSAF_OFFSET)
- /* Tune Control */
- #define TUNE_STATION 0x01
- #define ADD_OFFSET (1 << 1)
- #define SIGSTATE (1 << 5)
- #define MOSTSTATE (1 << 6)
- #define RDSSYNC (1 << 7)
- /* Search Control */
- #define SRCH_MODE_OFFSET 0
- #define SRCH_MODE_MASK (7 << SRCH_MODE_OFFSET)
- #define SRCH_DIR_OFFSET 3
- #define SRCH_DIR_MASK (1 << SRCH_DIR_OFFSET)
- #define SRCH_DWELL_OFFSET 4
- #define SRCH_DWELL_MASK (7 << SRCH_DWELL_OFFSET)
- #define SRCH_STATE_OFFSET 7
- #define SRCH_STATE_MASK (1 << SRCH_STATE_OFFSET)
- /* I/O Control */
- #define IOC_HRD_MUTE 0x03
- #define IOC_SFT_MUTE (1 << 2)
- #define IOC_MON_STR (1 << 3)
- #define IOC_SIG_BLND (1 << 4)
- #define IOC_INTF_BLND (1 << 5)
- #define IOC_ANTENNA (1 << 6)
- #define IOC_ANTENNA_OFFSET 6
- #define IOC_ANTENNA_MASK (1 << IOC_ANTENNA_OFFSET)
- /* RDS Control */
- #define RDS_ON 0x01
- #define RDSCTRL_STANDARD_OFFSET 1
- #define RDSCTRL_STANDARD_MASK (1 << RDSCTRL_STANDARD_OFFSET)
- /* Advanced features controls */
- #define RDSRTEN (1 << 3)
- #define RDSPSEN (1 << 4)
- /* Audio path control */
- #define AUDIORX_ANALOG_OFFSET 0
- #define AUDIORX_ANALOG_MASK (1 << AUDIORX_ANALOG_OFFSET)
- #define AUDIORX_DIGITAL_OFFSET 1
- #define AUDIORX_DIGITAL_MASK (1 << AUDIORX_DIGITAL_OFFSET)
- #define AUDIOTX_OFFSET 2
- #define AUDIOTX_MASK (1 << AUDIOTX_OFFSET)
- #define I2SCTRL_OFFSET 3
- #define I2SCTRL_MASK (1 << I2SCTRL_OFFSET)
- /* Search options */
- enum search_t {
- SEEK,
- SCAN,
- SCAN_FOR_STRONG,
- SCAN_FOR_WEAK,
- RDS_SEEK_PTY,
- RDS_SCAN_PTY,
- RDS_SEEK_PI,
- RDS_AF_JUMP,
- };
- /* Band limits */
- #define REGION_US_EU_BAND_LOW 87500
- #define REGION_US_EU_BAND_HIGH 108000
- #define REGION_JAPAN_STANDARD_BAND_LOW 76000
- #define REGION_JAPAN_STANDARD_BAND_HIGH 90000
- #define REGION_JAPAN_WIDE_BAND_LOW 90000
- #define REGION_JAPAN_WIDE_BAND_HIGH 108000
- #define MPX_DCC_BYPASS_REG 0x88C0
- #define MPX_DCC_DATA_REG 0x88C2
- enum audio_path {
- FM_DIGITAL_PATH,
- FM_ANALOG_PATH
- };
- #define SRCH_MODE 0x07
- #define SRCH_DIR 0x08 /* 0-up 1-down */
- #define SCAN_DWELL 0x70
- #define SRCH_ON 0x80
- /* RDS CONFIG */
- #define RDS_CONFIG_PSALL 0x01
- #define FM_ENABLE 0x22
- #define SET_REG_FIELD(reg, val, offset, mask) \
- (reg = (reg & ~mask) | (((val) << offset) & mask))
- #define GET_REG_FIELD(reg, offset, mask) ((reg & mask) >> offset)
- #define RSH_DATA(val, offset) ((val) >> (offset))
- #define LSH_DATA(val, offset) ((val) << (offset))
- #define GET_ABS_VAL(val) ((val) & (0xFF))
- enum radio_state_t {
- FM_OFF,
- FM_RECV,
- FM_TRANS,
- FM_RESET,
- };
- #define XFRCTRL_WRITE (1 << 7)
- /* Interrupt status */
- /* interrupt register 1 */
- #define READY (1 << 0) /* Radio ready after powerup or reset */
- #define TUNE (1 << 1) /* Tune completed */
- #define SEARCH (1 << 2) /* Search completed (read FREQ) */
- #define SCANNEXT (1 << 3) /* Scanning for next station */
- #define SIGNAL (1 << 4) /* Signal indicator change (read SIGSTATE) */
- #define INTF (1 << 5) /* Interference cnt has fallen outside range */
- #define SYNC (1 << 6) /* RDS sync state change (read RDSSYNC) */
- #define AUDIO (1 << 7) /* Audio Control indicator (read AUDIOIND) */
- /* interrupt register 2 */
- #define RDSDAT (1 << 0) /* New unread RDS data group available */
- #define BLOCKB (1 << 1) /* Block-B match condition exists */
- #define PROGID (1 << 2) /* Block-A or Block-C matched stored PI value*/
- #define RDSPS (1 << 3) /* New RDS Program Service Table available */
- #define RDSRT (1 << 4) /* New RDS Radio Text available */
- #define RDSAF (1 << 5) /* New RDS AF List available */
- #define TXRDSDAT (1 << 6) /* Transmitted an RDS group */
- #define TXRDSDONE (1 << 7) /* RDS raw group one-shot transmit completed */
- /* interrupt register 3 */
- #define TRANSFER (1 << 0) /* Data transfer (XFR) completed */
- #define RDSPROC (1 << 1) /* Dynamic RDS Processing complete */
- #define ERROR (1 << 7) /* Err occurred.Read code to determine cause */
- #define FM_TX_PWR_LVL_0 0 /* Lowest power lvl that can be set for Tx */
- #define FM_TX_PWR_LVL_MAX 7 /* Max power lvl for Tx */
- /* Tone Generator control value */
- #define TONE_GEN_CTRL_BYTE 0x00
- #define TONE_CHANNEL_EN_AND_SCALING_BYTE 0x01
- #define TONE_LEFT_FREQ_BYTE 0x02
- #define TONE_RIGHT_FREQ_BYTE 0x03
- #define TONE_LEFT_PHASE 0x04
- #define TONE_RIGHT_PHASE 0x05
- #define TONE_LEFT_CH_ENABLED 0x01
- #define TONE_RIGHT_CH_ENABLED 0x02
- #define TONE_LEFT_RIGHT_CH_ENABLED (TONE_LEFT_CH_ENABLED\
- | TONE_RIGHT_CH_ENABLED)
- #define TONE_SCALING_SHIFT 0x02
- /* Transfer */
- enum tavarua_xfr_ctrl_t {
- RDS_PS_0 = 0x01,
- RDS_PS_1,
- RDS_PS_2,
- RDS_PS_3,
- RDS_PS_4,
- RDS_PS_5,
- RDS_PS_6,
- RDS_RT_0,
- RDS_RT_1,
- RDS_RT_2,
- RDS_RT_3,
- RDS_RT_4,
- RDS_AF_0,
- RDS_AF_1,
- RDS_CONFIG,
- RDS_TX_GROUPS,
- RDS_COUNT_0,
- RDS_COUNT_1,
- RDS_COUNT_2,
- RADIO_CONFIG,
- RX_CONFIG,
- RX_TIMERS,
- RX_STATIONS_0,
- RX_STATIONS_1,
- INT_CTRL,
- ERROR_CODE,
- CHIPID,
- CAL_DAT_0 = 0x20,
- CAL_DAT_1,
- CAL_DAT_2,
- CAL_DAT_3,
- CAL_CFG_0,
- CAL_CFG_1,
- DIG_INTF_0,
- DIG_INTF_1,
- DIG_AGC_0,
- DIG_AGC_1,
- DIG_AGC_2,
- DIG_AUDIO_0,
- DIG_AUDIO_1,
- DIG_AUDIO_2,
- DIG_AUDIO_3,
- DIG_AUDIO_4,
- DIG_RXRDS,
- DIG_DCC,
- DIG_SPUR,
- DIG_MPXDCC,
- DIG_PILOT,
- DIG_DEMOD,
- DIG_MOST,
- DIG_TX_0,
- DIG_TX_1,
- PHY_TXGAIN = 0x3B,
- PHY_CONFIG,
- PHY_TXBLOCK,
- PHY_TCB,
- XFR_EXT,
- XFR_PEEK_MODE = 0x40,
- XFR_POKE_MODE = 0xC0,
- TAVARUA_XFR_CTRL_MAX
- };
- enum tavarua_evt_t {
- TAVARUA_EVT_RADIO_READY,
- TAVARUA_EVT_TUNE_SUCC,
- TAVARUA_EVT_SEEK_COMPLETE,
- TAVARUA_EVT_SCAN_NEXT,
- TAVARUA_EVT_NEW_RAW_RDS,
- TAVARUA_EVT_NEW_RT_RDS,
- TAVARUA_EVT_NEW_PS_RDS,
- TAVARUA_EVT_ERROR,
- TAVARUA_EVT_BELOW_TH,
- TAVARUA_EVT_ABOVE_TH,
- TAVARUA_EVT_STEREO,
- TAVARUA_EVT_MONO,
- TAVARUA_EVT_RDS_AVAIL,
- TAVARUA_EVT_RDS_NOT_AVAIL,
- TAVARUA_EVT_NEW_SRCH_LIST,
- TAVARUA_EVT_NEW_AF_LIST,
- TAVARUA_EVT_TXRDSDAT,
- TAVARUA_EVT_TXRDSDONE,
- TAVARUA_EVT_RADIO_DISABLED
- };
- enum tavarua_region_t {
- TAVARUA_REGION_US,
- TAVARUA_REGION_EU,
- TAVARUA_REGION_JAPAN,
- TAVARUA_REGION_JAPAN_WIDE,
- TAVARUA_REGION_OTHER
- };
- enum {
- ONE_BYTE = 1,
- TWO_BYTE,
- THREE_BYTE,
- FOUR_BYTE,
- FIVE_BYTE,
- SIX_BYTE,
- SEVEN_BYTE,
- EIGHT_BYTE,
- NINE_BYTE,
- TEN_BYTE,
- ELEVEN_BYTE,
- TWELVE_BYTE,
- THIRTEEN_BYTE
- };
- #define XFR_READ (0)
- #define XFR_WRITE (1)
- #define XFR_MODE_OFFSET (0)
- #define XFR_ADDR_MSB_OFFSET (1)
- #define XFR_ADDR_LSB_OFFSET (2)
- #define XFR_DATA_OFFSET (3)
- #define SPUR_DATA_SIZE (3)
- #define MAX_SPUR_FREQ_LIMIT (30)
- #define READ_COMPLETE (0x20)
- #define SPUR_TABLE_ADDR (0x0BB7)
- #define SPUR_TABLE_START_ADDR (SPUR_TABLE_ADDR + 1)
- #define XFR_PEEK_COMPLETE (XFR_PEEK_MODE | READ_COMPLETE)
- #define XFR_POKE_COMPLETE (XFR_POKE_MODE)
- #define TUNE_MULT (16)
- #define ADJ_CHANNEL_KHZ (50)
- #define MPX_DCC_UPPER_LIMIT (20000)
- #define MPX_DCC_LIMIT (12566)
- #define INVALID_CHANNEL (0)
- #define VALID_CHANNEL (1)
- #define COMPUTE_SPUR(val) ((((val) - (76000)) / (50)))
- #define GET_FREQ(val, bit) ((bit == 1) ? ((val) >> 8) : ((val) & 0xFF))
- struct fm_spur_data {
- int freq[MAX_SPUR_FREQ_LIMIT];
- __s8 rmssi[MAX_SPUR_FREQ_LIMIT];
- } __packed;
- struct fm_def_data_wr_req {
- __u8 mode;
- __u8 length;
- __u8 data[XFR_REG_NUM];
- } __packed;
- enum Internal_tone_gen_vals {
- ONE_KHZ_LR_EQUA_0DBFS = 1,
- ONE_KHZ_LEFTONLY_EQUA_0DBFS,
- ONE_KHZ_RIGHTONLY_EQUA_0DBFS,
- ONE_KHZ_LR_EQUA_l8DBFS,
- FIFTEEN_KHZ_LR_EQUA_l8DBFS
- };
- enum Tone_scaling_indexes {
- TONE_SCALE_IND_0,
- TONE_SCALE_IND_1,
- TONE_SCALE_IND_2,
- TONE_SCALE_IND_3,
- TONE_SCALE_IND_4,
- TONE_SCALE_IND_5,
- TONE_SCALE_IND_6,
- TONE_SCALE_IND_7,
- TONE_SCALE_IND_8,
- TONE_SCALE_IND_9,
- TONE_SCALE_IND_10,
- TONE_SCALE_IND_11,
- TONE_SCALE_IND_12
- };
- #endif /* __LINUX_TAVARUA_H */
|