162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * see notice in hfc_multi.c 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#define DEBUG_HFCMULTI_FIFO 0x00010000 762306a36Sopenharmony_ci#define DEBUG_HFCMULTI_CRC 0x00020000 862306a36Sopenharmony_ci#define DEBUG_HFCMULTI_INIT 0x00040000 962306a36Sopenharmony_ci#define DEBUG_HFCMULTI_PLXSD 0x00080000 1062306a36Sopenharmony_ci#define DEBUG_HFCMULTI_MODE 0x00100000 1162306a36Sopenharmony_ci#define DEBUG_HFCMULTI_MSG 0x00200000 1262306a36Sopenharmony_ci#define DEBUG_HFCMULTI_STATE 0x00400000 1362306a36Sopenharmony_ci#define DEBUG_HFCMULTI_FILL 0x00800000 1462306a36Sopenharmony_ci#define DEBUG_HFCMULTI_SYNC 0x01000000 1562306a36Sopenharmony_ci#define DEBUG_HFCMULTI_DTMF 0x02000000 1662306a36Sopenharmony_ci#define DEBUG_HFCMULTI_LOCK 0x80000000 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#define PCI_ENA_REGIO 0x01 1962306a36Sopenharmony_ci#define PCI_ENA_MEMIO 0x02 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define XHFC_IRQ 4 /* SIU_IRQ2 */ 2262306a36Sopenharmony_ci#define XHFC_MEMBASE 0xFE000000 2362306a36Sopenharmony_ci#define XHFC_MEMSIZE 0x00001000 2462306a36Sopenharmony_ci#define XHFC_OFFSET 0x00001000 2562306a36Sopenharmony_ci#define PA_XHFC_A0 0x0020 /* PA10 */ 2662306a36Sopenharmony_ci#define PB_XHFC_IRQ1 0x00000100 /* PB23 */ 2762306a36Sopenharmony_ci#define PB_XHFC_IRQ2 0x00000200 /* PB22 */ 2862306a36Sopenharmony_ci#define PB_XHFC_IRQ3 0x00000400 /* PB21 */ 2962306a36Sopenharmony_ci#define PB_XHFC_IRQ4 0x00000800 /* PB20 */ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* 3262306a36Sopenharmony_ci * NOTE: some registers are assigned multiple times due to different modes 3362306a36Sopenharmony_ci * also registers are assigned differen for HFC-4s/8s and HFC-E1 3462306a36Sopenharmony_ci */ 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* 3762306a36Sopenharmony_ci #define MAX_FRAME_SIZE 2048 3862306a36Sopenharmony_ci*/ 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cistruct hfc_chan { 4162306a36Sopenharmony_ci struct dchannel *dch; /* link if channel is a D-channel */ 4262306a36Sopenharmony_ci struct bchannel *bch; /* link if channel is a B-channel */ 4362306a36Sopenharmony_ci int port; /* the interface port this */ 4462306a36Sopenharmony_ci /* channel is associated with */ 4562306a36Sopenharmony_ci int nt_timer; /* -1 if off, 0 if elapsed, >0 if running */ 4662306a36Sopenharmony_ci int los, ais, slip_tx, slip_rx, rdi; /* current alarms */ 4762306a36Sopenharmony_ci int jitter; 4862306a36Sopenharmony_ci u_long cfg; /* port configuration */ 4962306a36Sopenharmony_ci int sync; /* sync state (used by E1) */ 5062306a36Sopenharmony_ci u_int protocol; /* current protocol */ 5162306a36Sopenharmony_ci int slot_tx; /* current pcm slot */ 5262306a36Sopenharmony_ci int bank_tx; /* current pcm bank */ 5362306a36Sopenharmony_ci int slot_rx; 5462306a36Sopenharmony_ci int bank_rx; 5562306a36Sopenharmony_ci int conf; /* conference setting of TX slot */ 5662306a36Sopenharmony_ci int txpending; /* if there is currently data in */ 5762306a36Sopenharmony_ci /* the FIFO 0=no, 1=yes, 2=splloop */ 5862306a36Sopenharmony_ci int Zfill; /* rx-fifo level on last hfcmulti_tx */ 5962306a36Sopenharmony_ci int rx_off; /* set to turn fifo receive off */ 6062306a36Sopenharmony_ci int coeff_count; /* curren coeff block */ 6162306a36Sopenharmony_ci s32 *coeff; /* memory pointer to 8 coeff blocks */ 6262306a36Sopenharmony_ci}; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct hfcm_hw { 6662306a36Sopenharmony_ci u_char r_ctrl; 6762306a36Sopenharmony_ci u_char r_irq_ctrl; 6862306a36Sopenharmony_ci u_char r_cirm; 6962306a36Sopenharmony_ci u_char r_ram_sz; 7062306a36Sopenharmony_ci u_char r_pcm_md0; 7162306a36Sopenharmony_ci u_char r_irqmsk_misc; 7262306a36Sopenharmony_ci u_char r_dtmf; 7362306a36Sopenharmony_ci u_char r_st_sync; 7462306a36Sopenharmony_ci u_char r_sci_msk; 7562306a36Sopenharmony_ci u_char r_tx0, r_tx1; 7662306a36Sopenharmony_ci u_char a_st_ctrl0[8]; 7762306a36Sopenharmony_ci u_char r_bert_wd_md; 7862306a36Sopenharmony_ci timer_t timer; 7962306a36Sopenharmony_ci}; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci/* for each stack these flags are used (cfg) */ 8362306a36Sopenharmony_ci#define HFC_CFG_NONCAP_TX 1 /* S/T TX interface has less capacity */ 8462306a36Sopenharmony_ci#define HFC_CFG_DIS_ECHANNEL 2 /* disable E-channel processing */ 8562306a36Sopenharmony_ci#define HFC_CFG_REG_ECHANNEL 3 /* register E-channel */ 8662306a36Sopenharmony_ci#define HFC_CFG_OPTICAL 4 /* the E1 interface is optical */ 8762306a36Sopenharmony_ci#define HFC_CFG_REPORT_LOS 5 /* the card should report loss of signal */ 8862306a36Sopenharmony_ci#define HFC_CFG_REPORT_AIS 6 /* the card should report alarm ind. sign. */ 8962306a36Sopenharmony_ci#define HFC_CFG_REPORT_SLIP 7 /* the card should report bit slips */ 9062306a36Sopenharmony_ci#define HFC_CFG_REPORT_RDI 8 /* the card should report remote alarm */ 9162306a36Sopenharmony_ci#define HFC_CFG_DTMF 9 /* enable DTMF-detection */ 9262306a36Sopenharmony_ci#define HFC_CFG_CRC4 10 /* disable CRC-4 Multiframe mode, */ 9362306a36Sopenharmony_ci/* use double frame instead. */ 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci#define HFC_TYPE_E1 1 /* controller is HFC-E1 */ 9662306a36Sopenharmony_ci#define HFC_TYPE_4S 4 /* controller is HFC-4S */ 9762306a36Sopenharmony_ci#define HFC_TYPE_8S 8 /* controller is HFC-8S */ 9862306a36Sopenharmony_ci#define HFC_TYPE_XHFC 5 /* controller is XHFC */ 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci#define HFC_CHIP_EXRAM_128 0 /* external ram 128k */ 10162306a36Sopenharmony_ci#define HFC_CHIP_EXRAM_512 1 /* external ram 256k */ 10262306a36Sopenharmony_ci#define HFC_CHIP_REVISION0 2 /* old fifo handling */ 10362306a36Sopenharmony_ci#define HFC_CHIP_PCM_SLAVE 3 /* PCM is slave */ 10462306a36Sopenharmony_ci#define HFC_CHIP_PCM_MASTER 4 /* PCM is master */ 10562306a36Sopenharmony_ci#define HFC_CHIP_RX_SYNC 5 /* disable pll sync for pcm */ 10662306a36Sopenharmony_ci#define HFC_CHIP_DTMF 6 /* DTMF decoding is enabled */ 10762306a36Sopenharmony_ci#define HFC_CHIP_CONF 7 /* conference handling is enabled */ 10862306a36Sopenharmony_ci#define HFC_CHIP_ULAW 8 /* ULAW mode */ 10962306a36Sopenharmony_ci#define HFC_CHIP_CLOCK2 9 /* double clock mode */ 11062306a36Sopenharmony_ci#define HFC_CHIP_E1CLOCK_GET 10 /* always get clock from E1 interface */ 11162306a36Sopenharmony_ci#define HFC_CHIP_E1CLOCK_PUT 11 /* always put clock from E1 interface */ 11262306a36Sopenharmony_ci#define HFC_CHIP_WATCHDOG 12 /* whether we should send signals */ 11362306a36Sopenharmony_ci/* to the watchdog */ 11462306a36Sopenharmony_ci#define HFC_CHIP_B410P 13 /* whether we have a b410p with echocan in */ 11562306a36Sopenharmony_ci/* hw */ 11662306a36Sopenharmony_ci#define HFC_CHIP_PLXSD 14 /* whether we have a Speech-Design PLX */ 11762306a36Sopenharmony_ci#define HFC_CHIP_EMBSD 15 /* whether we have a SD Embedded board */ 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci#define HFC_IO_MODE_PCIMEM 0x00 /* normal memory mapped IO */ 12062306a36Sopenharmony_ci#define HFC_IO_MODE_REGIO 0x01 /* PCI io access */ 12162306a36Sopenharmony_ci#define HFC_IO_MODE_PLXSD 0x02 /* access HFC via PLX9030 */ 12262306a36Sopenharmony_ci#define HFC_IO_MODE_EMBSD 0x03 /* direct access */ 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* table entry in the PCI devices list */ 12562306a36Sopenharmony_cistruct hm_map { 12662306a36Sopenharmony_ci char *vendor_name; 12762306a36Sopenharmony_ci char *card_name; 12862306a36Sopenharmony_ci int type; 12962306a36Sopenharmony_ci int ports; 13062306a36Sopenharmony_ci int clock2; 13162306a36Sopenharmony_ci int leds; 13262306a36Sopenharmony_ci int opticalsupport; 13362306a36Sopenharmony_ci int dip_type; 13462306a36Sopenharmony_ci int io_mode; 13562306a36Sopenharmony_ci int irq; 13662306a36Sopenharmony_ci}; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_cistruct hfc_multi { 13962306a36Sopenharmony_ci struct list_head list; 14062306a36Sopenharmony_ci struct hm_map *mtyp; 14162306a36Sopenharmony_ci int id; 14262306a36Sopenharmony_ci int pcm; /* id of pcm bus */ 14362306a36Sopenharmony_ci int ctype; /* controller type */ 14462306a36Sopenharmony_ci int ports; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci u_int irq; /* irq used by card */ 14762306a36Sopenharmony_ci u_int irqcnt; 14862306a36Sopenharmony_ci struct pci_dev *pci_dev; 14962306a36Sopenharmony_ci int io_mode; /* selects mode */ 15062306a36Sopenharmony_ci#ifdef HFC_REGISTER_DEBUG 15162306a36Sopenharmony_ci void (*HFC_outb)(struct hfc_multi *hc, u_char reg, 15262306a36Sopenharmony_ci u_char val, const char *function, int line); 15362306a36Sopenharmony_ci void (*HFC_outb_nodebug)(struct hfc_multi *hc, u_char reg, 15462306a36Sopenharmony_ci u_char val, const char *function, int line); 15562306a36Sopenharmony_ci u_char (*HFC_inb)(struct hfc_multi *hc, u_char reg, 15662306a36Sopenharmony_ci const char *function, int line); 15762306a36Sopenharmony_ci u_char (*HFC_inb_nodebug)(struct hfc_multi *hc, u_char reg, 15862306a36Sopenharmony_ci const char *function, int line); 15962306a36Sopenharmony_ci u_short (*HFC_inw)(struct hfc_multi *hc, u_char reg, 16062306a36Sopenharmony_ci const char *function, int line); 16162306a36Sopenharmony_ci u_short (*HFC_inw_nodebug)(struct hfc_multi *hc, u_char reg, 16262306a36Sopenharmony_ci const char *function, int line); 16362306a36Sopenharmony_ci void (*HFC_wait)(struct hfc_multi *hc, 16462306a36Sopenharmony_ci const char *function, int line); 16562306a36Sopenharmony_ci void (*HFC_wait_nodebug)(struct hfc_multi *hc, 16662306a36Sopenharmony_ci const char *function, int line); 16762306a36Sopenharmony_ci#else 16862306a36Sopenharmony_ci void (*HFC_outb)(struct hfc_multi *hc, u_char reg, 16962306a36Sopenharmony_ci u_char val); 17062306a36Sopenharmony_ci void (*HFC_outb_nodebug)(struct hfc_multi *hc, u_char reg, 17162306a36Sopenharmony_ci u_char val); 17262306a36Sopenharmony_ci u_char (*HFC_inb)(struct hfc_multi *hc, u_char reg); 17362306a36Sopenharmony_ci u_char (*HFC_inb_nodebug)(struct hfc_multi *hc, u_char reg); 17462306a36Sopenharmony_ci u_short (*HFC_inw)(struct hfc_multi *hc, u_char reg); 17562306a36Sopenharmony_ci u_short (*HFC_inw_nodebug)(struct hfc_multi *hc, u_char reg); 17662306a36Sopenharmony_ci void (*HFC_wait)(struct hfc_multi *hc); 17762306a36Sopenharmony_ci void (*HFC_wait_nodebug)(struct hfc_multi *hc); 17862306a36Sopenharmony_ci#endif 17962306a36Sopenharmony_ci void (*read_fifo)(struct hfc_multi *hc, u_char *data, 18062306a36Sopenharmony_ci int len); 18162306a36Sopenharmony_ci void (*write_fifo)(struct hfc_multi *hc, u_char *data, 18262306a36Sopenharmony_ci int len); 18362306a36Sopenharmony_ci u_long pci_origmembase, plx_origmembase; 18462306a36Sopenharmony_ci void __iomem *pci_membase; /* PCI memory */ 18562306a36Sopenharmony_ci void __iomem *plx_membase; /* PLX memory */ 18662306a36Sopenharmony_ci u_long xhfc_origmembase; 18762306a36Sopenharmony_ci u_char *xhfc_membase; 18862306a36Sopenharmony_ci u_long *xhfc_memaddr, *xhfc_memdata; 18962306a36Sopenharmony_ci#ifdef CONFIG_MISDN_HFCMULTI_8xx 19062306a36Sopenharmony_ci struct immap *immap; 19162306a36Sopenharmony_ci#endif 19262306a36Sopenharmony_ci u_long pb_irqmsk; /* Portbit mask to check the IRQ line */ 19362306a36Sopenharmony_ci u_long pci_iobase; /* PCI IO */ 19462306a36Sopenharmony_ci struct hfcm_hw hw; /* remember data of write-only-registers */ 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci u_long chip; /* chip configuration */ 19762306a36Sopenharmony_ci int masterclk; /* port that provides master clock -1=off */ 19862306a36Sopenharmony_ci unsigned char silence;/* silence byte */ 19962306a36Sopenharmony_ci unsigned char silence_data[128];/* silence block */ 20062306a36Sopenharmony_ci int dtmf; /* flag that dtmf is currently in process */ 20162306a36Sopenharmony_ci int Flen; /* F-buffer size */ 20262306a36Sopenharmony_ci int Zlen; /* Z-buffer size (must be int for calculation)*/ 20362306a36Sopenharmony_ci int max_trans; /* maximum transparent fifo fill */ 20462306a36Sopenharmony_ci int Zmin; /* Z-buffer offset */ 20562306a36Sopenharmony_ci int DTMFbase; /* base address of DTMF coefficients */ 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci u_int slots; /* number of PCM slots */ 20862306a36Sopenharmony_ci u_int leds; /* type of leds */ 20962306a36Sopenharmony_ci u_long ledstate; /* save last state of leds */ 21062306a36Sopenharmony_ci int opticalsupport; /* has the e1 board */ 21162306a36Sopenharmony_ci /* an optical Interface */ 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci u_int bmask[32]; /* bitmask of bchannels for port */ 21462306a36Sopenharmony_ci u_char dnum[32]; /* array of used dchannel numbers for port */ 21562306a36Sopenharmony_ci u_char created[32]; /* what port is created */ 21662306a36Sopenharmony_ci u_int activity_tx; /* if there is data TX / RX */ 21762306a36Sopenharmony_ci u_int activity_rx; /* bitmask according to port number */ 21862306a36Sopenharmony_ci /* (will be cleared after */ 21962306a36Sopenharmony_ci /* showing led-states) */ 22062306a36Sopenharmony_ci u_int flash[8]; /* counter for flashing 8 leds on activity */ 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci u_long wdcount; /* every 500 ms we need to */ 22362306a36Sopenharmony_ci /* send the watchdog a signal */ 22462306a36Sopenharmony_ci u_char wdbyte; /* watchdog toggle byte */ 22562306a36Sopenharmony_ci int e1_state; /* keep track of last state */ 22662306a36Sopenharmony_ci int e1_getclock; /* if sync is retrieved from interface */ 22762306a36Sopenharmony_ci int syncronized; /* keep track of existing sync interface */ 22862306a36Sopenharmony_ci int e1_resync; /* resync jobs */ 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci spinlock_t lock; /* the lock */ 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ci struct mISDNclock *iclock; /* isdn clock support */ 23362306a36Sopenharmony_ci int iclock_on; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci /* 23662306a36Sopenharmony_ci * the channel index is counted from 0, regardless where the channel 23762306a36Sopenharmony_ci * is located on the hfc-channel. 23862306a36Sopenharmony_ci * the bch->channel is equvalent to the hfc-channel 23962306a36Sopenharmony_ci */ 24062306a36Sopenharmony_ci struct hfc_chan chan[32]; 24162306a36Sopenharmony_ci signed char slot_owner[256]; /* owner channel of slot */ 24262306a36Sopenharmony_ci}; 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci/* PLX GPIOs */ 24562306a36Sopenharmony_ci#define PLX_GPIO4_DIR_BIT 13 24662306a36Sopenharmony_ci#define PLX_GPIO4_BIT 14 24762306a36Sopenharmony_ci#define PLX_GPIO5_DIR_BIT 16 24862306a36Sopenharmony_ci#define PLX_GPIO5_BIT 17 24962306a36Sopenharmony_ci#define PLX_GPIO6_DIR_BIT 19 25062306a36Sopenharmony_ci#define PLX_GPIO6_BIT 20 25162306a36Sopenharmony_ci#define PLX_GPIO7_DIR_BIT 22 25262306a36Sopenharmony_ci#define PLX_GPIO7_BIT 23 25362306a36Sopenharmony_ci#define PLX_GPIO8_DIR_BIT 25 25462306a36Sopenharmony_ci#define PLX_GPIO8_BIT 26 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci#define PLX_GPIO4 (1 << PLX_GPIO4_BIT) 25762306a36Sopenharmony_ci#define PLX_GPIO5 (1 << PLX_GPIO5_BIT) 25862306a36Sopenharmony_ci#define PLX_GPIO6 (1 << PLX_GPIO6_BIT) 25962306a36Sopenharmony_ci#define PLX_GPIO7 (1 << PLX_GPIO7_BIT) 26062306a36Sopenharmony_ci#define PLX_GPIO8 (1 << PLX_GPIO8_BIT) 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci#define PLX_GPIO4_DIR (1 << PLX_GPIO4_DIR_BIT) 26362306a36Sopenharmony_ci#define PLX_GPIO5_DIR (1 << PLX_GPIO5_DIR_BIT) 26462306a36Sopenharmony_ci#define PLX_GPIO6_DIR (1 << PLX_GPIO6_DIR_BIT) 26562306a36Sopenharmony_ci#define PLX_GPIO7_DIR (1 << PLX_GPIO7_DIR_BIT) 26662306a36Sopenharmony_ci#define PLX_GPIO8_DIR (1 << PLX_GPIO8_DIR_BIT) 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci#define PLX_TERM_ON PLX_GPIO7 26962306a36Sopenharmony_ci#define PLX_SLAVE_EN_N PLX_GPIO5 27062306a36Sopenharmony_ci#define PLX_MASTER_EN PLX_GPIO6 27162306a36Sopenharmony_ci#define PLX_SYNC_O_EN PLX_GPIO4 27262306a36Sopenharmony_ci#define PLX_DSP_RES_N PLX_GPIO8 27362306a36Sopenharmony_ci/* GPIO4..8 Enable & Set to OUT, SLAVE_EN_N = 1 */ 27462306a36Sopenharmony_ci#define PLX_GPIOC_INIT (PLX_GPIO4_DIR | PLX_GPIO5_DIR | PLX_GPIO6_DIR \ 27562306a36Sopenharmony_ci | PLX_GPIO7_DIR | PLX_GPIO8_DIR | PLX_SLAVE_EN_N) 27662306a36Sopenharmony_ci 27762306a36Sopenharmony_ci/* PLX Interrupt Control/STATUS */ 27862306a36Sopenharmony_ci#define PLX_INTCSR_LINTI1_ENABLE 0x01 27962306a36Sopenharmony_ci#define PLX_INTCSR_LINTI1_STATUS 0x04 28062306a36Sopenharmony_ci#define PLX_INTCSR_LINTI2_ENABLE 0x08 28162306a36Sopenharmony_ci#define PLX_INTCSR_LINTI2_STATUS 0x20 28262306a36Sopenharmony_ci#define PLX_INTCSR_PCIINT_ENABLE 0x40 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci/* PLX Registers */ 28562306a36Sopenharmony_ci#define PLX_INTCSR 0x4c 28662306a36Sopenharmony_ci#define PLX_CNTRL 0x50 28762306a36Sopenharmony_ci#define PLX_GPIOC 0x54 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci/* 29162306a36Sopenharmony_ci * REGISTER SETTING FOR HFC-4S/8S AND HFC-E1 29262306a36Sopenharmony_ci */ 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci/* write only registers */ 29562306a36Sopenharmony_ci#define R_CIRM 0x00 29662306a36Sopenharmony_ci#define R_CTRL 0x01 29762306a36Sopenharmony_ci#define R_BRG_PCM_CFG 0x02 29862306a36Sopenharmony_ci#define R_RAM_ADDR0 0x08 29962306a36Sopenharmony_ci#define R_RAM_ADDR1 0x09 30062306a36Sopenharmony_ci#define R_RAM_ADDR2 0x0A 30162306a36Sopenharmony_ci#define R_FIRST_FIFO 0x0B 30262306a36Sopenharmony_ci#define R_RAM_SZ 0x0C 30362306a36Sopenharmony_ci#define R_FIFO_MD 0x0D 30462306a36Sopenharmony_ci#define R_INC_RES_FIFO 0x0E 30562306a36Sopenharmony_ci#define R_FSM_IDX 0x0F 30662306a36Sopenharmony_ci#define R_FIFO 0x0F 30762306a36Sopenharmony_ci#define R_SLOT 0x10 30862306a36Sopenharmony_ci#define R_IRQMSK_MISC 0x11 30962306a36Sopenharmony_ci#define R_SCI_MSK 0x12 31062306a36Sopenharmony_ci#define R_IRQ_CTRL 0x13 31162306a36Sopenharmony_ci#define R_PCM_MD0 0x14 31262306a36Sopenharmony_ci#define R_PCM_MD1 0x15 31362306a36Sopenharmony_ci#define R_PCM_MD2 0x15 31462306a36Sopenharmony_ci#define R_SH0H 0x15 31562306a36Sopenharmony_ci#define R_SH1H 0x15 31662306a36Sopenharmony_ci#define R_SH0L 0x15 31762306a36Sopenharmony_ci#define R_SH1L 0x15 31862306a36Sopenharmony_ci#define R_SL_SEL0 0x15 31962306a36Sopenharmony_ci#define R_SL_SEL1 0x15 32062306a36Sopenharmony_ci#define R_SL_SEL2 0x15 32162306a36Sopenharmony_ci#define R_SL_SEL3 0x15 32262306a36Sopenharmony_ci#define R_SL_SEL4 0x15 32362306a36Sopenharmony_ci#define R_SL_SEL5 0x15 32462306a36Sopenharmony_ci#define R_SL_SEL6 0x15 32562306a36Sopenharmony_ci#define R_SL_SEL7 0x15 32662306a36Sopenharmony_ci#define R_ST_SEL 0x16 32762306a36Sopenharmony_ci#define R_ST_SYNC 0x17 32862306a36Sopenharmony_ci#define R_CONF_EN 0x18 32962306a36Sopenharmony_ci#define R_TI_WD 0x1A 33062306a36Sopenharmony_ci#define R_BERT_WD_MD 0x1B 33162306a36Sopenharmony_ci#define R_DTMF 0x1C 33262306a36Sopenharmony_ci#define R_DTMF_N 0x1D 33362306a36Sopenharmony_ci#define R_E1_WR_STA 0x20 33462306a36Sopenharmony_ci#define R_E1_RD_STA 0x20 33562306a36Sopenharmony_ci#define R_LOS0 0x22 33662306a36Sopenharmony_ci#define R_LOS1 0x23 33762306a36Sopenharmony_ci#define R_RX0 0x24 33862306a36Sopenharmony_ci#define R_RX_FR0 0x25 33962306a36Sopenharmony_ci#define R_RX_FR1 0x26 34062306a36Sopenharmony_ci#define R_TX0 0x28 34162306a36Sopenharmony_ci#define R_TX1 0x29 34262306a36Sopenharmony_ci#define R_TX_FR0 0x2C 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci#define R_TX_FR1 0x2D 34562306a36Sopenharmony_ci#define R_TX_FR2 0x2E 34662306a36Sopenharmony_ci#define R_JATT_ATT 0x2F /* undocumented */ 34762306a36Sopenharmony_ci#define A_ST_RD_STATE 0x30 34862306a36Sopenharmony_ci#define A_ST_WR_STATE 0x30 34962306a36Sopenharmony_ci#define R_RX_OFF 0x30 35062306a36Sopenharmony_ci#define A_ST_CTRL0 0x31 35162306a36Sopenharmony_ci#define R_SYNC_OUT 0x31 35262306a36Sopenharmony_ci#define A_ST_CTRL1 0x32 35362306a36Sopenharmony_ci#define A_ST_CTRL2 0x33 35462306a36Sopenharmony_ci#define A_ST_SQ_WR 0x34 35562306a36Sopenharmony_ci#define R_TX_OFF 0x34 35662306a36Sopenharmony_ci#define R_SYNC_CTRL 0x35 35762306a36Sopenharmony_ci#define A_ST_CLK_DLY 0x37 35862306a36Sopenharmony_ci#define R_PWM0 0x38 35962306a36Sopenharmony_ci#define R_PWM1 0x39 36062306a36Sopenharmony_ci#define A_ST_B1_TX 0x3C 36162306a36Sopenharmony_ci#define A_ST_B2_TX 0x3D 36262306a36Sopenharmony_ci#define A_ST_D_TX 0x3E 36362306a36Sopenharmony_ci#define R_GPIO_OUT0 0x40 36462306a36Sopenharmony_ci#define R_GPIO_OUT1 0x41 36562306a36Sopenharmony_ci#define R_GPIO_EN0 0x42 36662306a36Sopenharmony_ci#define R_GPIO_EN1 0x43 36762306a36Sopenharmony_ci#define R_GPIO_SEL 0x44 36862306a36Sopenharmony_ci#define R_BRG_CTRL 0x45 36962306a36Sopenharmony_ci#define R_PWM_MD 0x46 37062306a36Sopenharmony_ci#define R_BRG_MD 0x47 37162306a36Sopenharmony_ci#define R_BRG_TIM0 0x48 37262306a36Sopenharmony_ci#define R_BRG_TIM1 0x49 37362306a36Sopenharmony_ci#define R_BRG_TIM2 0x4A 37462306a36Sopenharmony_ci#define R_BRG_TIM3 0x4B 37562306a36Sopenharmony_ci#define R_BRG_TIM_SEL01 0x4C 37662306a36Sopenharmony_ci#define R_BRG_TIM_SEL23 0x4D 37762306a36Sopenharmony_ci#define R_BRG_TIM_SEL45 0x4E 37862306a36Sopenharmony_ci#define R_BRG_TIM_SEL67 0x4F 37962306a36Sopenharmony_ci#define A_SL_CFG 0xD0 38062306a36Sopenharmony_ci#define A_CONF 0xD1 38162306a36Sopenharmony_ci#define A_CH_MSK 0xF4 38262306a36Sopenharmony_ci#define A_CON_HDLC 0xFA 38362306a36Sopenharmony_ci#define A_SUBCH_CFG 0xFB 38462306a36Sopenharmony_ci#define A_CHANNEL 0xFC 38562306a36Sopenharmony_ci#define A_FIFO_SEQ 0xFD 38662306a36Sopenharmony_ci#define A_IRQ_MSK 0xFF 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ci/* read only registers */ 38962306a36Sopenharmony_ci#define A_Z12 0x04 39062306a36Sopenharmony_ci#define A_Z1L 0x04 39162306a36Sopenharmony_ci#define A_Z1 0x04 39262306a36Sopenharmony_ci#define A_Z1H 0x05 39362306a36Sopenharmony_ci#define A_Z2L 0x06 39462306a36Sopenharmony_ci#define A_Z2 0x06 39562306a36Sopenharmony_ci#define A_Z2H 0x07 39662306a36Sopenharmony_ci#define A_F1 0x0C 39762306a36Sopenharmony_ci#define A_F12 0x0C 39862306a36Sopenharmony_ci#define A_F2 0x0D 39962306a36Sopenharmony_ci#define R_IRQ_OVIEW 0x10 40062306a36Sopenharmony_ci#define R_IRQ_MISC 0x11 40162306a36Sopenharmony_ci#define R_IRQ_STATECH 0x12 40262306a36Sopenharmony_ci#define R_CONF_OFLOW 0x14 40362306a36Sopenharmony_ci#define R_RAM_USE 0x15 40462306a36Sopenharmony_ci#define R_CHIP_ID 0x16 40562306a36Sopenharmony_ci#define R_BERT_STA 0x17 40662306a36Sopenharmony_ci#define R_F0_CNTL 0x18 40762306a36Sopenharmony_ci#define R_F0_CNTH 0x19 40862306a36Sopenharmony_ci#define R_BERT_EC 0x1A 40962306a36Sopenharmony_ci#define R_BERT_ECL 0x1A 41062306a36Sopenharmony_ci#define R_BERT_ECH 0x1B 41162306a36Sopenharmony_ci#define R_STATUS 0x1C 41262306a36Sopenharmony_ci#define R_CHIP_RV 0x1F 41362306a36Sopenharmony_ci#define R_STATE 0x20 41462306a36Sopenharmony_ci#define R_SYNC_STA 0x24 41562306a36Sopenharmony_ci#define R_RX_SL0_0 0x25 41662306a36Sopenharmony_ci#define R_RX_SL0_1 0x26 41762306a36Sopenharmony_ci#define R_RX_SL0_2 0x27 41862306a36Sopenharmony_ci#define R_JATT_DIR 0x2b /* undocumented */ 41962306a36Sopenharmony_ci#define R_SLIP 0x2c 42062306a36Sopenharmony_ci#define A_ST_RD_STA 0x30 42162306a36Sopenharmony_ci#define R_FAS_EC 0x30 42262306a36Sopenharmony_ci#define R_FAS_ECL 0x30 42362306a36Sopenharmony_ci#define R_FAS_ECH 0x31 42462306a36Sopenharmony_ci#define R_VIO_EC 0x32 42562306a36Sopenharmony_ci#define R_VIO_ECL 0x32 42662306a36Sopenharmony_ci#define R_VIO_ECH 0x33 42762306a36Sopenharmony_ci#define A_ST_SQ_RD 0x34 42862306a36Sopenharmony_ci#define R_CRC_EC 0x34 42962306a36Sopenharmony_ci#define R_CRC_ECL 0x34 43062306a36Sopenharmony_ci#define R_CRC_ECH 0x35 43162306a36Sopenharmony_ci#define R_E_EC 0x36 43262306a36Sopenharmony_ci#define R_E_ECL 0x36 43362306a36Sopenharmony_ci#define R_E_ECH 0x37 43462306a36Sopenharmony_ci#define R_SA6_SA13_EC 0x38 43562306a36Sopenharmony_ci#define R_SA6_SA13_ECL 0x38 43662306a36Sopenharmony_ci#define R_SA6_SA13_ECH 0x39 43762306a36Sopenharmony_ci#define R_SA6_SA23_EC 0x3A 43862306a36Sopenharmony_ci#define R_SA6_SA23_ECL 0x3A 43962306a36Sopenharmony_ci#define R_SA6_SA23_ECH 0x3B 44062306a36Sopenharmony_ci#define A_ST_B1_RX 0x3C 44162306a36Sopenharmony_ci#define A_ST_B2_RX 0x3D 44262306a36Sopenharmony_ci#define A_ST_D_RX 0x3E 44362306a36Sopenharmony_ci#define A_ST_E_RX 0x3F 44462306a36Sopenharmony_ci#define R_GPIO_IN0 0x40 44562306a36Sopenharmony_ci#define R_GPIO_IN1 0x41 44662306a36Sopenharmony_ci#define R_GPI_IN0 0x44 44762306a36Sopenharmony_ci#define R_GPI_IN1 0x45 44862306a36Sopenharmony_ci#define R_GPI_IN2 0x46 44962306a36Sopenharmony_ci#define R_GPI_IN3 0x47 45062306a36Sopenharmony_ci#define R_INT_DATA 0x88 45162306a36Sopenharmony_ci#define R_IRQ_FIFO_BL0 0xC8 45262306a36Sopenharmony_ci#define R_IRQ_FIFO_BL1 0xC9 45362306a36Sopenharmony_ci#define R_IRQ_FIFO_BL2 0xCA 45462306a36Sopenharmony_ci#define R_IRQ_FIFO_BL3 0xCB 45562306a36Sopenharmony_ci#define R_IRQ_FIFO_BL4 0xCC 45662306a36Sopenharmony_ci#define R_IRQ_FIFO_BL5 0xCD 45762306a36Sopenharmony_ci#define R_IRQ_FIFO_BL6 0xCE 45862306a36Sopenharmony_ci#define R_IRQ_FIFO_BL7 0xCF 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ci/* read and write registers */ 46162306a36Sopenharmony_ci#define A_FIFO_DATA0 0x80 46262306a36Sopenharmony_ci#define A_FIFO_DATA1 0x80 46362306a36Sopenharmony_ci#define A_FIFO_DATA2 0x80 46462306a36Sopenharmony_ci#define A_FIFO_DATA0_NOINC 0x84 46562306a36Sopenharmony_ci#define A_FIFO_DATA1_NOINC 0x84 46662306a36Sopenharmony_ci#define A_FIFO_DATA2_NOINC 0x84 46762306a36Sopenharmony_ci#define R_RAM_DATA 0xC0 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ci/* 47162306a36Sopenharmony_ci * BIT SETTING FOR HFC-4S/8S AND HFC-E1 47262306a36Sopenharmony_ci */ 47362306a36Sopenharmony_ci 47462306a36Sopenharmony_ci/* chapter 2: universal bus interface */ 47562306a36Sopenharmony_ci/* R_CIRM */ 47662306a36Sopenharmony_ci#define V_IRQ_SEL 0x01 47762306a36Sopenharmony_ci#define V_SRES 0x08 47862306a36Sopenharmony_ci#define V_HFCRES 0x10 47962306a36Sopenharmony_ci#define V_PCMRES 0x20 48062306a36Sopenharmony_ci#define V_STRES 0x40 48162306a36Sopenharmony_ci#define V_ETRES 0x40 48262306a36Sopenharmony_ci#define V_RLD_EPR 0x80 48362306a36Sopenharmony_ci/* R_CTRL */ 48462306a36Sopenharmony_ci#define V_FIFO_LPRIO 0x02 48562306a36Sopenharmony_ci#define V_SLOW_RD 0x04 48662306a36Sopenharmony_ci#define V_EXT_RAM 0x08 48762306a36Sopenharmony_ci#define V_CLK_OFF 0x20 48862306a36Sopenharmony_ci#define V_ST_CLK 0x40 48962306a36Sopenharmony_ci/* R_RAM_ADDR0 */ 49062306a36Sopenharmony_ci#define V_RAM_ADDR2 0x01 49162306a36Sopenharmony_ci#define V_ADDR_RES 0x40 49262306a36Sopenharmony_ci#define V_ADDR_INC 0x80 49362306a36Sopenharmony_ci/* R_RAM_SZ */ 49462306a36Sopenharmony_ci#define V_RAM_SZ 0x01 49562306a36Sopenharmony_ci#define V_PWM0_16KHZ 0x10 49662306a36Sopenharmony_ci#define V_PWM1_16KHZ 0x20 49762306a36Sopenharmony_ci#define V_FZ_MD 0x80 49862306a36Sopenharmony_ci/* R_CHIP_ID */ 49962306a36Sopenharmony_ci#define V_PNP_IRQ 0x01 50062306a36Sopenharmony_ci#define V_CHIP_ID 0x10 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_ci/* chapter 3: data flow */ 50362306a36Sopenharmony_ci/* R_FIRST_FIFO */ 50462306a36Sopenharmony_ci#define V_FIRST_FIRO_DIR 0x01 50562306a36Sopenharmony_ci#define V_FIRST_FIFO_NUM 0x02 50662306a36Sopenharmony_ci/* R_FIFO_MD */ 50762306a36Sopenharmony_ci#define V_FIFO_MD 0x01 50862306a36Sopenharmony_ci#define V_CSM_MD 0x04 50962306a36Sopenharmony_ci#define V_FSM_MD 0x08 51062306a36Sopenharmony_ci#define V_FIFO_SZ 0x10 51162306a36Sopenharmony_ci/* R_FIFO */ 51262306a36Sopenharmony_ci#define V_FIFO_DIR 0x01 51362306a36Sopenharmony_ci#define V_FIFO_NUM 0x02 51462306a36Sopenharmony_ci#define V_REV 0x80 51562306a36Sopenharmony_ci/* R_SLOT */ 51662306a36Sopenharmony_ci#define V_SL_DIR 0x01 51762306a36Sopenharmony_ci#define V_SL_NUM 0x02 51862306a36Sopenharmony_ci/* A_SL_CFG */ 51962306a36Sopenharmony_ci#define V_CH_DIR 0x01 52062306a36Sopenharmony_ci#define V_CH_SEL 0x02 52162306a36Sopenharmony_ci#define V_ROUTING 0x40 52262306a36Sopenharmony_ci/* A_CON_HDLC */ 52362306a36Sopenharmony_ci#define V_IFF 0x01 52462306a36Sopenharmony_ci#define V_HDLC_TRP 0x02 52562306a36Sopenharmony_ci#define V_TRP_IRQ 0x04 52662306a36Sopenharmony_ci#define V_DATA_FLOW 0x20 52762306a36Sopenharmony_ci/* A_SUBCH_CFG */ 52862306a36Sopenharmony_ci#define V_BIT_CNT 0x01 52962306a36Sopenharmony_ci#define V_START_BIT 0x08 53062306a36Sopenharmony_ci#define V_LOOP_FIFO 0x40 53162306a36Sopenharmony_ci#define V_INV_DATA 0x80 53262306a36Sopenharmony_ci/* A_CHANNEL */ 53362306a36Sopenharmony_ci#define V_CH_DIR0 0x01 53462306a36Sopenharmony_ci#define V_CH_NUM0 0x02 53562306a36Sopenharmony_ci/* A_FIFO_SEQ */ 53662306a36Sopenharmony_ci#define V_NEXT_FIFO_DIR 0x01 53762306a36Sopenharmony_ci#define V_NEXT_FIFO_NUM 0x02 53862306a36Sopenharmony_ci#define V_SEQ_END 0x40 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci/* chapter 4: FIFO handling and HDLC controller */ 54162306a36Sopenharmony_ci/* R_INC_RES_FIFO */ 54262306a36Sopenharmony_ci#define V_INC_F 0x01 54362306a36Sopenharmony_ci#define V_RES_F 0x02 54462306a36Sopenharmony_ci#define V_RES_LOST 0x04 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ci/* chapter 5: S/T interface */ 54762306a36Sopenharmony_ci/* R_SCI_MSK */ 54862306a36Sopenharmony_ci#define V_SCI_MSK_ST0 0x01 54962306a36Sopenharmony_ci#define V_SCI_MSK_ST1 0x02 55062306a36Sopenharmony_ci#define V_SCI_MSK_ST2 0x04 55162306a36Sopenharmony_ci#define V_SCI_MSK_ST3 0x08 55262306a36Sopenharmony_ci#define V_SCI_MSK_ST4 0x10 55362306a36Sopenharmony_ci#define V_SCI_MSK_ST5 0x20 55462306a36Sopenharmony_ci#define V_SCI_MSK_ST6 0x40 55562306a36Sopenharmony_ci#define V_SCI_MSK_ST7 0x80 55662306a36Sopenharmony_ci/* R_ST_SEL */ 55762306a36Sopenharmony_ci#define V_ST_SEL 0x01 55862306a36Sopenharmony_ci#define V_MULT_ST 0x08 55962306a36Sopenharmony_ci/* R_ST_SYNC */ 56062306a36Sopenharmony_ci#define V_SYNC_SEL 0x01 56162306a36Sopenharmony_ci#define V_AUTO_SYNC 0x08 56262306a36Sopenharmony_ci/* A_ST_WR_STA */ 56362306a36Sopenharmony_ci#define V_ST_SET_STA 0x01 56462306a36Sopenharmony_ci#define V_ST_LD_STA 0x10 56562306a36Sopenharmony_ci#define V_ST_ACT 0x20 56662306a36Sopenharmony_ci#define V_SET_G2_G3 0x80 56762306a36Sopenharmony_ci/* A_ST_CTRL0 */ 56862306a36Sopenharmony_ci#define V_B1_EN 0x01 56962306a36Sopenharmony_ci#define V_B2_EN 0x02 57062306a36Sopenharmony_ci#define V_ST_MD 0x04 57162306a36Sopenharmony_ci#define V_D_PRIO 0x08 57262306a36Sopenharmony_ci#define V_SQ_EN 0x10 57362306a36Sopenharmony_ci#define V_96KHZ 0x20 57462306a36Sopenharmony_ci#define V_TX_LI 0x40 57562306a36Sopenharmony_ci#define V_ST_STOP 0x80 57662306a36Sopenharmony_ci/* A_ST_CTRL1 */ 57762306a36Sopenharmony_ci#define V_G2_G3_EN 0x01 57862306a36Sopenharmony_ci#define V_D_HI 0x04 57962306a36Sopenharmony_ci#define V_E_IGNO 0x08 58062306a36Sopenharmony_ci#define V_E_LO 0x10 58162306a36Sopenharmony_ci#define V_B12_SWAP 0x80 58262306a36Sopenharmony_ci/* A_ST_CTRL2 */ 58362306a36Sopenharmony_ci#define V_B1_RX_EN 0x01 58462306a36Sopenharmony_ci#define V_B2_RX_EN 0x02 58562306a36Sopenharmony_ci#define V_ST_TRIS 0x40 58662306a36Sopenharmony_ci/* A_ST_CLK_DLY */ 58762306a36Sopenharmony_ci#define V_ST_CK_DLY 0x01 58862306a36Sopenharmony_ci#define V_ST_SMPL 0x10 58962306a36Sopenharmony_ci/* A_ST_D_TX */ 59062306a36Sopenharmony_ci#define V_ST_D_TX 0x40 59162306a36Sopenharmony_ci/* R_IRQ_STATECH */ 59262306a36Sopenharmony_ci#define V_SCI_ST0 0x01 59362306a36Sopenharmony_ci#define V_SCI_ST1 0x02 59462306a36Sopenharmony_ci#define V_SCI_ST2 0x04 59562306a36Sopenharmony_ci#define V_SCI_ST3 0x08 59662306a36Sopenharmony_ci#define V_SCI_ST4 0x10 59762306a36Sopenharmony_ci#define V_SCI_ST5 0x20 59862306a36Sopenharmony_ci#define V_SCI_ST6 0x40 59962306a36Sopenharmony_ci#define V_SCI_ST7 0x80 60062306a36Sopenharmony_ci/* A_ST_RD_STA */ 60162306a36Sopenharmony_ci#define V_ST_STA 0x01 60262306a36Sopenharmony_ci#define V_FR_SYNC_ST 0x10 60362306a36Sopenharmony_ci#define V_TI2_EXP 0x20 60462306a36Sopenharmony_ci#define V_INFO0 0x40 60562306a36Sopenharmony_ci#define V_G2_G3 0x80 60662306a36Sopenharmony_ci/* A_ST_SQ_RD */ 60762306a36Sopenharmony_ci#define V_ST_SQ 0x01 60862306a36Sopenharmony_ci#define V_MF_RX_RDY 0x10 60962306a36Sopenharmony_ci#define V_MF_TX_RDY 0x80 61062306a36Sopenharmony_ci/* A_ST_D_RX */ 61162306a36Sopenharmony_ci#define V_ST_D_RX 0x40 61262306a36Sopenharmony_ci/* A_ST_E_RX */ 61362306a36Sopenharmony_ci#define V_ST_E_RX 0x40 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ci/* chapter 5: E1 interface */ 61662306a36Sopenharmony_ci/* R_E1_WR_STA */ 61762306a36Sopenharmony_ci/* R_E1_RD_STA */ 61862306a36Sopenharmony_ci#define V_E1_SET_STA 0x01 61962306a36Sopenharmony_ci#define V_E1_LD_STA 0x10 62062306a36Sopenharmony_ci/* R_RX0 */ 62162306a36Sopenharmony_ci#define V_RX_CODE 0x01 62262306a36Sopenharmony_ci#define V_RX_FBAUD 0x04 62362306a36Sopenharmony_ci#define V_RX_CMI 0x08 62462306a36Sopenharmony_ci#define V_RX_INV_CMI 0x10 62562306a36Sopenharmony_ci#define V_RX_INV_CLK 0x20 62662306a36Sopenharmony_ci#define V_RX_INV_DATA 0x40 62762306a36Sopenharmony_ci#define V_AIS_ITU 0x80 62862306a36Sopenharmony_ci/* R_RX_FR0 */ 62962306a36Sopenharmony_ci#define V_NO_INSYNC 0x01 63062306a36Sopenharmony_ci#define V_AUTO_RESYNC 0x02 63162306a36Sopenharmony_ci#define V_AUTO_RECO 0x04 63262306a36Sopenharmony_ci#define V_SWORD_COND 0x08 63362306a36Sopenharmony_ci#define V_SYNC_LOSS 0x10 63462306a36Sopenharmony_ci#define V_XCRC_SYNC 0x20 63562306a36Sopenharmony_ci#define V_MF_RESYNC 0x40 63662306a36Sopenharmony_ci#define V_RESYNC 0x80 63762306a36Sopenharmony_ci/* R_RX_FR1 */ 63862306a36Sopenharmony_ci#define V_RX_MF 0x01 63962306a36Sopenharmony_ci#define V_RX_MF_SYNC 0x02 64062306a36Sopenharmony_ci#define V_RX_SL0_RAM 0x04 64162306a36Sopenharmony_ci#define V_ERR_SIM 0x20 64262306a36Sopenharmony_ci#define V_RES_NMF 0x40 64362306a36Sopenharmony_ci/* R_TX0 */ 64462306a36Sopenharmony_ci#define V_TX_CODE 0x01 64562306a36Sopenharmony_ci#define V_TX_FBAUD 0x04 64662306a36Sopenharmony_ci#define V_TX_CMI_CODE 0x08 64762306a36Sopenharmony_ci#define V_TX_INV_CMI_CODE 0x10 64862306a36Sopenharmony_ci#define V_TX_INV_CLK 0x20 64962306a36Sopenharmony_ci#define V_TX_INV_DATA 0x40 65062306a36Sopenharmony_ci#define V_OUT_EN 0x80 65162306a36Sopenharmony_ci/* R_TX1 */ 65262306a36Sopenharmony_ci#define V_INV_CLK 0x01 65362306a36Sopenharmony_ci#define V_EXCHG_DATA_LI 0x02 65462306a36Sopenharmony_ci#define V_AIS_OUT 0x04 65562306a36Sopenharmony_ci#define V_ATX 0x20 65662306a36Sopenharmony_ci#define V_NTRI 0x40 65762306a36Sopenharmony_ci#define V_AUTO_ERR_RES 0x80 65862306a36Sopenharmony_ci/* R_TX_FR0 */ 65962306a36Sopenharmony_ci#define V_TRP_FAS 0x01 66062306a36Sopenharmony_ci#define V_TRP_NFAS 0x02 66162306a36Sopenharmony_ci#define V_TRP_RAL 0x04 66262306a36Sopenharmony_ci#define V_TRP_SA 0x08 66362306a36Sopenharmony_ci/* R_TX_FR1 */ 66462306a36Sopenharmony_ci#define V_TX_FAS 0x01 66562306a36Sopenharmony_ci#define V_TX_NFAS 0x02 66662306a36Sopenharmony_ci#define V_TX_RAL 0x04 66762306a36Sopenharmony_ci#define V_TX_SA 0x08 66862306a36Sopenharmony_ci/* R_TX_FR2 */ 66962306a36Sopenharmony_ci#define V_TX_MF 0x01 67062306a36Sopenharmony_ci#define V_TRP_SL0 0x02 67162306a36Sopenharmony_ci#define V_TX_SL0_RAM 0x04 67262306a36Sopenharmony_ci#define V_TX_E 0x10 67362306a36Sopenharmony_ci#define V_NEG_E 0x20 67462306a36Sopenharmony_ci#define V_XS12_ON 0x40 67562306a36Sopenharmony_ci#define V_XS15_ON 0x80 67662306a36Sopenharmony_ci/* R_RX_OFF */ 67762306a36Sopenharmony_ci#define V_RX_SZ 0x01 67862306a36Sopenharmony_ci#define V_RX_INIT 0x04 67962306a36Sopenharmony_ci/* R_SYNC_OUT */ 68062306a36Sopenharmony_ci#define V_SYNC_E1_RX 0x01 68162306a36Sopenharmony_ci#define V_IPATS0 0x20 68262306a36Sopenharmony_ci#define V_IPATS1 0x40 68362306a36Sopenharmony_ci#define V_IPATS2 0x80 68462306a36Sopenharmony_ci/* R_TX_OFF */ 68562306a36Sopenharmony_ci#define V_TX_SZ 0x01 68662306a36Sopenharmony_ci#define V_TX_INIT 0x04 68762306a36Sopenharmony_ci/* R_SYNC_CTRL */ 68862306a36Sopenharmony_ci#define V_EXT_CLK_SYNC 0x01 68962306a36Sopenharmony_ci#define V_SYNC_OFFS 0x02 69062306a36Sopenharmony_ci#define V_PCM_SYNC 0x04 69162306a36Sopenharmony_ci#define V_NEG_CLK 0x08 69262306a36Sopenharmony_ci#define V_HCLK 0x10 69362306a36Sopenharmony_ci/* 69462306a36Sopenharmony_ci #define V_JATT_AUTO_DEL 0x20 69562306a36Sopenharmony_ci #define V_JATT_AUTO 0x40 69662306a36Sopenharmony_ci*/ 69762306a36Sopenharmony_ci#define V_JATT_OFF 0x80 69862306a36Sopenharmony_ci/* R_STATE */ 69962306a36Sopenharmony_ci#define V_E1_STA 0x01 70062306a36Sopenharmony_ci#define V_ALT_FR_RX 0x40 70162306a36Sopenharmony_ci#define V_ALT_FR_TX 0x80 70262306a36Sopenharmony_ci/* R_SYNC_STA */ 70362306a36Sopenharmony_ci#define V_RX_STA 0x01 70462306a36Sopenharmony_ci#define V_FR_SYNC_E1 0x04 70562306a36Sopenharmony_ci#define V_SIG_LOS 0x08 70662306a36Sopenharmony_ci#define V_MFA_STA 0x10 70762306a36Sopenharmony_ci#define V_AIS 0x40 70862306a36Sopenharmony_ci#define V_NO_MF_SYNC 0x80 70962306a36Sopenharmony_ci/* R_RX_SL0_0 */ 71062306a36Sopenharmony_ci#define V_SI_FAS 0x01 71162306a36Sopenharmony_ci#define V_SI_NFAS 0x02 71262306a36Sopenharmony_ci#define V_A 0x04 71362306a36Sopenharmony_ci#define V_CRC_OK 0x08 71462306a36Sopenharmony_ci#define V_TX_E1 0x10 71562306a36Sopenharmony_ci#define V_TX_E2 0x20 71662306a36Sopenharmony_ci#define V_RX_E1 0x40 71762306a36Sopenharmony_ci#define V_RX_E2 0x80 71862306a36Sopenharmony_ci/* R_SLIP */ 71962306a36Sopenharmony_ci#define V_SLIP_RX 0x01 72062306a36Sopenharmony_ci#define V_FOSLIP_RX 0x08 72162306a36Sopenharmony_ci#define V_SLIP_TX 0x10 72262306a36Sopenharmony_ci#define V_FOSLIP_TX 0x80 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ci/* chapter 6: PCM interface */ 72562306a36Sopenharmony_ci/* R_PCM_MD0 */ 72662306a36Sopenharmony_ci#define V_PCM_MD 0x01 72762306a36Sopenharmony_ci#define V_C4_POL 0x02 72862306a36Sopenharmony_ci#define V_F0_NEG 0x04 72962306a36Sopenharmony_ci#define V_F0_LEN 0x08 73062306a36Sopenharmony_ci#define V_PCM_ADDR 0x10 73162306a36Sopenharmony_ci/* R_SL_SEL0 */ 73262306a36Sopenharmony_ci#define V_SL_SEL0 0x01 73362306a36Sopenharmony_ci#define V_SH_SEL0 0x80 73462306a36Sopenharmony_ci/* R_SL_SEL1 */ 73562306a36Sopenharmony_ci#define V_SL_SEL1 0x01 73662306a36Sopenharmony_ci#define V_SH_SEL1 0x80 73762306a36Sopenharmony_ci/* R_SL_SEL2 */ 73862306a36Sopenharmony_ci#define V_SL_SEL2 0x01 73962306a36Sopenharmony_ci#define V_SH_SEL2 0x80 74062306a36Sopenharmony_ci/* R_SL_SEL3 */ 74162306a36Sopenharmony_ci#define V_SL_SEL3 0x01 74262306a36Sopenharmony_ci#define V_SH_SEL3 0x80 74362306a36Sopenharmony_ci/* R_SL_SEL4 */ 74462306a36Sopenharmony_ci#define V_SL_SEL4 0x01 74562306a36Sopenharmony_ci#define V_SH_SEL4 0x80 74662306a36Sopenharmony_ci/* R_SL_SEL5 */ 74762306a36Sopenharmony_ci#define V_SL_SEL5 0x01 74862306a36Sopenharmony_ci#define V_SH_SEL5 0x80 74962306a36Sopenharmony_ci/* R_SL_SEL6 */ 75062306a36Sopenharmony_ci#define V_SL_SEL6 0x01 75162306a36Sopenharmony_ci#define V_SH_SEL6 0x80 75262306a36Sopenharmony_ci/* R_SL_SEL7 */ 75362306a36Sopenharmony_ci#define V_SL_SEL7 0x01 75462306a36Sopenharmony_ci#define V_SH_SEL7 0x80 75562306a36Sopenharmony_ci/* R_PCM_MD1 */ 75662306a36Sopenharmony_ci#define V_ODEC_CON 0x01 75762306a36Sopenharmony_ci#define V_PLL_ADJ 0x04 75862306a36Sopenharmony_ci#define V_PCM_DR 0x10 75962306a36Sopenharmony_ci#define V_PCM_LOOP 0x40 76062306a36Sopenharmony_ci/* R_PCM_MD2 */ 76162306a36Sopenharmony_ci#define V_SYNC_PLL 0x02 76262306a36Sopenharmony_ci#define V_SYNC_SRC 0x04 76362306a36Sopenharmony_ci#define V_SYNC_OUT 0x08 76462306a36Sopenharmony_ci#define V_ICR_FR_TIME 0x40 76562306a36Sopenharmony_ci#define V_EN_PLL 0x80 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ci/* chapter 7: pulse width modulation */ 76862306a36Sopenharmony_ci/* R_PWM_MD */ 76962306a36Sopenharmony_ci#define V_EXT_IRQ_EN 0x08 77062306a36Sopenharmony_ci#define V_PWM0_MD 0x10 77162306a36Sopenharmony_ci#define V_PWM1_MD 0x40 77262306a36Sopenharmony_ci 77362306a36Sopenharmony_ci/* chapter 8: multiparty audio conferences */ 77462306a36Sopenharmony_ci/* R_CONF_EN */ 77562306a36Sopenharmony_ci#define V_CONF_EN 0x01 77662306a36Sopenharmony_ci#define V_ULAW 0x80 77762306a36Sopenharmony_ci/* A_CONF */ 77862306a36Sopenharmony_ci#define V_CONF_NUM 0x01 77962306a36Sopenharmony_ci#define V_NOISE_SUPPR 0x08 78062306a36Sopenharmony_ci#define V_ATT_LEV 0x20 78162306a36Sopenharmony_ci#define V_CONF_SL 0x80 78262306a36Sopenharmony_ci/* R_CONF_OFLOW */ 78362306a36Sopenharmony_ci#define V_CONF_OFLOW0 0x01 78462306a36Sopenharmony_ci#define V_CONF_OFLOW1 0x02 78562306a36Sopenharmony_ci#define V_CONF_OFLOW2 0x04 78662306a36Sopenharmony_ci#define V_CONF_OFLOW3 0x08 78762306a36Sopenharmony_ci#define V_CONF_OFLOW4 0x10 78862306a36Sopenharmony_ci#define V_CONF_OFLOW5 0x20 78962306a36Sopenharmony_ci#define V_CONF_OFLOW6 0x40 79062306a36Sopenharmony_ci#define V_CONF_OFLOW7 0x80 79162306a36Sopenharmony_ci 79262306a36Sopenharmony_ci/* chapter 9: DTMF contoller */ 79362306a36Sopenharmony_ci/* R_DTMF0 */ 79462306a36Sopenharmony_ci#define V_DTMF_EN 0x01 79562306a36Sopenharmony_ci#define V_HARM_SEL 0x02 79662306a36Sopenharmony_ci#define V_DTMF_RX_CH 0x04 79762306a36Sopenharmony_ci#define V_DTMF_STOP 0x08 79862306a36Sopenharmony_ci#define V_CHBL_SEL 0x10 79962306a36Sopenharmony_ci#define V_RST_DTMF 0x40 80062306a36Sopenharmony_ci#define V_ULAW_SEL 0x80 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_ci/* chapter 10: BERT */ 80362306a36Sopenharmony_ci/* R_BERT_WD_MD */ 80462306a36Sopenharmony_ci#define V_PAT_SEQ 0x01 80562306a36Sopenharmony_ci#define V_BERT_ERR 0x08 80662306a36Sopenharmony_ci#define V_AUTO_WD_RES 0x20 80762306a36Sopenharmony_ci#define V_WD_RES 0x80 80862306a36Sopenharmony_ci/* R_BERT_STA */ 80962306a36Sopenharmony_ci#define V_BERT_SYNC_SRC 0x01 81062306a36Sopenharmony_ci#define V_BERT_SYNC 0x10 81162306a36Sopenharmony_ci#define V_BERT_INV_DATA 0x20 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_ci/* chapter 11: auxiliary interface */ 81462306a36Sopenharmony_ci/* R_BRG_PCM_CFG */ 81562306a36Sopenharmony_ci#define V_BRG_EN 0x01 81662306a36Sopenharmony_ci#define V_BRG_MD 0x02 81762306a36Sopenharmony_ci#define V_PCM_CLK 0x20 81862306a36Sopenharmony_ci#define V_ADDR_WRDLY 0x40 81962306a36Sopenharmony_ci/* R_BRG_CTRL */ 82062306a36Sopenharmony_ci#define V_BRG_CS 0x01 82162306a36Sopenharmony_ci#define V_BRG_ADDR 0x08 82262306a36Sopenharmony_ci#define V_BRG_CS_SRC 0x80 82362306a36Sopenharmony_ci/* R_BRG_MD */ 82462306a36Sopenharmony_ci#define V_BRG_MD0 0x01 82562306a36Sopenharmony_ci#define V_BRG_MD1 0x02 82662306a36Sopenharmony_ci#define V_BRG_MD2 0x04 82762306a36Sopenharmony_ci#define V_BRG_MD3 0x08 82862306a36Sopenharmony_ci#define V_BRG_MD4 0x10 82962306a36Sopenharmony_ci#define V_BRG_MD5 0x20 83062306a36Sopenharmony_ci#define V_BRG_MD6 0x40 83162306a36Sopenharmony_ci#define V_BRG_MD7 0x80 83262306a36Sopenharmony_ci/* R_BRG_TIM0 */ 83362306a36Sopenharmony_ci#define V_BRG_TIM0_IDLE 0x01 83462306a36Sopenharmony_ci#define V_BRG_TIM0_CLK 0x10 83562306a36Sopenharmony_ci/* R_BRG_TIM1 */ 83662306a36Sopenharmony_ci#define V_BRG_TIM1_IDLE 0x01 83762306a36Sopenharmony_ci#define V_BRG_TIM1_CLK 0x10 83862306a36Sopenharmony_ci/* R_BRG_TIM2 */ 83962306a36Sopenharmony_ci#define V_BRG_TIM2_IDLE 0x01 84062306a36Sopenharmony_ci#define V_BRG_TIM2_CLK 0x10 84162306a36Sopenharmony_ci/* R_BRG_TIM3 */ 84262306a36Sopenharmony_ci#define V_BRG_TIM3_IDLE 0x01 84362306a36Sopenharmony_ci#define V_BRG_TIM3_CLK 0x10 84462306a36Sopenharmony_ci/* R_BRG_TIM_SEL01 */ 84562306a36Sopenharmony_ci#define V_BRG_WR_SEL0 0x01 84662306a36Sopenharmony_ci#define V_BRG_RD_SEL0 0x04 84762306a36Sopenharmony_ci#define V_BRG_WR_SEL1 0x10 84862306a36Sopenharmony_ci#define V_BRG_RD_SEL1 0x40 84962306a36Sopenharmony_ci/* R_BRG_TIM_SEL23 */ 85062306a36Sopenharmony_ci#define V_BRG_WR_SEL2 0x01 85162306a36Sopenharmony_ci#define V_BRG_RD_SEL2 0x04 85262306a36Sopenharmony_ci#define V_BRG_WR_SEL3 0x10 85362306a36Sopenharmony_ci#define V_BRG_RD_SEL3 0x40 85462306a36Sopenharmony_ci/* R_BRG_TIM_SEL45 */ 85562306a36Sopenharmony_ci#define V_BRG_WR_SEL4 0x01 85662306a36Sopenharmony_ci#define V_BRG_RD_SEL4 0x04 85762306a36Sopenharmony_ci#define V_BRG_WR_SEL5 0x10 85862306a36Sopenharmony_ci#define V_BRG_RD_SEL5 0x40 85962306a36Sopenharmony_ci/* R_BRG_TIM_SEL67 */ 86062306a36Sopenharmony_ci#define V_BRG_WR_SEL6 0x01 86162306a36Sopenharmony_ci#define V_BRG_RD_SEL6 0x04 86262306a36Sopenharmony_ci#define V_BRG_WR_SEL7 0x10 86362306a36Sopenharmony_ci#define V_BRG_RD_SEL7 0x40 86462306a36Sopenharmony_ci 86562306a36Sopenharmony_ci/* chapter 12: clock, reset, interrupt, timer and watchdog */ 86662306a36Sopenharmony_ci/* R_IRQMSK_MISC */ 86762306a36Sopenharmony_ci#define V_STA_IRQMSK 0x01 86862306a36Sopenharmony_ci#define V_TI_IRQMSK 0x02 86962306a36Sopenharmony_ci#define V_PROC_IRQMSK 0x04 87062306a36Sopenharmony_ci#define V_DTMF_IRQMSK 0x08 87162306a36Sopenharmony_ci#define V_IRQ1S_MSK 0x10 87262306a36Sopenharmony_ci#define V_SA6_IRQMSK 0x20 87362306a36Sopenharmony_ci#define V_RX_EOMF_MSK 0x40 87462306a36Sopenharmony_ci#define V_TX_EOMF_MSK 0x80 87562306a36Sopenharmony_ci/* R_IRQ_CTRL */ 87662306a36Sopenharmony_ci#define V_FIFO_IRQ 0x01 87762306a36Sopenharmony_ci#define V_GLOB_IRQ_EN 0x08 87862306a36Sopenharmony_ci#define V_IRQ_POL 0x10 87962306a36Sopenharmony_ci/* R_TI_WD */ 88062306a36Sopenharmony_ci#define V_EV_TS 0x01 88162306a36Sopenharmony_ci#define V_WD_TS 0x10 88262306a36Sopenharmony_ci/* A_IRQ_MSK */ 88362306a36Sopenharmony_ci#define V_IRQ 0x01 88462306a36Sopenharmony_ci#define V_BERT_EN 0x02 88562306a36Sopenharmony_ci#define V_MIX_IRQ 0x04 88662306a36Sopenharmony_ci/* R_IRQ_OVIEW */ 88762306a36Sopenharmony_ci#define V_IRQ_FIFO_BL0 0x01 88862306a36Sopenharmony_ci#define V_IRQ_FIFO_BL1 0x02 88962306a36Sopenharmony_ci#define V_IRQ_FIFO_BL2 0x04 89062306a36Sopenharmony_ci#define V_IRQ_FIFO_BL3 0x08 89162306a36Sopenharmony_ci#define V_IRQ_FIFO_BL4 0x10 89262306a36Sopenharmony_ci#define V_IRQ_FIFO_BL5 0x20 89362306a36Sopenharmony_ci#define V_IRQ_FIFO_BL6 0x40 89462306a36Sopenharmony_ci#define V_IRQ_FIFO_BL7 0x80 89562306a36Sopenharmony_ci/* R_IRQ_MISC */ 89662306a36Sopenharmony_ci#define V_STA_IRQ 0x01 89762306a36Sopenharmony_ci#define V_TI_IRQ 0x02 89862306a36Sopenharmony_ci#define V_IRQ_PROC 0x04 89962306a36Sopenharmony_ci#define V_DTMF_IRQ 0x08 90062306a36Sopenharmony_ci#define V_IRQ1S 0x10 90162306a36Sopenharmony_ci#define V_SA6_IRQ 0x20 90262306a36Sopenharmony_ci#define V_RX_EOMF 0x40 90362306a36Sopenharmony_ci#define V_TX_EOMF 0x80 90462306a36Sopenharmony_ci/* R_STATUS */ 90562306a36Sopenharmony_ci#define V_BUSY 0x01 90662306a36Sopenharmony_ci#define V_PROC 0x02 90762306a36Sopenharmony_ci#define V_DTMF_STA 0x04 90862306a36Sopenharmony_ci#define V_LOST_STA 0x08 90962306a36Sopenharmony_ci#define V_SYNC_IN 0x10 91062306a36Sopenharmony_ci#define V_EXT_IRQSTA 0x20 91162306a36Sopenharmony_ci#define V_MISC_IRQSTA 0x40 91262306a36Sopenharmony_ci#define V_FR_IRQSTA 0x80 91362306a36Sopenharmony_ci/* R_IRQ_FIFO_BL0 */ 91462306a36Sopenharmony_ci#define V_IRQ_FIFO0_TX 0x01 91562306a36Sopenharmony_ci#define V_IRQ_FIFO0_RX 0x02 91662306a36Sopenharmony_ci#define V_IRQ_FIFO1_TX 0x04 91762306a36Sopenharmony_ci#define V_IRQ_FIFO1_RX 0x08 91862306a36Sopenharmony_ci#define V_IRQ_FIFO2_TX 0x10 91962306a36Sopenharmony_ci#define V_IRQ_FIFO2_RX 0x20 92062306a36Sopenharmony_ci#define V_IRQ_FIFO3_TX 0x40 92162306a36Sopenharmony_ci#define V_IRQ_FIFO3_RX 0x80 92262306a36Sopenharmony_ci/* R_IRQ_FIFO_BL1 */ 92362306a36Sopenharmony_ci#define V_IRQ_FIFO4_TX 0x01 92462306a36Sopenharmony_ci#define V_IRQ_FIFO4_RX 0x02 92562306a36Sopenharmony_ci#define V_IRQ_FIFO5_TX 0x04 92662306a36Sopenharmony_ci#define V_IRQ_FIFO5_RX 0x08 92762306a36Sopenharmony_ci#define V_IRQ_FIFO6_TX 0x10 92862306a36Sopenharmony_ci#define V_IRQ_FIFO6_RX 0x20 92962306a36Sopenharmony_ci#define V_IRQ_FIFO7_TX 0x40 93062306a36Sopenharmony_ci#define V_IRQ_FIFO7_RX 0x80 93162306a36Sopenharmony_ci/* R_IRQ_FIFO_BL2 */ 93262306a36Sopenharmony_ci#define V_IRQ_FIFO8_TX 0x01 93362306a36Sopenharmony_ci#define V_IRQ_FIFO8_RX 0x02 93462306a36Sopenharmony_ci#define V_IRQ_FIFO9_TX 0x04 93562306a36Sopenharmony_ci#define V_IRQ_FIFO9_RX 0x08 93662306a36Sopenharmony_ci#define V_IRQ_FIFO10_TX 0x10 93762306a36Sopenharmony_ci#define V_IRQ_FIFO10_RX 0x20 93862306a36Sopenharmony_ci#define V_IRQ_FIFO11_TX 0x40 93962306a36Sopenharmony_ci#define V_IRQ_FIFO11_RX 0x80 94062306a36Sopenharmony_ci/* R_IRQ_FIFO_BL3 */ 94162306a36Sopenharmony_ci#define V_IRQ_FIFO12_TX 0x01 94262306a36Sopenharmony_ci#define V_IRQ_FIFO12_RX 0x02 94362306a36Sopenharmony_ci#define V_IRQ_FIFO13_TX 0x04 94462306a36Sopenharmony_ci#define V_IRQ_FIFO13_RX 0x08 94562306a36Sopenharmony_ci#define V_IRQ_FIFO14_TX 0x10 94662306a36Sopenharmony_ci#define V_IRQ_FIFO14_RX 0x20 94762306a36Sopenharmony_ci#define V_IRQ_FIFO15_TX 0x40 94862306a36Sopenharmony_ci#define V_IRQ_FIFO15_RX 0x80 94962306a36Sopenharmony_ci/* R_IRQ_FIFO_BL4 */ 95062306a36Sopenharmony_ci#define V_IRQ_FIFO16_TX 0x01 95162306a36Sopenharmony_ci#define V_IRQ_FIFO16_RX 0x02 95262306a36Sopenharmony_ci#define V_IRQ_FIFO17_TX 0x04 95362306a36Sopenharmony_ci#define V_IRQ_FIFO17_RX 0x08 95462306a36Sopenharmony_ci#define V_IRQ_FIFO18_TX 0x10 95562306a36Sopenharmony_ci#define V_IRQ_FIFO18_RX 0x20 95662306a36Sopenharmony_ci#define V_IRQ_FIFO19_TX 0x40 95762306a36Sopenharmony_ci#define V_IRQ_FIFO19_RX 0x80 95862306a36Sopenharmony_ci/* R_IRQ_FIFO_BL5 */ 95962306a36Sopenharmony_ci#define V_IRQ_FIFO20_TX 0x01 96062306a36Sopenharmony_ci#define V_IRQ_FIFO20_RX 0x02 96162306a36Sopenharmony_ci#define V_IRQ_FIFO21_TX 0x04 96262306a36Sopenharmony_ci#define V_IRQ_FIFO21_RX 0x08 96362306a36Sopenharmony_ci#define V_IRQ_FIFO22_TX 0x10 96462306a36Sopenharmony_ci#define V_IRQ_FIFO22_RX 0x20 96562306a36Sopenharmony_ci#define V_IRQ_FIFO23_TX 0x40 96662306a36Sopenharmony_ci#define V_IRQ_FIFO23_RX 0x80 96762306a36Sopenharmony_ci/* R_IRQ_FIFO_BL6 */ 96862306a36Sopenharmony_ci#define V_IRQ_FIFO24_TX 0x01 96962306a36Sopenharmony_ci#define V_IRQ_FIFO24_RX 0x02 97062306a36Sopenharmony_ci#define V_IRQ_FIFO25_TX 0x04 97162306a36Sopenharmony_ci#define V_IRQ_FIFO25_RX 0x08 97262306a36Sopenharmony_ci#define V_IRQ_FIFO26_TX 0x10 97362306a36Sopenharmony_ci#define V_IRQ_FIFO26_RX 0x20 97462306a36Sopenharmony_ci#define V_IRQ_FIFO27_TX 0x40 97562306a36Sopenharmony_ci#define V_IRQ_FIFO27_RX 0x80 97662306a36Sopenharmony_ci/* R_IRQ_FIFO_BL7 */ 97762306a36Sopenharmony_ci#define V_IRQ_FIFO28_TX 0x01 97862306a36Sopenharmony_ci#define V_IRQ_FIFO28_RX 0x02 97962306a36Sopenharmony_ci#define V_IRQ_FIFO29_TX 0x04 98062306a36Sopenharmony_ci#define V_IRQ_FIFO29_RX 0x08 98162306a36Sopenharmony_ci#define V_IRQ_FIFO30_TX 0x10 98262306a36Sopenharmony_ci#define V_IRQ_FIFO30_RX 0x20 98362306a36Sopenharmony_ci#define V_IRQ_FIFO31_TX 0x40 98462306a36Sopenharmony_ci#define V_IRQ_FIFO31_RX 0x80 98562306a36Sopenharmony_ci 98662306a36Sopenharmony_ci/* chapter 13: general purpose I/O pins (GPIO) and input pins (GPI) */ 98762306a36Sopenharmony_ci/* R_GPIO_OUT0 */ 98862306a36Sopenharmony_ci#define V_GPIO_OUT0 0x01 98962306a36Sopenharmony_ci#define V_GPIO_OUT1 0x02 99062306a36Sopenharmony_ci#define V_GPIO_OUT2 0x04 99162306a36Sopenharmony_ci#define V_GPIO_OUT3 0x08 99262306a36Sopenharmony_ci#define V_GPIO_OUT4 0x10 99362306a36Sopenharmony_ci#define V_GPIO_OUT5 0x20 99462306a36Sopenharmony_ci#define V_GPIO_OUT6 0x40 99562306a36Sopenharmony_ci#define V_GPIO_OUT7 0x80 99662306a36Sopenharmony_ci/* R_GPIO_OUT1 */ 99762306a36Sopenharmony_ci#define V_GPIO_OUT8 0x01 99862306a36Sopenharmony_ci#define V_GPIO_OUT9 0x02 99962306a36Sopenharmony_ci#define V_GPIO_OUT10 0x04 100062306a36Sopenharmony_ci#define V_GPIO_OUT11 0x08 100162306a36Sopenharmony_ci#define V_GPIO_OUT12 0x10 100262306a36Sopenharmony_ci#define V_GPIO_OUT13 0x20 100362306a36Sopenharmony_ci#define V_GPIO_OUT14 0x40 100462306a36Sopenharmony_ci#define V_GPIO_OUT15 0x80 100562306a36Sopenharmony_ci/* R_GPIO_EN0 */ 100662306a36Sopenharmony_ci#define V_GPIO_EN0 0x01 100762306a36Sopenharmony_ci#define V_GPIO_EN1 0x02 100862306a36Sopenharmony_ci#define V_GPIO_EN2 0x04 100962306a36Sopenharmony_ci#define V_GPIO_EN3 0x08 101062306a36Sopenharmony_ci#define V_GPIO_EN4 0x10 101162306a36Sopenharmony_ci#define V_GPIO_EN5 0x20 101262306a36Sopenharmony_ci#define V_GPIO_EN6 0x40 101362306a36Sopenharmony_ci#define V_GPIO_EN7 0x80 101462306a36Sopenharmony_ci/* R_GPIO_EN1 */ 101562306a36Sopenharmony_ci#define V_GPIO_EN8 0x01 101662306a36Sopenharmony_ci#define V_GPIO_EN9 0x02 101762306a36Sopenharmony_ci#define V_GPIO_EN10 0x04 101862306a36Sopenharmony_ci#define V_GPIO_EN11 0x08 101962306a36Sopenharmony_ci#define V_GPIO_EN12 0x10 102062306a36Sopenharmony_ci#define V_GPIO_EN13 0x20 102162306a36Sopenharmony_ci#define V_GPIO_EN14 0x40 102262306a36Sopenharmony_ci#define V_GPIO_EN15 0x80 102362306a36Sopenharmony_ci/* R_GPIO_SEL */ 102462306a36Sopenharmony_ci#define V_GPIO_SEL0 0x01 102562306a36Sopenharmony_ci#define V_GPIO_SEL1 0x02 102662306a36Sopenharmony_ci#define V_GPIO_SEL2 0x04 102762306a36Sopenharmony_ci#define V_GPIO_SEL3 0x08 102862306a36Sopenharmony_ci#define V_GPIO_SEL4 0x10 102962306a36Sopenharmony_ci#define V_GPIO_SEL5 0x20 103062306a36Sopenharmony_ci#define V_GPIO_SEL6 0x40 103162306a36Sopenharmony_ci#define V_GPIO_SEL7 0x80 103262306a36Sopenharmony_ci/* R_GPIO_IN0 */ 103362306a36Sopenharmony_ci#define V_GPIO_IN0 0x01 103462306a36Sopenharmony_ci#define V_GPIO_IN1 0x02 103562306a36Sopenharmony_ci#define V_GPIO_IN2 0x04 103662306a36Sopenharmony_ci#define V_GPIO_IN3 0x08 103762306a36Sopenharmony_ci#define V_GPIO_IN4 0x10 103862306a36Sopenharmony_ci#define V_GPIO_IN5 0x20 103962306a36Sopenharmony_ci#define V_GPIO_IN6 0x40 104062306a36Sopenharmony_ci#define V_GPIO_IN7 0x80 104162306a36Sopenharmony_ci/* R_GPIO_IN1 */ 104262306a36Sopenharmony_ci#define V_GPIO_IN8 0x01 104362306a36Sopenharmony_ci#define V_GPIO_IN9 0x02 104462306a36Sopenharmony_ci#define V_GPIO_IN10 0x04 104562306a36Sopenharmony_ci#define V_GPIO_IN11 0x08 104662306a36Sopenharmony_ci#define V_GPIO_IN12 0x10 104762306a36Sopenharmony_ci#define V_GPIO_IN13 0x20 104862306a36Sopenharmony_ci#define V_GPIO_IN14 0x40 104962306a36Sopenharmony_ci#define V_GPIO_IN15 0x80 105062306a36Sopenharmony_ci/* R_GPI_IN0 */ 105162306a36Sopenharmony_ci#define V_GPI_IN0 0x01 105262306a36Sopenharmony_ci#define V_GPI_IN1 0x02 105362306a36Sopenharmony_ci#define V_GPI_IN2 0x04 105462306a36Sopenharmony_ci#define V_GPI_IN3 0x08 105562306a36Sopenharmony_ci#define V_GPI_IN4 0x10 105662306a36Sopenharmony_ci#define V_GPI_IN5 0x20 105762306a36Sopenharmony_ci#define V_GPI_IN6 0x40 105862306a36Sopenharmony_ci#define V_GPI_IN7 0x80 105962306a36Sopenharmony_ci/* R_GPI_IN1 */ 106062306a36Sopenharmony_ci#define V_GPI_IN8 0x01 106162306a36Sopenharmony_ci#define V_GPI_IN9 0x02 106262306a36Sopenharmony_ci#define V_GPI_IN10 0x04 106362306a36Sopenharmony_ci#define V_GPI_IN11 0x08 106462306a36Sopenharmony_ci#define V_GPI_IN12 0x10 106562306a36Sopenharmony_ci#define V_GPI_IN13 0x20 106662306a36Sopenharmony_ci#define V_GPI_IN14 0x40 106762306a36Sopenharmony_ci#define V_GPI_IN15 0x80 106862306a36Sopenharmony_ci/* R_GPI_IN2 */ 106962306a36Sopenharmony_ci#define V_GPI_IN16 0x01 107062306a36Sopenharmony_ci#define V_GPI_IN17 0x02 107162306a36Sopenharmony_ci#define V_GPI_IN18 0x04 107262306a36Sopenharmony_ci#define V_GPI_IN19 0x08 107362306a36Sopenharmony_ci#define V_GPI_IN20 0x10 107462306a36Sopenharmony_ci#define V_GPI_IN21 0x20 107562306a36Sopenharmony_ci#define V_GPI_IN22 0x40 107662306a36Sopenharmony_ci#define V_GPI_IN23 0x80 107762306a36Sopenharmony_ci/* R_GPI_IN3 */ 107862306a36Sopenharmony_ci#define V_GPI_IN24 0x01 107962306a36Sopenharmony_ci#define V_GPI_IN25 0x02 108062306a36Sopenharmony_ci#define V_GPI_IN26 0x04 108162306a36Sopenharmony_ci#define V_GPI_IN27 0x08 108262306a36Sopenharmony_ci#define V_GPI_IN28 0x10 108362306a36Sopenharmony_ci#define V_GPI_IN29 0x20 108462306a36Sopenharmony_ci#define V_GPI_IN30 0x40 108562306a36Sopenharmony_ci#define V_GPI_IN31 0x80 108662306a36Sopenharmony_ci 108762306a36Sopenharmony_ci/* map of all registers, used for debugging */ 108862306a36Sopenharmony_ci 108962306a36Sopenharmony_ci#ifdef HFC_REGISTER_DEBUG 109062306a36Sopenharmony_cistruct hfc_register_names { 109162306a36Sopenharmony_ci char *name; 109262306a36Sopenharmony_ci u_char reg; 109362306a36Sopenharmony_ci} hfc_register_names[] = { 109462306a36Sopenharmony_ci /* write registers */ 109562306a36Sopenharmony_ci {"R_CIRM", 0x00}, 109662306a36Sopenharmony_ci {"R_CTRL", 0x01}, 109762306a36Sopenharmony_ci {"R_BRG_PCM_CFG ", 0x02}, 109862306a36Sopenharmony_ci {"R_RAM_ADDR0", 0x08}, 109962306a36Sopenharmony_ci {"R_RAM_ADDR1", 0x09}, 110062306a36Sopenharmony_ci {"R_RAM_ADDR2", 0x0A}, 110162306a36Sopenharmony_ci {"R_FIRST_FIFO", 0x0B}, 110262306a36Sopenharmony_ci {"R_RAM_SZ", 0x0C}, 110362306a36Sopenharmony_ci {"R_FIFO_MD", 0x0D}, 110462306a36Sopenharmony_ci {"R_INC_RES_FIFO", 0x0E}, 110562306a36Sopenharmony_ci {"R_FIFO / R_FSM_IDX", 0x0F}, 110662306a36Sopenharmony_ci {"R_SLOT", 0x10}, 110762306a36Sopenharmony_ci {"R_IRQMSK_MISC", 0x11}, 110862306a36Sopenharmony_ci {"R_SCI_MSK", 0x12}, 110962306a36Sopenharmony_ci {"R_IRQ_CTRL", 0x13}, 111062306a36Sopenharmony_ci {"R_PCM_MD0", 0x14}, 111162306a36Sopenharmony_ci {"R_0x15", 0x15}, 111262306a36Sopenharmony_ci {"R_ST_SEL", 0x16}, 111362306a36Sopenharmony_ci {"R_ST_SYNC", 0x17}, 111462306a36Sopenharmony_ci {"R_CONF_EN", 0x18}, 111562306a36Sopenharmony_ci {"R_TI_WD", 0x1A}, 111662306a36Sopenharmony_ci {"R_BERT_WD_MD", 0x1B}, 111762306a36Sopenharmony_ci {"R_DTMF", 0x1C}, 111862306a36Sopenharmony_ci {"R_DTMF_N", 0x1D}, 111962306a36Sopenharmony_ci {"R_E1_XX_STA", 0x20}, 112062306a36Sopenharmony_ci {"R_LOS0", 0x22}, 112162306a36Sopenharmony_ci {"R_LOS1", 0x23}, 112262306a36Sopenharmony_ci {"R_RX0", 0x24}, 112362306a36Sopenharmony_ci {"R_RX_FR0", 0x25}, 112462306a36Sopenharmony_ci {"R_RX_FR1", 0x26}, 112562306a36Sopenharmony_ci {"R_TX0", 0x28}, 112662306a36Sopenharmony_ci {"R_TX1", 0x29}, 112762306a36Sopenharmony_ci {"R_TX_FR0", 0x2C}, 112862306a36Sopenharmony_ci {"R_TX_FR1", 0x2D}, 112962306a36Sopenharmony_ci {"R_TX_FR2", 0x2E}, 113062306a36Sopenharmony_ci {"R_JATT_ATT", 0x2F}, 113162306a36Sopenharmony_ci {"A_ST_xx_STA/R_RX_OFF", 0x30}, 113262306a36Sopenharmony_ci {"A_ST_CTRL0/R_SYNC_OUT", 0x31}, 113362306a36Sopenharmony_ci {"A_ST_CTRL1", 0x32}, 113462306a36Sopenharmony_ci {"A_ST_CTRL2", 0x33}, 113562306a36Sopenharmony_ci {"A_ST_SQ_WR", 0x34}, 113662306a36Sopenharmony_ci {"R_TX_OFF", 0x34}, 113762306a36Sopenharmony_ci {"R_SYNC_CTRL", 0x35}, 113862306a36Sopenharmony_ci {"A_ST_CLK_DLY", 0x37}, 113962306a36Sopenharmony_ci {"R_PWM0", 0x38}, 114062306a36Sopenharmony_ci {"R_PWM1", 0x39}, 114162306a36Sopenharmony_ci {"A_ST_B1_TX", 0x3C}, 114262306a36Sopenharmony_ci {"A_ST_B2_TX", 0x3D}, 114362306a36Sopenharmony_ci {"A_ST_D_TX", 0x3E}, 114462306a36Sopenharmony_ci {"R_GPIO_OUT0", 0x40}, 114562306a36Sopenharmony_ci {"R_GPIO_OUT1", 0x41}, 114662306a36Sopenharmony_ci {"R_GPIO_EN0", 0x42}, 114762306a36Sopenharmony_ci {"R_GPIO_EN1", 0x43}, 114862306a36Sopenharmony_ci {"R_GPIO_SEL", 0x44}, 114962306a36Sopenharmony_ci {"R_BRG_CTRL", 0x45}, 115062306a36Sopenharmony_ci {"R_PWM_MD", 0x46}, 115162306a36Sopenharmony_ci {"R_BRG_MD", 0x47}, 115262306a36Sopenharmony_ci {"R_BRG_TIM0", 0x48}, 115362306a36Sopenharmony_ci {"R_BRG_TIM1", 0x49}, 115462306a36Sopenharmony_ci {"R_BRG_TIM2", 0x4A}, 115562306a36Sopenharmony_ci {"R_BRG_TIM3", 0x4B}, 115662306a36Sopenharmony_ci {"R_BRG_TIM_SEL01", 0x4C}, 115762306a36Sopenharmony_ci {"R_BRG_TIM_SEL23", 0x4D}, 115862306a36Sopenharmony_ci {"R_BRG_TIM_SEL45", 0x4E}, 115962306a36Sopenharmony_ci {"R_BRG_TIM_SEL67", 0x4F}, 116062306a36Sopenharmony_ci {"A_FIFO_DATA0-2", 0x80}, 116162306a36Sopenharmony_ci {"A_FIFO_DATA0-2_NOINC", 0x84}, 116262306a36Sopenharmony_ci {"R_RAM_DATA", 0xC0}, 116362306a36Sopenharmony_ci {"A_SL_CFG", 0xD0}, 116462306a36Sopenharmony_ci {"A_CONF", 0xD1}, 116562306a36Sopenharmony_ci {"A_CH_MSK", 0xF4}, 116662306a36Sopenharmony_ci {"A_CON_HDLC", 0xFA}, 116762306a36Sopenharmony_ci {"A_SUBCH_CFG", 0xFB}, 116862306a36Sopenharmony_ci {"A_CHANNEL", 0xFC}, 116962306a36Sopenharmony_ci {"A_FIFO_SEQ", 0xFD}, 117062306a36Sopenharmony_ci {"A_IRQ_MSK", 0xFF}, 117162306a36Sopenharmony_ci {NULL, 0}, 117262306a36Sopenharmony_ci 117362306a36Sopenharmony_ci /* read registers */ 117462306a36Sopenharmony_ci {"A_Z1", 0x04}, 117562306a36Sopenharmony_ci {"A_Z1H", 0x05}, 117662306a36Sopenharmony_ci {"A_Z2", 0x06}, 117762306a36Sopenharmony_ci {"A_Z2H", 0x07}, 117862306a36Sopenharmony_ci {"A_F1", 0x0C}, 117962306a36Sopenharmony_ci {"A_F2", 0x0D}, 118062306a36Sopenharmony_ci {"R_IRQ_OVIEW", 0x10}, 118162306a36Sopenharmony_ci {"R_IRQ_MISC", 0x11}, 118262306a36Sopenharmony_ci {"R_IRQ_STATECH", 0x12}, 118362306a36Sopenharmony_ci {"R_CONF_OFLOW", 0x14}, 118462306a36Sopenharmony_ci {"R_RAM_USE", 0x15}, 118562306a36Sopenharmony_ci {"R_CHIP_ID", 0x16}, 118662306a36Sopenharmony_ci {"R_BERT_STA", 0x17}, 118762306a36Sopenharmony_ci {"R_F0_CNTL", 0x18}, 118862306a36Sopenharmony_ci {"R_F0_CNTH", 0x19}, 118962306a36Sopenharmony_ci {"R_BERT_ECL", 0x1A}, 119062306a36Sopenharmony_ci {"R_BERT_ECH", 0x1B}, 119162306a36Sopenharmony_ci {"R_STATUS", 0x1C}, 119262306a36Sopenharmony_ci {"R_CHIP_RV", 0x1F}, 119362306a36Sopenharmony_ci {"R_STATE", 0x20}, 119462306a36Sopenharmony_ci {"R_SYNC_STA", 0x24}, 119562306a36Sopenharmony_ci {"R_RX_SL0_0", 0x25}, 119662306a36Sopenharmony_ci {"R_RX_SL0_1", 0x26}, 119762306a36Sopenharmony_ci {"R_RX_SL0_2", 0x27}, 119862306a36Sopenharmony_ci {"R_JATT_DIR", 0x2b}, 119962306a36Sopenharmony_ci {"R_SLIP", 0x2c}, 120062306a36Sopenharmony_ci {"A_ST_RD_STA", 0x30}, 120162306a36Sopenharmony_ci {"R_FAS_ECL", 0x30}, 120262306a36Sopenharmony_ci {"R_FAS_ECH", 0x31}, 120362306a36Sopenharmony_ci {"R_VIO_ECL", 0x32}, 120462306a36Sopenharmony_ci {"R_VIO_ECH", 0x33}, 120562306a36Sopenharmony_ci {"R_CRC_ECL / A_ST_SQ_RD", 0x34}, 120662306a36Sopenharmony_ci {"R_CRC_ECH", 0x35}, 120762306a36Sopenharmony_ci {"R_E_ECL", 0x36}, 120862306a36Sopenharmony_ci {"R_E_ECH", 0x37}, 120962306a36Sopenharmony_ci {"R_SA6_SA13_ECL", 0x38}, 121062306a36Sopenharmony_ci {"R_SA6_SA13_ECH", 0x39}, 121162306a36Sopenharmony_ci {"R_SA6_SA23_ECL", 0x3A}, 121262306a36Sopenharmony_ci {"R_SA6_SA23_ECH", 0x3B}, 121362306a36Sopenharmony_ci {"A_ST_B1_RX", 0x3C}, 121462306a36Sopenharmony_ci {"A_ST_B2_RX", 0x3D}, 121562306a36Sopenharmony_ci {"A_ST_D_RX", 0x3E}, 121662306a36Sopenharmony_ci {"A_ST_E_RX", 0x3F}, 121762306a36Sopenharmony_ci {"R_GPIO_IN0", 0x40}, 121862306a36Sopenharmony_ci {"R_GPIO_IN1", 0x41}, 121962306a36Sopenharmony_ci {"R_GPI_IN0", 0x44}, 122062306a36Sopenharmony_ci {"R_GPI_IN1", 0x45}, 122162306a36Sopenharmony_ci {"R_GPI_IN2", 0x46}, 122262306a36Sopenharmony_ci {"R_GPI_IN3", 0x47}, 122362306a36Sopenharmony_ci {"A_FIFO_DATA0-2", 0x80}, 122462306a36Sopenharmony_ci {"A_FIFO_DATA0-2_NOINC", 0x84}, 122562306a36Sopenharmony_ci {"R_INT_DATA", 0x88}, 122662306a36Sopenharmony_ci {"R_RAM_DATA", 0xC0}, 122762306a36Sopenharmony_ci {"R_IRQ_FIFO_BL0", 0xC8}, 122862306a36Sopenharmony_ci {"R_IRQ_FIFO_BL1", 0xC9}, 122962306a36Sopenharmony_ci {"R_IRQ_FIFO_BL2", 0xCA}, 123062306a36Sopenharmony_ci {"R_IRQ_FIFO_BL3", 0xCB}, 123162306a36Sopenharmony_ci {"R_IRQ_FIFO_BL4", 0xCC}, 123262306a36Sopenharmony_ci {"R_IRQ_FIFO_BL5", 0xCD}, 123362306a36Sopenharmony_ci {"R_IRQ_FIFO_BL6", 0xCE}, 123462306a36Sopenharmony_ci {"R_IRQ_FIFO_BL7", 0xCF}, 123562306a36Sopenharmony_ci}; 123662306a36Sopenharmony_ci#endif /* HFC_REGISTER_DEBUG */ 1237