1*0b5e92c5SJonathan Cameron /* 2*0b5e92c5SJonathan Cameron * wm8940.h -- WM8940 Soc Audio driver 3*0b5e92c5SJonathan Cameron * 4*0b5e92c5SJonathan Cameron * This program is free software; you can redistribute it and/or modify 5*0b5e92c5SJonathan Cameron * it under the terms of the GNU General Public License version 2 as 6*0b5e92c5SJonathan Cameron * published by the Free Software Foundation. 7*0b5e92c5SJonathan Cameron */ 8*0b5e92c5SJonathan Cameron 9*0b5e92c5SJonathan Cameron #ifndef _WM8940_H 10*0b5e92c5SJonathan Cameron #define _WM8940_H 11*0b5e92c5SJonathan Cameron 12*0b5e92c5SJonathan Cameron struct wm8940_setup_data { 13*0b5e92c5SJonathan Cameron /* Vref to analogue output resistance */ 14*0b5e92c5SJonathan Cameron #define WM8940_VROI_1K 0 15*0b5e92c5SJonathan Cameron #define WM8940_VROI_30K 1 16*0b5e92c5SJonathan Cameron unsigned int vroi:1; 17*0b5e92c5SJonathan Cameron }; 18*0b5e92c5SJonathan Cameron extern struct snd_soc_dai wm8940_dai; 19*0b5e92c5SJonathan Cameron extern struct snd_soc_codec_device soc_codec_dev_wm8940; 20*0b5e92c5SJonathan Cameron 21*0b5e92c5SJonathan Cameron /* WM8940 register space */ 22*0b5e92c5SJonathan Cameron #define WM8940_SOFTRESET 0x00 23*0b5e92c5SJonathan Cameron #define WM8940_POWER1 0x01 24*0b5e92c5SJonathan Cameron #define WM8940_POWER2 0x02 25*0b5e92c5SJonathan Cameron #define WM8940_POWER3 0x03 26*0b5e92c5SJonathan Cameron #define WM8940_IFACE 0x04 27*0b5e92c5SJonathan Cameron #define WM8940_COMPANDINGCTL 0x05 28*0b5e92c5SJonathan Cameron #define WM8940_CLOCK 0x06 29*0b5e92c5SJonathan Cameron #define WM8940_ADDCNTRL 0x07 30*0b5e92c5SJonathan Cameron #define WM8940_GPIO 0x08 31*0b5e92c5SJonathan Cameron #define WM8940_CTLINT 0x09 32*0b5e92c5SJonathan Cameron #define WM8940_DAC 0x0A 33*0b5e92c5SJonathan Cameron #define WM8940_DACVOL 0x0B 34*0b5e92c5SJonathan Cameron 35*0b5e92c5SJonathan Cameron #define WM8940_ADC 0x0E 36*0b5e92c5SJonathan Cameron #define WM8940_ADCVOL 0x0F 37*0b5e92c5SJonathan Cameron #define WM8940_NOTCH1 0x10 38*0b5e92c5SJonathan Cameron #define WM8940_NOTCH2 0x11 39*0b5e92c5SJonathan Cameron #define WM8940_NOTCH3 0x12 40*0b5e92c5SJonathan Cameron #define WM8940_NOTCH4 0x13 41*0b5e92c5SJonathan Cameron #define WM8940_NOTCH5 0x14 42*0b5e92c5SJonathan Cameron #define WM8940_NOTCH6 0x15 43*0b5e92c5SJonathan Cameron #define WM8940_NOTCH7 0x16 44*0b5e92c5SJonathan Cameron #define WM8940_NOTCH8 0x17 45*0b5e92c5SJonathan Cameron #define WM8940_DACLIM1 0x18 46*0b5e92c5SJonathan Cameron #define WM8940_DACLIM2 0x19 47*0b5e92c5SJonathan Cameron 48*0b5e92c5SJonathan Cameron #define WM8940_ALC1 0x20 49*0b5e92c5SJonathan Cameron #define WM8940_ALC2 0x21 50*0b5e92c5SJonathan Cameron #define WM8940_ALC3 0x22 51*0b5e92c5SJonathan Cameron #define WM8940_NOISEGATE 0x23 52*0b5e92c5SJonathan Cameron #define WM8940_PLLN 0x24 53*0b5e92c5SJonathan Cameron #define WM8940_PLLK1 0x25 54*0b5e92c5SJonathan Cameron #define WM8940_PLLK2 0x26 55*0b5e92c5SJonathan Cameron #define WM8940_PLLK3 0x27 56*0b5e92c5SJonathan Cameron 57*0b5e92c5SJonathan Cameron #define WM8940_ALC4 0x2A 58*0b5e92c5SJonathan Cameron 59*0b5e92c5SJonathan Cameron #define WM8940_INPUTCTL 0x2C 60*0b5e92c5SJonathan Cameron #define WM8940_PGAGAIN 0x2D 61*0b5e92c5SJonathan Cameron 62*0b5e92c5SJonathan Cameron #define WM8940_ADCBOOST 0x2F 63*0b5e92c5SJonathan Cameron 64*0b5e92c5SJonathan Cameron #define WM8940_OUTPUTCTL 0x31 65*0b5e92c5SJonathan Cameron #define WM8940_SPKMIX 0x32 66*0b5e92c5SJonathan Cameron 67*0b5e92c5SJonathan Cameron #define WM8940_SPKVOL 0x36 68*0b5e92c5SJonathan Cameron 69*0b5e92c5SJonathan Cameron #define WM8940_MONOMIX 0x38 70*0b5e92c5SJonathan Cameron 71*0b5e92c5SJonathan Cameron #define WM8940_CACHEREGNUM 0x57 72*0b5e92c5SJonathan Cameron 73*0b5e92c5SJonathan Cameron 74*0b5e92c5SJonathan Cameron /* Clock divider Id's */ 75*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV 0 76*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV 1 77*0b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV 2 78*0b5e92c5SJonathan Cameron 79*0b5e92c5SJonathan Cameron /* MCLK clock dividers */ 80*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1 0 81*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1_5 1 82*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_2 2 83*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_3 3 84*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_4 4 85*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_6 5 86*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_8 6 87*0b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_12 7 88*0b5e92c5SJonathan Cameron 89*0b5e92c5SJonathan Cameron /* BCLK clock dividers */ 90*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_1 0 91*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_2 1 92*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_4 2 93*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_8 3 94*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_16 4 95*0b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_32 5 96*0b5e92c5SJonathan Cameron 97*0b5e92c5SJonathan Cameron /* PLL Out Dividers */ 98*0b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_1 0 99*0b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_2 1 100*0b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_3 2 101*0b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_4 3 102*0b5e92c5SJonathan Cameron 103*0b5e92c5SJonathan Cameron #endif /* _WM8940_H */ 104*0b5e92c5SJonathan Cameron 105