[ALSA] snd-aoa: add snd-aoa
[linux-2.6.git] / sound / aoa / codecs / snd-aoa-codec-onyx.h
1 /*
2  * Apple Onboard Audio driver for Onyx codec (header)
3  *
4  * Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
5  *
6  * GPL v2, can be found in COPYING.
7  */
8 #ifndef __SND_AOA_CODEC_ONYX_H
9 #define __SND_AOA_CODEC_ONYX_H
10 #include <stddef.h>
11 #include <linux/i2c.h>
12 #include <linux/i2c-dev.h>
13 #include <asm/pmac_low_i2c.h>
14 #include <asm/prom.h>
15
16 /* PCM3052 register definitions */
17
18 /* the attenuation registers take values from
19  * -1 (0dB) to -127 (-63.0 dB) or others (muted) */
20 #define ONYX_REG_DAC_ATTEN_LEFT         65
21 #define FIRSTREGISTER                   ONYX_REG_DAC_ATTEN_LEFT
22 #define ONYX_REG_DAC_ATTEN_RIGHT        66
23
24 #define ONYX_REG_CONTROL                67
25 #       define ONYX_MRST                (1<<7)
26 #       define ONYX_SRST                (1<<6)
27 #       define ONYX_ADPSV               (1<<5)
28 #       define ONYX_DAPSV               (1<<4)
29 #       define ONYX_SILICONVERSION      (1<<0)
30 /* all others reserved */
31
32 #define ONYX_REG_DAC_CONTROL            68
33 #       define ONYX_OVR1                (1<<6)
34 #       define ONYX_MUTE_RIGHT          (1<<1)
35 #       define ONYX_MUTE_LEFT           (1<<0)
36
37 #define ONYX_REG_DAC_DEEMPH             69
38 #       define ONYX_DIGDEEMPH_SHIFT     5
39 #       define ONYX_DIGDEEMPH_MASK      (3<<ONYX_DIGDEEMPH_SHIFT)
40 #       define ONYX_DIGDEEMPH_CTRL      (1<<4)
41
42 #define ONYX_REG_DAC_FILTER             70
43 #       define ONYX_ROLLOFF_FAST        (1<<5)
44 #       define ONYX_DAC_FILTER_ALWAYS   (1<<2)
45
46 #define ONYX_REG_DAC_OUTPHASE           71
47 #       define ONYX_OUTPHASE_INVERTED   (1<<0)
48
49 #define ONYX_REG_ADC_CONTROL            72
50 #       define ONYX_ADC_INPUT_MIC       (1<<5)
51 /* 8 + input gain in dB, valid range for input gain is -4 .. 20 dB */
52 #       define ONYX_ADC_PGA_GAIN_MASK   0x1f
53
54 #define ONYX_REG_ADC_HPF_BYPASS         75
55 #       define ONYX_HPF_DISABLE         (1<<3)
56 #       define ONYX_ADC_HPF_ALWAYS      (1<<2)
57
58 #define ONYX_REG_DIG_INFO1              77
59 #       define ONYX_MASK_DIN_TO_BPZ     (1<<7)
60 /* bits 1-5 control channel bits 1-5 */
61 #       define ONYX_DIGOUT_DISABLE      (1<<0)
62
63 #define ONYX_REG_DIG_INFO2              78
64 /* controls channel bits 8-15 */
65
66 #define ONYX_REG_DIG_INFO3              79
67 /* control channel bits 24-29, high 2 bits reserved */
68
69 #define ONYX_REG_DIG_INFO4              80
70 #       define ONYX_VALIDL              (1<<7)
71 #       define ONYX_VALIDR              (1<<6)
72 #       define ONYX_SPDIF_ENABLE        (1<<5)
73 /* lower 4 bits control bits 32-35 of channel control and word length */
74 #       define ONYX_WORDLEN_MASK        (0xF)
75
76 #endif /* __SND_AOA_CODEC_ONYX_H */