Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * wm8741.h  --  WM8423 ASoC driver
0004  *
0005  * Copyright 2010 Wolfson Microelectronics, plc
0006  *
0007  * Author: Ian Lartey <ian@opensource.wolfsonmicro.com>
0008  *
0009  * Based on wm8753.h
0010  */
0011 
0012 #ifndef _WM8741_H
0013 #define _WM8741_H
0014 
0015 /*
0016  * Register values.
0017  */
0018 #define WM8741_DACLLSB_ATTENUATION              0x00
0019 #define WM8741_DACLMSB_ATTENUATION              0x01
0020 #define WM8741_DACRLSB_ATTENUATION              0x02
0021 #define WM8741_DACRMSB_ATTENUATION              0x03
0022 #define WM8741_VOLUME_CONTROL                   0x04
0023 #define WM8741_FORMAT_CONTROL                   0x05
0024 #define WM8741_FILTER_CONTROL                   0x06
0025 #define WM8741_MODE_CONTROL_1                   0x07
0026 #define WM8741_MODE_CONTROL_2                   0x08
0027 #define WM8741_RESET                            0x09
0028 #define WM8741_ADDITIONAL_CONTROL_1             0x20
0029 
0030 #define WM8741_REGISTER_COUNT                   11
0031 #define WM8741_MAX_REGISTER                     0x20
0032 
0033 /*
0034  * Field Definitions.
0035  */
0036 
0037 /*
0038  * R0 (0x00) - DACLLSB_ATTENUATION
0039  */
0040 #define WM8741_UPDATELL                         0x0020  /* UPDATELL */
0041 #define WM8741_UPDATELL_MASK                    0x0020  /* UPDATELL */
0042 #define WM8741_UPDATELL_SHIFT                        5  /* UPDATELL */
0043 #define WM8741_UPDATELL_WIDTH                        1  /* UPDATELL */
0044 #define WM8741_LAT_4_0_MASK                     0x001F  /* LAT[4:0] - [4:0] */
0045 #define WM8741_LAT_4_0_SHIFT                         0  /* LAT[4:0] - [4:0] */
0046 #define WM8741_LAT_4_0_WIDTH                         5  /* LAT[4:0] - [4:0] */
0047 
0048 /*
0049  * R1 (0x01) - DACLMSB_ATTENUATION
0050  */
0051 #define WM8741_UPDATELM                         0x0020  /* UPDATELM */
0052 #define WM8741_UPDATELM_MASK                    0x0020  /* UPDATELM */
0053 #define WM8741_UPDATELM_SHIFT                        5  /* UPDATELM */
0054 #define WM8741_UPDATELM_WIDTH                        1  /* UPDATELM */
0055 #define WM8741_LAT_9_5_0_MASK                   0x001F  /* LAT[9:5] - [4:0] */
0056 #define WM8741_LAT_9_5_0_SHIFT                       0  /* LAT[9:5] - [4:0] */
0057 #define WM8741_LAT_9_5_0_WIDTH                       5  /* LAT[9:5] - [4:0] */
0058 
0059 /*
0060  * R2 (0x02) - DACRLSB_ATTENUATION
0061  */
0062 #define WM8741_UPDATERL                         0x0020  /* UPDATERL */
0063 #define WM8741_UPDATERL_MASK                    0x0020  /* UPDATERL */
0064 #define WM8741_UPDATERL_SHIFT                        5  /* UPDATERL */
0065 #define WM8741_UPDATERL_WIDTH                        1  /* UPDATERL */
0066 #define WM8741_RAT_4_0_MASK                     0x001F  /* RAT[4:0] - [4:0] */
0067 #define WM8741_RAT_4_0_SHIFT                         0  /* RAT[4:0] - [4:0] */
0068 #define WM8741_RAT_4_0_WIDTH                         5  /* RAT[4:0] - [4:0] */
0069 
0070 /*
0071  * R3 (0x03) - DACRMSB_ATTENUATION
0072  */
0073 #define WM8741_UPDATERM                         0x0020  /* UPDATERM */
0074 #define WM8741_UPDATERM_MASK                    0x0020  /* UPDATERM */
0075 #define WM8741_UPDATERM_SHIFT                        5  /* UPDATERM */
0076 #define WM8741_UPDATERM_WIDTH                        1  /* UPDATERM */
0077 #define WM8741_RAT_9_5_0_MASK                   0x001F  /* RAT[9:5] - [4:0] */
0078 #define WM8741_RAT_9_5_0_SHIFT                       0  /* RAT[9:5] - [4:0] */
0079 #define WM8741_RAT_9_5_0_WIDTH                       5  /* RAT[9:5] - [4:0] */
0080 
0081 /*
0082  * R4 (0x04) - VOLUME_CONTROL
0083  */
0084 #define WM8741_AMUTE                            0x0080  /* AMUTE */
0085 #define WM8741_AMUTE_MASK                       0x0080  /* AMUTE */
0086 #define WM8741_AMUTE_SHIFT                           7  /* AMUTE */
0087 #define WM8741_AMUTE_WIDTH                           1  /* AMUTE */
0088 #define WM8741_ZFLAG_MASK                       0x0060  /* ZFLAG - [6:5] */
0089 #define WM8741_ZFLAG_SHIFT                           5  /* ZFLAG - [6:5] */
0090 #define WM8741_ZFLAG_WIDTH                           2  /* ZFLAG - [6:5] */
0091 #define WM8741_IZD                              0x0010  /* IZD */
0092 #define WM8741_IZD_MASK                         0x0010  /* IZD */
0093 #define WM8741_IZD_SHIFT                             4  /* IZD */
0094 #define WM8741_IZD_WIDTH                             1  /* IZD */
0095 #define WM8741_SOFT                             0x0008  /* SOFT MUTE */
0096 #define WM8741_SOFT_MASK                        0x0008  /* SOFT MUTE */
0097 #define WM8741_SOFT_SHIFT                            3  /* SOFT MUTE */
0098 #define WM8741_SOFT_WIDTH                            1  /* SOFT MUTE */
0099 #define WM8741_ATC                              0x0004  /* ATC */
0100 #define WM8741_ATC_MASK                         0x0004  /* ATC */
0101 #define WM8741_ATC_SHIFT                             2  /* ATC */
0102 #define WM8741_ATC_WIDTH                             1  /* ATC */
0103 #define WM8741_ATT2DB                           0x0002  /* ATT2DB */
0104 #define WM8741_ATT2DB_MASK                      0x0002  /* ATT2DB */
0105 #define WM8741_ATT2DB_SHIFT                          1  /* ATT2DB */
0106 #define WM8741_ATT2DB_WIDTH                          1  /* ATT2DB */
0107 #define WM8741_VOL_RAMP                         0x0001  /* VOL_RAMP */
0108 #define WM8741_VOL_RAMP_MASK                    0x0001  /* VOL_RAMP */
0109 #define WM8741_VOL_RAMP_SHIFT                        0  /* VOL_RAMP */
0110 #define WM8741_VOL_RAMP_WIDTH                        1  /* VOL_RAMP */
0111 
0112 /*
0113  * R5 (0x05) - FORMAT_CONTROL
0114  */
0115 #define WM8741_PWDN                             0x0080  /* PWDN */
0116 #define WM8741_PWDN_MASK                        0x0080  /* PWDN */
0117 #define WM8741_PWDN_SHIFT                            7  /* PWDN */
0118 #define WM8741_PWDN_WIDTH                            1  /* PWDN */
0119 #define WM8741_REV                              0x0040  /* REV */
0120 #define WM8741_REV_MASK                         0x0040  /* REV */
0121 #define WM8741_REV_SHIFT                             6  /* REV */
0122 #define WM8741_REV_WIDTH                             1  /* REV */
0123 #define WM8741_BCP                              0x0020  /* BCP */
0124 #define WM8741_BCP_MASK                         0x0020  /* BCP */
0125 #define WM8741_BCP_SHIFT                             5  /* BCP */
0126 #define WM8741_BCP_WIDTH                             1  /* BCP */
0127 #define WM8741_LRP                              0x0010  /* LRP */
0128 #define WM8741_LRP_MASK                         0x0010  /* LRP */
0129 #define WM8741_LRP_SHIFT                             4  /* LRP */
0130 #define WM8741_LRP_WIDTH                             1  /* LRP */
0131 #define WM8741_FMT_MASK                         0x000C  /* FMT - [3:2] */
0132 #define WM8741_FMT_SHIFT                             2  /* FMT - [3:2] */
0133 #define WM8741_FMT_WIDTH                             2  /* FMT - [3:2] */
0134 #define WM8741_IWL_MASK                         0x0003  /* IWL - [1:0] */
0135 #define WM8741_IWL_SHIFT                             0  /* IWL - [1:0] */
0136 #define WM8741_IWL_WIDTH                             2  /* IWL - [1:0] */
0137 
0138 /*
0139  * R6 (0x06) - FILTER_CONTROL
0140  */
0141 #define WM8741_ZFLAG_HI                         0x0080  /* ZFLAG_HI */
0142 #define WM8741_ZFLAG_HI_MASK                    0x0080  /* ZFLAG_HI */
0143 #define WM8741_ZFLAG_HI_SHIFT                        7  /* ZFLAG_HI */
0144 #define WM8741_ZFLAG_HI_WIDTH                        1  /* ZFLAG_HI */
0145 #define WM8741_DEEMPH_MASK                      0x0060  /* DEEMPH - [6:5] */
0146 #define WM8741_DEEMPH_SHIFT                          5  /* DEEMPH - [6:5] */
0147 #define WM8741_DEEMPH_WIDTH                          2  /* DEEMPH - [6:5] */
0148 #define WM8741_DSDFILT_MASK                     0x0018  /* DSDFILT - [4:3] */
0149 #define WM8741_DSDFILT_SHIFT                         3  /* DSDFILT - [4:3] */
0150 #define WM8741_DSDFILT_WIDTH                         2  /* DSDFILT - [4:3] */
0151 #define WM8741_FIRSEL_MASK                      0x0007  /* FIRSEL - [2:0] */
0152 #define WM8741_FIRSEL_SHIFT                          0  /* FIRSEL - [2:0] */
0153 #define WM8741_FIRSEL_WIDTH                          3  /* FIRSEL - [2:0] */
0154 
0155 /*
0156  * R7 (0x07) - MODE_CONTROL_1
0157  */
0158 #define WM8741_MODE8X                           0x0080  /* MODE8X */
0159 #define WM8741_MODE8X_MASK                      0x0080  /* MODE8X */
0160 #define WM8741_MODE8X_SHIFT                          7  /* MODE8X */
0161 #define WM8741_MODE8X_WIDTH                          1  /* MODE8X */
0162 #define WM8741_OSR_MASK                         0x0060  /* OSR - [6:5] */
0163 #define WM8741_OSR_SHIFT                             5  /* OSR - [6:5] */
0164 #define WM8741_OSR_WIDTH                             2  /* OSR - [6:5] */
0165 #define WM8741_SR_MASK                          0x001C  /* SR - [4:2] */
0166 #define WM8741_SR_SHIFT                              2  /* SR - [4:2] */
0167 #define WM8741_SR_WIDTH                              3  /* SR - [4:2] */
0168 #define WM8741_MODESEL_MASK                     0x0003  /* MODESEL - [1:0] */
0169 #define WM8741_MODESEL_SHIFT                         0  /* MODESEL - [1:0] */
0170 #define WM8741_MODESEL_WIDTH                         2  /* MODESEL - [1:0] */
0171 
0172 /*
0173  * R8 (0x08) - MODE_CONTROL_2
0174  */
0175 #define WM8741_DSD_GAIN                         0x0040  /* DSD_GAIN */
0176 #define WM8741_DSD_GAIN_MASK                    0x0040  /* DSD_GAIN */
0177 #define WM8741_DSD_GAIN_SHIFT                        6  /* DSD_GAIN */
0178 #define WM8741_DSD_GAIN_WIDTH                        1  /* DSD_GAIN */
0179 #define WM8741_SDOUT                            0x0020  /* SDOUT */
0180 #define WM8741_SDOUT_MASK                       0x0020  /* SDOUT */
0181 #define WM8741_SDOUT_SHIFT                           5  /* SDOUT */
0182 #define WM8741_SDOUT_WIDTH                           1  /* SDOUT */
0183 #define WM8741_DOUT                             0x0010  /* DOUT */
0184 #define WM8741_DOUT_MASK                        0x0010  /* DOUT */
0185 #define WM8741_DOUT_SHIFT                            4  /* DOUT */
0186 #define WM8741_DOUT_WIDTH                            1  /* DOUT */
0187 #define WM8741_DIFF_MASK                        0x000C  /* DIFF - [3:2] */
0188 #define WM8741_DIFF_SHIFT                            2  /* DIFF - [3:2] */
0189 #define WM8741_DIFF_WIDTH                            2  /* DIFF - [3:2] */
0190 #define WM8741_DITHER_MASK                      0x0003  /* DITHER - [1:0] */
0191 #define WM8741_DITHER_SHIFT                          0  /* DITHER - [1:0] */
0192 #define WM8741_DITHER_WIDTH                          2  /* DITHER - [1:0] */
0193 
0194 /* DIFF field values */
0195 #define WM8741_DIFF_MODE_STEREO                      0  /* stereo normal */
0196 #define WM8741_DIFF_MODE_STEREO_REVERSED             2  /* stereo reversed */
0197 #define WM8741_DIFF_MODE_MONO_LEFT                   1  /* mono left */
0198 #define WM8741_DIFF_MODE_MONO_RIGHT                  3  /* mono right */
0199 
0200 /*
0201  * R32 (0x20) - ADDITONAL_CONTROL_1
0202  */
0203 #define WM8741_DSD_LEVEL                        0x0002  /* DSD_LEVEL */
0204 #define WM8741_DSD_LEVEL_MASK                   0x0002  /* DSD_LEVEL */
0205 #define WM8741_DSD_LEVEL_SHIFT                       1  /* DSD_LEVEL */
0206 #define WM8741_DSD_LEVEL_WIDTH                       1  /* DSD_LEVEL */
0207 #define WM8741_DSD_NO_NOTCH                     0x0001  /* DSD_NO_NOTCH */
0208 #define WM8741_DSD_NO_NOTCH_MASK                0x0001  /* DSD_NO_NOTCH */
0209 #define WM8741_DSD_NO_NOTCH_SHIFT                    0  /* DSD_NO_NOTCH */
0210 #define WM8741_DSD_NO_NOTCH_WIDTH                    1  /* DSD_NO_NOTCH */
0211 
0212 #define  WM8741_SYSCLK 0
0213 
0214 struct wm8741_platform_data {
0215     u32 diff_mode;   /* Differential Output Mode */
0216 };
0217 
0218 #endif