Annotation of sys/dev/i2c/wm8750reg.h, Revision 1.1
1.1 ! nbrk 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:
CVSweb