]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_IAR_Keil/libboard_samv7-ek/include/wm8904.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_IAR_Keil / libboard_samv7-ek / include / wm8904.h
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License \r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2012, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29 \r
30 /**\r
31   * \file\r
32   *\r
33   * Implementation WM8904 driver.\r
34   *\r
35   */\r
36 \r
37 #ifndef WM8904_H\r
38 #define WM8904_H\r
39 \r
40 #include "board.h"\r
41 \r
42 /*----------------------------------------------------------------------------\r
43  *         Definitions\r
44  *----------------------------------------------------------------------------*/\r
45 #define WM8904_CSB_STATE            (0x0 << 0)\r
46 \r
47 /** Slave address */\r
48 #define WM8904_SLAVE_ADDRESS        0x1a | WM8904_CSB_STATE\r
49 #define CS2100_SLAVE_ADDRESS        0x4E\r
50 \r
51 \r
52 /** Reset register*/\r
53 #define WM8904_REG_RESET                           0x00\r
54 \r
55 /** Bias control 0 register*/\r
56 #define WM8904_REG_BIAS_CTRL0                      0x04\r
57 \r
58 /** VMID control 0 register*/\r
59 #define WM8904_REG_VMID_CTRL0                      0x05\r
60 \r
61 /** MIC Bias control 0 register*/\r
62 #define WM8904_REG_MICBIAS_CTRL0                   0x06\r
63 \r
64 /** Bias control 1 register*/\r
65 #define WM8904_REG_BIAS_CTRL1                      0x07\r
66 \r
67 /** Power management control 0 register*/\r
68 #define WM8904_REG_POWER_MANG0                     0x0C\r
69 /** Power management control 2 register*/\r
70 #define WM8904_REG_POWER_MANG2                     0x0E\r
71 /** Power management control 3 register*/\r
72 #define WM8904_REG_POWER_MANG3                     0x0F\r
73 /** Power management control 6 register*/\r
74 #define WM8904_REG_POWER_MANG6                     0x12\r
75 \r
76 /** Clock rate0 register*/\r
77 #define WM8904_REG_CLOCK_RATE0                     0x14\r
78 /** Clock rate1 register*/\r
79 #define WM8904_REG_CLOCK_RATE1                     0x15\r
80 \r
81 /** Clock rate2 register*/\r
82 #define WM8904_REG_CLOCK_RATE2                     0x16\r
83 \r
84 /** Audio interface0 register*/\r
85 #define WM8904_REG_AUD_INF0                        0x18\r
86 \r
87 /** Audio interface1 register*/\r
88 #define WM8904_REG_AUD_INF1                        0x19\r
89 /** Audio interface2 register*/\r
90 #define WM8904_REG_AUD_INF2                        0x1A\r
91 /** Audio interface3 register*/\r
92 #define WM8904_REG_AUD_INF3                        0x1B\r
93 \r
94 /** ADC digital 0 register*/\r
95 #define WM8904_REG_ADC_DIG0                        0x20\r
96 /** ADC digital 1 register*/\r
97 #define WM8904_REG_ADC_DIG1                        0x21\r
98 \r
99 /** Analogue left input 0 register*/\r
100 #define WM8904_REG_ANALOGUE_LIN0                   0x2C\r
101 /** Analogue right input 0 register*/\r
102 #define WM8904_REG_ANALOGUE_RIN0                   0x2D\r
103 \r
104 /** Analogue left input 1 register*/\r
105 #define WM8904_REG_ANALOGUE_LIN1                   0x2E\r
106 /** Analogue right input 1 register*/\r
107 #define WM8904_REG_ANALOGUE_RIN1                   0x2F\r
108 \r
109 /** Analogue left output 1 register*/\r
110 #define WM8904_REG_ANALOGUE_LOUT1                  0x39\r
111 /** Analogue right output 1 register*/\r
112 #define WM8904_REG_ANALOGUE_ROUT1                  0x3A\r
113 \r
114 /** Analogue left output 2 register*/\r
115 #define WM8904_REG_ANALOGUE_LOUT2                  0x3B\r
116 /** Analogue right output 2 register*/\r
117 #define WM8904_REG_ANALOGUE_ROUT2                  0x3C\r
118 \r
119 /** Analogue output 12 ZC register*/\r
120 #define WM8904_REG_ANALOGUE_OUT12ZC                0x3D\r
121 \r
122 /** DC servo 0 register*/\r
123 #define WM8904_REG_DC_SERVO0                       0x43\r
124 \r
125 /** Analogue HP 0 register*/\r
126 #define WM8904_REG_ANALOGUE_HP0                    0x5A\r
127 \r
128 /** Charge pump 0 register*/\r
129 #define WM8904_REG_CHARGE_PUMP0                    0x62\r
130 \r
131 /** Class W 0 register*/\r
132 #define WM8904_REG_CLASS0                          0x68\r
133 \r
134 /** FLL control 1 register*/\r
135 #define WM8904_REG_FLL_CRTL1                       0x74\r
136 /** FLL control 2 register*/\r
137 #define WM8904_REG_FLL_CRTL2                       0x75\r
138 /** FLL control 3 register*/\r
139 #define WM8904_REG_FLL_CRTL3                       0x76\r
140 /** FLL control 4 register*/\r
141 #define WM8904_REG_FLL_CRTL4                       0x77\r
142 /** FLL control 5 register*/\r
143 #define WM8904_REG_FLL_CRTL5                       0x78\r
144 \r
145 /** DUMMY register*/\r
146 #define WM8904_REG_END                             0xFF\r
147 \r
148 /*----------------------------------------------------------------------------\r
149  *         Exported functions\r
150  *----------------------------------------------------------------------------*/\r
151 \r
152 extern uint16_t WM8904_Read(Twid *pTwid, uint32_t device, uint32_t regAddr);\r
153 extern void WM8904_Write(Twid *pTwid, uint32_t device, uint32_t regAddr, uint16_t data);\r
154 extern uint8_t WM8904_Init(Twid *pTwid, uint32_t device, uint32_t PCK);\r
155 extern uint8_t WM8904_VolumeSet(Twid *pTwid,  uint32_t device, uint16_t value);\r
156 extern void WM8904_IN2R_IN1L(Twid *pTwid, uint32_t device);\r
157 #endif // WM8904_H\r
158 \r
159 \r