]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A5_SAMA5D4x_EK_IAR/AtmelFiles/libboard_sama5d4x-ek/include/wm8904.h
Core kernel files:
[freertos] / FreeRTOS / Demo / CORTEX_A5_SAMA5D4x_EK_IAR / AtmelFiles / libboard_sama5d4x-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 \r
50 \r
51 /** Reset register*/\r
52 #define WM8904_REG_RESET                           0x00\r
53 \r
54 /** Bias control 0 register*/\r
55 #define WM8904_REG_BIAS_CTRL0                      0x04\r
56 \r
57 /** VMID control 0 register*/\r
58 #define WM8904_REG_VMID_CTRL0                      0x05\r
59 \r
60 /** MIC Bias control 0 register*/\r
61 #define WM8904_REG_MICBIAS_CTRL0                   0x06\r
62 \r
63 /** Bias control 1 register*/\r
64 #define WM8904_REG_BIAS_CTRL1                      0x07\r
65 \r
66 /** Power management control 0 register*/\r
67 #define WM8904_REG_POWER_MANG0                     0x0C\r
68 /** Power management control 2 register*/\r
69 #define WM8904_REG_POWER_MANG2                     0x0E\r
70 /** Power management control 3 register*/\r
71 #define WM8904_REG_POWER_MANG3                     0x0F\r
72 /** Power management control 6 register*/\r
73 #define WM8904_REG_POWER_MANG6                     0x12\r
74 \r
75 /** Clock rate0 register*/\r
76 #define WM8904_REG_CLOCK_RATE0                     0x14\r
77 /** Clock rate1 register*/\r
78 #define WM8904_REG_CLOCK_RATE1                     0x15\r
79 \r
80 /** Clock rate2 register*/\r
81 #define WM8904_REG_CLOCK_RATE2                     0x16\r
82 \r
83 /** Audio interface0 register*/\r
84 #define WM8904_REG_AUD_INF0                        0x18\r
85 \r
86 /** Audio interface1 register*/\r
87 #define WM8904_REG_AUD_INF1                        0x19\r
88 /** Audio interface2 register*/\r
89 #define WM8904_REG_AUD_INF2                        0x1A\r
90 /** Audio interface3 register*/\r
91 #define WM8904_REG_AUD_INF3                        0x1B\r
92 \r
93 /** ADC digital 0 register*/\r
94 #define WM8904_REG_ADC_DIG0                        0x20\r
95 /** ADC digital 1 register*/\r
96 #define WM8904_REG_ADC_DIG1                        0x21\r
97 \r
98 /** Analogue left input 0 register*/\r
99 #define WM8904_REG_ANALOGUE_LIN0                   0x2C\r
100 /** Analogue right input 0 register*/\r
101 #define WM8904_REG_ANALOGUE_RIN0                   0x2D\r
102 \r
103 /** Analogue left input 1 register*/\r
104 #define WM8904_REG_ANALOGUE_LIN1                   0x2E\r
105 /** Analogue right input 1 register*/\r
106 #define WM8904_REG_ANALOGUE_RIN1                   0x2F\r
107 \r
108 /** Analogue left output 1 register*/\r
109 #define WM8904_REG_ANALOGUE_LOUT1                  0x39\r
110 /** Analogue right output 1 register*/\r
111 #define WM8904_REG_ANALOGUE_ROUT1                  0x3A\r
112 \r
113 /** Analogue left output 2 register*/\r
114 #define WM8904_REG_ANALOGUE_LOUT2                  0x3B\r
115 /** Analogue right output 2 register*/\r
116 #define WM8904_REG_ANALOGUE_ROUT2                  0x3C\r
117 \r
118 /** Analogue output 12 ZC register*/\r
119 #define WM8904_REG_ANALOGUE_OUT12ZC                0x3D\r
120 \r
121 /** DC servo 0 register*/\r
122 #define WM8904_REG_DC_SERVO0                       0x43\r
123 \r
124 /** Analogue HP 0 register*/\r
125 #define WM8904_REG_ANALOGUE_HP0                    0x5A\r
126 \r
127 /** Charge pump 0 register*/\r
128 #define WM8904_REG_CHARGE_PUMP0                    0x62\r
129 \r
130 /** Class W 0 register*/\r
131 #define WM8904_REG_CLASS0                          0x68\r
132 \r
133 /** FLL control 1 register*/\r
134 #define WM8904_REG_FLL_CRTL1                       0x74\r
135 /** FLL control 2 register*/\r
136 #define WM8904_REG_FLL_CRTL2                       0x75\r
137 /** FLL control 3 register*/\r
138 #define WM8904_REG_FLL_CRTL3                       0x76\r
139 /** FLL control 4 register*/\r
140 #define WM8904_REG_FLL_CRTL4                       0x77\r
141 /** FLL control 5 register*/\r
142 #define WM8904_REG_FLL_CRTL5                       0x78\r
143 \r
144 /** DUMMY register*/\r
145 #define WM8904_REG_END                             0xFF\r
146 \r
147 /*----------------------------------------------------------------------------\r
148  *         Exported functions\r
149  *----------------------------------------------------------------------------*/\r
150 \r
151 extern uint16_t WM8904_Read(Twid *pTwid, uint32_t device, uint32_t regAddr);\r
152 extern void WM8904_Write(Twid *pTwid, uint32_t device, uint32_t regAddr, uint16_t data);\r
153 extern uint8_t WM8904_Init(Twid *pTwid, uint32_t device, uint32_t PCK);\r
154 extern uint8_t WM8904_VolumeSet(Twid *pTwid,  uint32_t device, uint16_t value);\r
155 extern void WM8904_IN2R_IN1L(Twid *pTwid, uint32_t device);\r
156 #endif // WM8904_H\r
157 \r
158 \r