Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Codec driver for ST STA32x 2.1-channel high-efficiency digital audio system
0004  *
0005  * Copyright: 2011 Raumfeld GmbH
0006  * Author: Johannes Stezenbach <js@sig21.net>
0007  *
0008  * based on code from:
0009  *  Wolfson Microelectronics PLC.
0010  *  Mark Brown <broonie@opensource.wolfsonmicro.com>
0011  */
0012 #ifndef _ASOC_STA_32X_H
0013 #define _ASOC_STA_32X_H
0014 
0015 /* STA326 register addresses */
0016 
0017 #define STA32X_REGISTER_COUNT   0x2d
0018 #define STA32X_COEF_COUNT 62
0019 
0020 #define STA32X_CONFA    0x00
0021 #define STA32X_CONFB    0x01
0022 #define STA32X_CONFC    0x02
0023 #define STA32X_CONFD    0x03
0024 #define STA32X_CONFE    0x04
0025 #define STA32X_CONFF    0x05
0026 #define STA32X_MMUTE    0x06
0027 #define STA32X_MVOL     0x07
0028 #define STA32X_C1VOL    0x08
0029 #define STA32X_C2VOL    0x09
0030 #define STA32X_C3VOL    0x0a
0031 #define STA32X_AUTO1    0x0b
0032 #define STA32X_AUTO2    0x0c
0033 #define STA32X_AUTO3    0x0d
0034 #define STA32X_C1CFG    0x0e
0035 #define STA32X_C2CFG    0x0f
0036 #define STA32X_C3CFG    0x10
0037 #define STA32X_TONE     0x11
0038 #define STA32X_L1AR     0x12
0039 #define STA32X_L1ATRT   0x13
0040 #define STA32X_L2AR     0x14
0041 #define STA32X_L2ATRT   0x15
0042 #define STA32X_CFADDR2  0x16
0043 #define STA32X_B1CF1    0x17
0044 #define STA32X_B1CF2    0x18
0045 #define STA32X_B1CF3    0x19
0046 #define STA32X_B2CF1    0x1a
0047 #define STA32X_B2CF2    0x1b
0048 #define STA32X_B2CF3    0x1c
0049 #define STA32X_A1CF1    0x1d
0050 #define STA32X_A1CF2    0x1e
0051 #define STA32X_A1CF3    0x1f
0052 #define STA32X_A2CF1    0x20
0053 #define STA32X_A2CF2    0x21
0054 #define STA32X_A2CF3    0x22
0055 #define STA32X_B0CF1    0x23
0056 #define STA32X_B0CF2    0x24
0057 #define STA32X_B0CF3    0x25
0058 #define STA32X_CFUD     0x26
0059 #define STA32X_MPCC1    0x27
0060 #define STA32X_MPCC2    0x28
0061 /* Reserved 0x29 */
0062 /* Reserved 0x2a */
0063 #define STA32X_Reserved 0x2a
0064 #define STA32X_FDRC1    0x2b
0065 #define STA32X_FDRC2    0x2c
0066 /* Reserved 0x2d */
0067 
0068 
0069 /* STA326 register field definitions */
0070 
0071 /* 0x00 CONFA */
0072 #define STA32X_CONFA_MCS_MASK   0x03
0073 #define STA32X_CONFA_MCS_SHIFT  0
0074 #define STA32X_CONFA_IR_MASK    0x18
0075 #define STA32X_CONFA_IR_SHIFT   3
0076 #define STA32X_CONFA_TWRB   0x20
0077 #define STA32X_CONFA_TWAB   0x40
0078 #define STA32X_CONFA_FDRB   0x80
0079 
0080 /* 0x01 CONFB */
0081 #define STA32X_CONFB_SAI_MASK   0x0f
0082 #define STA32X_CONFB_SAI_SHIFT  0
0083 #define STA32X_CONFB_SAIFB  0x10
0084 #define STA32X_CONFB_DSCKE  0x20
0085 #define STA32X_CONFB_C1IM   0x40
0086 #define STA32X_CONFB_C2IM   0x80
0087 
0088 /* 0x02 CONFC */
0089 #define STA32X_CONFC_OM_MASK    0x03
0090 #define STA32X_CONFC_OM_SHIFT   0
0091 #define STA32X_CONFC_CSZ_MASK   0x7c
0092 #define STA32X_CONFC_CSZ_SHIFT  2
0093 
0094 /* 0x03 CONFD */
0095 #define STA32X_CONFD_HPB    0x01
0096 #define STA32X_CONFD_HPB_SHIFT  0
0097 #define STA32X_CONFD_DEMP   0x02
0098 #define STA32X_CONFD_DEMP_SHIFT 1
0099 #define STA32X_CONFD_DSPB   0x04
0100 #define STA32X_CONFD_DSPB_SHIFT 2
0101 #define STA32X_CONFD_PSL    0x08
0102 #define STA32X_CONFD_PSL_SHIFT  3
0103 #define STA32X_CONFD_BQL    0x10
0104 #define STA32X_CONFD_BQL_SHIFT  4
0105 #define STA32X_CONFD_DRC    0x20
0106 #define STA32X_CONFD_DRC_SHIFT  5
0107 #define STA32X_CONFD_ZDE    0x40
0108 #define STA32X_CONFD_ZDE_SHIFT  6
0109 #define STA32X_CONFD_MME    0x80
0110 #define STA32X_CONFD_MME_SHIFT  7
0111 
0112 /* 0x04 CONFE */
0113 #define STA32X_CONFE_MPCV   0x01
0114 #define STA32X_CONFE_MPCV_SHIFT 0
0115 #define STA32X_CONFE_MPC    0x02
0116 #define STA32X_CONFE_MPC_SHIFT  1
0117 #define STA32X_CONFE_AME    0x08
0118 #define STA32X_CONFE_AME_SHIFT  3
0119 #define STA32X_CONFE_PWMS   0x10
0120 #define STA32X_CONFE_PWMS_SHIFT 4
0121 #define STA32X_CONFE_ZCE    0x40
0122 #define STA32X_CONFE_ZCE_SHIFT  6
0123 #define STA32X_CONFE_SVE    0x80
0124 #define STA32X_CONFE_SVE_SHIFT  7
0125 
0126 /* 0x05 CONFF */
0127 #define STA32X_CONFF_OCFG_MASK  0x03
0128 #define STA32X_CONFF_OCFG_SHIFT 0
0129 #define STA32X_CONFF_IDE    0x04
0130 #define STA32X_CONFF_IDE_SHIFT  2
0131 #define STA32X_CONFF_BCLE   0x08
0132 #define STA32X_CONFF_ECLE   0x20
0133 #define STA32X_CONFF_PWDN   0x40
0134 #define STA32X_CONFF_EAPD   0x80
0135 
0136 /* 0x06 MMUTE */
0137 #define STA32X_MMUTE_MMUTE  0x01
0138 
0139 /* 0x0b AUTO1 */
0140 #define STA32X_AUTO1_AMEQ_MASK  0x03
0141 #define STA32X_AUTO1_AMEQ_SHIFT 0
0142 #define STA32X_AUTO1_AMV_MASK   0xc0
0143 #define STA32X_AUTO1_AMV_SHIFT  2
0144 #define STA32X_AUTO1_AMGC_MASK  0x30
0145 #define STA32X_AUTO1_AMGC_SHIFT 4
0146 #define STA32X_AUTO1_AMPS   0x80
0147 
0148 /* 0x0c AUTO2 */
0149 #define STA32X_AUTO2_AMAME  0x01
0150 #define STA32X_AUTO2_AMAM_MASK  0x0e
0151 #define STA32X_AUTO2_AMAM_SHIFT 1
0152 #define STA32X_AUTO2_XO_MASK    0xf0
0153 #define STA32X_AUTO2_XO_SHIFT   4
0154 
0155 /* 0x0d AUTO3 */
0156 #define STA32X_AUTO3_PEQ_MASK   0x1f
0157 #define STA32X_AUTO3_PEQ_SHIFT  0
0158 
0159 /* 0x0e 0x0f 0x10 CxCFG */
0160 #define STA32X_CxCFG_TCB    0x01    /* only C1 and C2 */
0161 #define STA32X_CxCFG_TCB_SHIFT  0
0162 #define STA32X_CxCFG_EQBP   0x02    /* only C1 and C2 */
0163 #define STA32X_CxCFG_EQBP_SHIFT 1
0164 #define STA32X_CxCFG_VBP    0x03
0165 #define STA32X_CxCFG_VBP_SHIFT  2
0166 #define STA32X_CxCFG_BO     0x04
0167 #define STA32X_CxCFG_LS_MASK    0x30
0168 #define STA32X_CxCFG_LS_SHIFT   4
0169 #define STA32X_CxCFG_OM_MASK    0xc0
0170 #define STA32X_CxCFG_OM_SHIFT   6
0171 
0172 /* 0x11 TONE */
0173 #define STA32X_TONE_BTC_SHIFT   0
0174 #define STA32X_TONE_TTC_SHIFT   4
0175 
0176 /* 0x12 0x13 0x14 0x15 limiter attack/release */
0177 #define STA32X_LxA_SHIFT    0
0178 #define STA32X_LxR_SHIFT    4
0179 
0180 /* 0x26 CFUD */
0181 #define STA32X_CFUD_W1      0x01
0182 #define STA32X_CFUD_WA      0x02
0183 #define STA32X_CFUD_R1      0x04
0184 #define STA32X_CFUD_RA      0x08
0185 
0186 
0187 /* biquad filter coefficient table offsets */
0188 #define STA32X_C1_BQ_BASE   0
0189 #define STA32X_C2_BQ_BASE   20
0190 #define STA32X_CH_BQ_NUM    4
0191 #define STA32X_BQ_NUM_COEF  5
0192 #define STA32X_XO_HP_BQ_BASE    40
0193 #define STA32X_XO_LP_BQ_BASE    45
0194 #define STA32X_C1_PRESCALE  50
0195 #define STA32X_C2_PRESCALE  51
0196 #define STA32X_C1_POSTSCALE 52
0197 #define STA32X_C2_POSTSCALE 53
0198 #define STA32X_C3_POSTSCALE 54
0199 #define STA32X_TW_POSTSCALE 55
0200 #define STA32X_C1_MIX1      56
0201 #define STA32X_C1_MIX2      57
0202 #define STA32X_C2_MIX1      58
0203 #define STA32X_C2_MIX2      59
0204 #define STA32X_C3_MIX1      60
0205 #define STA32X_C3_MIX2      61
0206 
0207 #endif /* _ASOC_STA_32X_H */