max9860.h 4.01 KB
Newer Older
1
/* SPDX-License-Identifier: GPL-2.0 */
Peter Rosin's avatar
Peter Rosin committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
/*
 * Driver for the MAX9860 Mono Audio Voice Codec
 *
 * Author: Peter Rosin <peda@axentia.s>
 *         Copyright 2016 Axentia Technologies
 */

#ifndef _SND_SOC_MAX9860
#define _SND_SOC_MAX9860

#define MAX9860_INTRSTATUS   0x00
#define MAX9860_MICREADBACK  0x01
#define MAX9860_INTEN        0x02
#define MAX9860_SYSCLK       0x03
#define MAX9860_AUDIOCLKHIGH 0x04
#define MAX9860_AUDIOCLKLOW  0x05
#define MAX9860_IFC1A        0x06
#define MAX9860_IFC1B        0x07
#define MAX9860_VOICEFLTR    0x08
#define MAX9860_DACATTN      0x09
#define MAX9860_ADCLEVEL     0x0a
#define MAX9860_DACGAIN      0x0b
#define MAX9860_MICGAIN      0x0c
#define MAX9860_RESERVED     0x0d
#define MAX9860_MICADC       0x0e
#define MAX9860_NOISEGATE    0x0f
#define MAX9860_PWRMAN       0x10
#define MAX9860_REVISION     0xff

#define MAX9860_MAX_REGISTER 0xff

/* INTRSTATUS */
#define MAX9860_CLD          0x80
#define MAX9860_SLD          0x40
#define MAX9860_ULK          0x20

/* MICREADBACK */
#define MAX9860_NG           0xe0
#define MAX9860_AGC          0x1f

/* INTEN */
#define MAX9860_ICLD         0x80
#define MAX9860_ISLD         0x40
#define MAX9860_IULK         0x20

/* SYSCLK */
#define MAX9860_PSCLK        0x30
#define MAX9860_PSCLK_OFF    0x00
#define MAX9860_PSCLK_SHIFT  4
#define MAX9860_FREQ         0x06
#define MAX9860_FREQ_NORMAL  0x00
#define MAX9860_FREQ_12MHZ   0x02
#define MAX9860_FREQ_13MHZ   0x04
#define MAX9860_FREQ_19_2MHZ 0x06
#define MAX9860_16KHZ        0x01

/* AUDIOCLKHIGH */
#define MAX9860_PLL          0x80
#define MAX9860_NHI          0x7f

/* AUDIOCLKLOW */
#define MAX9860_NLO          0xff

/* IFC1A */
#define MAX9860_MASTER       0x80
#define MAX9860_WCI          0x40
#define MAX9860_DBCI         0x20
#define MAX9860_DDLY         0x10
#define MAX9860_HIZ          0x08
#define MAX9860_TDM          0x04

/* IFC1B */
#define MAX9860_ABCI         0x20
#define MAX9860_ADLY         0x10
#define MAX9860_ST           0x08
#define MAX9860_BSEL         0x07
#define MAX9860_BSEL_OFF     0x00
#define MAX9860_BSEL_64X     0x01
#define MAX9860_BSEL_48X     0x02
#define MAX9860_BSEL_PCLK_2  0x04
#define MAX9860_BSEL_PCLK_4  0x05
#define MAX9860_BSEL_PCLK_8  0x06
#define MAX9860_BSEL_PCLK_16 0x07

/* VOICEFLTR */
#define MAX9860_AVFLT        0xf0
#define MAX9860_AVFLT_SHIFT  4
#define MAX9860_AVFLT_COUNT  6
#define MAX9860_DVFLT        0x0f
#define MAX9860_DVFLT_SHIFT  0
#define MAX9860_DVFLT_COUNT  6

/* DACATTN */
#define MAX9860_DVA          0xfe
#define MAX9860_DVA_SHIFT    1
#define MAX9860_DVA_MUTE     0x5e

/* ADCLEVEL */
#define MAX9860_ADCRL        0xf0
#define MAX9860_ADCRL_SHIFT  4
#define MAX9860_ADCLL        0x0f
#define MAX9860_ADCLL_SHIFT  0
#define MAX9860_ADCxL_MIN    15

/* DACGAIN */
#define MAX9860_DVG          0x60
#define MAX9860_DVG_SHIFT    5
#define MAX9860_DVG_MAX      3
#define MAX9860_DVST         0x1f
#define MAX9860_DVST_SHIFT   0
#define MAX9860_DVST_MIN     31

/* MICGAIN */
#define MAX9860_PAM          0x60
#define MAX9860_PAM_SHIFT    5
#define MAX9860_PAM_MAX      3
#define MAX9860_PGAM         0x1f
#define MAX9860_PGAM_SHIFT   0
#define MAX9860_PGAM_MIN     20

/* MICADC */
#define MAX9860_AGCSRC       0x80
#define MAX9860_AGCSRC_SHIFT 7
#define MAX9860_AGCSRC_COUNT 2
#define MAX9860_AGCRLS       0x70
#define MAX9860_AGCRLS_SHIFT 4
#define MAX9860_AGCRLS_COUNT 8
#define MAX9860_AGCATK       0x0c
#define MAX9860_AGCATK_SHIFT 2
#define MAX9860_AGCATK_COUNT 4
#define MAX9860_AGCHLD       0x03
#define MAX9860_AGCHLD_OFF   0x00
#define MAX9860_AGCHLD_SHIFT 0
#define MAX9860_AGCHLD_COUNT 4

/* NOISEGATE */
#define MAX9860_ANTH         0xf0
#define MAX9860_ANTH_SHIFT   4
#define MAX9860_ANTH_MAX     15
#define MAX9860_AGCTH        0x0f
#define MAX9860_AGCTH_SHIFT  0
#define MAX9860_AGCTH_MIN    15

/* PWRMAN */
#define MAX9860_SHDN         0x80
#define MAX9860_DACEN        0x08
#define MAX9860_DACEN_SHIFT  3
#define MAX9860_ADCLEN       0x02
#define MAX9860_ADCLEN_SHIFT 1
#define MAX9860_ADCREN       0x01
#define MAX9860_ADCREN_SHIFT 0

#endif /* _SND_SOC_MAX9860 */