blob: 57f075f82a819cc61a64f607e82277293eb67e3a [file] [log] [blame]
/*
** Copyright (c) 2007 by Silicon Laboratories
**
** $Id: si3226x.h 458 2009-03-10 22:47:25Z cdp@SILABS.COM $
**
** Author(s):
** laj
**
** Distributed by:
** Silicon Laboratories, Inc
**
** This file contains proprietary information.
** No dissemination allowed without prior written permission from
** Silicon Laboratories, Inc.
**
*/
#ifndef SI3226XH_H
#define SI3226XH_H
#include "proslic.h"
/*
** SI3226X DataTypes/Function Definitions
*/
#define NUMIRQ 4
/*
** Defines structure for configuring gpio
*/
typedef struct {
uInt8 outputEn;
uInt8 analog;
uInt8 direction;
uInt8 manual;
uInt8 polarity;
uInt8 openDrain;
uInt8 batselmap;
} Si3226x_GPIO_Cfg;
typedef ProSLIC_DCfeed_Cfg Si3226x_DCfeed_Cfg;
typedef Si3226x_DCfeed_Cfg* Si3226x_DCfeed_Cfg_ptr;
/*
** Defines structure for general configuration and the dcdc converter
*/
typedef struct {
uInt8 device_key; /* Used to prevent loaded coeffs for another device */
bomOptionsType bomOpt;
batRailType batType;
ramData bat_hyst;
ramData vbatr_expect; /* default - this is overwritten by ring preset */
ramData vbath_expect; /* default - this is overwritten by dc feed preset */
ramData pwrsave_timer;
ramData offhook_thresh;
ramData vbat_track_min;
ramData vbat_track_min_rng;
ramData pwrsave_dbi;
ramData dcdc_ana_scale;
ramData vov_bat_pwrsave_min;
ramData vov_bat_pwrsave_min_rng;
ramData therm_dbi;
ramData cpump_dbi;
ramData dcdc_verr;
ramData dcdc_verr_hyst;
ramData dcdc_oithresh_lo;
ramData dcdc_oithresh_hi;
ramData pd_uvlo;
ramData pd_ovlo;
ramData pd_oclo;
ramData pd_swdrv;
ramData dcdc_uvhyst;
ramData dcdc_uvthresh;
ramData dcdc_ovthresh;
ramData dcdc_oithresh;
ramData dcdc_swdrv_pol;
ramData dcdc_uvpol;
ramData dcdc_vref_man;
ramData dcdc_vref_ctrl;
ramData dcdc_rngtype;
ramData dcdc_ana_vref;
ramData dcdc_ana_gain;
ramData dcdc_ana_toff;
ramData dcdc_ana_tonmin;
ramData dcdc_ana_tonmax;
ramData dcdc_ana_dshift;
ramData dcdc_ana_lpoly;
ramData dcdc_aux_invert;
ramData dcdc_cpump_lp;
ramData dcdc_cpump_pulldown;
ramData dcdc_lift_en;
ramData coef_p_hvic;
ramData p_th_hvic;
uInt8 cm_clamp;
uInt8 autoRegister;
uInt8 irqen1;
uInt8 irqen2;
uInt8 irqen3;
uInt8 irqen4;
uInt8 enhance;
ramData scale_kaudio;
uInt8 zcal_en;
ramData lkg_ofhk_offset;
ramData lkg_lb_offset;
ramData vbath_delta;
ramData uvthresh_max;
ramData uvthresh_scale;
ramData uvthresh_bias;
} Si3226x_General_Cfg;
/*
** Defines structure for configuring pcm
*/
typedef struct {
uInt8 pcmFormat;
uInt8 widebandEn;
uInt8 pcm_tri;
uInt8 tx_edge;
uInt8 alaw_inv;
} Si3226x_PCM_Cfg;
/*
** Defines structure for configuring pulse metering
*/
typedef struct {
ramData pm_amp_thresh;
uInt8 pmFreq;
uInt8 pmRampRate;
} Si3226x_PulseMeter_Cfg;
/*
** Defines structure for configuring FSK generation
*/
typedef struct {
ramData fsk01;
ramData fsk10;
ramData fskamp0;
ramData fskamp1;
ramData fskfreq0;
ramData fskfreq1;
uInt8 eightBit;
uInt8 fskdepth;
} Si3226x_FSK_Cfg;
/*
** Defines structure for configuring dtmf decode
*/
typedef struct {
ramData dtmfdtf_b0_1;
ramData dtmfdtf_b1_1;
ramData dtmfdtf_b2_1;
ramData dtmfdtf_a1_1;
ramData dtmfdtf_a2_1;
ramData dtmfdtf_b0_2;
ramData dtmfdtf_b1_2;
ramData dtmfdtf_b2_2;
ramData dtmfdtf_a1_2;
ramData dtmfdtf_a2_2;
ramData dtmfdtf_b0_3;
ramData dtmfdtf_b1_3;
ramData dtmfdtf_b2_3;
ramData dtmfdtf_a1_3;
ramData dtmfdtf_a2_3;
} Si3226x_DTMFDec_Cfg;
/*
** Defines structure for configuring impedence synthesis
*/
typedef struct {
ramData zsynth_b0;
ramData zsynth_b1;
ramData zsynth_b2;
ramData zsynth_a1;
ramData zsynth_a2;
uInt8 ra;
} Si3226x_Zsynth_Cfg;
/*
** Defines structure for configuring hybrid
*/
typedef struct {
ramData ecfir_c2;
ramData ecfir_c3;
ramData ecfir_c4;
ramData ecfir_c5;
ramData ecfir_c6;
ramData ecfir_c7;
ramData ecfir_c8;
ramData ecfir_c9;
ramData ecfir_b0;
ramData ecfir_b1;
ramData ecfir_a1;
ramData ecfir_a2;
} Si3226x_hybrid_Cfg;
/*
** Defines structure for configuring GCI CI bits
*/
typedef struct {
uInt8 gci_ci;
} Si3226x_CI_Cfg;
/*
** Defines structure for configuring modem tone detect
*/
typedef struct {
ramData rxmodpwr;
ramData rxpwr;
ramData modem_gain;
ramData txmodpwr;
ramData txpwr;
} Si3226x_modemDet_Cfg;
/*
** Defines structure for configuring audio eq
*/
typedef struct {
ramData txaceq_c0;
ramData txaceq_c1;
ramData txaceq_c2;
ramData txaceq_c3;
ramData rxaceq_c0;
ramData rxaceq_c1;
ramData rxaceq_c2;
ramData rxaceq_c3;
} Si3226x_audioEQ_Cfg;
/*
** Defines structure for configuring audio gain
*/
typedef ProSLIC_audioGain_Cfg Si3226x_audioGain_Cfg;
typedef struct {
Si3226x_audioEQ_Cfg audioEQ;
Si3226x_hybrid_Cfg hybrid;
Si3226x_Zsynth_Cfg zsynth;
ramData txgain;
ramData rxgain;
ramData rxachpf_b0_1;
ramData rxachpf_b1_1;
ramData rxachpf_a1_1;
int16 txgain_db; /*overall gain associated with this configuration*/
int16 rxgain_db;
} Si3226x_Impedance_Cfg;
/*
** Defines structure for configuring tone generator
*/
typedef struct {
Oscillator_Cfg osc1;
Oscillator_Cfg osc2;
uInt8 omode;
} Si3226x_Tone_Cfg;
/*
** Defines structure for configuring ring generator
*/
typedef struct {
ramData rtper;
ramData freq;
ramData amp;
ramData phas;
ramData offset;
ramData slope_ring;
ramData iring_lim;
ramData rtacth;
ramData rtdcth;
ramData rtacdb;
ramData rtdcdb;
ramData vov_ring_bat;
ramData vov_ring_gnd;
ramData vbatr_expect;
uInt8 talo;
uInt8 tahi;
uInt8 tilo;
uInt8 tihi;
ramData adap_ring_min_i;
ramData counter_iring_val;
ramData counter_vtr_val;
ramData ar_const28;
ramData ar_const32;
ramData ar_const38;
ramData ar_const46;
ramData rrd_delay;
ramData rrd_delay2;
ramData vbat_track_min_rng;
uInt8 ringcon;
uInt8 userstat;
ramData vcm_ring;
ramData vcm_ring_fixed;
ramData delta_vcm;
ramData dcdc_rngtype;
ramData vov_dcdc_slope;
ramData vov_dcdc_os;
ramData vov_ring_bat_max;
} Si3226x_Ring_Cfg;
/*
** This defines names for the interrupts in the ProSLIC
*/
typedef enum {
/* IRQ1 */
IRQ_OSC1_T1_SI3226X = 0,
IRQ_OSC1_T2_SI3226X,
IRQ_OSC2_T1_SI3226X,
IRQ_OSC2_T2_SI3226X,
IRQ_RING_T1_SI3226X,
IRQ_RING_T2_SI3226X,
IRQ_FSKBUF_AVAIL_SI3226X,
IRQ_VBAT_SI3226X,
/* IRQ2 */
IRQ_RING_TRIP_SI3226X = 8,
IRQ_LOOP_STAT_SI3226X,
IRQ_LONG_STAT_SI3226X,
IRQ_VOC_TRACK_SI3226X,
IRQ_DTMF_SI3226X,
IRQ_INDIRECT_SI3226X,
IRQ_TXMDM_SI3226X,
IRQ_RXMDM_SI3226X,
/* IRQ3 */
IRQ_P_HVIC_SI3226X = 16,
IRQ_P_THERM_SI3226X,
IRQ_PQ3_SI3226X,
IRQ_PQ4_SI3226X,
IRQ_PQ5_SI3226X,
IRQ_PQ6_SI3226X,
IRQ_DSP_SI3226X,
IRQ_MADC_FS_SI3226X,
/* IRQ4 */
IRQ_USER_0_SI3226X = 24,
IRQ_USER_1_SI3226X,
IRQ_USER_2_SI3226X,
IRQ_USER_3_SI3226X,
IRQ_USER_4_SI3226X,
IRQ_USER_5_SI3226X,
IRQ_USER_6_SI3226X,
IRQ_USER_7_SI3226X
}Si3226xProslicInt;
#endif