1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * wm8940.h -- WM8940 Soc Audio driver
4 */
5
6#ifndef _WM8940_H
7#define _WM8940_H
8
9struct wm8940_setup_data {
10	/* Vref to analogue output resistance */
11#define WM8940_VROI_1K 0
12#define WM8940_VROI_30K 1
13	unsigned int vroi:1;
14};
15
16/* WM8940 register space */
17#define WM8940_SOFTRESET	0x00
18#define WM8940_POWER1		0x01
19#define WM8940_POWER2		0x02
20#define WM8940_POWER3		0x03
21#define WM8940_IFACE		0x04
22#define WM8940_COMPANDINGCTL	0x05
23#define WM8940_CLOCK		0x06
24#define WM8940_ADDCNTRL		0x07
25#define WM8940_GPIO		0x08
26#define WM8940_CTLINT		0x09
27#define WM8940_DAC		0x0A
28#define WM8940_DACVOL		0x0B
29
30#define WM8940_ADC		0x0E
31#define WM8940_ADCVOL		0x0F
32#define WM8940_NOTCH1		0x10
33#define WM8940_NOTCH2		0x11
34#define WM8940_NOTCH3		0x12
35#define WM8940_NOTCH4		0x13
36#define WM8940_NOTCH5		0x14
37#define WM8940_NOTCH6		0x15
38#define WM8940_NOTCH7		0x16
39#define WM8940_NOTCH8		0x17
40#define WM8940_DACLIM1		0x18
41#define WM8940_DACLIM2		0x19
42
43#define WM8940_ALC1		0x20
44#define WM8940_ALC2		0x21
45#define WM8940_ALC3		0x22
46#define WM8940_NOISEGATE	0x23
47#define WM8940_PLLN		0x24
48#define WM8940_PLLK1		0x25
49#define WM8940_PLLK2		0x26
50#define WM8940_PLLK3		0x27
51
52#define WM8940_ALC4		0x2A
53
54#define WM8940_INPUTCTL		0x2C
55#define WM8940_PGAGAIN		0x2D
56
57#define WM8940_ADCBOOST		0x2F
58
59#define WM8940_OUTPUTCTL	0x31
60#define WM8940_SPKMIX		0x32
61
62#define WM8940_SPKVOL		0x36
63
64#define WM8940_MONOMIX		0x38
65
66#define WM8940_CACHEREGNUM  0x57
67
68
69/* Clock divider Id's */
70#define WM8940_BCLKDIV 0
71#define WM8940_MCLKDIV 1
72#define WM8940_OPCLKDIV 2
73
74/* MCLK clock dividers */
75#define WM8940_MCLKDIV_1	0
76#define WM8940_MCLKDIV_1_5	1
77#define WM8940_MCLKDIV_2	2
78#define WM8940_MCLKDIV_3	3
79#define WM8940_MCLKDIV_4	4
80#define WM8940_MCLKDIV_6	5
81#define WM8940_MCLKDIV_8	6
82#define WM8940_MCLKDIV_12	7
83
84/* BCLK clock dividers */
85#define WM8940_BCLKDIV_1 0
86#define WM8940_BCLKDIV_2 1
87#define WM8940_BCLKDIV_4 2
88#define WM8940_BCLKDIV_8 3
89#define WM8940_BCLKDIV_16 4
90#define WM8940_BCLKDIV_32 5
91
92/* PLL Out Dividers */
93#define WM8940_OPCLKDIV_1 0
94#define WM8940_OPCLKDIV_2 1
95#define WM8940_OPCLKDIV_3 2
96#define WM8940_OPCLKDIV_4 3
97
98/* Chip ID */
99#define WM8940_CHIP_ID 0x8940
100
101#endif /* _WM8940_H */
102
103