TAS2562 driver original release
[tas256xsw-android/tas2562-android-driver.git] / tas2562.h
2 #ifndef __TAS2562_
3 #define __TAS2562_
6 /* Book Control Register (available in page0 of each book) */
7 #define TAS2562_BOOKCTL_PAGE            0
8 #define TAS2562_BOOKCTL_REG         127
10 #define TAS2562_REG(page, reg)        ((page * 128) + reg)
12     /* Page */
13 #define TAS2562_Page  TAS2562_REG(0X0, 0x00)
14 #define TAS2562_Page_Page_Mask  (0xff << 0)
17 #define TAS2562_BOOK_ID(reg)                    (reg / (256 * 128))
19 #define TAS2562_PAGE_ID(reg)                    ((reg % (256 * 128)) / 128)
21 #define TAS2562_BOOK_REG(reg)                   (reg % (256 * 128))
23 #define TAS2562_PAGE_REG(reg)                   ((reg % (256 * 128)) % 128)
26     /* Software Reset */
27 #define TAS2562_SoftwareReset  TAS2562_REG(0X0, 0x01)
28 #define TAS2562_SoftwareReset_SoftwareReset_Mask  (0x1 << 0),
29 #define TAS2562_SoftwareReset_SoftwareReset_DontReset  (0x0 << 0)
30 #define TAS2562_SoftwareReset_SoftwareReset_Reset  (0x1 << 0)
32     /* Power Control */
33 #define TAS2562_PowerControl  TAS2562_REG(0X0, 0x02)
34 #define TAS2562_PowerControl_ISNSPower_Mask  (0x1 << 3)
35 #define TAS2562_PowerControl_ISNSPower_Active  (0x0 << 3)
36 #define TAS2562_PowerControl_ISNSPower_PoweredDown  (0x1 << 3)
37 #define TAS2562_PowerControl_VSNSPower_Mask  (0x1 << 2)
38 #define TAS2562_PowerControl_VSNSPower_Active  (0x0 << 2)
39 #define TAS2562_PowerControl_VSNSPower_PoweredDown  (0x1 << 2)
40 #define TAS2562_PowerControl_OperationalMode10_Mask  (0x3 << 0)
41 #define TAS2562_PowerControl_OperationalMode10_Active  (0x0 << 0)
42 #define TAS2562_PowerControl_OperationalMode10_Mute  (0x1 << 0)
43 #define TAS2562_PowerControl_OperationalMode10_Shutdown  (0x2 << 0)
45         /* data format */
46 #define TAS2562_DATAFORMAT_SHIFT                2
47 #define TAS2562_DATAFORMAT_I2S                  0x0
48 #define TAS2562_DATAFORMAT_DSP                  0x1
49 #define TAS2562_DATAFORMAT_RIGHT_J              0x2
50 #define TAS2562_DATAFORMAT_LEFT_J               0x3
52 #define TAS2562_DAI_FMT_MASK            (0x7 << TAS2562_DATAFORMAT_SHIFT)
54     /* Playback Configuration Reg0 */
55 #define TAS2562_PlaybackConfigurationReg0  TAS2562_REG(0X0, 0x03)
56 #define TAS2562_PlaybackConfigurationReg0_PDMPinMapping_Mask  (0x1 << 7)
57 #define TAS2562_PlaybackConfigurationReg0_PDMPinMapping_Pdm0  (0x0 << 7)
58 #define TAS2562_PlaybackConfigurationReg0_PDMPinMapping_Pdm1  (0x1 << 7)
59 #define TAS2562_PlaybackConfigurationReg0_PlaybackPDMSource_Mask  (0x1 << 6)
60 #define TAS2562_PlaybackConfigurationReg0_PlaybackSource_Mask  (0x1 << 5)
61 #define TAS2562_PlaybackConfigurationReg0_PlaybackSource_Pcm  (0x0 << 5)
62 #define TAS2562_PlaybackConfigurationReg0_PlaybackSource_Pdm  (0x1 << 5)
63 #define TAS2562_PlaybackConfigurationReg0_AmplifierLevel40_Mask  (0x1f << 0)
65     /* Playback Configuration Reg1 */
66 #define TAS2562_PlaybackConfigurationReg1  TAS2562_REG(0X0, 0x04)
67 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_Mask  (0x7 << 0)
68 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_2  (0x1 << 0)
69 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_50  (0x2 << 0)
70 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_100  (0x3 << 0)
71 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_200  (0x4 << 0)
72 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_400  (0x5 << 0)
73 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_800  (0x6 << 0)
74 #define TAS2562_PlaybackConfigurationReg1_HPFFrequency20_Bypass  (0x0 << 0)
76     /* Playback Configuration Reg2 */
77 #define TAS2562_PlaybackConfigurationReg2  TAS2562_REG(0X0, 0x05)
78 #define TAS2562_PlaybackConfigurationReg2_DVCPCM70_Mask  (0xff << 0)
80     /* Playback Configuration Reg3 */
81 #define TAS2562_PlaybackConfigurationReg3  TAS2562_REG(0X0, 0x06)
82 #define TAS2562_PlaybackConfigurationReg3_DVCPDM70_Mask  (0xff << 0)
84     /* Misc Configuration Reg0 */
85 #define TAS2562_MiscConfigurationReg0  TAS2562_REG(0X0, 0x04)
86 #define TAS2562_MiscConfigurationReg0_DVCRampRate76_Mask  (0x3 << 6)
87 #define TAS2562_MiscConfigurationReg0_DVCRampRate76_0_5dbPer1Sample  (0x0 << 6)
88 #define TAS2562_MiscConfigurationReg0_DVCRampRate76_0_5dbPer4Sample  (0x1 << 6)
89 #define TAS2562_MiscConfigurationReg0_DVCRampRate76_0_5dbPer8Sample  (0x2 << 6)
90 #define TAS2562_MiscConfigurationReg0_DVCRampRate76_VolRampDisabled  (0x3 << 6)
91 #define TAS2562_MiscConfigurationReg0_OCERetry_Mask  (0x1 << 5)
92 #define TAS2562_MiscConfigurationReg0_OCERetry_DoNotRetry  (0x0 << 5)
93 #define TAS2562_MiscConfigurationReg0_OCERetry_Retry  (0x1 << 5)
94 #define TAS2562_MiscConfigurationReg0_OTERetry_Mask  (0x1 << 4)
95 #define TAS2562_MiscConfigurationReg0_OTERetry_DoNotRetry  (0x0 << 4)
96 #define TAS2562_MiscConfigurationReg0_OTERetry_Retry  (0x1 << 4)
97 #define TAS2562_MiscConfigurationReg0_IRQZPull_Mask  (0x1 << 3)
98 #define TAS2562_MiscConfigurationReg0_IRQZPull_Disabled  (0x0 << 3)
99 #define TAS2562_MiscConfigurationReg0_IRQZPull_Enabled  (0x1 << 3)
100 #define TAS2562_MiscConfigurationReg0_AMPSS_Mask  (0x1 << 2)
101 #define TAS2562_MiscConfigurationReg0_AMPSS_Disabled  (0x0 << 2)
102 #define TAS2562_MiscConfigurationReg0_AMPSS_Enabled  (0x1 << 2)
104     /* PDM Input Reg0 */
105 #define TAS2562_PDMInputReg0  TAS2562_REG(0X0, 0x08)
106 #define TAS2562_PDMInputReg0_ClassDSYNC_Mask  (0x1 << 6)
107 #define TAS2562_PDMInputReg0_ClassDSYNC_AsyncMode  (0x0 << 6)
108 #define TAS2562_PDMInputReg0_ClassDSYNC_Retry  (0x1 << 6),
109 #define TAS2562_PDMInputReg0_PDMRATESW54_Mask  (0x3 << 4)
110 #define TAS2562_PDMInputReg0_PDMRATED132_Mask  (0x3 << 2)
111 #define TAS2562_PDMInputReg0_PDMRATED132_2_543_38MHz  (0x0 << 2)
112 #define TAS2562_PDMInputReg0_PDMRATED132_5_086_76MHz  (0x1 << 2)
113 #define TAS2562_PDMInputReg0_PDMRATED010_Mask  (0x3 << 0)
114 #define TAS2562_PDMInputReg0_PDMRATED010_2_543_38MHz  (0x0 << 0)
115 #define TAS2562_PDMInputReg0_PDMRATED010_5_086_76MHz  (0x1 << 0)
117     /* PDM Configuration Reg1 */
118 #define TAS2562_PDMConfigurationReg1  TAS2562_REG(0X0, 0x09)
119 #define TAS2562_PDMConfigurationReg1_PDMEDGED1_Mask  (0x1 << 7)
120 #define TAS2562_PDMConfigurationReg1_PDMEDGED1_Rising  (0x0 << 7)
121 #define TAS2562_PDMConfigurationReg1_PDMEDGED1_Falling  (0x1 << 7)
122 #define TAS2562_PDMConfigurationReg1_PDMEDGED0_Mask  (0x1 << 6)
123 #define TAS2562_PDMConfigurationReg1_PDMEDGED0_Rising  (0x0 << 6)
124 #define TAS2562_PDMConfigurationReg1_PDMEDGED0_Falling  (0x1 << 6)
125 #define TAS2562_PDMConfigurationReg1_PDMSLVD1_Mask  (0x1 << 5)
126 #define TAS2562_PDMConfigurationReg1_PDMSLVD1_Slave  (0x0 << 5)
127 #define TAS2562_PDMConfigurationReg1_PDMSLVD1_Master  (0x1 << 5)
128 #define TAS2562_PDMConfigurationReg1_PDMSLVD0_Mask  (0x1 << 4)
129 #define TAS2562_PDMConfigurationReg1_PDMSLVD0_Slave  (0x0 << 4)
130 #define TAS2562_PDMConfigurationReg1_PDMSLVD0_Master  (0x1 << 4)
131 #define TAS2562_PDMConfigurationReg1_PDMCLKD1_Mask  (0x1 << 3)
132 #define TAS2562_PDMConfigurationReg1_PDMCLKD1_Pdmck0  (0x0 << 3)
133 #define TAS2562_PDMConfigurationReg1_PDMCLKD1_Pdmck1  (0x1 << 3)
134 #define TAS2562_PDMConfigurationReg1_PDMCLKD0_Mask  (0x1 << 2)
135 #define TAS2562_PDMConfigurationReg1_PDMCLKD0_Pdmck0  (0x0 << 2)
136 #define TAS2562_PDMConfigurationReg1_PDMCLKD0_Pdmck1  (0x1 << 2)
137 #define TAS2562_PDMConfigurationReg1_PDMGATED1_Mask  (0x1 << 1)
138 #define TAS2562_PDMConfigurationReg1_PDMGATED1_GatedOff  (0x0 << 1)
139 #define TAS2562_PDMConfigurationReg1_PDMGATED1_Active  (0x1 << 1)
140 #define TAS2562_PDMConfigurationReg1_PDMGATED0_Mask  (0x1 << 0)
141 #define TAS2562_PDMConfigurationReg1_PDMGATED0_GatedOff  (0x0 << 0)
142 #define TAS2562_PDMConfigurationReg1_PDMGATED0_Active  (0x1 << 0)
144     /* TDM Configuration Reg0 */
145 #define TAS2562_TDMConfigurationReg0  TAS2562_REG(0X0, 0x06)
146 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_Mask  (0x1 << 5)
147 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_48KHz  (0x0 << 5)
148 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_44_1KHz  (0x1 << 5)
149 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Mask  (0x1 << 4)
150 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Disabled  (0x1 << 4)
151 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Enabled  (0x0 << 4)
152 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_Mask  (0x7 << 1)
153 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_44_1_48kHz  (0x4 << 1)
154 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_88_2_96kHz  (0x5 << 1)
155 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_176_4_192kHz  (0x6 << 1)
156 #define TAS2562_TDMConfigurationReg0_FRAMESTART_Mask  (0x1 << 0)
157 #define TAS2562_TDMConfigurationReg0_FRAMESTART_LowToHigh  (0x0 << 0)
158 #define TAS2562_TDMConfigurationReg0_FRAMESTART_HighToLow  (0x1 << 0)
160     /* TDM Configuration Reg1 */
161 #define TAS2562_TDMConfigurationReg1  TAS2562_REG(0X0, 0x07)
162 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Mask  (0x1 << 6)
163 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Left  (0x0 << 6)
164 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Right  (0x1 << 6)
165 #define TAS2562_TDMConfigurationReg1_RXOFFSET51_Mask  (0x1f << 1)
166 #define TAS2562_TDMConfigurationReg1_RXOFFSET51_Shift (1)
167 #define TAS2562_TDMConfigurationReg1_RXEDGE_Mask  (0x1 << 0)
168 #define TAS2562_TDMConfigurationReg1_RXEDGE_Rising  (0x0 << 0)
169 #define TAS2562_TDMConfigurationReg1_RXEDGE_Falling  (0x1 << 0)
171     /* TDM Configuration Reg2 */
172 #define TAS2562_TDMConfigurationReg2  TAS2562_REG(0X0, 0x08)
173 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mask  (0x3 << 4)
174 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_I2C  (0x0 << 4),
175 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_Left  (0x1 << 4),
176 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_Right  (0x2 << 4)
177 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Stereo_DownMix  (0x3 << 4)
178 #define TAS2562_TDMConfigurationReg2_RXWLEN32_Mask  (0x3 << 2)
179 #define TAS2562_TDMConfigurationReg2_RXWLEN32_16Bits  (0x0 << 2)
180 #define TAS2562_TDMConfigurationReg2_RXWLEN32_20Bits  (0x1 << 2)
181 #define TAS2562_TDMConfigurationReg2_RXWLEN32_24Bits  (0x2 << 2)
182 #define TAS2562_TDMConfigurationReg2_RXWLEN32_32Bits  (0x3 << 2)
183 #define TAS2562_TDMConfigurationReg2_RXSLEN10_Mask  (0x3 << 0)
184 #define TAS2562_TDMConfigurationReg2_RXSLEN10_16Bits  (0x0 << 0)
185 #define TAS2562_TDMConfigurationReg2_RXSLEN10_24Bits  (0x1 << 0)
186 #define TAS2562_TDMConfigurationReg2_RXSLEN10_32Bits  (0x2 << 0)
188     /* TDM Configuration Reg3 */
189 #define TAS2562_TDMConfigurationReg3  TAS2562_REG(0X0, 0x09)
190 #define TAS2562_TDMConfigurationReg3_RXSLOTRight74_Mask  (0xf << 4)
191 #define TAS2562_TDMConfigurationReg3_RXSLOTLeft30_Mask  (0xf << 0)
193     /* TDM Configuration Reg4 */
194 #define TAS2562_TDMConfigurationReg4  TAS2562_REG(0X0, 0x0A)
195 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Mask  (0x1 << 5)
196 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Disable  (0x0 << 5)
197 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Enable  (0x1 << 5)
198 #define TAS2562_TDMConfigurationReg4_TXFILL_Mask  (0x1 << 4)
199 #define TAS2562_TDMConfigurationReg4_TXFILL_Transmit0  (0x0 << 4)
200 #define TAS2562_TDMConfigurationReg4_TXFILL_TransmitHiz  (0x1 << 4)
201 #define TAS2562_TDMConfigurationReg4_TXOFFSET31_Mask  (0x7 << 1)
202 #define TAS2562_TDMConfigurationReg4_TXEDGE_Mask  (0x1 << 0)
203 #define TAS2562_TDMConfigurationReg4_TXEDGE_Rising  (0x0 << 0)
204 #define TAS2562_TDMConfigurationReg4_TXEDGE_Falling  (0x1 << 0)
206     /* TDM Configuration Reg5 */
207 #define TAS2562_TDMConfigurationReg5  TAS2562_REG(0X0, 0x0B)
208 #define TAS2562_TDMConfigurationReg5_VSNSTX_Mask  (0x1 << 6)
209 #define TAS2562_TDMConfigurationReg5_VSNSTX_Disable  (0x0 << 6),
210 #define TAS2562_TDMConfigurationReg5_VSNSTX_Enable  (0x1 << 6),
211 #define TAS2562_TDMConfigurationReg5_VSNSSLOT50_Mask  (0x3f << 0)
213     /* TDM Configuration Reg6 */
214 #define TAS2562_TDMConfigurationReg6  TAS2562_REG(0X0, 0x0C)
215 #define TAS2562_TDMConfigurationReg6_ISNSTX_Mask  (0x1 << 6)
216 #define TAS2562_TDMConfigurationReg6_ISNSTX_Disable  (0x0 << 6),
217 #define TAS2562_TDMConfigurationReg6_ISNSTX_Enable  (0x1 << 6),
218 #define TAS2562_TDMConfigurationReg6_ISNSSLOT50_Mask  (0x3f << 0)
220     /* TDM Configuration Reg7 */
221 #define TAS2562_TDMConfigurationReg7  TAS2562_REG(0X0, 0x11)
222 #define TAS2562_TDMConfigurationReg7_PDMTX_Mask  (0x1 << 6)
223 #define TAS2562_TDMConfigurationReg7_PDMTX_Disable  (0x0 << 6)
224 #define TAS2562_TDMConfigurationReg7_PDMTX_Enable  (0x1 << 6)
225 #define TAS2562_TDMConfigurationReg7_PDMSLOT50_Mask  (0x3f << 0)
227     /* TDM Configuration Reg8 */
228 #define TAS2562_TDMConfigurationReg8  TAS2562_REG(0X0, 0x12)
229 #define TAS2562_TDMConfigurationReg8_VBATSLEN_Mask  (0x1 << 7)
230 #define TAS2562_TDMConfigurationReg8_VBATSLEN_8Bits  (0x0 << 7)
231 #define TAS2562_TDMConfigurationReg8_VBATSLEN_16Bits  (0x1 << 7)
232 #define TAS2562_TDMConfigurationReg8_VBATTX_Mask  (0x1 << 6)
233 #define TAS2562_TDMConfigurationReg8_VBATTX_Disable  (0x0 << 6)
234 #define TAS2562_TDMConfigurationReg8_VBATTX_Enable  (0x1 << 6)
235 #define TAS2562_TDMConfigurationReg8_VBATSLOT50_Mask  (0x3f << 0)
237     /* TDM Configuration Reg9 */
238 #define TAS2562_TDMConfigurationReg9  TAS2562_REG(0X0, 0x13)
239 #define TAS2562_TDMConfigurationReg9_TEMPTX_Mask  (0x1 << 6)
240 #define TAS2562_TDMConfigurationReg9_TEMPTX_Disable  (0x0 << 6)
241 #define TAS2562_TDMConfigurationReg9_TEMPTX_Enable  (0x1 << 6)
242 #define TAS2562_TDMConfigurationReg9_TEMPSLOT50_Mask  (0x3f << 0)
244     /* TDM Configuration Reg10 */
245 #define TAS2562_TDMConfigurationReg10  TAS2562_REG(0X0, 0x14)
246 #define TAS2562_TDMConfigurationReg10_GAINTX_Mask  (0x1 << 6)
247 #define TAS2562_TDMConfigurationReg10_GAINTX_Disable  (0x0 << 6)
248 #define TAS2562_TDMConfigurationReg10_GAINTX_Enable  (0x1 << 6)
249 #define TAS2562_TDMConfigurationReg10_GAINSLOT50_Mask  (0x3f << 0)
251     /* Limiter Configuration Reg0 */
252 #define TAS2562_LimiterConfigurationReg0  TAS2562_REG(0X0, 0x15)
253 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_Mask  (0x3 << 4)
254 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_1  (0x2 << 4)
255 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_2  (0x3 << 4)
256 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_0_25  (0x0 << 4)
257 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_0_5  (0x1 << 4)
258 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_Mask  (0x7 << 1)
259 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_5  (0x0 << 1)
260 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_10  (0x1 << 1)
261 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_20  (0x2 << 1)
262 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_40  (0x3 << 1)
263 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_80  (0x4 << 1)
264 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_160  (0x5 << 1)
265 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_320  (0x6 << 1)
266 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_640  (0x7 << 1)
267 #define TAS2562_LimiterConfigurationReg0_LIMEN_Mask  (0x1 << 0)
268 #define TAS2562_LimiterConfigurationReg0_LIMEN_Disabled  (0x0 << 0)
269 #define TAS2562_LimiterConfigurationReg0_LIMEN_Enabled  (0x1 << 0)
271     /* Limiter Configuration Reg1 */
272 #define TAS2562_LimiterConfigurationReg1  TAS2562_REG(0X0, 0x16)
273 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_Mask  (0x3 << 6)
274 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_1  (0x2 << 6)
275 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_2  (0x3 << 6)
276 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_0_25  (0x0 << 6)
277 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_0_5  (0x1 << 6)
278 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_Mask  (0x7 << 3)
279 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_10  (0x0 << 3)
280 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_50  (0x1 << 3)
281 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_100  (0x2 << 3)
282 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_250  (0x3 << 3)
283 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_500  (0x4 << 3)
284 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_750  (0x5 << 3)
285 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_1000  (0x6 << 3)
286 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_1500  (0x7 << 3)
287 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_Mask  (0x7 << 0)
288 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_0  (0x0 << 0)
289 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_10  (0x1 << 0)
290 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_25  (0x2 << 0)
291 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_50  (0x3 << 0)
292 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_100  (0x4 << 0)
293 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_250  (0x5 << 0)
294 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_500  (0x6 << 0)
295 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_1000  (0x7 << 0)
297     /* Limiter Configuration Reg2 */
298 #define TAS2562_LimiterConfigurationReg2  TAS2562_REG(0X0, 0x17)
299 #define TAS2562_LimiterConfigurationReg2_LIMMAXATN40_Mask  (0x1f << 0)
301     /* Limiter Configuration Reg3 */
302 #define TAS2562_LimiterConfigurationReg3  TAS2562_REG(0X0, 0x18)
303 #define TAS2562_LimiterConfigurationReg3_LIMTHMAX60_Mask  (0x7f << 0)
305     /* Limiter Configuration Reg4 */
306 #define TAS2562_LimiterConfigurationReg4  TAS2562_REG(0X0, 0x19)
307 #define TAS2562_LimiterConfigurationReg4_LIMTHMIN60_Mask  (0x7f << 0)
309     /* Limiter Configuration Reg5 */
310 #define TAS2562_LimiterConfigurationReg5  TAS2562_REG(0X0, 0x1A)
311 #define TAS2562_LimiterConfigurationReg5_LIMINFPOINT_Mask  (0x7f << 0)
313     /* Brown Out Prevention Reg0 */
314 #define TAS2562_BrownOutPreventionReg0  TAS2562_REG(0X0, 0x1B)
315 #define TAS2562_BrownOutPreventionReg0_LIMSLOPE54_Mask  (0x3 << 4)
316 #define TAS2562_BrownOutPreventionReg0_LIMSLOPE54_1  (0x0 << 4)
317 #define TAS2562_BrownOutPreventionReg0_LIMSLOPE54_2  (0x2 << 4)
318 #define TAS2562_BrownOutPreventionReg0_LIMSLOPE54_4  (0x3 << 4)
319 #define TAS2562_BrownOutPreventionReg0_LIMSLOPE54_1_5  (0x1 << 4)
320 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_Mask  (0x1 << 3)
321 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_DontClear  (0x0 << 3)
322 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_Clear  (0x1 << 3)
323 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_Mask  (0x1 << 2)
324 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_UseHoldTime  (0x0 << 2)
325 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_HoldUntilCleared  (0x1 << 2)
326 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_Mask  (0x1 << 1)
327 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_DoNotMute  (0x0 << 1)
328 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_Mute  (0x1 << 1)
329 #define TAS2562_BrownOutPreventionReg0_BOPEN_Mask  (0x1 << 0)
330 #define TAS2562_BrownOutPreventionReg0_BOPEN_Disabled  (0x0 << 0)
331 #define TAS2562_BrownOutPreventionReg0_BOPEN_Enabled  (0x1 << 0)
333     /* Brown Out Prevention Reg1 */
334 #define TAS2562_BrownOutPreventionReg1  TAS2562_REG(0X0, 0x1C)
335 #define TAS2562_BrownOutPreventionReg1_BOPTH70_Mask  (0xff << 0)
337     /* Brown Out Prevention Reg2 */
338 #define TAS2562_BrownOutPreventionReg2  TAS2562_REG(0X0, 0x1D)
339 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_Mask  (0x7 << 5)
340 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_5  (0x0 << 5)
341 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_10  (0x1 << 5)
342 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_20  (0x2 << 5)
343 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_40  (0x3 << 5)
344 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_80  (0x4 << 5)
345 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_160  (0x5 << 5)
346 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_320  (0x6 << 5)
347 #define TAS2562_BrownOutPreventionReg2_BOPATKRT75_640  (0x7 << 5)
348 #define TAS2562_BrownOutPreventionReg2_BOPATKST43_Mask  (0x3 << 3)
349 #define TAS2562_BrownOutPreventionReg2_BOPATKST43_1  (0x1 << 3)
350 #define TAS2562_BrownOutPreventionReg2_BOPATKST43_2  (0x3 << 3)
351 #define TAS2562_BrownOutPreventionReg2_BOPATKST43_0_5  (0x0 << 3)
352 #define TAS2562_BrownOutPreventionReg2_BOPATKST43_1_5  (0x2 << 3)
353 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_Mask  (0x7 << 0)
354 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_0  (0x0 << 0)
355 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_10  (0x1 << 0)
356 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_25  (0x2 << 0)
357 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_50  (0x3 << 0)
358 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_100  (0x4 << 0)
359 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_250  (0x5 << 0)
360 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_500  (0x6 << 0)
361 #define TAS2562_BrownOutPreventionReg2_BOPHLDTM20_1000  (0x7 << 0)
363     /* ICLA Reg0 */
364 #define TAS2562_ICLAReg0  TAS2562_REG(0X0, 0x1E)
365 #define TAS2562_ICLAReg0_ICLAUSEMAX_Mask  (0x1 << 7)
366 #define TAS2562_ICLAReg0_ICLAUSEMAX_Min  (0x0 << 7)
367 #define TAS2562_ICLAReg0_ICLAUSEMAX_Max  (0x1 << 7)
368 #define TAS2562_ICLAReg0_ICLASLOT61_Mask  (0x3f << 1)
369 #define TAS2562_ICLAReg0_ICLAEN_Mask  (0x1 << 0)
370 #define TAS2562_ICLAReg0_ICLAEN_Disabled  (0x0 << 0)
371 #define TAS2562_ICLAReg0_ICLAEN_Enabled  (0x1 << 0)
373     /* ICLA Reg1 */
374 #define TAS2562_ICLAReg1  TAS2562_REG(0X0, 0x1F)
375 #define TAS2562_ICLAReg1_ICLASEN_Mask  (0xff << 0)
376 #define TAS2562_ICLAReg1_ICLASLOT_7_Disable  (0x0 << 7)
377 #define TAS2562_ICLAReg1_ICLASLOT_7_Enable  (0x1 << 7)
378 #define TAS2562_ICLAReg1_ICLASLOT_6_Disable  (0x0 << 6)
379 #define TAS2562_ICLAReg1_ICLASLOT_6_Enable  (0x1 << 6)
380 #define TAS2562_ICLAReg1_ICLASLOT_5_Disable  (0x0 << 5)
381 #define TAS2562_ICLAReg1_ICLASLOT_5_Enable  (0x1 << 5)
382 #define TAS2562_ICLAReg1_ICLASLOT_4_Disable  (0x0 << 4)
383 #define TAS2562_ICLAReg1_ICLASLOT_4_Enable  (0x1 << 4)
384 #define TAS2562_ICLAReg1_ICLASLOT_3_Disable  (0x0 << 3)
385 #define TAS2562_ICLAReg1_ICLASLOT_3_Enable  (0x1 << 3)
386 #define TAS2562_ICLAReg1_ICLASLOT_2_Disable  (0x0 << 2)
387 #define TAS2562_ICLAReg1_ICLASLOT_2_Enable  (0x1 << 2)
388 #define TAS2562_ICLAReg1_ICLASLOT_1_Disable  (0x0 << 1)
389 #define TAS2562_ICLAReg1_ICLASLOT_1_Enable  (0x1 << 1)
390 #define TAS2562_ICLAReg1_ICLASLOT_0_Disable  (0x0 << 0)
391 #define TAS2562_ICLAReg1_ICLASLOT_0_Enable  (0x1 << 0)
393     /* Interrupt Mask Reg0 */
394 #define TAS2562_InterruptMaskReg0  TAS2562_REG(0X0, 0x20)
395 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Mask  (0x1 << 7)
396 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Unmask  (0x0 << 7)
397 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Disable  (0x1 << 7)
398 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Mask  (0x1 << 6)
399 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Unmask  (0x0 << 6)
400 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Disable  (0x1 << 6)
401 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Mask  (0x1 << 5)
402 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Unmask  (0x0 << 5)
403 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Disable  (0x1 << 5)
404 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Mask  (0x1 << 4)
405 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Unmask  (0x0 << 4)
406 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Disable  (0x1 << 4)
407 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Mask  (0x1 << 3)
408 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Unmask  (0x0 << 3)
409 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Disable  (0x1 << 3)
410 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Mask  (0x1 << 2)
411 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Unmask  (0x0 << 2)
412 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Disable  (0x1 << 2)
413 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Mask  (0x1 << 1)
414 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Unmask  (0x0 << 1)
415 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Disable  (0x1 << 1)
416 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Mask  (0x1 << 0)
417 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Unmask  (0x0 << 0)
418 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Disable  (0x1 << 0)
420     /* Interrupt Mask Reg1 */
421 #define TAS2562_InterruptMaskReg1  TAS2562_REG(0X0, 0x21)
422 #define TAS2562_InterruptMaskReg1_PDMAUDDATAINVALIDINTMASK_Mask  (0x1 << 7)
423 #define TAS2562_InterruptMaskReg1_PDMAUDDATAINVALIDINTMASK_Unmask  (0x0 << 7)
424 #define TAS2562_InterruptMaskReg1_PDMAUDDATAINVALIDINTMASK_Disable  (0x1 << 7)
425 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Mask  (0x1 << 3)
426 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Unmask  (0x0 << 3)
427 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Disable  (0x1 << 3)
428 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Mask  (0x1 << 2)
429 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Unmask  (0x0 << 2)
430 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Disable  (0x1 << 2)
431 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Mask  (0x1 << 1)
432 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Unmask  (0x0 << 1)
433 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Disable  (0x1 << 1)
434 #define TAS2562_InterruptMaskReg1_PDMClockErrorINTMASK_Mask  (0x1 << 0)
435 #define TAS2562_InterruptMaskReg1_PDMClockErrorINTMASK_Unmask  (0x0 << 0)
436 #define TAS2562_InterruptMaskReg1_PDMClockErrorINTMASK_Disable  (0x1 << 0)
438     /* Live-Interrupt Reg0 */
439 #define TAS2562_LiveInterruptReg0  TAS2562_REG(0X0, 0x22)
440 #define TAS2562_LiveInterruptReg0_LIMMUTE_Mask  (0x1 << 7)
441 #define TAS2562_LiveInterruptReg0_LIMMUTE_NoInterrupt  (0x0 << 7)
442 #define TAS2562_LiveInterruptReg0_LIMMUTE_Interrupt  (0x1 << 7)
443 #define TAS2562_LiveInterruptReg0_LIMINFHLD_Mask  (0x1 << 6)
444 #define TAS2562_LiveInterruptReg0_LIMINFHLD_NoInterrupt  (0x0 << 6)
445 #define TAS2562_LiveInterruptReg0_LIMINFHLD_Interrupt  (0x1 << 6)
446 #define TAS2562_LiveInterruptReg0_LIMMAXATN_Mask  (0x1 << 5)
447 #define TAS2562_LiveInterruptReg0_LIMMAXATN_NoInterrupt  (0x0 << 5)
448 #define TAS2562_LiveInterruptReg0_LIMMAXATN_Interrupt  (0x1 << 5)
449 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_Mask  (0x1 << 4)
450 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_NoInterrupt  (0x0 << 4)
451 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_Interrupt  (0x1 << 4)
452 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_Mask  (0x1 << 3)
453 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_NoInterrupt  (0x0 << 3)
454 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_Interrupt  (0x1 << 3)
455 #define TAS2562_LiveInterruptReg0_TDMClockError_Mask  (0x1 << 2)
456 #define TAS2562_LiveInterruptReg0_TDMClockError_NoInterrupt  (0x0 << 2)
457 #define TAS2562_LiveInterruptReg0_TDMClockError_Interrupt  (0x1 << 2)
458 #define TAS2562_LiveInterruptReg0_OCEFlag_Mask  (0x1 << 1)
459 #define TAS2562_LiveInterruptReg0_OCEFlag_NoInterrupt  (0x0 << 1)
460 #define TAS2562_LiveInterruptReg0_OCEFlag_Interrupt  (0x1 << 1)
461 #define TAS2562_LiveInterruptReg0_OTEFlag_Mask  (0x1 << 0)
462 #define TAS2562_LiveInterruptReg0_OTEFlag_NoInterrupt  (0x0 << 0)
463 #define TAS2562_LiveInterruptReg0_OTEFlag_Interrupt  (0x1 << 0)
465     /* Live-Interrupt Reg1 */
466 #define TAS2562_LiveInterruptReg1  TAS2562_REG(0X0, 0x23)
467 #define TAS2562_LiveInterruptReg1_PDMAUDDATAINVALID_Mask  (0x1 << 7)
468 #define TAS2562_LiveInterruptReg1_PDMAUDDATAINVALID_NoInterrupt  (0x0 << 7)
469 #define TAS2562_LiveInterruptReg1_PDMAUDDATAINVALID_Interrupt  (0x1 << 7)
470 #define TAS2562_LiveInterruptReg1_VBATOVLO_Mask  (0x1 << 3)
471 #define TAS2562_LiveInterruptReg1_VBATOVLO_NoInterrupt  (0x0 << 3)
472 #define TAS2562_LiveInterruptReg1_VBATOVLO_Interrupt  (0x1 << 3)
473 #define TAS2562_LiveInterruptReg1_VBATUVLO_Mask  (0x1 << 2)
474 #define TAS2562_LiveInterruptReg1_VBATUVLO_NoInterrupt  (0x0 << 2)
475 #define TAS2562_LiveInterruptReg1_VBATUVLO_Interrupt  (0x1 << 2)
476 #define TAS2562_LiveInterruptReg1_BrownOutFlag_Mask  (0x1 << 1)
477 #define TAS2562_LiveInterruptReg1_BrownOutFlag_NoInterrupt  (0x0 << 1)
478 #define TAS2562_LiveInterruptReg1_BrownOutFlag_Interrupt  (0x1 << 1)
479 #define TAS2562_LiveInterruptReg1_PDMClockError_Mask  (0x1 << 0)
480 #define TAS2562_LiveInterruptReg1_PDMClockError_NoInterrupt  (0x0 << 0)
481 #define TAS2562_LiveInterruptReg1_PDMClockError_Interrupt  (0x1 << 0)
483     /* Latched-Interrupt Reg0 */
484 #define TAS2562_LatchedInterruptReg0  TAS2562_REG(0X0, 0x24)
485 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_Mask  (0x1 << 7)
486 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_NoInterrupt  (0x0 << 7)
487 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_Interrupt  (0x1 << 7)
488 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_Mask  (0x1 << 6)
489 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_NoInterrupt  (0x0 << 6)
490 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_Interrupt  (0x1 << 6)
491 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_Mask  (0x1 << 5)
492 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_NoInterrupt  (0x0 << 5)
493 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_Interrupt  (0x1 << 5)
494 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_Mask  (0x1 << 4)
495 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_NoInterrupt \
496         (0x0 << 4)
497 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_Interrupt  (0x1 << 4)
498 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_Mask  (0x1 << 3)
499 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_NoInterrupt  (0x0 << 3)
500 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_Interrupt  (0x1 << 3)
501 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_Mask  (0x1 << 2)
502 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_NoInterrupt  (0x0 << 2)
503 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_Interrupt  (0x1 << 2)
504 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_Mask  (0x1 << 1)
505 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_NoInterrupt  (0x0 << 1)
506 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_Interrupt  (0x1 << 1)
507 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_Mask  (0x1 << 0)
508 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_NoInterrupt  (0x0 << 0)
509 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_Interrupt  (0x1 << 0)
511     /* Latched-Interrupt Reg1 */
512 #define TAS2562_LatchedInterruptReg1  TAS2562_REG(0X0, 0x25)
513 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_Mask  (0x1 << 7)
514 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_NoInterrupt \
515         (0x0 << 7)
516 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_Interrupt \
517         (0x1 << 7)
518 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_Mask  (0x1 << 3)
519 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_NoInterrupt  (0x0 << 3)
520 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_Interrupt  (0x1 << 3)
521 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_Mask  (0x1 << 2)
522 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_NoInterrupt  (0x0 << 2)
523 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_Interrupt  (0x1 << 2)
524 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_Mask  (0x1 << 1)
525 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_NoInterrupt  (0x0 << 1)
526 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_Interrupt  (0x1 << 1)
527 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_Mask  (0x1 << 0)
528 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_NoInterrupt  (0x0 << 0)
529 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_Interrupt  (0x1 << 0)
531     /* VBAT MSB */
532 #define TAS2562_VBATMSB  TAS2562_REG(0X0, 0x27)
533 #define TAS2562_VBATMSB_VBATMSB70_Mask  (0xff << 0)
535     /* VBAT LSB */
536 #define TAS2562_VBATLSB  TAS2562_REG(0X0, 0x28)
537 #define TAS2562_VBATLSB_VBATLSB74_Mask  (0xf << 4)
539     /* TEMP MSB */
540 #define TAS2562_TEMPMSB  TAS2562_REG(0X0, 0x29)
541 #define TAS2562_TEMPMSB_TEMPMSB70_Mask  (0xff << 0)
543     /* TEMP LSB */
544 #define TAS2562_TEMPLSB  TAS2562_REG(0X0, 0x2A)
545 #define TAS2562_TEMPLSB_TEMPLSB74_Mask  (0xf << 4)
547         /* SDZ Config */
548 #define TAS2562_SDZCONFIG  TAS2562_REG(0X0, 0x2F)
549 #define TAS2562_SDZCONFIG_ICLANONZEROMIN_Mask  (0x1 << 4)
550 #define TAS2562_SDZCONFIG_ICLANONZEROMIN_Disable  (0x0 << 4)
551 #define TAS2562_SDZCONFIG_ICLANONZEROMIN_Enable  (0x1 << 4)
552 #define TAS2562_SDZCONFIG_SDZMODECONF_Mask  (0x3 << 2)
553 #define TAS2562_SDZCONFIG_SDZMODECONF_ForcedShutdownAfterTimeout  (0x0 << 2)
554 #define TAS2562_SDZCONFIG_SDZMODECONF_ForceShutdown  (0x1 << 2)
555 #define TAS2562_SDZCONFIG_SDZMODECONF_NormalShutdown  (0x2 << 2)
556 #define TAS2562_SDZCONFIG_SDZMODETIMEOUT_Mask  (0x3 << 0)
557 #define TAS2562_SDZCONFIG_SDZMODETIMEOUT_2ms  (0x0 << 0)
558 #define TAS2562_SDZCONFIG_SDZMODETIMEOUT_4ms  (0x1 << 0)
559 #define TAS2562_SDZCONFIG_SDZMODETIMEOUT_6ms  (0x2 << 0)
560 #define TAS2562_SDZCONFIG_SDZMODETIMEOUT_23p8ms  (0x3 << 0)
563     /* Interrupt Configuration */
564 #define TAS2562_InterruptConfiguration  TAS2562_REG(0X0, 0x30)
565 #define TAS2562_InterruptConfiguration_INTTHRUSW_Mask  (0x1 << 2),
566 #define TAS2562_InterruptConfiguration_INTTHRUSW_IntOnIRQZ  (0x0 << 2)
567 #define TAS2562_InterruptConfiguration_INTTHRUSW_IntFor2ms  (0x1 << 2)
568 #define TAS2562_InterruptConfiguration_PININTConfig10_Mask  (0x3 << 0)
569 #define TAS2562_InterruptConfiguration_PININTConfig10_AssertOnLiveInterrupts \
570         (0x0 << 0)
571 #define \
572 TAS2562_InterruptConfiguration_PININTConfig10_AssertOnLatchedInterrupts \
573         (0x1 << 0)
574 #define \
575 TAS2562_InterruptConfiguration_PININTConfig10_Assert2msOnLiveInterrupts \
576         (0x2 << 0)
577 #define \
578 TAS2562_InterruptConfiguration_PININTConfig10_Assert2msOnLatchedInterrupts \
579         (0x3 << 0)
581     /* Digital Input Pin Pull Down */
582 #define TAS2562_DigitalInputPinPullDown  TAS2562_REG(0X0, 0x31)
583 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Mask  (0x1 << 7)
584 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Disabled  (0x0 << 7)
585 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Enabled  (0x1 << 7)
586 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Mask  (0x1 << 6)
587 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Disabled  (0x0 << 6)
588 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Enabled  (0x1 << 6)
589 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Mask  (0x1 << 5)
590 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Disabled  (0x0 << 5)
591 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Enabled  (0x1 << 5)
592 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Mask  (0x1 << 4)
593 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Disabled  (0x0 << 4)
594 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Enabled  (0x1 << 4)
595 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Mask  (0x1 << 3)
596 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Disabled  (0x0 << 3)
597 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Enabled  (0x1 << 3)
598 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Mask  (0x1 << 2)
599 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Disabled  (0x0 << 2)
600 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Enabled  (0x1 << 2)
601 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Mask  (0x1 << 1)
602 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Disabled  (0x0 << 1)
603 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Enabled  (0x1 << 1)
604 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Mask  (0x1 << 0)
605 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Disabled  (0x0 << 0)
606 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Enabled  (0x1 << 0)
608     /* Misc IRQ */
609 #define TAS2562_MiscIRQ  TAS2562_REG(0X0, 0x32)
610 #define TAS2562_MiscIRQ_IRQZREQD_Mask  (0x1 << 7)
611 #define TAS2562_MiscIRQ_IRQZREQD_ActiveHigh  (0x0 << 7)
612 #define TAS2562_MiscIRQ_IRQZREQD_ActiveLow  (0x1 << 7)
613 #define TAS2562_MiscIRQ_IRQZBITBANG_Mask  (0x1 << 0)
614 #define TAS2562_MiscIRQ_IRQZBITBANG_IRQZInputBuf0  (0x0 << 0)
615 #define TAS2562_MiscIRQ_IRQZBITBANG_IRQZInputBuf1  (0x1 << 0)
618     /* Clock Configuration */
619 #define TAS2562_ClockConfiguration  TAS2562_REG(0X0, 0x38)
620 #define TAS2562_ClockConfiguration_SBCLKtoFS52_Mask  (0xf << 2)
621 #define TAS2562_ClockConfiguration_SBCLKtoFS52_16  (0x0 << 2)
622 #define TAS2562_ClockConfiguration_SBCLKtoFS52_24  (0x1 << 2)
623 #define TAS2562_ClockConfiguration_SBCLKtoFS52_32  (0x2 << 2)
624 #define TAS2562_ClockConfiguration_SBCLKtoFS52_48  (0x3 << 2)
625 #define TAS2562_ClockConfiguration_SBCLKtoFS52_64  (0x4 << 2)
626 #define TAS2562_ClockConfiguration_SBCLKtoFS52_96  (0x5 << 2)
627 #define TAS2562_ClockConfiguration_SBCLKtoFS52_128  (0x6 << 2)
628 #define TAS2562_ClockConfiguration_SBCLKtoFS52_192  (0x7 << 2)
629 #define TAS2562_ClockConfiguration_SBCLKtoFS52_256  (0x8 << 2)
630 #define TAS2562_ClockConfiguration_SBCLKtoFS52_384  (0x9 << 2)
631 #define TAS2562_ClockConfiguration_SBCLKtoFS52_512  (0xa << 2)
632 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Mask  (0x3 << 0)
633 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Disabled  (0x1 << 0)
634 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Enabled  (0x0 << 0)
637 #define TAS2562_BDIVSelection_BCLKMaster  TAS2562_REG(0X0, 0x3D)
638 #define TAS2562_BDIVSelection_BCLKMaster_ClockSource10_Mask  (0x3 << 0)
639 #define TAS2562_BDIVSelection_BCLKMaster_ClockSource10_NDIV2Output  (0x0 << 0)
640 #define TAS2562_BDIVSelection_BCLKMaster_ClockSource10_NDIV1Output  (0x1 << 0)
641 #define TAS2562_BDIVSelection_BCLKMaster_ClockSource10_MCLKOutput  (0x2 << 0)
642 #define TAS2562_BDIVSelection_BCLKMaster_ClockSource10_PDMCLK1PAD  (0x3 << 0)
644 #define TAS2562_BDIVSelection_HOLDSARUPDATE  TAS2562_REG(0X0, 0x41)
645 #define TAS2562_BDIVSelection_HOLDSARUPDATE10_Mask  (0x1 << 0)
646 #define TAS2562_BDIVSelection_HOLDSARUPDATE10_Disabled  (0x0 << 0)
647 #define TAS2562_BDIVSelection_HOLDSARUPDATE10_Enabled  (0x1 << 0)
650     /* TDM Clock detection monitor */
651 #define TAS2562_TDMClockdetectionmonitor  TAS2562_REG(0X0, 0x77)
652 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_Mask  (0xf << 3)
653 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_16  (0x0 << 3)
654 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_24  (0x1 << 3)
655 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_32  (0x2 << 3)
656 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_48  (0x3 << 3)
657 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_64  (0x4 << 3)
658 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_96  (0x5 << 3)
659 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_128  (0x6 << 3)
660 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_192  (0x7 << 3)
661 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_256  (0x8 << 3)
662 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_384  (0x9 << 3)
663 #define TAS2562_TDMClockdetectionmonitor_SBCLKtoFSYNC63_512  (0xf << 3)
664 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_Mask  (0x7 << 0),
665 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_8khz  (0x0 << 0)
666 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_16khz  (0x1 << 0)
667 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_32khz  (0x2 << 0)
668 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_48khz  (0x3 << 0)
669 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_96khz  (0x4 << 0)
670 #define TAS2562_TDMClockdetectionmonitor_DetectedSampleRate20_192khz  (0x5 << 0)
672     /* Revision and PG ID */
673 #define TAS2562_RevisionandPGID  TAS2562_REG(0X0, 0x7D)
674 #define TAS2562_RevisionandPGID_RevisionID74_Mask  (0xf << 4)
675 #define TAS2562_RevisionandPGID_PGID30_Mask  (0xf << 0)
677     /* I2C Checksum */
678 #define TAS2562_I2CChecksum  TAS2562_REG(0X0, 0x7E)
679 #define TAS2562_I2CChecksum_I2CChecksum70_Mask  (0xff << 0)
681     /* Book */
682 #define TAS2562_Book  TAS2562_REG(0X0, 0x7F)
683 #define TAS2562_Book_Book70_Mask  (0xff << 0)
686 #define TAS2562_RegisterCount  55
688 #define ERROR_NONE          0x0000000
689 #define ERROR_PLL_ABSENT    0x0000000
690 #define ERROR_DEVA_I2C_COMM 0x0000000
691 #define ERROR_DEVB_I2C_COMM 0x0000000
692 #define ERROR_PRAM_CRCCHK   0x0000000
693 #define ERROR_YRAM_CRCCHK   0x0000001
694 #define ERROR_CLK_DET2      0x0000002
695 #define ERROR_CLK_DET1      0x0000004
696 #define ERROR_CLK_LOST      0x0000008
697 #define ERROR_BROWNOUT      0x0000010
698 #define ERROR_DIE_OVERTEMP  0x0000020
699 #define ERROR_CLK_HALT      0x0000040
700 #define ERROR_UNDER_VOLTAGE 0x0000080
701 #define ERROR_OVER_CURRENT  0x0000100
702 #define ERROR_CLASSD_PWR    0x0000200
703 #define ERROR_FAILSAFE      0x4000000
705 struct tas2562_register {
706 int book;
707 int page;
708 int reg;
709 };
711 struct tas2562_dai_cfg {
712 unsigned int dai_fmt;
713 unsigned int tdm_delay;
714 };
716 struct tas2562_priv {
717 struct device *dev;
718 struct regmap *regmap;
719 struct mutex dev_lock;
720 struct delayed_work irq_work;
721 struct hrtimer mtimer;
722 int mnClkin;
723 int mnClkid;
724 bool mbPowerUp;
725 int mnCurrentBook;
726 int mnCurrentPage;
727 int mnLoad;
728 int mnASIFormat;
729 int mnResetGPIO;
730 int mnIRQGPIO;
731 int mnIRQ;
732 bool mbIRQEnable;
733 int mnSamplingRate;
734 int mnFrameSize;
735 int mnPLL;
736 int mnPPG;
737 //Added 060356-PP
738 int mnSlot_width;
739 int ch_size;
740 int (*read)(struct tas2562_priv *pTAS2562,
741         unsigned int reg, unsigned int *pValue);
742 int (*write)(struct tas2562_priv *pTAS2562,
743         unsigned int reg, unsigned int Value);
744 int (*bulk_read)(struct tas2562_priv *pTAS2562,
745         unsigned int reg, unsigned char *pData, unsigned int len);
746 int (*bulk_write)(struct tas2562_priv *pTAS2562,
747         unsigned int reg, unsigned char *pData, unsigned int len);
748 int (*update_bits)(struct tas2562_priv *pTAS2562,
749         unsigned int reg, unsigned int mask, unsigned int value);
750 void (*hw_reset)(struct tas2562_priv *pTAS2562);
751 void (*clearIRQ)(struct tas2562_priv *pTAS2562);
752 void (*enableIRQ)(struct tas2562_priv *pTAS2562, bool enable);
753     /* device is working, but system is suspended */
754 int (*runtime_suspend)(struct tas2562_priv *pTAS2562);
755 int (*runtime_resume)(struct tas2562_priv *pTAS2562);
756 bool mbRuntimeSuspend;
758 unsigned int mnErrCode;
759 #ifdef CONFIG_TAS2562_CODEC
760 struct mutex codec_lock;
761 #endif
763 #ifdef CONFIG_TAS2562_MISC
764 int mnDBGCmd;
765 int mnCurrentReg;
766 struct mutex file_lock;
767 #endif
768 };
770 #endif /* __TAS2562_ */