RTEMS  5.1
wm8904.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------- */
2 /* Atmel Microcontroller Software Support */
3 /* SAM Software Package License */
4 /* ---------------------------------------------------------------------------- */
5 /* Copyright (c) 2015, Atmel Corporation */
6 /* */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without */
10 /* modification, are permitted provided that the following condition is met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, */
13 /* this list of conditions and the disclaimer below. */
14 /* */
15 /* Atmel's name may not be used to endorse or promote products derived from */
16 /* this software without specific prior written permission. */
17 /* */
18 /* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28 /* ---------------------------------------------------------------------------- */
29 
37 #ifndef WM8904_H
38 #define WM8904_H
39 
40 #include "board.h"
41 
42 /*----------------------------------------------------------------------------
43  * Definitions
44  *----------------------------------------------------------------------------*/
45 #define WM8904_CSB_STATE (0x0 << 0)
46 
48 #define WM8904_SLAVE_ADDRESS 0x1a | WM8904_CSB_STATE
49 #define CS2100_SLAVE_ADDRESS 0x4E
50 
51 
53 #define WM8904_REG_RESET 0x00
54 
56 #define WM8904_REG_BIAS_CTRL0 0x04
57 
59 #define WM8904_REG_VMID_CTRL0 0x05
60 
62 #define WM8904_REG_MICBIAS_CTRL0 0x06
63 
65 #define WM8904_REG_BIAS_CTRL1 0x07
66 
68 #define WM8904_REG_POWER_MANG0 0x0C
69 
70 #define WM8904_REG_POWER_MANG2 0x0E
71 
72 #define WM8904_REG_POWER_MANG3 0x0F
73 
74 #define WM8904_REG_POWER_MANG6 0x12
75 
77 #define WM8904_REG_CLOCK_RATE0 0x14
78 
79 #define WM8904_REG_CLOCK_RATE1 0x15
80 
82 #define WM8904_REG_CLOCK_RATE2 0x16
83 
85 #define WM8904_REG_AUD_INF0 0x18
86 
88 #define WM8904_REG_AUD_INF1 0x19
89 
90 #define WM8904_REG_AUD_INF2 0x1A
91 
92 #define WM8904_REG_AUD_INF3 0x1B
93 
95 #define WM8904_REG_ADC_DIG0 0x20
96 
97 #define WM8904_REG_ADC_DIG1 0x21
98 
100 #define WM8904_REG_ANALOGUE_LIN0 0x2C
101 
102 #define WM8904_REG_ANALOGUE_RIN0 0x2D
103 
105 #define WM8904_REG_ANALOGUE_LIN1 0x2E
106 
107 #define WM8904_REG_ANALOGUE_RIN1 0x2F
108 
110 #define WM8904_REG_ANALOGUE_LOUT1 0x39
111 
112 #define WM8904_REG_ANALOGUE_ROUT1 0x3A
113 
115 #define WM8904_REG_ANALOGUE_LOUT2 0x3B
116 
117 #define WM8904_REG_ANALOGUE_ROUT2 0x3C
118 
120 #define WM8904_REG_ANALOGUE_OUT12ZC 0x3D
121 
123 #define WM8904_REG_DC_SERVO0 0x43
124 
126 #define WM8904_REG_ANALOGUE_HP0 0x5A
127 
129 #define WM8904_REG_CHARGE_PUMP0 0x62
130 
132 #define WM8904_REG_CLASS0 0x68
133 
135 #define WM8904_REG_FLL_CRTL1 0x74
136 
137 #define WM8904_REG_FLL_CRTL2 0x75
138 
139 #define WM8904_REG_FLL_CRTL3 0x76
140 
141 #define WM8904_REG_FLL_CRTL4 0x77
142 
143 #define WM8904_REG_FLL_CRTL5 0x78
144 
146 #define WM8904_REG_END 0xFF
147 
148 /*----------------------------------------------------------------------------
149  * Exported functions
150  *----------------------------------------------------------------------------*/
151 
152 extern uint16_t WM8904_Read(Twid *pTwid, uint32_t device, uint32_t regAddr);
153 extern void WM8904_Write(Twid *pTwid, uint32_t device, uint32_t regAddr,
154  uint16_t data);
155 extern uint8_t WM8904_Init(Twid *pTwid, uint32_t device, uint32_t PCK);
156 extern uint8_t WM8904_VolumeSet(Twid *pTwid, uint32_t device, uint16_t value);
157 extern void WM8904_IN2R_IN1L(Twid *pTwid, uint32_t device);
158 #endif // WM8904_H
159 
160 
Definition: rtemscompat1.h:15
TWI driver structure. Holds the internal state of the driver.
Definition: twid.h:72