xref: /openbmc/linux/sound/soc/codecs/ad1836.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*80503b23SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
27eaae41eSBarry Song /*
342f32c55SMike Frysinger  * Audio Codec driver supporting:
442f32c55SMike Frysinger  *  AD1835A, AD1836, AD1837A, AD1838A, AD1839A
57eaae41eSBarry Song  *
642f32c55SMike Frysinger  * Copyright 2009-2011 Analog Devices Inc.
77eaae41eSBarry Song  */
87eaae41eSBarry Song 
97eaae41eSBarry Song #ifndef __AD1836_H__
107eaae41eSBarry Song #define __AD1836_H__
117eaae41eSBarry Song 
127eaae41eSBarry Song #define AD1836_DAC_CTRL1               0
137eaae41eSBarry Song #define AD1836_DAC_POWERDOWN           2
147eaae41eSBarry Song #define AD1836_DAC_SERFMT_MASK         0xE0
157eaae41eSBarry Song #define AD1836_DAC_SERFMT_PCK256       (0x4 << 5)
167eaae41eSBarry Song #define AD1836_DAC_SERFMT_PCK128       (0x5 << 5)
177eaae41eSBarry Song #define AD1836_DAC_WORD_LEN_MASK       0x18
188ca695f2SLars-Peter Clausen #define AD1836_DAC_WORD_LEN_OFFSET     3
197eaae41eSBarry Song 
207eaae41eSBarry Song #define AD1836_DAC_CTRL2               1
217eaae41eSBarry Song 
2290bc11d1SLars-Peter Clausen /* These macros are one-based. So AD183X_MUTE_LEFT(1) will return the mute bit
2390bc11d1SLars-Peter Clausen  * for the first ADC/DAC */
2490bc11d1SLars-Peter Clausen #define AD1836_MUTE_LEFT(x) (((x) * 2) - 2)
2590bc11d1SLars-Peter Clausen #define AD1836_MUTE_RIGHT(x) (((x) * 2) - 1)
2690bc11d1SLars-Peter Clausen 
2790bc11d1SLars-Peter Clausen #define AD1836_DAC_L_VOL(x) ((x) * 2)
2890bc11d1SLars-Peter Clausen #define AD1836_DAC_R_VOL(x) (1 + ((x) * 2))
297eaae41eSBarry Song 
307eaae41eSBarry Song #define AD1836_ADC_CTRL1               12
317eaae41eSBarry Song #define AD1836_ADC_POWERDOWN           7
327eaae41eSBarry Song #define AD1836_ADC_HIGHPASS_FILTER     8
337eaae41eSBarry Song 
347eaae41eSBarry Song #define AD1836_ADC_CTRL2               13
357eaae41eSBarry Song #define AD1836_ADC_WORD_LEN_MASK       0x30
3672531c94SAxel Lin #define AD1836_ADC_WORD_OFFSET         4
377eaae41eSBarry Song #define AD1836_ADC_SERFMT_MASK         (7 << 6)
387eaae41eSBarry Song #define AD1836_ADC_SERFMT_PCK256       (0x4 << 6)
397eaae41eSBarry Song #define AD1836_ADC_SERFMT_PCK128       (0x5 << 6)
4084549d23SBarry Song #define AD1836_ADC_AUX                 (0x6 << 6)
417eaae41eSBarry Song 
427eaae41eSBarry Song #define AD1836_ADC_CTRL3               14
437eaae41eSBarry Song 
447eaae41eSBarry Song #define AD1836_NUM_REGS                16
457eaae41eSBarry Song 
468ca695f2SLars-Peter Clausen #define AD1836_WORD_LEN_24 0x0
478ca695f2SLars-Peter Clausen #define AD1836_WORD_LEN_20 0x1
488ca695f2SLars-Peter Clausen #define AD1836_WORD_LEN_16 0x2
498ca695f2SLars-Peter Clausen 
507eaae41eSBarry Song #endif
51