xref: /linux/sound/soc/codecs/wm8510.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
25d421516SMark Brown /*
35d421516SMark Brown  * wm8510.h  --  WM8510 Soc Audio driver
45d421516SMark Brown  */
55d421516SMark Brown 
65d421516SMark Brown #ifndef _WM8510_H
75d421516SMark Brown #define _WM8510_H
85d421516SMark Brown 
95d421516SMark Brown /* WM8510 register space */
105d421516SMark Brown 
115d421516SMark Brown #define WM8510_RESET		0x0
125d421516SMark Brown #define WM8510_POWER1		0x1
135d421516SMark Brown #define WM8510_POWER2		0x2
145d421516SMark Brown #define WM8510_POWER3		0x3
155d421516SMark Brown #define WM8510_IFACE		0x4
165d421516SMark Brown #define WM8510_COMP			0x5
175d421516SMark Brown #define WM8510_CLOCK		0x6
185d421516SMark Brown #define WM8510_ADD			0x7
195d421516SMark Brown #define WM8510_GPIO			0x8
205d421516SMark Brown #define WM8510_DAC			0xa
215d421516SMark Brown #define WM8510_DACVOL		0xb
225d421516SMark Brown #define WM8510_ADC			0xe
235d421516SMark Brown #define WM8510_ADCVOL		0xf
245d421516SMark Brown #define WM8510_EQ1			0x12
255d421516SMark Brown #define WM8510_EQ2			0x13
265d421516SMark Brown #define WM8510_EQ3			0x14
275d421516SMark Brown #define WM8510_EQ4			0x15
285d421516SMark Brown #define WM8510_EQ5			0x16
295d421516SMark Brown #define WM8510_DACLIM1		0x18
305d421516SMark Brown #define WM8510_DACLIM2		0x19
315d421516SMark Brown #define WM8510_NOTCH1		0x1b
325d421516SMark Brown #define WM8510_NOTCH2		0x1c
335d421516SMark Brown #define WM8510_NOTCH3		0x1d
345d421516SMark Brown #define WM8510_NOTCH4		0x1e
355d421516SMark Brown #define WM8510_ALC1			0x20
365d421516SMark Brown #define WM8510_ALC2			0x21
375d421516SMark Brown #define WM8510_ALC3			0x22
385d421516SMark Brown #define WM8510_NGATE		0x23
395d421516SMark Brown #define WM8510_PLLN			0x24
405d421516SMark Brown #define WM8510_PLLK1		0x25
415d421516SMark Brown #define WM8510_PLLK2		0x26
425d421516SMark Brown #define WM8510_PLLK3		0x27
435d421516SMark Brown #define WM8510_ATTEN		0x28
445d421516SMark Brown #define WM8510_INPUT		0x2c
455d421516SMark Brown #define WM8510_INPPGA		0x2d
465d421516SMark Brown #define WM8510_ADCBOOST		0x2f
475d421516SMark Brown #define WM8510_OUTPUT		0x31
485d421516SMark Brown #define WM8510_SPKMIX		0x32
495d421516SMark Brown #define WM8510_SPKVOL		0x36
505d421516SMark Brown #define WM8510_MONOMIX		0x38
515d421516SMark Brown 
525d421516SMark Brown #define WM8510_CACHEREGNUM 	57
535d421516SMark Brown 
545d421516SMark Brown /* Clock divider Id's */
555d421516SMark Brown #define WM8510_OPCLKDIV		0
565d421516SMark Brown #define WM8510_MCLKDIV		1
575d421516SMark Brown #define WM8510_ADCCLK		2
585d421516SMark Brown #define WM8510_DACCLK		3
595d421516SMark Brown #define WM8510_BCLKDIV		4
605d421516SMark Brown 
615d421516SMark Brown /* DAC clock dividers */
625d421516SMark Brown #define WM8510_DACCLK_F2	(1 << 3)
635d421516SMark Brown #define WM8510_DACCLK_F4	(0 << 3)
645d421516SMark Brown 
655d421516SMark Brown /* ADC clock dividers */
665d421516SMark Brown #define WM8510_ADCCLK_F2	(1 << 3)
675d421516SMark Brown #define WM8510_ADCCLK_F4	(0 << 3)
685d421516SMark Brown 
695d421516SMark Brown /* PLL Out dividers */
705d421516SMark Brown #define WM8510_OPCLKDIV_1	(0 << 4)
715d421516SMark Brown #define WM8510_OPCLKDIV_2	(1 << 4)
725d421516SMark Brown #define WM8510_OPCLKDIV_3	(2 << 4)
735d421516SMark Brown #define WM8510_OPCLKDIV_4	(3 << 4)
745d421516SMark Brown 
755d421516SMark Brown /* BCLK clock dividers */
765d421516SMark Brown #define WM8510_BCLKDIV_1	(0 << 2)
775d421516SMark Brown #define WM8510_BCLKDIV_2	(1 << 2)
785d421516SMark Brown #define WM8510_BCLKDIV_4	(2 << 2)
795d421516SMark Brown #define WM8510_BCLKDIV_8	(3 << 2)
805d421516SMark Brown #define WM8510_BCLKDIV_16	(4 << 2)
815d421516SMark Brown #define WM8510_BCLKDIV_32	(5 << 2)
825d421516SMark Brown 
835d421516SMark Brown /* MCLK clock dividers */
845d421516SMark Brown #define WM8510_MCLKDIV_1	(0 << 5)
855d421516SMark Brown #define WM8510_MCLKDIV_1_5	(1 << 5)
865d421516SMark Brown #define WM8510_MCLKDIV_2	(2 << 5)
875d421516SMark Brown #define WM8510_MCLKDIV_3	(3 << 5)
885d421516SMark Brown #define WM8510_MCLKDIV_4	(4 << 5)
895d421516SMark Brown #define WM8510_MCLKDIV_6	(5 << 5)
905d421516SMark Brown #define WM8510_MCLKDIV_8	(6 << 5)
915d421516SMark Brown #define WM8510_MCLKDIV_12	(7 << 5)
925d421516SMark Brown 
935d421516SMark Brown struct wm8510_setup_data {
945e357952SMark Brown 	int spi;
9541759c2eSJean Delvare 	int i2c_bus;
965d421516SMark Brown 	unsigned short i2c_address;
975d421516SMark Brown };
985d421516SMark Brown 
995d421516SMark Brown #endif
100