39 #define WM8904_STATE_OFF 0
40 #define WM8904_STATE_ON 1
42 #define WM8904_LOCK_TIMEOUT 10
44 typedef struct __WM8904_Init_Seq {
50 typedef struct __Codec_Cfg
61 #define WM8904_INIT_STEPS 31
65 { 0x16, 0x0006 | 0x8},
89 #if 1 // Ref clk = 12 MHz MCLK
96 #if 0 // Ref clk = 0.512 MHz Bit Clk
117 #if 0 // Use Digital MIC
126 #define WM8904_INPUT_INIT_STEPS 4
155 while ( (rd_val & 0x4) != 0x4 )
172 return (rx_data[0] << 8) | rx_data[1];
181 dat[0] = reg; dat[1] = val >> 8; dat[2] = val & 0xFF;
203 for (i = 0; i < len; i++) {
204 if (value[i] != buff[i]) {
219 Board_I2C_Init(WM8904_I2C_BUS);
263 for (i = 0; i < cnt; i++) {
265 if (seq[i].reg_adr == 0xFF) {
267 delay(seq[i].reg_val * 1000);
270 }
while (rd_val & 1);