linux/sound/soc/codecs/wm8741.h
<<
>>
Prefs
   1/*
   2 * wm8741.h  --  WM8423 ASoC driver
   3 *
   4 * Copyright 2010 Wolfson Microelectronics, plc
   5 *
   6 * Author: Ian Lartey <ian@opensource.wolfsonmicro.com>
   7 *
   8 * Based on wm8753.h
   9 *
  10 * This program is free software; you can redistribute it and/or modify
  11 * it under the terms of the GNU General Public License version 2 as
  12 * published by the Free Software Foundation.
  13 */
  14
  15#ifndef _WM8741_H
  16#define _WM8741_H
  17
  18/*
  19 * Register values.
  20 */
  21#define WM8741_DACLLSB_ATTENUATION              0x00
  22#define WM8741_DACLMSB_ATTENUATION              0x01
  23#define WM8741_DACRLSB_ATTENUATION              0x02
  24#define WM8741_DACRMSB_ATTENUATION              0x03
  25#define WM8741_VOLUME_CONTROL                   0x04
  26#define WM8741_FORMAT_CONTROL                   0x05
  27#define WM8741_FILTER_CONTROL                   0x06
  28#define WM8741_MODE_CONTROL_1                   0x07
  29#define WM8741_MODE_CONTROL_2                   0x08
  30#define WM8741_RESET                            0x09
  31#define WM8741_ADDITIONAL_CONTROL_1             0x20
  32
  33#define WM8741_REGISTER_COUNT                   11
  34#define WM8741_MAX_REGISTER                     0x20
  35
  36/*
  37 * Field Definitions.
  38 */
  39
  40/*
  41 * R0 (0x00) - DACLLSB_ATTENUATION
  42 */
  43#define WM8741_UPDATELL                         0x0020  /* UPDATELL */
  44#define WM8741_UPDATELL_MASK                    0x0020  /* UPDATELL */
  45#define WM8741_UPDATELL_SHIFT                        5  /* UPDATELL */
  46#define WM8741_UPDATELL_WIDTH                        1  /* UPDATELL */
  47#define WM8741_LAT_4_0_MASK                     0x001F  /* LAT[4:0] - [4:0] */
  48#define WM8741_LAT_4_0_SHIFT                         0  /* LAT[4:0] - [4:0] */
  49#define WM8741_LAT_4_0_WIDTH                         5  /* LAT[4:0] - [4:0] */
  50
  51/*
  52 * R1 (0x01) - DACLMSB_ATTENUATION
  53 */
  54#define WM8741_UPDATELM                         0x0020  /* UPDATELM */
  55#define WM8741_UPDATELM_MASK                    0x0020  /* UPDATELM */
  56#define WM8741_UPDATELM_SHIFT                        5  /* UPDATELM */
  57#define WM8741_UPDATELM_WIDTH                        1  /* UPDATELM */
  58#define WM8741_LAT_9_5_0_MASK                   0x001F  /* LAT[9:5] - [4:0] */
  59#define WM8741_LAT_9_5_0_SHIFT                       0  /* LAT[9:5] - [4:0] */
  60#define WM8741_LAT_9_5_0_WIDTH                       5  /* LAT[9:5] - [4:0] */
  61
  62/*
  63 * R2 (0x02) - DACRLSB_ATTENUATION
  64 */
  65#define WM8741_UPDATERL                         0x0020  /* UPDATERL */
  66#define WM8741_UPDATERL_MASK                    0x0020  /* UPDATERL */
  67#define WM8741_UPDATERL_SHIFT                        5  /* UPDATERL */
  68#define WM8741_UPDATERL_WIDTH                        1  /* UPDATERL */
  69#define WM8741_RAT_4_0_MASK                     0x001F  /* RAT[4:0] - [4:0] */
  70#define WM8741_RAT_4_0_SHIFT                         0  /* RAT[4:0] - [4:0] */
  71#define WM8741_RAT_4_0_WIDTH                         5  /* RAT[4:0] - [4:0] */
  72
  73/*
  74 * R3 (0x03) - DACRMSB_ATTENUATION
  75 */
  76#define WM8741_UPDATERM                         0x0020  /* UPDATERM */
  77#define WM8741_UPDATERM_MASK                    0x0020  /* UPDATERM */
  78#define WM8741_UPDATERM_SHIFT                        5  /* UPDATERM */
  79#define WM8741_UPDATERM_WIDTH                        1  /* UPDATERM */
  80#define WM8741_RAT_9_5_0_MASK                   0x001F  /* RAT[9:5] - [4:0] */
  81#define WM8741_RAT_9_5_0_SHIFT                       0  /* RAT[9:5] - [4:0] */
  82#define WM8741_RAT_9_5_0_WIDTH                       5  /* RAT[9:5] - [4:0] */
  83
  84/*
  85 * R4 (0x04) - VOLUME_CONTROL
  86 */
  87#define WM8741_AMUTE                            0x0080  /* AMUTE */
  88#define WM8741_AMUTE_MASK                       0x0080  /* AMUTE */
  89#define WM8741_AMUTE_SHIFT                           7  /* AMUTE */
  90#define WM8741_AMUTE_WIDTH                           1  /* AMUTE */
  91#define WM8741_ZFLAG_MASK                       0x0060  /* ZFLAG - [6:5] */
  92#define WM8741_ZFLAG_SHIFT                           5  /* ZFLAG - [6:5] */
  93#define WM8741_ZFLAG_WIDTH                           2  /* ZFLAG - [6:5] */
  94#define WM8741_IZD                              0x0010  /* IZD */
  95#define WM8741_IZD_MASK                         0x0010  /* IZD */
  96#define WM8741_IZD_SHIFT                             4  /* IZD */
  97#define WM8741_IZD_WIDTH                             1  /* IZD */
  98#define WM8741_SOFT                             0x0008  /* SOFT MUTE */
  99#define WM8741_SOFT_MASK                        0x0008  /* SOFT MUTE */
 100#define WM8741_SOFT_SHIFT                            3  /* SOFT MUTE */
 101#define WM8741_SOFT_WIDTH                            1  /* SOFT MUTE */
 102#define WM8741_ATC                              0x0004  /* ATC */
 103#define WM8741_ATC_MASK                         0x0004  /* ATC */
 104#define WM8741_ATC_SHIFT                             2  /* ATC */
 105#define WM8741_ATC_WIDTH                             1  /* ATC */
 106#define WM8741_ATT2DB                           0x0002  /* ATT2DB */
 107#define WM8741_ATT2DB_MASK                      0x0002  /* ATT2DB */
 108#define WM8741_ATT2DB_SHIFT                          1  /* ATT2DB */
 109#define WM8741_ATT2DB_WIDTH                          1  /* ATT2DB */
 110#define WM8741_VOL_RAMP                         0x0001  /* VOL_RAMP */
 111#define WM8741_VOL_RAMP_MASK                    0x0001  /* VOL_RAMP */
 112#define WM8741_VOL_RAMP_SHIFT                        0  /* VOL_RAMP */
 113#define WM8741_VOL_RAMP_WIDTH                        1  /* VOL_RAMP */
 114
 115/*
 116 * R5 (0x05) - FORMAT_CONTROL
 117 */
 118#define WM8741_PWDN                             0x0080  /* PWDN */
 119#define WM8741_PWDN_MASK                        0x0080  /* PWDN */
 120#define WM8741_PWDN_SHIFT                            7  /* PWDN */
 121#define WM8741_PWDN_WIDTH                            1  /* PWDN */
 122#define WM8741_REV                              0x0040  /* REV */
 123#define WM8741_REV_MASK                         0x0040  /* REV */
 124#define WM8741_REV_SHIFT                             6  /* REV */
 125#define WM8741_REV_WIDTH                             1  /* REV */
 126#define WM8741_BCP                              0x0020  /* BCP */
 127#define WM8741_BCP_MASK                         0x0020  /* BCP */
 128#define WM8741_BCP_SHIFT                             5  /* BCP */
 129#define WM8741_BCP_WIDTH                             1  /* BCP */
 130#define WM8741_LRP                              0x0010  /* LRP */
 131#define WM8741_LRP_MASK                         0x0010  /* LRP */
 132#define WM8741_LRP_SHIFT                             4  /* LRP */
 133#define WM8741_LRP_WIDTH                             1  /* LRP */
 134#define WM8741_FMT_MASK                         0x000C  /* FMT - [3:2] */
 135#define WM8741_FMT_SHIFT                             2  /* FMT - [3:2] */
 136#define WM8741_FMT_WIDTH                             2  /* FMT - [3:2] */
 137#define WM8741_IWL_MASK                         0x0003  /* IWL - [1:0] */
 138#define WM8741_IWL_SHIFT                             0  /* IWL - [1:0] */
 139#define WM8741_IWL_WIDTH                             2  /* IWL - [1:0] */
 140
 141/*
 142 * R6 (0x06) - FILTER_CONTROL
 143 */
 144#define WM8741_ZFLAG_HI                         0x0080  /* ZFLAG_HI */
 145#define WM8741_ZFLAG_HI_MASK                    0x0080  /* ZFLAG_HI */
 146#define WM8741_ZFLAG_HI_SHIFT                        7  /* ZFLAG_HI */
 147#define WM8741_ZFLAG_HI_WIDTH                        1  /* ZFLAG_HI */
 148#define WM8741_DEEMPH_MASK                      0x0060  /* DEEMPH - [6:5] */
 149#define WM8741_DEEMPH_SHIFT                          5  /* DEEMPH - [6:5] */
 150#define WM8741_DEEMPH_WIDTH                          2  /* DEEMPH - [6:5] */
 151#define WM8741_DSDFILT_MASK                     0x0018  /* DSDFILT - [4:3] */
 152#define WM8741_DSDFILT_SHIFT                         3  /* DSDFILT - [4:3] */
 153#define WM8741_DSDFILT_WIDTH                         2  /* DSDFILT - [4:3] */
 154#define WM8741_FIRSEL_MASK                      0x0007  /* FIRSEL - [2:0] */
 155#define WM8741_FIRSEL_SHIFT                          0  /* FIRSEL - [2:0] */
 156#define WM8741_FIRSEL_WIDTH                          3  /* FIRSEL - [2:0] */
 157
 158/*
 159 * R7 (0x07) - MODE_CONTROL_1
 160 */
 161#define WM8741_MODE8X                           0x0080  /* MODE8X */
 162#define WM8741_MODE8X_MASK                      0x0080  /* MODE8X */
 163#define WM8741_MODE8X_SHIFT                          7  /* MODE8X */
 164#define WM8741_MODE8X_WIDTH                          1  /* MODE8X */
 165#define WM8741_OSR_MASK                         0x0060  /* OSR - [6:5] */
 166#define WM8741_OSR_SHIFT                             5  /* OSR - [6:5] */
 167#define WM8741_OSR_WIDTH                             2  /* OSR - [6:5] */
 168#define WM8741_SR_MASK                          0x001C  /* SR - [4:2] */
 169#define WM8741_SR_SHIFT                              2  /* SR - [4:2] */
 170#define WM8741_SR_WIDTH                              3  /* SR - [4:2] */
 171#define WM8741_MODESEL_MASK                     0x0003  /* MODESEL - [1:0] */
 172#define WM8741_MODESEL_SHIFT                         0  /* MODESEL - [1:0] */
 173#define WM8741_MODESEL_WIDTH                         2  /* MODESEL - [1:0] */
 174
 175/*
 176 * R8 (0x08) - MODE_CONTROL_2
 177 */
 178#define WM8741_DSD_GAIN                         0x0040  /* DSD_GAIN */
 179#define WM8741_DSD_GAIN_MASK                    0x0040  /* DSD_GAIN */
 180#define WM8741_DSD_GAIN_SHIFT                        6  /* DSD_GAIN */
 181#define WM8741_DSD_GAIN_WIDTH                        1  /* DSD_GAIN */
 182#define WM8741_SDOUT                            0x0020  /* SDOUT */
 183#define WM8741_SDOUT_MASK                       0x0020  /* SDOUT */
 184#define WM8741_SDOUT_SHIFT                           5  /* SDOUT */
 185#define WM8741_SDOUT_WIDTH                           1  /* SDOUT */
 186#define WM8741_DOUT                             0x0010  /* DOUT */
 187#define WM8741_DOUT_MASK                        0x0010  /* DOUT */
 188#define WM8741_DOUT_SHIFT                            4  /* DOUT */
 189#define WM8741_DOUT_WIDTH                            1  /* DOUT */
 190#define WM8741_DIFF_MASK                        0x000C  /* DIFF - [3:2] */
 191#define WM8741_DIFF_SHIFT                            2  /* DIFF - [3:2] */
 192#define WM8741_DIFF_WIDTH                            2  /* DIFF - [3:2] */
 193#define WM8741_DITHER_MASK                      0x0003  /* DITHER - [1:0] */
 194#define WM8741_DITHER_SHIFT                          0  /* DITHER - [1:0] */
 195#define WM8741_DITHER_WIDTH                          2  /* DITHER - [1:0] */
 196
 197/*
 198 * R32 (0x20) - ADDITONAL_CONTROL_1
 199 */
 200#define WM8741_DSD_LEVEL                        0x0002  /* DSD_LEVEL */
 201#define WM8741_DSD_LEVEL_MASK                   0x0002  /* DSD_LEVEL */
 202#define WM8741_DSD_LEVEL_SHIFT                       1  /* DSD_LEVEL */
 203#define WM8741_DSD_LEVEL_WIDTH                       1  /* DSD_LEVEL */
 204#define WM8741_DSD_NO_NOTCH                     0x0001  /* DSD_NO_NOTCH */
 205#define WM8741_DSD_NO_NOTCH_MASK                0x0001  /* DSD_NO_NOTCH */
 206#define WM8741_DSD_NO_NOTCH_SHIFT                    0  /* DSD_NO_NOTCH */
 207#define WM8741_DSD_NO_NOTCH_WIDTH                    1  /* DSD_NO_NOTCH */
 208
 209#define  WM8741_SYSCLK 0
 210
 211#endif
 212