root/dev/i2c/wm8750reg.h

/* [<][>][^][v][top][bottom][index][help] */
    1 /*      $OpenBSD: wm8750reg.h,v 1.2 2005/12/31 04:31:27 deraadt Exp $   */
    2 
    3 /*
    4  * Copyright (c) 2005 Christopher Pascoe <c.pascoe@itee.uq.edu.au>
    5  *
    6  * Permission to use, copy, modify, and distribute this software for any
    7  * purpose with or without fee is hereby granted, provided that the above
    8  * copyright notice and this permission notice appear in all copies.
    9  *
   10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   17  */
   18 
   19 /*
   20  * Wolfson Microelectronics' WM8750 I2C/I2S audio codec:
   21  * - I2C register definitions.  Used in the Sharp Zaurus SL-C3000.
   22  */
   23 
   24 #define LINVOL_REG 0x00                 /* Left Input volume */
   25 #define  LINVOL_LIVU 0x100
   26 #define  LINVOL_LINMUTE 0x80
   27 #define  LINVOL_LIZC 0x40
   28 #define  LINVOL_LINVOL_MASK 0x3F
   29 #define  LINVOL_GET_LINVOL(x) ((x) & 0x3F)
   30 #define  LINVOL_SET_LINVOL(x) (x)
   31 
   32 #define RINVOL_REG 0x01                 /* Right Input volume */
   33 #define  RINVOL_RIVU 0x100
   34 #define  RINVOL_RINMUTE 0x80
   35 #define  RINVOL_RIZC 0x40
   36 #define  RINVOL_RINVOL_MASK 0x3F
   37 #define  RINVOL_GET_RINVOL(x) ((x) & 0x3F)
   38 #define  RINVOL_SET_RINVOL(x) (x)
   39 
   40 #define LOUT1VOL_REG 0x02               /* LOUT1 volume */
   41 #define  LOUT1VOL_LO1VU 0x100
   42 #define  LOUT1VOL_LO1ZC 0x80
   43 #define  LOUT1VOL_LOUT1VOL_MASK 0x7F
   44 #define  LOUT1VOL_GET_LOUT1VOL(x) ((x) & 0x7F)
   45 #define  LOUT1VOL_SET_LOUT1VOL(x) (x)
   46 
   47 #define ROUT1VOL_REG 0x03               /* ROUT1 volume */
   48 #define  ROUT1VOL_RO1VU 0x100
   49 #define  ROUT1VOL_RO1ZC 0x80
   50 #define  ROUT1VOL_ROUT1VOL_MASK 0x7F
   51 #define  ROUT1VOL_GET_ROUT1VOL(x) ((x) & 0x7F)
   52 #define  ROUT1VOL_SET_ROUT1VOL(x) (x)
   53 
   54 #define ADCDACCTL_REG 0x05              /* ADC & DAC Control */
   55 #define  ADCDACCTL_ADCDIV2 0x100
   56 #define  ADCDACCTL_DACDIV2 0x80
   57 #define  ADCDACCTL_ADCPOL_MASK 0x60
   58 #define  ADCDACCTL_GET_ADCPOL(x) (((x) >> 5) & 0x60)
   59 #define  ADCDACCTL_SET_ADCPOL(x) ((x) << 5)
   60 #define  ADCDACCTL_HPOR 0x10
   61 #define  ADCDACCTL_DACMU 0x8
   62 #define  ADCDACCTL_DEEMPH_MASK 0x6
   63 #define  ADCDACCTL_GET_DEEMPH(x) (((x) >> 1) & 0x6)
   64 #define  ADCDACCTL_SET_DEEMPH(x) ((x) << 1)
   65 #define  ADCDACCTL_ADCHPD 0x1
   66 
   67 #define AUDINT_REG 0x07                 /* Audio Interface */
   68 #define  AUDINT_BCLKINV 0x80
   69 #define  AUDINT_MS 0x40
   70 #define  AUDINT_LRSWAP 0x20
   71 #define  AUDINT_LRP 0x10
   72 #define  AUDINT_WL_MASK 0xC
   73 #define  AUDINT_GET_WL(x) (((x) >> 2) & 0xC)
   74 #define  AUDINT_SET_WL(x) ((x) << 2)
   75 #define  AUDINT_FORMAT_MASK 0x3
   76 #define  AUDINT_GET_FORMAT(x) ((x) & 0x3)
   77 #define  AUDINT_SET_FORMAT(x) (x)
   78 
   79 #define SRATE_REG 0x08                  /* Sample rate */
   80 #define  SRATE_BCM_MASK 0x180
   81 #define  SRATE_GET_BCM(x) (((x) >> 7) & 0x180)
   82 #define  SRATE_SET_BCM(x) ((x) << 7)
   83 #define  SRATE_CLKDIV2 0x40
   84 #define  SRATE_SR_MASK 0x3E
   85 #define  SRATE_GET_SR(x) (((x) >> 1) & 0x3E)
   86 #define  SRATE_SET_SR(x) ((x) << 1)
   87 #define  SRATE_USB 0x1
   88 
   89 #define LDACVOL_REG 0x0A                /* Left DAC volume */
   90 #define  LDACVOL_LDVU 0x100
   91 #define  LDACVOL_LDACVOL_MASK 0xFF
   92 #define  LDACVOL_GET_LDACVOL(x) ((x) & 0xFF)
   93 #define  LDACVOL_SET_LDACVOL(x) (x)
   94 
   95 #define RDACVOL_REG 0x0B                /* Right DAC volume */
   96 #define  RDACVOL_RDVU 0x100
   97 #define  RDACVOL_RDACVOL_MASK 0xFF
   98 #define  RDACVOL_GET_RDACVOL(x) ((x) & 0xFF)
   99 #define  RDACVOL_SET_RDACVOL(x) (x)
  100 
  101 #define BASSCTL_REG 0x0C                /* Bass control */
  102 #define  BASSCTL_BB 0x80
  103 #define  BASSCTL_BC 0x40
  104 #define  BASSCTL_BASS_MASK 0xF
  105 #define  BASSCTL_GET_BASS(x) ((x) & 0xF)
  106 #define  BASSCTL_SET_BASS(x) (x)
  107 
  108 #define TREBCTL_REG 0x0D                /* Treble control */
  109 #define  TREBCTL_TC 0x40
  110 #define  TREBCTL_TRBL_MASK 0xF
  111 #define  TREBCTL_GET_TRBL(x) ((x) & 0xF)
  112 #define  TREBCTL_SET_TRBL(x) (x)
  113 
  114 #define RESET_REG 0x0F                  /* Reset */
  115 
  116 #define C3DCTL_REG 0x10                 /* 3D control */
  117 #define  C3DCTL_MODE3D 0x80
  118 #define  C3DCTL_3DUC 0x40
  119 #define  C3DCTL_3DLC 0x20
  120 #define  C3DCTL_3DDEPTH_MASK 0x1E
  121 #define  C3DCTL_GET_3DDEPTH(x) (((x) >> 1) & 0x1E)
  122 #define  C3DCTL_SET_3DDEPTH(x) ((x) << 1)
  123 #define  C3DCTL_3DEN 0x1
  124 
  125 #define ALC1_REG 0x11                   /* ALC1 */
  126 #define  ALC1_ALCSEL_MASK 0x180
  127 #define  ALC1_GET_ALCSEL(x) (((x) >> 7) & 0x180)
  128 #define  ALC1_SET_ALCSEL(x) ((x) << 7)
  129 #define  ALC1_MAXGAIN_MASK 0x70
  130 #define  ALC1_GET_MAXGAIN(x) (((x) >> 4) & 0x70)
  131 #define  ALC1_SET_MAXGAIN(x) ((x) << 4)
  132 #define  ALC1_ALCL_MASK 0xF
  133 #define  ALC1_GET_ALCL(x) ((x) & 0xF)
  134 #define  ALC1_SET_ALCL(x) (x)
  135 
  136 #define ALC2_REG 0x12                   /* ALC2 */
  137 #define  ALC2_ALCZC 0x80
  138 #define  ALC2_HLD_MASK 0xF
  139 #define  ALC2_GET_HLD(x) ((x) & 0xF)
  140 #define  ALC2_SET_HLD(x) (x)
  141 
  142 #define ALC3_REG 0x13                   /* ALC3 */
  143 #define  ALC3_DCY_MASK 0xF0
  144 #define  ALC3_GET_DCY(x) (((x) >> 4) & 0xF0)
  145 #define  ALC3_SET_DCY(x) ((x) << 4)
  146 #define  ALC3_ATK_MASK 0xF
  147 #define  ALC3_GET_ATK(x) ((x) & 0xF)
  148 #define  ALC3_SET_ATK(x) (x)
  149 
  150 #define NOISEGATE_REG 0x14              /* Noise Gate */
  151 #define  NOISEGATE_NGTH_MASK 0xF8
  152 #define  NOISEGATE_GET_NGTH(x) (((x) >> 3) & 0xF8)
  153 #define  NOISEGATE_SET_NGTH(x) ((x) << 3)
  154 #define  NOISEGATE_NGG_MASK 0x6
  155 #define  NOISEGATE_GET_NGG(x) (((x) >> 1) & 0x6)
  156 #define  NOISEGATE_SET_NGG(x) ((x) << 1)
  157 #define  NOISEGATE_NGAT 0x1
  158 
  159 #define LADCVOL_REG 0x15                /* Left ADC volume */
  160 #define  LADCVOL_LAVU 0x100
  161 #define  LADCVOL_LADCVOL_MASK 0xFF
  162 #define  LADCVOL_GET_LADCVOL(x) ((x) & 0xFF)
  163 #define  LADCVOL_SET_LADCVOL(x) (x)
  164 
  165 #define RADCVOL_REG 0x16                /* Right ADC volume */
  166 #define  RADCVOL_RAVU 0x100
  167 #define  RADCVOL_RADCVOL_MASK 0xFF
  168 #define  RADCVOL_GET_RADCVOL(x) ((x) & 0xFF)
  169 #define  RADCVOL_SET_RADCVOL(x) (x)
  170 
  171 #define ADCTL1_REG 0x17                 /* Additional control(1) */
  172 #define  ADCTL1_TSDEN 0x100
  173 #define  ADCTL1_VSEL_MASK 0xC0
  174 #define  ADCTL1_GET_VSEL(x) (((x) >> 6) & 0xC0)
  175 #define  ADCTL1_SET_VSEL(x) ((x) << 6)
  176 #define  ADCTL1_DMONOMIX_MASK 0x30
  177 #define  ADCTL1_GET_DMONOMIX(x) (((x) >> 4) & 0x30)
  178 #define  ADCTL1_SET_DMONOMIX(x) ((x) << 4)
  179 #define  ADCTL1_DATSEL_MASK 0xC
  180 #define  ADCTL1_GET_DATSEL(x) (((x) >> 2) & 0xC)
  181 #define  ADCTL1_SET_DATSEL(x) ((x) << 2)
  182 #define  ADCTL1_DACINV 0x2
  183 #define  ADCTL1_TOEN 0x1
  184 
  185 #define ADCTL2_REG 0x18                 /* Additional control(2) */
  186 #define  ADCTL2_OUTSW3_MASK 0x180
  187 #define  ADCTL2_GET_OUTSW3(x) (((x) >> 7) & 0x180)
  188 #define  ADCTL2_SET_OUTSW3(x) ((x) << 7)
  189 #define  ADCTL2_HPSWEN 0x40
  190 #define  ADCTL2_HPSWPOL 0x20
  191 #define  ADCTL2_ROUT2INV 0x10
  192 #define  ADCTL2_TRI 0x08
  193 #define  ADCTL2_LRCM 0x04
  194 #define  ADCTL2_ADCOSR 0x02
  195 #define  ADCTL2_DACOSR 0x01
  196 
  197 #define PWRMGMT1_REG 0x19               /* Pwr Mgmt (1) */
  198 #define  PWRMGMT1_VMIDSEL_MASK 0x180
  199 #define  PWRMGMT1_GET_VMIDSEL(x) (((x) >> 7) & 0x180)
  200 #define  PWRMGMT1_SET_VMIDSEL(x) ((x) << 7)
  201 #define  PWRMGMT1_VREF 0x40
  202 #define  PWRMGMT1_AINL 0x20
  203 #define  PWRMGMT1_AINR 0x10
  204 #define  PWRMGMT1_ADCL 0x8
  205 #define  PWRMGMT1_ADCR 0x4
  206 #define  PWRMGMT1_MICB 0x2
  207 #define  PWRMGMT1_DIGENB 0x1
  208 
  209 #define PWRMGMT2_REG 0x1A               /* Pwr Mgmt (2) */
  210 #define  PWRMGMT2_DACL 0x100
  211 #define  PWRMGMT2_DACR 0x80
  212 #define  PWRMGMT2_LOUT1 0x40
  213 #define  PWRMGMT2_ROUT1 0x20
  214 #define  PWRMGMT2_LOUT2 0x10
  215 #define  PWRMGMT2_ROUT2 0x8
  216 #define  PWRMGMT2_MONO 0x4
  217 #define  PWRMGMT2_OUT3 0x2
  218 
  219 #define ADCTL3_REG 0x1B                 /* Additional Control (3) */
  220 #define  ADCTL3_ADCLRM_MASK 0x180
  221 #define  ADCTL3_GET_ADCLRM(x) (((x) >> 7) & 0x180)
  222 #define  ADCTL3_SET_ADCLRM(x) ((x) << 7)
  223 #define  ADCTL3_VROI 0x40
  224 #define  ADCTL3_HPFLREN 0x20
  225 
  226 #define ADCINPMODE_REG 0x1F             /* ADC input mode */
  227 #define  ADCINPMODE_DS 0x100
  228 #define  ADCINPMODE_MONOMIX_MASK 0xC0
  229 #define  ADCINPMODE_GET_MONOMIX(x) (((x) >> 6) & 0xC0)
  230 #define  ADCINPMODE_SET_MONOMIX(x) ((x) << 6)
  231 #define  ADCINPMODE_RDCM 0x20
  232 #define  ADCINPMODE_LDCM 0x10
  233 
  234 #define ADCLSPATH_REG 0x20              /* ADCL signal path */
  235 #define  ADCLSPATH_LINSEL_MASK 0xC0
  236 #define  ADCLSPATH_GET_LINSEL(x) (((x) >> 6) & 0xC0)
  237 #define  ADCLSPATH_SET_LINSEL(x) ((x) << 6)
  238 #define  ADCLSPATH_LMICBOOST_MASK 0x30
  239 #define  ADCLSPATH_GET_LMICBOOST(x) (((x) >> 4) & 0x30)
  240 #define  ADCLSPATH_SET_LMICBOOST(x) ((x) << 4)
  241 
  242 #define ADCRSPATH_REG 0x21              /* ADCR signal path */
  243 #define  ADCRSPATH_RINSEL_MASK 0xC0
  244 #define  ADCRSPATH_GET_RINSEL(x) (((x) >> 6) & 0xC0)
  245 #define  ADCRSPATH_SET_RINSEL(x) ((x) << 6)
  246 #define  ADCRSPATH_RMICBOOST_MASK 0x30
  247 #define  ADCRSPATH_GET_RMICBOOST(x) (((x) >> 4) & 0x30)
  248 #define  ADCRSPATH_SET_RMICBOOST(x) ((x) << 4)
  249 
  250 #define LOUTMIX1_REG 0x22               /* Left out Mix (1) */
  251 #define  LOUTMIX1_LD2LO 0x100
  252 #define  LOUTMIX1_LI2LO 0x80
  253 #define  LOUTMIX1_LI2LOVOL_MASK 0x70
  254 #define  LOUTMIX1_GET_LI2LOVOL(x) (((x) >> 4) & 0x70)
  255 #define  LOUTMIX1_SET_LI2LOVOL(x) ((x) << 4)
  256 #define  LOUTMIX1_LMIXSEL_MASK 0x7
  257 #define  LOUTMIX1_GET_LMIXSEL(x) ((x) & 0x7)
  258 #define  LOUTMIX1_SET_LMIXSEL(x) (x)
  259 
  260 #define LOUTMIX2_REG 0x23               /* Left out Mix (2) */
  261 #define  LOUTMIX2_RD2LO 0x100
  262 #define  LOUTMIX2_RI2LO 0x80
  263 #define  LOUTMIX2_RI2LOVOL_MASK 0x70
  264 #define  LOUTMIX2_GET_RI2LOVOL(x) (((x) >> 4) & 0x70)
  265 #define  LOUTMIX2_SET_RI2LOVOL(x) ((x) << 4)
  266 
  267 #define ROUTMIX1_REG 0x24               /* Right out Mix (1) */
  268 #define  ROUTMIX1_LD2RO 0x100
  269 #define  ROUTMIX1_LI2RO 0x80
  270 #define  ROUTMIX1_LI2ROVOL_MASK 0x70
  271 #define  ROUTMIX1_GET_LI2ROVOL(x) (((x) >> 4) & 0x70)
  272 #define  ROUTMIX1_SET_LI2ROVOL(x) ((x) << 4)
  273 #define  ROUTMIX1_RMIXSEL_MASK 0x7
  274 #define  ROUTMIX1_GET_RMIXSEL(x) ((x) & 0x7)
  275 #define  ROUTMIX1_SET_RMIXSEL(x) (x)
  276 
  277 #define ROUTMIX2_REG 0x25               /* Right out Mix (2) */
  278 #define  ROUTMIX2_RD2RO 0x100
  279 #define  ROUTMIX2_RI2RO 0x80
  280 #define  ROUTMIX2_RI2ROVOL_MASK 0x70
  281 #define  ROUTMIX2_GET_RI2ROVOL(x) (((x) >> 4) & 0x70)
  282 #define  ROUTMIX2_SET_RI2ROVOL(x) ((x) << 4)
  283 
  284 #define MOUTMIX1_REG 0x26               /* Mono out Mix (1) */
  285 #define  MOUTMIX1_LD2MO 0x100
  286 #define  MOUTMIX1_LI2MO 0x80
  287 #define  MOUTMIX1_LI2MOVOL_MASK 0x70
  288 #define  MOUTMIX1_GET_LI2MOVOL(x) (((x) >> 4) & 0x70)
  289 #define  MOUTMIX1_SET_LI2MOVOL(x) ((x) << 4)
  290 
  291 #define MOUTMIX2_REG 0x27               /* Mono out Mix (2) */
  292 #define  MOUTMIX2_RD2MO 0x100
  293 #define  MOUTMIX2_RI2MO 0x80
  294 #define  MOUTMIX2_RI2MOVOL_MASK 0x70
  295 #define  MOUTMIX2_GET_RI2MOVOL(x) (((x) >> 4) & 0x70)
  296 #define  MOUTMIX2_SET_RI2MOVOL(x) ((x) << 4)
  297 
  298 #define LOUT2VOL_REG 0x28               /* LOUT2 volume */
  299 #define  LOUT2VOL_LO2VU 0x100
  300 #define  LOUT2VOL_LO2ZC 0x80
  301 #define  LOUT2VOL_LOUT2VOL_MASK 0x7F
  302 #define  LOUT2VOL_GET_LOUT2VOL(x) ((x) & 0x7F)
  303 #define  LOUT2VOL_SET_LOUT2VOL(x) (x)
  304 
  305 #define ROUT2VOL_REG 0x29               /* ROUT2 volume */
  306 #define  ROUT2VOL_RO2VU 0x100
  307 #define  ROUT2VOL_RO2ZC 0x80
  308 #define  ROUT2VOL_ROUT2VOL_MASK 0x7F
  309 #define  ROUT2VOL_GET_ROUT2VOL(x) ((x) & 0x7F)
  310 #define  ROUT2VOL_SET_ROUT2VOL(x) (x)
  311 
  312 #define MOUTVOL_REG 0x2A                /* MONOOUT volume */
  313 #define  MOUTVOL_MOZC 0x80
  314 #define  MOUTVOL_MOUTVOL_MASK 0x7F
  315 #define  MOUTVOL_GET_MOUTVOL(x) ((x) & 0x7F)
  316 #define  MOUTVOL_SET_MOUTVOL(x) (x)
  317 

/* [<][>][^][v][top][bottom][index][help] */