📄 wm97xx.h
字号:
/*
* Register bits for Wolfson WM97xx series of codecs
*/
#ifndef _WM97XX_H_
#define _WM97XX_H_
/*
* WM97xx AC97 Touchscreen registers
*/
#define AC97_WM97XX_DIGITISER1 0x76
#define AC97_WM97XX_DIGITISER2 0x78
#define AC97_WM97XX_DIGITISER_RD 0x7a
#define WM97XX_PRP_DET_DIG 0xc000 /* pen detect on, digitiser on */
/*
* WM97xx register bits
*/
#define WM97XX_POLL 0x8000 /* initiate a polling measurement *///write 1 start measurement
#define WM97XX_ADCSEL_X 0x1000 /* x coord measurement *///取X轴坐标
#define WM97XX_ADCSEL_Y 0x2000 /* y coord measurement *///取Y轴坐标
#define WM97XX_ADCSEL_PRES 0x3000 /* pressure measurement *///电压测量
#define WM97XX_COO 0x0800 /* enable coordinate mode */单次传送或一次转X,Y
#define WM97XX_CTC 0x0400 /* enable continuous mode *///polling mode or DMA mode
#define WM97XX_CM_RATE_93 0x0000 /* 93.75Hz continuous rate *///cr-93k
#define WM97XX_CM_RATE_187 0x0100 /* 187.5Hz continuous rate *///cr-187k
#define WM97XX_CM_RATE_375 0x0200 /* 375Hz continuous rate */
#define WM97XX_CM_RATE_750 0x0300 /* 750Hz continuous rate */
#define WM97XX_CM_RATE_8K 0x00f0 /* 8kHz continuous rate */
#define WM97XX_CM_RATE_12K 0x01f0 /* 12kHz continuous rate */
#define WM97XX_CM_RATE_24K 0x02f0 /* 24kHz continuous rate */
#define WM97XX_CM_RATE_48K 0x03f0 /* 48kHz continuous rate *///cr-48k
#define WM97XX_DELAY(i) ((i << 4) & 0x00f0) /* sample delay times *///4-7bit
#define WM97XX_SLEN 0x0008 /* slot read back enable *///读寄存器还是SLOT
#define WM97XX_SLT(i) ((i - 5) & 0x7) /* touchpanel slot selection (5-11) *///SLOT NUMBER
#define WM97XX_PRP_DETW 0x4000 /* pen detect on, digitiser off, wake up */ 78H---15--14
#define WM97XX_PRP_DET 0x8000 /* pen detect on, digitiser off, no wake up */ 78H---15--14
#define WM97XX_RPR 0x2000 /* wake up on pen down */ 78H---13
#define WM97XX_PEN_DOWN 0x8000 /* pen is down *///7A pen down
/* WM9712 Bits */
#define WM9712_45W 0x1000 /* set for 5-wire touchscreen */
#define WM9712_PDEN 0x0800 /* measure only when pen down */ //78h---PDEN
#define WM9712_WAIT 0x0200 /* wait until adc is read before next sample */
#define WM9712_PIL 0x0100 /* current used for pressure measurement. set 400uA else 200uA */
#define WM9712_MASK_HI 0x0040 /* hi on mask pin (47) stops conversions */
#define WM9712_MASK_EDGE 0x0080 /* rising/falling edge on pin delays sample */
#define WM9712_MASK_SYNC 0x00c0 /* rising/falling edge on mask initiates sample */
#define WM9712_RPU(i) (i&0x3f) /* internal pull up on pen detect (64k / rpu) */
#define WM9712_ADCSEL_COMP1 0x4000 /* COMP1/AUX1 measurement (pin29) */
#define WM9712_ADCSEL_COMP2 0x5000 /* COMP2/AUX2 measurement (pin30) */
#define WM9712_ADCSEL_BMON 0x6000 /* BMON/AUX3 measurement (pin31) */
#define WM9712_ADCSEL_WIPER 0x7000 /* WIPER/AUX4 measurement (pin12) */
#define WM9712_PD(i) (0x1 << i) /* power management */
/* WM9712 Registers */
#define AC97_WM9712_POWER 0x24
#define AC97_WM9712_REV 0x58
/* AUX ADC ID's */
#define TS_COMP1 0x0
#define TS_COMP2 0x1
#define TS_BMON 0x2
#define TS_WIPER 0x3
/* ID numbers */
#define WM97XX_ID1 0x574d
#define WM9712_ID2 0x4c12
#define WM9705_ID2 0x4c05
#define WM9713_ID2 0x4c13
#define AC97_LINK_FRAME 21 /* time in uS for AC97 link frame */
/*********for z228*****************************/
#define AACI_BASE g_AACI_BASE//0x20037000
#define AACI_RXCR1 ((volatile int *)(AACI_BASE + 0x000))
#define AACI_TXCR1 ((volatile int *)(AACI_BASE + 0x004))
#define AACI_SR1 ((volatile int *)(AACI_BASE + 0x008))
#define AACI_ISR1 ((volatile int *)(AACI_BASE + 0x00C))
#define AACI_IE1 ((volatile int *)(AACI_BASE + 0x010))
#define AACI_RXCR2 ((volatile int *)(AACI_BASE + 0x014))
#define AACI_TXCR2 ((volatile int *)(AACI_BASE + 0x018))
#define AACI_SR2 ((volatile int *)(AACI_BASE + 0x01C))
#define AACI_ISR2 ((volatile int *)(AACI_BASE + 0x020))
#define AACI_IE2 ((volatile int *)(AACI_BASE + 0x024))
#define AACI_RXCR3 ((volatile int *)(AACI_BASE + 0x028))
#define AACI_TXCR3 ((volatile int *)(AACI_BASE + 0x02C))
#define AACI_SR3 ((volatile int *)(AACI_BASE + 0x030))
#define AACI_ISR3 ((volatile int *)(AACI_BASE + 0x034))
#define AACI_IE3 ((volatile int *)(AACI_BASE + 0x038))
#define AACI_RXCR4 ((volatile int *)(AACI_BASE + 0x03C))
#define AACI_TXCR4 ((volatile int *)(AACI_BASE + 0x040))
#define AACI_SR4 ((volatile int *)(AACI_BASE + 0x044))
#define AACI_ISR4 ((volatile int *)(AACI_BASE + 0x048))
#define AACI_IE4 ((volatile int *)(AACI_BASE + 0x04C))
#define AACI_SL1RX ((volatile int *)(AACI_BASE + 0x050))
#define AACI_SL1TX ((volatile int *)(AACI_BASE + 0x054))
#define AACI_SL2RX ((volatile int *)(AACI_BASE + 0x058))
#define AACI_SL2TX ((volatile int *)(AACI_BASE + 0x05C))
#define AACI_SL12RX ((volatile int *)(AACI_BASE + 0x060))
#define AACI_SL12TX ((volatile int *)(AACI_BASE + 0x064))
#define AACI_SLFR ((volatile int *)(AACI_BASE + 0x068))
#define AACI_SLISTAT ((volatile int *)(AACI_BASE + 0x06C))
#define AACI_SLIEN ((volatile int *)(AACI_BASE + 0x070))
#define AACI_INTCLR ((volatile int *)(AACI_BASE + 0x074))
#define AACI_MAINCR ((volatile int *)(AACI_BASE + 0x078))
#define AACI_RESET ((volatile int *)(AACI_BASE + 0x07C))
#define AACI_SYNC ((volatile int *)(AACI_BASE + 0x080))
#define AACI_ALLINTS ((volatile int *)(AACI_BASE + 0x084))
#define AACI_MAINFR ((volatile int *)(AACI_BASE + 0x088))
#define AACI_DR1 ((volatile int *)(AACI_BASE + 0x090))
#define AACI_DR2 ((volatile int *)(AACI_BASE + 0x0B0))
#define AACI_DR3 ((volatile int *)(AACI_BASE + 0x0D0))
#define AACI_DR4 ((volatile int *)(AACI_BASE + 0x0F0))
#define AACI_PERID1 ((volatile int *)(AACI_BASE + 0xFE0))
// AACI Bits
#define AACI_RXFEN 0x10000 // Bit 16 FIFO enable
// AACI Slot status bits
#define AACI_SL1TXBUSY 0x0002
#define AACI_SL2TXBUSY 0x0008
// AACI FIFO status bits
#define AACI_RXFE 0x0001
#define AACI_TXFE 0x0002
#define AACI_RXFF 0x0010
#define AACI_TXFF 0x0020
// AACI Control registers
#define AACI_MSTRVOL 0x02//声道
#define AACI_TLLOVOL 0x04
#define AACI_PCBEEP 0x0A
#define AACI_MICVOL 0x0E
#define AACI_LINEINVOL 0x10
#define AACI_PCMOVOL 0x18
#define AACI_RECSEL 0x1A
#define AACI_RECGAIN 0x1C
#define AACI_GPR 0x20
// Loopback test limits
#define MINSIGNAL 0xD0000 // Allow for gain errors
#define MAXSIGNAL 0x00300 // Wideband noise level (mostly >= 48kHz)
#define RECLENGTH 48000 // 1 Second recording (48kHz), see note in AACI_Recording()
#define AACI_TIMEOUT 10000 // Timeout for reading FIFOs (10mS)
#define TONETIME 500 // Loop back test tone time
//
#define TRUE 1
#define FALSE -1
//Test Reg
#define AACI_TCR ((volatile int *)(AACI_BASE + 0x180))
/*********************************************************/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -