RTEMS 6.1-rc5
Loading...
Searching...
No Matches
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
70#define WM8904_REG_POWER_MANG2 0x0E
72#define WM8904_REG_POWER_MANG3 0x0F
74#define WM8904_REG_POWER_MANG6 0x12
75
77#define WM8904_REG_CLOCK_RATE0 0x14
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
90#define WM8904_REG_AUD_INF2 0x1A
92#define WM8904_REG_AUD_INF3 0x1B
93
95#define WM8904_REG_ADC_DIG0 0x20
97#define WM8904_REG_ADC_DIG1 0x21
98
100#define WM8904_REG_ANALOGUE_LIN0 0x2C
102#define WM8904_REG_ANALOGUE_RIN0 0x2D
103
105#define WM8904_REG_ANALOGUE_LIN1 0x2E
107#define WM8904_REG_ANALOGUE_RIN1 0x2F
108
110#define WM8904_REG_ANALOGUE_LOUT1 0x39
112#define WM8904_REG_ANALOGUE_ROUT1 0x3A
113
115#define WM8904_REG_ANALOGUE_LOUT2 0x3B
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
137#define WM8904_REG_FLL_CRTL2 0x75
139#define WM8904_REG_FLL_CRTL3 0x76
141#define WM8904_REG_FLL_CRTL4 0x77
143#define WM8904_REG_FLL_CRTL5 0x78
144
146#define WM8904_REG_END 0xFF
147
148/*----------------------------------------------------------------------------
149 * Exported functions
150 *----------------------------------------------------------------------------*/
151
152extern uint16_t WM8904_Read(Twid *pTwid, uint32_t device, uint32_t regAddr);
153extern void WM8904_Write(Twid *pTwid, uint32_t device, uint32_t regAddr,
154 uint16_t data);
155extern uint8_t WM8904_Init(Twid *pTwid, uint32_t device, uint32_t PCK);
156extern uint8_t WM8904_VolumeSet(Twid *pTwid, uint32_t device, uint16_t value);
157extern void WM8904_IN2R_IN1L(Twid *pTwid, uint32_t device);
158#endif // WM8904_H
159
160
TWI driver structure. Holds the internal state of the driver.
Definition: twid.h:72