xref: /openbmc/linux/sound/soc/codecs/wm8940.h (revision a5c26ee5)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
20b5e92c5SJonathan Cameron /*
30b5e92c5SJonathan Cameron  * wm8940.h -- WM8940 Soc Audio driver
40b5e92c5SJonathan Cameron  */
50b5e92c5SJonathan Cameron 
60b5e92c5SJonathan Cameron #ifndef _WM8940_H
70b5e92c5SJonathan Cameron #define _WM8940_H
80b5e92c5SJonathan Cameron 
90b5e92c5SJonathan Cameron struct wm8940_setup_data {
100b5e92c5SJonathan Cameron 	/* Vref to analogue output resistance */
110b5e92c5SJonathan Cameron #define WM8940_VROI_1K 0
120b5e92c5SJonathan Cameron #define WM8940_VROI_30K 1
130b5e92c5SJonathan Cameron 	unsigned int vroi:1;
140b5e92c5SJonathan Cameron };
150b5e92c5SJonathan Cameron 
160b5e92c5SJonathan Cameron /* WM8940 register space */
170b5e92c5SJonathan Cameron #define WM8940_SOFTRESET	0x00
180b5e92c5SJonathan Cameron #define WM8940_POWER1		0x01
190b5e92c5SJonathan Cameron #define WM8940_POWER2		0x02
200b5e92c5SJonathan Cameron #define WM8940_POWER3		0x03
210b5e92c5SJonathan Cameron #define WM8940_IFACE		0x04
220b5e92c5SJonathan Cameron #define WM8940_COMPANDINGCTL	0x05
230b5e92c5SJonathan Cameron #define WM8940_CLOCK		0x06
240b5e92c5SJonathan Cameron #define WM8940_ADDCNTRL		0x07
250b5e92c5SJonathan Cameron #define WM8940_GPIO		0x08
260b5e92c5SJonathan Cameron #define WM8940_CTLINT		0x09
270b5e92c5SJonathan Cameron #define WM8940_DAC		0x0A
280b5e92c5SJonathan Cameron #define WM8940_DACVOL		0x0B
290b5e92c5SJonathan Cameron 
300b5e92c5SJonathan Cameron #define WM8940_ADC		0x0E
310b5e92c5SJonathan Cameron #define WM8940_ADCVOL		0x0F
320b5e92c5SJonathan Cameron #define WM8940_NOTCH1		0x10
330b5e92c5SJonathan Cameron #define WM8940_NOTCH2		0x11
340b5e92c5SJonathan Cameron #define WM8940_NOTCH3		0x12
350b5e92c5SJonathan Cameron #define WM8940_NOTCH4		0x13
360b5e92c5SJonathan Cameron #define WM8940_NOTCH5		0x14
370b5e92c5SJonathan Cameron #define WM8940_NOTCH6		0x15
380b5e92c5SJonathan Cameron #define WM8940_NOTCH7		0x16
390b5e92c5SJonathan Cameron #define WM8940_NOTCH8		0x17
400b5e92c5SJonathan Cameron #define WM8940_DACLIM1		0x18
410b5e92c5SJonathan Cameron #define WM8940_DACLIM2		0x19
420b5e92c5SJonathan Cameron 
430b5e92c5SJonathan Cameron #define WM8940_ALC1		0x20
440b5e92c5SJonathan Cameron #define WM8940_ALC2		0x21
450b5e92c5SJonathan Cameron #define WM8940_ALC3		0x22
460b5e92c5SJonathan Cameron #define WM8940_NOISEGATE	0x23
470b5e92c5SJonathan Cameron #define WM8940_PLLN		0x24
480b5e92c5SJonathan Cameron #define WM8940_PLLK1		0x25
490b5e92c5SJonathan Cameron #define WM8940_PLLK2		0x26
500b5e92c5SJonathan Cameron #define WM8940_PLLK3		0x27
510b5e92c5SJonathan Cameron 
520b5e92c5SJonathan Cameron #define WM8940_ALC4		0x2A
530b5e92c5SJonathan Cameron 
540b5e92c5SJonathan Cameron #define WM8940_INPUTCTL		0x2C
550b5e92c5SJonathan Cameron #define WM8940_PGAGAIN		0x2D
560b5e92c5SJonathan Cameron 
570b5e92c5SJonathan Cameron #define WM8940_ADCBOOST		0x2F
580b5e92c5SJonathan Cameron 
590b5e92c5SJonathan Cameron #define WM8940_OUTPUTCTL	0x31
600b5e92c5SJonathan Cameron #define WM8940_SPKMIX		0x32
610b5e92c5SJonathan Cameron 
620b5e92c5SJonathan Cameron #define WM8940_SPKVOL		0x36
630b5e92c5SJonathan Cameron 
640b5e92c5SJonathan Cameron #define WM8940_MONOMIX		0x38
650b5e92c5SJonathan Cameron 
660b5e92c5SJonathan Cameron #define WM8940_CACHEREGNUM  0x57
670b5e92c5SJonathan Cameron 
680b5e92c5SJonathan Cameron 
690b5e92c5SJonathan Cameron /* Clock divider Id's */
700b5e92c5SJonathan Cameron #define WM8940_BCLKDIV 0
710b5e92c5SJonathan Cameron #define WM8940_MCLKDIV 1
720b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV 2
730b5e92c5SJonathan Cameron 
740b5e92c5SJonathan Cameron /* MCLK clock dividers */
750b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1	0
760b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1_5	1
770b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_2	2
780b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_3	3
790b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_4	4
800b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_6	5
810b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_8	6
820b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_12	7
830b5e92c5SJonathan Cameron 
840b5e92c5SJonathan Cameron /* BCLK clock dividers */
850b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_1 0
860b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_2 1
870b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_4 2
880b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_8 3
890b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_16 4
900b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_32 5
910b5e92c5SJonathan Cameron 
920b5e92c5SJonathan Cameron /* PLL Out Dividers */
930b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_1 0
940b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_2 1
950b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_3 2
960b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_4 3
970b5e92c5SJonathan Cameron 
98*a5c26ee5SLukasz Majewski /* Chip ID */
99*a5c26ee5SLukasz Majewski #define WM8940_CHIP_ID 0x8940
100*a5c26ee5SLukasz Majewski 
1010b5e92c5SJonathan Cameron #endif /* _WM8940_H */
1020b5e92c5SJonathan Cameron 
103