Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Codec driver for ST STA350 2.1-channel high-efficiency digital audio system
0004  *
0005  * Copyright: 2011 Raumfeld GmbH
0006  * Author: Sven Brandau <info@brandau.biz>
0007  *
0008  * based on code from:
0009  *      Raumfeld GmbH
0010  *        Johannes Stezenbach <js@sig21.net>
0011  *  Wolfson Microelectronics PLC.
0012  *    Mark Brown <broonie@opensource.wolfsonmicro.com>
0013  */
0014 #ifndef _ASOC_STA_350_H
0015 #define _ASOC_STA_350_H
0016 
0017 /* STA350 register addresses */
0018 
0019 #define STA350_REGISTER_COUNT   0x4D
0020 #define STA350_COEF_COUNT 62
0021 
0022 #define STA350_CONFA    0x00
0023 #define STA350_CONFB    0x01
0024 #define STA350_CONFC    0x02
0025 #define STA350_CONFD    0x03
0026 #define STA350_CONFE    0x04
0027 #define STA350_CONFF    0x05
0028 #define STA350_MMUTE    0x06
0029 #define STA350_MVOL     0x07
0030 #define STA350_C1VOL    0x08
0031 #define STA350_C2VOL    0x09
0032 #define STA350_C3VOL    0x0a
0033 #define STA350_AUTO1    0x0b
0034 #define STA350_AUTO2    0x0c
0035 #define STA350_AUTO3    0x0d
0036 #define STA350_C1CFG    0x0e
0037 #define STA350_C2CFG    0x0f
0038 #define STA350_C3CFG    0x10
0039 #define STA350_TONE     0x11
0040 #define STA350_L1AR     0x12
0041 #define STA350_L1ATRT   0x13
0042 #define STA350_L2AR     0x14
0043 #define STA350_L2ATRT   0x15
0044 #define STA350_CFADDR2  0x16
0045 #define STA350_B1CF1    0x17
0046 #define STA350_B1CF2    0x18
0047 #define STA350_B1CF3    0x19
0048 #define STA350_B2CF1    0x1a
0049 #define STA350_B2CF2    0x1b
0050 #define STA350_B2CF3    0x1c
0051 #define STA350_A1CF1    0x1d
0052 #define STA350_A1CF2    0x1e
0053 #define STA350_A1CF3    0x1f
0054 #define STA350_A2CF1    0x20
0055 #define STA350_A2CF2    0x21
0056 #define STA350_A2CF3    0x22
0057 #define STA350_B0CF1    0x23
0058 #define STA350_B0CF2    0x24
0059 #define STA350_B0CF3    0x25
0060 #define STA350_CFUD     0x26
0061 #define STA350_MPCC1    0x27
0062 #define STA350_MPCC2    0x28
0063 #define STA350_DCC1     0x29
0064 #define STA350_DCC2     0x2a
0065 #define STA350_FDRC1    0x2b
0066 #define STA350_FDRC2    0x2c
0067 #define STA350_STATUS   0x2d
0068 /* reserved: 0x2d - 0x30 */
0069 #define STA350_EQCFG    0x31
0070 #define STA350_EATH1    0x32
0071 #define STA350_ERTH1    0x33
0072 #define STA350_EATH2    0x34
0073 #define STA350_ERTH2    0x35
0074 #define STA350_CONFX    0x36
0075 #define STA350_SVCA     0x37
0076 #define STA350_SVCB     0x38
0077 #define STA350_RMS0A    0x39
0078 #define STA350_RMS0B    0x3a
0079 #define STA350_RMS0C    0x3b
0080 #define STA350_RMS1A    0x3c
0081 #define STA350_RMS1B    0x3d
0082 #define STA350_RMS1C    0x3e
0083 #define STA350_EVOLRES  0x3f
0084 /* reserved: 0x40 - 0x47 */
0085 #define STA350_NSHAPE   0x48
0086 #define STA350_CTXB4B1  0x49
0087 #define STA350_CTXB7B5  0x4a
0088 #define STA350_MISC1    0x4b
0089 #define STA350_MISC2    0x4c
0090 
0091 /* 0x00 CONFA */
0092 #define STA350_CONFA_MCS_MASK   0x03
0093 #define STA350_CONFA_MCS_SHIFT  0
0094 #define STA350_CONFA_IR_MASK    0x18
0095 #define STA350_CONFA_IR_SHIFT   3
0096 #define STA350_CONFA_TWRB   BIT(5)
0097 #define STA350_CONFA_TWAB   BIT(6)
0098 #define STA350_CONFA_FDRB   BIT(7)
0099 
0100 /* 0x01 CONFB */
0101 #define STA350_CONFB_SAI_MASK   0x0f
0102 #define STA350_CONFB_SAI_SHIFT  0
0103 #define STA350_CONFB_SAIFB  BIT(4)
0104 #define STA350_CONFB_DSCKE  BIT(5)
0105 #define STA350_CONFB_C1IM   BIT(6)
0106 #define STA350_CONFB_C2IM   BIT(7)
0107 
0108 /* 0x02 CONFC */
0109 #define STA350_CONFC_OM_MASK    0x03
0110 #define STA350_CONFC_OM_SHIFT   0
0111 #define STA350_CONFC_CSZ_MASK   0x3c
0112 #define STA350_CONFC_CSZ_SHIFT  2
0113 #define STA350_CONFC_OCRB   BIT(7)
0114 
0115 /* 0x03 CONFD */
0116 #define STA350_CONFD_HPB_SHIFT  0
0117 #define STA350_CONFD_DEMP_SHIFT 1
0118 #define STA350_CONFD_DSPB_SHIFT 2
0119 #define STA350_CONFD_PSL_SHIFT  3
0120 #define STA350_CONFD_BQL_SHIFT  4
0121 #define STA350_CONFD_DRC_SHIFT  5
0122 #define STA350_CONFD_ZDE_SHIFT  6
0123 #define STA350_CONFD_SME_SHIFT  7
0124 
0125 /* 0x04 CONFE */
0126 #define STA350_CONFE_MPCV   BIT(0)
0127 #define STA350_CONFE_MPCV_SHIFT 0
0128 #define STA350_CONFE_MPC    BIT(1)
0129 #define STA350_CONFE_MPC_SHIFT  1
0130 #define STA350_CONFE_NSBW   BIT(2)
0131 #define STA350_CONFE_NSBW_SHIFT 2
0132 #define STA350_CONFE_AME    BIT(3)
0133 #define STA350_CONFE_AME_SHIFT  3
0134 #define STA350_CONFE_PWMS   BIT(4)
0135 #define STA350_CONFE_PWMS_SHIFT 4
0136 #define STA350_CONFE_DCCV   BIT(5)
0137 #define STA350_CONFE_DCCV_SHIFT 5
0138 #define STA350_CONFE_ZCE    BIT(6)
0139 #define STA350_CONFE_ZCE_SHIFT  6
0140 #define STA350_CONFE_SVE    BIT(7)
0141 #define STA350_CONFE_SVE_SHIFT  7
0142 
0143 /* 0x05 CONFF */
0144 #define STA350_CONFF_OCFG_MASK  0x03
0145 #define STA350_CONFF_OCFG_SHIFT 0
0146 #define STA350_CONFF_IDE    BIT(2)
0147 #define STA350_CONFF_BCLE   BIT(3)
0148 #define STA350_CONFF_LDTE   BIT(4)
0149 #define STA350_CONFF_ECLE   BIT(5)
0150 #define STA350_CONFF_PWDN   BIT(6)
0151 #define STA350_CONFF_EAPD   BIT(7)
0152 
0153 /* 0x06 MMUTE */
0154 #define STA350_MMUTE_MMUTE      0x01
0155 #define STA350_MMUTE_MMUTE_SHIFT    0
0156 #define STA350_MMUTE_C1M        0x02
0157 #define STA350_MMUTE_C1M_SHIFT      1
0158 #define STA350_MMUTE_C2M        0x04
0159 #define STA350_MMUTE_C2M_SHIFT      2
0160 #define STA350_MMUTE_C3M        0x08
0161 #define STA350_MMUTE_C3M_SHIFT      3
0162 #define STA350_MMUTE_LOC_MASK       0xC0
0163 #define STA350_MMUTE_LOC_SHIFT      6
0164 
0165 /* 0x0b AUTO1 */
0166 #define STA350_AUTO1_AMGC_MASK  0x30
0167 #define STA350_AUTO1_AMGC_SHIFT 4
0168 
0169 /* 0x0c AUTO2 */
0170 #define STA350_AUTO2_AMAME  0x01
0171 #define STA350_AUTO2_AMAM_MASK  0x0e
0172 #define STA350_AUTO2_AMAM_SHIFT 1
0173 #define STA350_AUTO2_XO_MASK    0xf0
0174 #define STA350_AUTO2_XO_SHIFT   4
0175 
0176 /* 0x0d AUTO3 */
0177 #define STA350_AUTO3_PEQ_MASK   0x1f
0178 #define STA350_AUTO3_PEQ_SHIFT  0
0179 
0180 /* 0x0e 0x0f 0x10 CxCFG */
0181 #define STA350_CxCFG_TCB_SHIFT  0
0182 #define STA350_CxCFG_EQBP_SHIFT 1
0183 #define STA350_CxCFG_VBP_SHIFT  2
0184 #define STA350_CxCFG_BO_SHIFT   3
0185 #define STA350_CxCFG_LS_SHIFT   4
0186 #define STA350_CxCFG_OM_MASK    0xc0
0187 #define STA350_CxCFG_OM_SHIFT   6
0188 
0189 /* 0x11 TONE */
0190 #define STA350_TONE_BTC_SHIFT   0
0191 #define STA350_TONE_TTC_SHIFT   4
0192 
0193 /* 0x12 0x13 0x14 0x15 limiter attack/release */
0194 #define STA350_LxA_SHIFT    0
0195 #define STA350_LxR_SHIFT    4
0196 
0197 /* 0x26 CFUD */
0198 #define STA350_CFUD_W1      0x01
0199 #define STA350_CFUD_WA      0x02
0200 #define STA350_CFUD_R1      0x04
0201 #define STA350_CFUD_RA      0x08
0202 
0203 
0204 /* biquad filter coefficient table offsets */
0205 #define STA350_C1_BQ_BASE   0
0206 #define STA350_C2_BQ_BASE   20
0207 #define STA350_CH_BQ_NUM    4
0208 #define STA350_BQ_NUM_COEF  5
0209 #define STA350_XO_HP_BQ_BASE    40
0210 #define STA350_XO_LP_BQ_BASE    45
0211 #define STA350_C1_PRESCALE  50
0212 #define STA350_C2_PRESCALE  51
0213 #define STA350_C1_POSTSCALE 52
0214 #define STA350_C2_POSTSCALE 53
0215 #define STA350_C3_POSTSCALE 54
0216 #define STA350_TW_POSTSCALE 55
0217 #define STA350_C1_MIX1      56
0218 #define STA350_C1_MIX2      57
0219 #define STA350_C2_MIX1      58
0220 #define STA350_C2_MIX2      59
0221 #define STA350_C3_MIX1      60
0222 #define STA350_C3_MIX2      61
0223 
0224 /* miscellaneous register 1 */
0225 #define STA350_MISC1_CPWMEN BIT(2)
0226 #define STA350_MISC1_BRIDGOFF   BIT(5)
0227 #define STA350_MISC1_NSHHPEN    BIT(6)
0228 #define STA350_MISC1_RPDNEN BIT(7)
0229 
0230 /* miscellaneous register 2 */
0231 #define STA350_MISC2_PNDLSL_MASK    0x1c
0232 #define STA350_MISC2_PNDLSL_SHIFT   2
0233 
0234 #endif /* _ASOC_STA_350_H */