Fix TAS2558 compile issue
[tas256xsw-android/tas2562-android-driver.git] / tas2562.h
2 #ifndef __TAS2562_
3 #define __TAS2562_
5 #define TAS2562_DRIVER_ID           "1.0.1"
7 /* Page Control Register */
8 #define TAS2562_PAGECTL_REG                     0
10 /* Book Control Register (available in page0 of each book) */
11 #define TAS2562_BOOKCTL_PAGE            0
12 #define TAS2562_BOOKCTL_REG                     127
14 #define TAS2562_REG(book, page, reg)    (((book * 256 * 128) + \
15                                                                                         (page * 128)) + reg)
18 #define TAS2562_BOOK_ID(reg)                    (reg / (256 * 128))
20 #define TAS2562_PAGE_ID(reg)                    ((reg % (256 * 128)) / 128)
22 #define TAS2562_BOOK_REG(reg)                   (reg % (256 * 128))
24 #define TAS2562_PAGE_REG(reg)                   ((reg % (256 * 128)) % 128)
27     /* Software Reset */
28 #define TAS2562_SoftwareReset  TAS2562_REG(0x0, 0x0, 0x01)
29 #define TAS2562_SoftwareReset_SoftwareReset_Mask  (0x1 << 0),
30 #define TAS2562_SoftwareReset_SoftwareReset_DontReset  (0x0 << 0)
31 #define TAS2562_SoftwareReset_SoftwareReset_Reset  (0x1 << 0)
33     /* Power Control */
34 #define TAS2562_PowerControl  TAS2562_REG(0x0, 0x0, 0x02)
35 #define TAS2562_PowerControl_ISNSPower_Mask  (0x1 << 3)
36 #define TAS2562_PowerControl_ISNSPower_Active  (0x0 << 3)
37 #define TAS2562_PowerControl_ISNSPower_PoweredDown  (0x1 << 3)
38 #define TAS2562_PowerControl_VSNSPower_Mask  (0x1 << 2)
39 #define TAS2562_PowerControl_VSNSPower_Active  (0x0 << 2)
40 #define TAS2562_PowerControl_VSNSPower_PoweredDown  (0x1 << 2)
41 #define TAS2562_PowerControl_OperationalMode10_Mask  (0x3 << 0)
42 #define TAS2562_PowerControl_OperationalMode10_Active  (0x0 << 0)
43 #define TAS2562_PowerControl_OperationalMode10_Mute  (0x1 << 0)
44 #define TAS2562_PowerControl_OperationalMode10_Shutdown  (0x2 << 0)
46         /* data format */
47 #define TAS2562_DATAFORMAT_SHIFT                2
48 #define TAS2562_DATAFORMAT_I2S                  0x0
49 #define TAS2562_DATAFORMAT_DSP                  0x1
50 #define TAS2562_DATAFORMAT_RIGHT_J              0x2
51 #define TAS2562_DATAFORMAT_LEFT_J               0x3
53 #define TAS2562_DAI_FMT_MASK            (0x7 << TAS2562_DATAFORMAT_SHIFT)
55     /* Playback Configuration Reg0 */
56 #define TAS2562_PlaybackConfigurationReg0  TAS2562_REG(0x0, 0x0, 0x03)
57 #define TAS2562_PlaybackConfigurationReg0_DCBlocker_Mask  (0x1 << 6)
58 #define TAS2562_PlaybackConfigurationReg0_DCBlocker_Enabled  (0x0 << 6)
59 #define TAS2562_PlaybackConfigurationReg0_DCBlocker_Disabled  (0x1 << 6)
60 #define TAS2562_PlaybackConfigurationReg0_AmplifierLevel51_Mask  (0x1f << 1)
62     /* Misc Configuration Reg0 */
63 #define TAS2562_MiscConfigurationReg0  TAS2562_REG(0x0, 0x0, 0x04)
64 #define TAS2562_MiscConfigurationReg0_CPPGRetry_Mask  (0x1 << 7)
65 #define TAS2562_MiscConfigurationReg0_CPPGRetry_DoNotRetry  (0x0 << 7)
66 #define TAS2562_MiscConfigurationReg0_CPPGRetry_Retry  (0x1 << 7)
67 #define TAS2562_MiscConfigurationReg0_VBATPRORetry_Mask  (0x1 << 6)
68 #define TAS2562_MiscConfigurationReg0_VBATPRORetry_DoNotRetry  (0x0 << 6)
69 #define TAS2562_MiscConfigurationReg0_VBATPRORetry_Retry  (0x1 << 6)
70 #define TAS2562_MiscConfigurationReg0_OCERetry_Mask  (0x1 << 5)
71 #define TAS2562_MiscConfigurationReg0_OCERetry_DoNotRetry  (0x0 << 5)
72 #define TAS2562_MiscConfigurationReg0_OCERetry_Retry  (0x1 << 5)
73 #define TAS2562_MiscConfigurationReg0_OTERetry_Mask  (0x1 << 4)
74 #define TAS2562_MiscConfigurationReg0_OTERetry_DoNotRetry  (0x0 << 4)
75 #define TAS2562_MiscConfigurationReg0_OTERetry_Retry  (0x1 << 4)
76 #define TAS2562_MiscConfigurationReg0_IRQZPull_Mask  (0x1 << 3)
77 #define TAS2562_MiscConfigurationReg0_IRQZPull_Disabled  (0x0 << 3)
78 #define TAS2562_MiscConfigurationReg0_IRQZPull_Enabled  (0x1 << 3)
79 #define TAS2562_MiscConfigurationReg0_AMPSS_Mask  (0x1 << 2)
80 #define TAS2562_MiscConfigurationReg0_AMPSS_Disabled  (0x0 << 2)
81 #define TAS2562_MiscConfigurationReg0_AMPSS_Enabled  (0x1 << 2)
83     /* TDM Configuration Reg0 */
84 #define TAS2562_TDMConfigurationReg0  TAS2562_REG(0x0, 0x0, 0x06)
85 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_Mask  (0x1 << 5)
86 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_48KHz  (0x0 << 5)
87 #define TAS2562_TDMConfigurationReg0_SAMPRATERAMP_44_1KHz  (0x1 << 5)
88 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Mask  (0x1 << 4)
89 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Disabled  (0x1 << 4)
90 #define TAS2562_TDMConfigurationReg0_DETECTSAMPRATE_Enabled  (0x0 << 4)
91 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_Mask  (0x7 << 1)
92 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_14_7_16kHz  (0x1 << 1)
93 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_44_1_48kHz  (0x4 << 1)
94 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_88_2_96kHz  (0x5 << 1)
95 #define TAS2562_TDMConfigurationReg0_SAMPRATE31_176_4_192kHz  (0x6 << 1)
96 #define TAS2562_TDMConfigurationReg0_FRAMESTART_Mask  (0x1 << 0)
97 #define TAS2562_TDMConfigurationReg0_FRAMESTART_LowToHigh  (0x0 << 0)
98 #define TAS2562_TDMConfigurationReg0_FRAMESTART_HighToLow  (0x1 << 0)
100     /* TDM Configuration Reg1 */
101 #define TAS2562_TDMConfigurationReg1  TAS2562_REG(0x0, 0x0, 0x07)
102 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Mask  (0x1 << 6)
103 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Left  (0x0 << 6)
104 #define TAS2562_TDMConfigurationReg1_RXJUSTIFY_Right  (0x1 << 6)
105 #define TAS2562_TDMConfigurationReg1_RXOFFSET51_Mask  (0x1f << 1)
106 #define TAS2562_TDMConfigurationReg1_RXOFFSET51_Shift (1)
107 #define TAS2562_TDMConfigurationReg1_RXEDGE_Mask  (0x1 << 0)
108 #define TAS2562_TDMConfigurationReg1_RXEDGE_Rising  (0x0 << 0)
109 #define TAS2562_TDMConfigurationReg1_RXEDGE_Falling  (0x1 << 0)
111     /* TDM Configuration Reg2 */
112 #define TAS2562_TDMConfigurationReg2  TAS2562_REG(0x0, 0x0, 0x08)
113 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mask  (0x3 << 4)
114 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_I2C  (0x0 << 4),
115 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_Left  (0x1 << 4),
116 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Mono_Right  (0x2 << 4)
117 #define TAS2562_TDMConfigurationReg2_RXSCFG54_Stereo_DownMix  (0x3 << 4)
118 #define TAS2562_TDMConfigurationReg2_RXWLEN32_Mask  (0x3 << 2)
119 #define TAS2562_TDMConfigurationReg2_RXWLEN32_16Bits  (0x0 << 2)
120 #define TAS2562_TDMConfigurationReg2_RXWLEN32_20Bits  (0x1 << 2)
121 #define TAS2562_TDMConfigurationReg2_RXWLEN32_24Bits  (0x2 << 2)
122 #define TAS2562_TDMConfigurationReg2_RXWLEN32_32Bits  (0x3 << 2)
123 #define TAS2562_TDMConfigurationReg2_RXSLEN10_Mask  (0x3 << 0)
124 #define TAS2562_TDMConfigurationReg2_RXSLEN10_16Bits  (0x0 << 0)
125 #define TAS2562_TDMConfigurationReg2_RXSLEN10_24Bits  (0x1 << 0)
126 #define TAS2562_TDMConfigurationReg2_RXSLEN10_32Bits  (0x2 << 0)
128     /* TDM Configuration Reg3 */
129 #define TAS2562_TDMConfigurationReg3  TAS2562_REG(0x0, 0x0, 0x09)
130 #define TAS2562_TDMConfigurationReg3_RXSLOTRight74_Mask  (0xf << 4)
131 #define TAS2562_TDMConfigurationReg3_RXSLOTLeft30_Mask  (0xf << 0)
133     /* TDM Configuration Reg4 */
134 #define TAS2562_TDMConfigurationReg4  TAS2562_REG(0x0, 0x0, 0x0A)
135 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Mask  (0x1 << 5)
136 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Disable  (0x0 << 5)
137 #define TAS2562_TDMConfigurationReg4_TXKEEPER_Enable  (0x1 << 5)
138 #define TAS2562_TDMConfigurationReg4_TXFILL_Mask  (0x1 << 4)
139 #define TAS2562_TDMConfigurationReg4_TXFILL_Transmit0  (0x0 << 4)
140 #define TAS2562_TDMConfigurationReg4_TXFILL_TransmitHiz  (0x1 << 4)
141 #define TAS2562_TDMConfigurationReg4_TXOFFSET31_Mask  (0x7 << 1)
142 #define TAS2562_TDMConfigurationReg4_TXEDGE_Mask  (0x1 << 0)
143 #define TAS2562_TDMConfigurationReg4_TXEDGE_Rising  (0x0 << 0)
144 #define TAS2562_TDMConfigurationReg4_TXEDGE_Falling  (0x1 << 0)
146     /* TDM Configuration Reg5 */
147 #define TAS2562_TDMConfigurationReg5  TAS2562_REG(0x0, 0x0, 0x0B)
148 #define TAS2562_TDMConfigurationReg5_VSNSTX_Mask  (0x1 << 6)
149 #define TAS2562_TDMConfigurationReg5_VSNSTX_Disable  (0x0 << 6),
150 #define TAS2562_TDMConfigurationReg5_VSNSTX_Enable  (0x1 << 6),
151 #define TAS2562_TDMConfigurationReg5_VSNSSLOT50_Mask  (0x3f << 0)
153     /* TDM Configuration Reg6 */
154 #define TAS2562_TDMConfigurationReg6  TAS2562_REG(0x0, 0x0, 0x0C)
155 #define TAS2562_TDMConfigurationReg6_ISNSTX_Mask  (0x1 << 6)
156 #define TAS2562_TDMConfigurationReg6_ISNSTX_Disable  (0x0 << 6),
157 #define TAS2562_TDMConfigurationReg6_ISNSTX_Enable  (0x1 << 6),
158 #define TAS2562_TDMConfigurationReg6_ISNSSLOT50_Mask  (0x3f << 0)
160     /* TDM Configuration Reg7 */
161 #define TAS2562_TDMConfigurationReg7  TAS2562_REG(0x0, 0x0, 0x0D)
162 #define TAS2562_TDMConfigurationReg7_VBATSLEN_Mask  (0x1 << 7)
163 #define TAS2562_TDMConfigurationReg7_VBATSLEN_8Bits  (0x0 << 7)
164 #define TAS2562_TDMConfigurationReg7_VBATSLEN_16Bits  (0x1 << 7)
165 #define TAS2562_TDMConfigurationReg7_VBATTX_Mask  (0x1 << 6)
166 #define TAS2562_TDMConfigurationReg7_VBATTX_Disable  (0x0 << 6)
167 #define TAS2562_TDMConfigurationReg7_VBATTX_Enable  (0x1 << 6)
168 #define TAS2562_TDMConfigurationReg7_VBATSLOT50_Mask  (0x3f << 0)
170     /* TDM Configuration Reg8 */
171 #define TAS2562_TDMConfigurationReg8  TAS2562_REG(0x0, 0x0, 0x0E)
172 #define TAS2562_TDMConfigurationReg8_TEMPTX_Mask  (0x1 << 6)
173 #define TAS2562_TDMConfigurationReg8_TEMPTX_Disable  (0x0 << 6)
174 #define TAS2562_TDMConfigurationReg8_TEMPTX_Enable  (0x1 << 6)
175 #define TAS2562_TDMConfigurationReg8_TEMPSLOT50_Mask  (0x3f << 0)
177     /* TDM Configuration Reg9 */
178 #define TAS2562_TDMConfigurationReg9  TAS2562_REG(0x0, 0x0, 0x0F)
179 #define TAS2562_TDMConfigurationReg9_GAINTX_Mask  (0x1 << 6)
180 #define TAS2562_TDMConfigurationReg9_GAINTX_Disable  (0x0 << 6)
181 #define TAS2562_TDMConfigurationReg9_GAINTX_Enable  (0x1 << 6)
182 #define TAS2562_TDMConfigurationReg9_GAINSLOT50_Mask  (0x3f << 0)
184     /* Limiter Configuration Reg0 */
185 #define TAS2562_LimiterConfigurationReg0  TAS2562_REG(0x0, 0x0, 0x12)
186 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_Mask  (0x3 << 4)
187 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_1  (0x2 << 4)
188 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_2  (0x3 << 4)
189 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_0_25  (0x0 << 4)
190 #define TAS2562_LimiterConfigurationReg0_LIMATKST54_0_5  (0x1 << 4)
191 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_Mask  (0x7 << 1)
192 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_5  (0x0 << 1)
193 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_10  (0x1 << 1)
194 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_20  (0x2 << 1)
195 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_40  (0x3 << 1)
196 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_80  (0x4 << 1)
197 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_160  (0x5 << 1)
198 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_320  (0x6 << 1)
199 #define TAS2562_LimiterConfigurationReg0_LIMATKRT31_640  (0x7 << 1)
200 #define TAS2562_LimiterConfigurationReg0_LIMEN_Mask  (0x1 << 0)
201 #define TAS2562_LimiterConfigurationReg0_LIMEN_Disabled  (0x0 << 0)
202 #define TAS2562_LimiterConfigurationReg0_LIMEN_Enabled  (0x1 << 0)
204     /* Limiter Configuration Reg1 */
205 #define TAS2562_LimiterConfigurationReg1  TAS2562_REG(0x0, 0x0, 0x13)
206 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_Mask  (0x3 << 6)
207 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_1  (0x2 << 6)
208 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_2  (0x3 << 6)
209 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_0_25  (0x0 << 6)
210 #define TAS2562_LimiterConfigurationReg1_LIMRLSST76_0_5  (0x1 << 6)
211 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_Mask  (0x7 << 3)
212 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_10  (0x0 << 3)
213 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_50  (0x1 << 3)
214 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_100  (0x2 << 3)
215 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_250  (0x3 << 3)
216 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_500  (0x4 << 3)
217 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_750  (0x5 << 3)
218 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_1000  (0x6 << 3)
219 #define TAS2562_LimiterConfigurationReg1_LIMRLSRT53_1500  (0x7 << 3)
220 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_Mask  (0x7 << 0)
221 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_0  (0x0 << 0)
222 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_10  (0x1 << 0)
223 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_25  (0x2 << 0)
224 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_50  (0x3 << 0)
225 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_100  (0x4 << 0)
226 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_250  (0x5 << 0)
227 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_500  (0x6 << 0)
228 #define TAS2562_LimiterConfigurationReg1_LIMHLDTM20_1000  (0x7 << 0)
230     /* Brown Out Prevention Reg0 */
231 #define TAS2562_BrownOutPreventionReg0  TAS2562_REG(0x0, 0x0, 0x14)
232 #define TAS2562_BrownOutPreventionReg0_BOPSDEN_Mask  (0x1 << 4)
233 #define TAS2562_BrownOutPreventionReg0_BOPSDEN_Disabled  (0x0 << 4)
234 #define TAS2562_BrownOutPreventionReg0_BOPSDEN_Enabled  (0x1 << 4)
235 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_Mask  (0x1 << 3)
236 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_DontClear  (0x0 << 3)
237 #define TAS2562_BrownOutPreventionReg0_BOPHLDCLR_Clear  (0x1 << 3)
238 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_Mask  (0x1 << 2)
239 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_UseHoldTime  (0x0 << 2)
240 #define TAS2562_BrownOutPreventionReg0_BOPINFHLD_HoldUntilCleared  (0x1 << 2)
241 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_Mask  (0x1 << 1)
242 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_DoNotMute  (0x0 << 1)
243 #define TAS2562_BrownOutPreventionReg0_BOPMUTE_Mute  (0x1 << 1)
244 #define TAS2562_BrownOutPreventionReg0_BOPEN_Mask  (0x1 << 0)
245 #define TAS2562_BrownOutPreventionReg0_BOPEN_Disabled  (0x0 << 0)
246 #define TAS2562_BrownOutPreventionReg0_BOPEN_Enabled  (0x1 << 0)
248     /* Brown Out Prevention Reg1 */
249 #define TAS2562_BrownOutPreventionReg1  TAS2562_REG(0x0, 0x0, 0x15)
250 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_Mask  (0x7 << 5)
251 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_1  (0x0 << 5)
252 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_2  (0x1 << 5)
253 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_4  (0x2 << 5)
254 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_8  (0x3 << 5)
255 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_16  (0x4 << 5)
256 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_32  (0x5 << 5)
257 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_64  (0x6 << 5)
258 #define TAS2562_BrownOutPreventionReg1_BOPATKRT75_128  (0x7 << 5)
259 #define TAS2562_BrownOutPreventionReg1_BOPATKST43_Mask  (0x3 << 3)
260 #define TAS2562_BrownOutPreventionReg1_BOPATKST43_1  (0x1 << 3)
261 #define TAS2562_BrownOutPreventionReg1_BOPATKST43_2  (0x3 << 3)
262 #define TAS2562_BrownOutPreventionReg1_BOPATKST43_0_5  (0x0 << 3)
263 #define TAS2562_BrownOutPreventionReg1_BOPATKST43_1_5  (0x2 << 3)
264 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_Mask  (0x7 << 0)
265 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_0  (0x0 << 0)
266 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_10  (0x1 << 0)
267 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_25  (0x2 << 0)
268 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_50  (0x3 << 0)
269 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_100  (0x4 << 0)
270 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_250  (0x5 << 0)
271 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_500  (0x6 << 0)
272 #define TAS2562_BrownOutPreventionReg1_BOPHLDTM20_1000  (0x7 << 0
274     /* Interrupt Mask Reg0 */
275 #define TAS2562_InterruptMaskReg0  TAS2562_REG(0x0, 0x0, 0x1A)
276 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Mask  (0x1 << 7)
277 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Unmask  (0x0 << 7)
278 #define TAS2562_InterruptMaskReg0_LIMMUTEINTMASK_Disable  (0x1 << 7)
279 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Mask  (0x1 << 6)
280 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Unmask  (0x0 << 6)
281 #define TAS2562_InterruptMaskReg0_LIMINFHLDINTMASK_Disable  (0x1 << 6)
282 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Mask  (0x1 << 5)
283 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Unmask  (0x0 << 5)
284 #define TAS2562_InterruptMaskReg0_LIMMAXATNINTMASK_Disable  (0x1 << 5)
285 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Mask  (0x1 << 4)
286 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Unmask  (0x0 << 4)
287 #define TAS2562_InterruptMaskReg0_VBATLessthanINFINTMASK_Disable  (0x1 << 4)
288 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Mask  (0x1 << 3)
289 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Unmask  (0x0 << 3)
290 #define TAS2562_InterruptMaskReg0_LIMActiveFlagINTMASK_Disable  (0x1 << 3)
291 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Mask  (0x1 << 2)
292 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Unmask  (0x0 << 2)
293 #define TAS2562_InterruptMaskReg0_TDMClockErrorINTMASK_Disable  (0x1 << 2)
294 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Mask  (0x1 << 1)
295 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Unmask  (0x0 << 1)
296 #define TAS2562_InterruptMaskReg0_OCEINTMASK_Disable  (0x1 << 1)
297 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Mask  (0x1 << 0)
298 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Unmask  (0x0 << 0)
299 #define TAS2562_InterruptMaskReg0_OTEINTMASK_Disable  (0x1 << 0)
300 #define TAS2562_InterruptMaskReg0_Disable 0xff
302     /* Interrupt Mask Reg1 */
303 #define TAS2562_InterruptMaskReg1  TAS2562_REG(0x0, 0x0, 0x1B)
304 #define TAS2562_InterruptMaskReg1_DSPOUTPUTINTMASK_Mask  (0x1 << 7)
305 #define TAS2562_InterruptMaskReg1_DSPOUTPUTINTMASK_Unmask  (0x0 << 7)
306 #define TAS2562_InterruptMaskReg1_DSPOUTPUTINTMASK_Disable  (0x1 << 7)
307 #define TAS2562_InterruptMaskReg1_CRCINTMASK_Mask  (0x1 << 6)
308 #define TAS2562_InterruptMaskReg1_CRCINTMASK_Unmask  (0x0 << 6)
309 #define TAS2562_InterruptMaskReg1_CRCINTMASK_Disable  (0x1 << 6)
310 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Mask  (0x1 << 2)
311 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Unmask  (0x0 << 2)
312 #define TAS2562_InterruptMaskReg1_VBATOVLOINTMASK_Disable  (0x1 << 2)
313 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Mask  (0x1 << 1)
314 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Unmask  (0x0 << 1)
315 #define TAS2562_InterruptMaskReg1_VBATUVLOINTMASK_Disable  (0x1 << 1)
316 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Mask  (0x1 << 0)
317 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Unmask  (0x0 << 0)
318 #define TAS2562_InterruptMaskReg1_BrownOutFlagINTMASK_Disable  (0x1 << 0)
319 #define TAS2562_InterruptMaskReg1_Disable 0xff
321     /* Interrupt Mask Reg2 */
322 #define TAS2562_InterruptMaskReg2  TAS2562_REG(0x0, 0x0, 0x1C)
323 #define TAS2562_InterruptMaskReg2_DACLKINTMASK_Mask  (0x1 << 7)
324 #define TAS2562_InterruptMaskReg2_DACLKINTMASK_Unmask  (0x0 << 7)
325 #define TAS2562_InterruptMaskReg2_DACLKINTMASK_Disable  (0x1 << 7)
326 #define TAS2562_InterruptMaskReg2_BSTCLKINTMASK_Mask  (0x1 << 6)
327 #define TAS2562_InterruptMaskReg2_BSTCLKINTMASK_Unmask  (0x0 << 6)
328 #define TAS2562_InterruptMaskReg2_BSTCLKINTMASK_Disable  (0x1 << 6)
329 #define TAS2562_InterruptMaskReg2_VBATPORCLKINTMASK_Mask  (0x1 << 5)
330 #define TAS2562_InterruptMaskReg2_VBATPORCLKINTMASK_Unmask  (0x0 << 5)
331 #define TAS2562_InterruptMaskReg2_VBATPORCLKINTMASK_Disable  (0x1 << 5)
332 #define TAS2562_InterruptMaskReg2_PLLOCKINTMASK_Mask  (0x1 << 4)
333 #define TAS2562_InterruptMaskReg2_PLLOCKINTMASK_Unmask  (0x0 << 4)
334 #define TAS2562_InterruptMaskReg2_PLLOCKINTMASK_Disable  (0x1 << 4)
335 #define TAS2562_InterruptMaskReg2_DCDETECTINTMASK_Mask  (0x1 << 3)
336 #define TAS2562_InterruptMaskReg2_DCDETECTINTMASK_Unmask  (0x0 << 3)
337 #define TAS2562_InterruptMaskReg2_DCDETECTINTMASK_Disable  (0x1 << 3)
339     /* Live-Interrupt Reg0 */
340 #define TAS2562_LiveInterruptReg0  TAS2562_REG(0x0, 0x0, 0x1F)
341 #define TAS2562_LiveInterruptReg0_LIMMUTE_Mask  (0x1 << 7)
342 #define TAS2562_LiveInterruptReg0_LIMMUTE_NoInterrupt  (0x0 << 7)
343 #define TAS2562_LiveInterruptReg0_LIMMUTE_Interrupt  (0x1 << 7)
344 #define TAS2562_LiveInterruptReg0_LIMINFHLD_Mask  (0x1 << 6)
345 #define TAS2562_LiveInterruptReg0_LIMINFHLD_NoInterrupt  (0x0 << 6)
346 #define TAS2562_LiveInterruptReg0_LIMINFHLD_Interrupt  (0x1 << 6)
347 #define TAS2562_LiveInterruptReg0_LIMMAXATN_Mask  (0x1 << 5)
348 #define TAS2562_LiveInterruptReg0_LIMMAXATN_NoInterrupt  (0x0 << 5)
349 #define TAS2562_LiveInterruptReg0_LIMMAXATN_Interrupt  (0x1 << 5)
350 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_Mask  (0x1 << 4)
351 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_NoInterrupt  (0x0 << 4)
352 #define TAS2562_LiveInterruptReg0_VBATLessthanINF_Interrupt  (0x1 << 4)
353 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_Mask  (0x1 << 3)
354 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_NoInterrupt  (0x0 << 3)
355 #define TAS2562_LiveInterruptReg0_LIMActiveFlag_Interrupt  (0x1 << 3)
356 #define TAS2562_LiveInterruptReg0_TDMClockError_Mask  (0x1 << 2)
357 #define TAS2562_LiveInterruptReg0_TDMClockError_NoInterrupt  (0x0 << 2)
358 #define TAS2562_LiveInterruptReg0_TDMClockError_Interrupt  (0x1 << 2)
359 #define TAS2562_LiveInterruptReg0_OCEFlag_Mask  (0x1 << 1)
360 #define TAS2562_LiveInterruptReg0_OCEFlag_NoInterrupt  (0x0 << 1)
361 #define TAS2562_LiveInterruptReg0_OCEFlag_Interrupt  (0x1 << 1)
362 #define TAS2562_LiveInterruptReg0_OTEFlag_Mask  (0x1 << 0)
363 #define TAS2562_LiveInterruptReg0_OTEFlag_NoInterrupt  (0x0 << 0)
364 #define TAS2562_LiveInterruptReg0_OTEFlag_Interrupt  (0x1 << 0)
366     /* Live-Interrupt Reg1 */
367 #define TAS2562_LiveInterruptReg1  TAS2562_REG(0x0, 0x0, 0x20)
368 #define TAS2562_LiveInterruptReg1_DSPINTOutput_Mask  (0x1 << 7)
369 #define TAS2562_LiveInterruptReg1_DSPINTOutput_NoInterrupt  (0x0 << 7)
370 #define TAS2562_LiveInterruptReg1_DSPINTOutput_Interrupt  (0x1 << 7)
371 #define TAS2562_LiveInterruptReg1_OTPCRC_Mask  (0x1 << 6)
372 #define TAS2562_LiveInterruptReg1_OTPCRC_NoInterrupt  (0x0 << 6)
373 #define TAS2562_LiveInterruptReg1_OTPCRC_Interrupt  (0x1 << 6)
374 #define TAS2562_LiveInterruptReg1_BrownOutFlag_Mask  (0x1 << 1)
375 #define TAS2562_LiveInterruptReg1_BrownOutFlag_NoInterrupt  (0x0 << 1)
376 #define TAS2562_LiveInterruptReg1_BrownOutFlag_Interrupt  (0x1 << 1)
377 #define TAS2562_LiveInterruptReg1_BrownOutDetected_Mask  (0x1 << 1)
378 #define TAS2562_LiveInterruptReg1_BrownOutDetected_NoInterrupt  (0x0 << 1)
379 #define TAS2562_LiveInterruptReg1_BrownOutDetected_Interrupt  (0x1 << 1)
381     /* Latched-Interrupt Reg0 */
382 #define TAS2562_LatchedInterruptReg0  TAS2562_REG(0x0, 0x0, 0x24)
383 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_Mask  (0x1 << 7)
384 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_NoInterrupt  (0x0 << 7)
385 #define TAS2562_LatchedInterruptReg0_LIMMUTESticky_Interrupt  (0x1 << 7)
386 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_Mask  (0x1 << 6)
387 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_NoInterrupt  (0x0 << 6)
388 #define TAS2562_LatchedInterruptReg0_LIMINFHLDSticky_Interrupt  (0x1 << 6)
389 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_Mask  (0x1 << 5)
390 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_NoInterrupt  (0x0 << 5)
391 #define TAS2562_LatchedInterruptReg0_LIMMAXATNSticky_Interrupt  (0x1 << 5)
392 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_Mask  (0x1 << 4)
393 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_NoInterrupt \
394         (0x0 << 4)
395 #define TAS2562_LatchedInterruptReg0_VBATLessthanINFSticky_Interrupt  (0x1 << 4)
396 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_Mask  (0x1 << 3)
397 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_NoInterrupt  (0x0 << 3)
398 #define TAS2562_LatchedInterruptReg0_LIMActiveFlagSticky_Interrupt  (0x1 << 3)
399 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_Mask  (0x1 << 2)
400 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_NoInterrupt  (0x0 << 2)
401 #define TAS2562_LatchedInterruptReg0_TDMClockErrorSticky_Interrupt  (0x1 << 2)
402 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_Mask  (0x1 << 1)
403 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_NoInterrupt  (0x0 << 1)
404 #define TAS2562_LatchedInterruptReg0_OCEFlagSticky_Interrupt  (0x1 << 1)
405 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_Mask  (0x1 << 0)
406 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_NoInterrupt  (0x0 << 0)
407 #define TAS2562_LatchedInterruptReg0_OTEFlagSticky_Interrupt  (0x1 << 0)
409     /* Latched-Interrupt Reg1 */
410 #define TAS2562_LatchedInterruptReg1  TAS2562_REG(0x0, 0x0, 0x25)
411 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_Mask  (0x1 << 7)
412 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_NoInterrupt \
413         (0x0 << 7)
414 #define TAS2562_LatchedInterruptReg1_PDMAUDDATAINVALIDSticky_Interrupt \
415         (0x1 << 7)
416 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_Mask  (0x1 << 3)
417 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_NoInterrupt  (0x0 << 3)
418 #define TAS2562_LatchedInterruptReg1_VBATOVLOSticky_Interrupt  (0x1 << 3)
419 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_Mask  (0x1 << 2)
420 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_NoInterrupt  (0x0 << 2)
421 #define TAS2562_LatchedInterruptReg1_VBATUVLOSticky_Interrupt  (0x1 << 2)
422 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_Mask  (0x1 << 1)
423 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_NoInterrupt  (0x0 << 1)
424 #define TAS2562_LatchedInterruptReg1_BrownOutFlagSticky_Interrupt  (0x1 << 1)
425 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_Mask  (0x1 << 0)
426 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_NoInterrupt  (0x0 << 0)
427 #define TAS2562_LatchedInterruptReg1_PDMClockErrorSticky_Interrupt  (0x1 << 0)
429     /* VBAT MSB */
430 #define TAS2562_VBATMSB  TAS2562_REG(0x0, 0x0, 0x2A)
431 #define TAS2562_VBATMSB_VBATMSB70_Mask  (0xff << 0)
433     /* VBAT LSB */
434 #define TAS2562_VBATLSB  TAS2562_REG(0x0, 0x0, 0x2B)
435 #define TAS2562_VBATLSB_VBATLSB74_Mask  (0xf << 4)
437     /* TEMP */
438 #define TAS2562_TEMP  TAS2562_REG(0x0, 0x0, 0x2C)
439 #define TAS2562_TEMP_TEMPMSB70_Mask  (0xff << 0)
442     /* Interrupt Configuration */
443 #define TAS2562_InterruptConfiguration  TAS2562_REG(0x0, 0x0, 0x30)
444 #define TAS2562_InterruptConfiguration_LTCHINTClear_Mask (0x1 << 2)
445 #define TAS2562_InterruptConfiguration_LTCHINTClear (0x1 << 2)
446 #define TAS2562_InterruptConfiguration_PININTConfig10_Mask  (0x3 << 0)
447 #define TAS2562_InterruptConfiguration_PININTConfig10_AssertOnLiveInterrupts \
448         (0x0 << 0)
449 #define \
450 TAS2562_InterruptConfiguration_PININTConfig10_AssertOnLatchedInterrupts \
451         (0x1 << 0)
452 #define \
453 TAS2562_InterruptConfiguration_PININTConfig10_Assert2msOnLiveInterrupts \
454         (0x2 << 0)
455 #define \
456 TAS2562_InterruptConfiguration_PININTConfig10_Assert2msOnLatchedInterrupts \
457         (0x3 << 0)
459     /* Digital Input Pin Pull Down */
460 #define TAS2562_DigitalInputPinPullDown  TAS2562_REG(0x0, 0x0, 0x31)
461 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Mask  (0x1 << 7)
462 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Disabled  (0x0 << 7)
463 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDOUT_Enabled  (0x1 << 7)
464 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Mask  (0x1 << 6)
465 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Disabled  (0x0 << 6)
466 #define TAS2562_DigitalInputPinPullDown_WKPulldownSDIN_Enabled  (0x1 << 6)
467 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Mask  (0x1 << 5)
468 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Disabled  (0x0 << 5)
469 #define TAS2562_DigitalInputPinPullDown_WKPulldownFSYNC_Enabled  (0x1 << 5)
470 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Mask  (0x1 << 4)
471 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Disabled  (0x0 << 4)
472 #define TAS2562_DigitalInputPinPullDown_WKPulldownSBCLK_Enabled  (0x1 << 4)
473 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Mask  (0x1 << 3)
474 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Disabled  (0x0 << 3)
475 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD0_Enabled  (0x1 << 3)
476 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Mask  (0x1 << 2)
477 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Disabled  (0x0 << 2)
478 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMD1_Enabled  (0x1 << 2)
479 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Mask  (0x1 << 1)
480 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Disabled  (0x0 << 1)
481 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK0_Enabled  (0x1 << 1)
482 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Mask  (0x1 << 0)
483 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Disabled  (0x0 << 0)
484 #define TAS2562_DigitalInputPinPullDown_WKPulldownPDMCK1_Enabled  (0x1 << 0)
486     /* Misc IRQ */
487 #define TAS2562_MiscIRQ  TAS2562_REG(0x0, 0x0, 0x32)
488 #define TAS2562_MiscIRQ_IRQZREQD_Mask  (0x1 << 7)
489 #define TAS2562_MiscIRQ_IRQZREQD_ActiveHigh  (0x0 << 7)
490 #define TAS2562_MiscIRQ_IRQZREQD_ActiveLow  (0x1 << 7)
491 #define TAS2562_MiscIRQ_IRQZBITBANG_Mask  (0x1 << 0)
492 #define TAS2562_MiscIRQ_IRQZBITBANG_IRQZInputBuf0  (0x0 << 0)
493 #define TAS2562_MiscIRQ_IRQZBITBANG_IRQZInputBuf1  (0x1 << 0)
495 #define TAS2562_BoostConfiguration2 TAS2562_REG(0x0, 0x0, 0x34)
496 #define TAS2562_BoostConfiguration2_BoostMaxVoltage_Mask  (0x0f << 0)
498 #define TAS2562_BoostSlope TAS2562_REG(0x0, 0x0, 0x35)
499 #define TAS2562_BoostSlope_Mask         (0x3 << 2)
500 #define TAS2562_BoostSlope_3AV          (0x1 << 2)
501 #define TAS2562_BoostSlope_2AV          (0x2 << 2)
503     /* Clock Configuration */
504 #define TAS2562_ClockConfiguration  TAS2562_REG(0x0, 0x0, 0x38)
505 #define TAS2562_ClockConfiguration_SBCLKtoFS52_Mask  (0xf << 2)
506 #define TAS2562_ClockConfiguration_SBCLKtoFS52_16  (0x0 << 2)
507 #define TAS2562_ClockConfiguration_SBCLKtoFS52_24  (0x1 << 2)
508 #define TAS2562_ClockConfiguration_SBCLKtoFS52_32  (0x2 << 2)
509 #define TAS2562_ClockConfiguration_SBCLKtoFS52_48  (0x3 << 2)
510 #define TAS2562_ClockConfiguration_SBCLKtoFS52_64  (0x4 << 2)
511 #define TAS2562_ClockConfiguration_SBCLKtoFS52_96  (0x5 << 2)
512 #define TAS2562_ClockConfiguration_SBCLKtoFS52_128  (0x6 << 2)
513 #define TAS2562_ClockConfiguration_SBCLKtoFS52_192  (0x7 << 2)
514 #define TAS2562_ClockConfiguration_SBCLKtoFS52_256  (0x8 << 2)
515 #define TAS2562_ClockConfiguration_SBCLKtoFS52_384  (0x9 << 2)
516 #define TAS2562_ClockConfiguration_SBCLKtoFS52_512  (0xa << 2)
517 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Mask  (0x3 << 0)
518 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Disabled  (0x1 << 0)
519 #define TAS2562_ClockConfiguration_DISCLKRateDetect10_Enabled  (0x0 << 0)
521 #define TAS2562_VBatFilter TAS2562_REG(0x0, 0x0, 0x3b)
522 #define TAS2562_ClassHReleaseTimer TAS2562_REG(0x0, 0x0, 0x3c)
524 #define TAS2562_ICN_REG TAS2562_REG(0x0, 0x2, 0x64)
526 #define TAS2562_TestPageConfiguration TAS2562_REG(0x0, 0xfd, 0xd)
527 #define TAS2562_ClassDConfiguration1    TAS2562_REG(0x0, 0xfd, 0x19)
528 #define TAS2562_ClassDConfiguration2    TAS2562_REG(0x0, 0xfd, 0x32)
529 #define TAS2562_ClassDConfiguration3    TAS2562_REG(0x0, 0xfd, 0x33)
530 #define TAS2562_ClassDConfiguration4    TAS2562_REG(0x0, 0xfd, 0x3f)
531 #define TAS2562_EfficiencyConfiguration TAS2562_REG(0x0, 0xfd, 0x5f)
533 #define TAS2562_ClassHHeadroom TAS2562_REG(0x64, 0x7, 0x48)
534 #define TAS2562_ClassHHysteresis TAS2562_REG(0x64, 0x7, 0x4c)
535 #define TAS2562_ClassHMtct TAS2562_REG(0x64, 0x5, 0x4c)
537     /* Revision and PG ID */
538 #define TAS2562_RevisionandPGID  TAS2562_REG(0x0, 0x0, 0x7D)
539 #define TAS2562_RevisionandPGID_RevisionID74_Mask  (0xf << 4)
540 #define TAS2562_RevisionandPGID_PGID30_Mask  (0xf << 0)
542     /* I2C Checksum */
543 #define TAS2562_I2CChecksum  TAS2562_REG(0x0, 0x0, 0x7E)
544 #define TAS2562_I2CChecksum_I2CChecksum70_Mask  (0xff << 0)
546     /* Book */
547 #define TAS2562_Book  TAS2562_REG(0x0, 0x0, 0x7F)
548 #define TAS2562_Book_Book70_Mask  (0xff << 0)
550 #define TAS2562_POWER_ACTIVE 0
551 #define TAS2562_POWER_MUTE 1
552 #define TAS2562_POWER_SHUTDOWN 2
554 #define ERROR_NONE              0x0000000
555 #define ERROR_PLL_ABSENT        0x0000000
556 #define ERROR_DEVA_I2C_COMM     0x0000000
557 #define ERROR_DEVB_I2C_COMM     0x0000000
558 #define ERROR_PRAM_CRCCHK       0x0000000
559 #define ERROR_YRAM_CRCCHK       0x0000001
560 #define ERROR_OVER_CURRENT      0x0000002
561 #define ERROR_DIE_OVERTEMP      0x0000004
562 #define ERROR_OVER_VOLTAGE      0x0000008
563 #define ERROR_UNDER_VOLTAGE     0x0000010
564 #define ERROR_BROWNOUT          0x0000020
565 #define ERROR_CLASSD_PWR        0x0000040
566 #define ERROR_FAILSAFE          0x4000000
568 #define CHECK_PERIOD    5000    /* 5 second */
570 struct tas2562_register {
571 int book;
572 int page;
573 int reg;
574 };
576 struct tas2562_dai_cfg {
577 unsigned int dai_fmt;
578 unsigned int tdm_delay;
579 };
581 struct tas2562_priv {
582 struct device *dev;
583 struct regmap *regmap;
584 struct mutex dev_lock;
585 struct delayed_work irq_work;
586 struct hrtimer mtimer;
587 #ifdef CONFIG_TAS2562_CODEC
588 struct snd_soc_codec *codec;
589 #endif
590 int mnClkin;
591 int mnClkid;
592 bool mbPowerUp;
593 int mnPowerState;
594 int mnCurrentBook;
595 int mnCurrentPage;
596 int mnLoad;
597 int mnASIFormat;
598 int mnResetGPIO;
599 int mnIRQGPIO;
600 int mnIRQ;
601 bool mbIRQEnable;
602 int mnSamplingRate;
603 int mnFrameSize;
604 int mnPLL;
605 int mnPPG;
606 int mnCh_size;
607 int mnSlot_width;
608 int mnPCMFormat;
609 bool mbMute;
610 int (*read)(struct tas2562_priv *pTAS2562,
611         unsigned int reg, unsigned int *pValue);
612 int (*write)(struct tas2562_priv *pTAS2562,
613         unsigned int reg, unsigned int Value);
614 int (*bulk_read)(struct tas2562_priv *pTAS2562,
615         unsigned int reg, unsigned char *pData, unsigned int len);
616 int (*bulk_write)(struct tas2562_priv *pTAS2562,
617         unsigned int reg, unsigned char *pData, unsigned int len);
618 int (*update_bits)(struct tas2562_priv *pTAS2562,
619         unsigned int reg, unsigned int mask, unsigned int value);
620 void (*hw_reset)(struct tas2562_priv *pTAS2562);
621 void (*clearIRQ)(struct tas2562_priv *pTAS2562);
622 void (*enableIRQ)(struct tas2562_priv *pTAS2562, bool enable);
623     /* device is working, but system is suspended */
624 int (*runtime_suspend)(struct tas2562_priv *pTAS2562);
625 int (*runtime_resume)(struct tas2562_priv *pTAS2562);
626 bool mbRuntimeSuspend;
628 unsigned int mnErrCode;
629 #ifdef CONFIG_TAS2562_CODEC
630 struct mutex codec_lock;
631 #endif
633 #ifdef CONFIG_TAS2562_MISC
634 int mnDBGCmd;
635 int mnCurrentReg;
636 struct mutex file_lock;
637 #endif
638 };
640 #endif /* __TAS2562_ */