1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 20b5e92c5SJonathan Cameron /* 30b5e92c5SJonathan Cameron * wm8940.h -- WM8940 Soc Audio driver 40b5e92c5SJonathan Cameron */ 50b5e92c5SJonathan Cameron 60b5e92c5SJonathan Cameron #ifndef _WM8940_H 70b5e92c5SJonathan Cameron #define _WM8940_H 80b5e92c5SJonathan Cameron 90b5e92c5SJonathan Cameron struct wm8940_setup_data { 100b5e92c5SJonathan Cameron /* Vref to analogue output resistance */ 110b5e92c5SJonathan Cameron #define WM8940_VROI_1K 0 120b5e92c5SJonathan Cameron #define WM8940_VROI_30K 1 130b5e92c5SJonathan Cameron unsigned int vroi:1; 140b5e92c5SJonathan Cameron }; 150b5e92c5SJonathan Cameron 160b5e92c5SJonathan Cameron /* WM8940 register space */ 170b5e92c5SJonathan Cameron #define WM8940_SOFTRESET 0x00 180b5e92c5SJonathan Cameron #define WM8940_POWER1 0x01 190b5e92c5SJonathan Cameron #define WM8940_POWER2 0x02 200b5e92c5SJonathan Cameron #define WM8940_POWER3 0x03 210b5e92c5SJonathan Cameron #define WM8940_IFACE 0x04 220b5e92c5SJonathan Cameron #define WM8940_COMPANDINGCTL 0x05 230b5e92c5SJonathan Cameron #define WM8940_CLOCK 0x06 240b5e92c5SJonathan Cameron #define WM8940_ADDCNTRL 0x07 250b5e92c5SJonathan Cameron #define WM8940_GPIO 0x08 260b5e92c5SJonathan Cameron #define WM8940_CTLINT 0x09 270b5e92c5SJonathan Cameron #define WM8940_DAC 0x0A 280b5e92c5SJonathan Cameron #define WM8940_DACVOL 0x0B 290b5e92c5SJonathan Cameron 300b5e92c5SJonathan Cameron #define WM8940_ADC 0x0E 310b5e92c5SJonathan Cameron #define WM8940_ADCVOL 0x0F 320b5e92c5SJonathan Cameron #define WM8940_NOTCH1 0x10 330b5e92c5SJonathan Cameron #define WM8940_NOTCH2 0x11 340b5e92c5SJonathan Cameron #define WM8940_NOTCH3 0x12 350b5e92c5SJonathan Cameron #define WM8940_NOTCH4 0x13 360b5e92c5SJonathan Cameron #define WM8940_NOTCH5 0x14 370b5e92c5SJonathan Cameron #define WM8940_NOTCH6 0x15 380b5e92c5SJonathan Cameron #define WM8940_NOTCH7 0x16 390b5e92c5SJonathan Cameron #define WM8940_NOTCH8 0x17 400b5e92c5SJonathan Cameron #define WM8940_DACLIM1 0x18 410b5e92c5SJonathan Cameron #define WM8940_DACLIM2 0x19 420b5e92c5SJonathan Cameron 430b5e92c5SJonathan Cameron #define WM8940_ALC1 0x20 440b5e92c5SJonathan Cameron #define WM8940_ALC2 0x21 450b5e92c5SJonathan Cameron #define WM8940_ALC3 0x22 460b5e92c5SJonathan Cameron #define WM8940_NOISEGATE 0x23 470b5e92c5SJonathan Cameron #define WM8940_PLLN 0x24 480b5e92c5SJonathan Cameron #define WM8940_PLLK1 0x25 490b5e92c5SJonathan Cameron #define WM8940_PLLK2 0x26 500b5e92c5SJonathan Cameron #define WM8940_PLLK3 0x27 510b5e92c5SJonathan Cameron 520b5e92c5SJonathan Cameron #define WM8940_ALC4 0x2A 530b5e92c5SJonathan Cameron 540b5e92c5SJonathan Cameron #define WM8940_INPUTCTL 0x2C 550b5e92c5SJonathan Cameron #define WM8940_PGAGAIN 0x2D 560b5e92c5SJonathan Cameron 570b5e92c5SJonathan Cameron #define WM8940_ADCBOOST 0x2F 580b5e92c5SJonathan Cameron 590b5e92c5SJonathan Cameron #define WM8940_OUTPUTCTL 0x31 600b5e92c5SJonathan Cameron #define WM8940_SPKMIX 0x32 610b5e92c5SJonathan Cameron 620b5e92c5SJonathan Cameron #define WM8940_SPKVOL 0x36 630b5e92c5SJonathan Cameron 640b5e92c5SJonathan Cameron #define WM8940_MONOMIX 0x38 650b5e92c5SJonathan Cameron 660b5e92c5SJonathan Cameron #define WM8940_CACHEREGNUM 0x57 670b5e92c5SJonathan Cameron 680b5e92c5SJonathan Cameron 690b5e92c5SJonathan Cameron /* Clock divider Id's */ 700b5e92c5SJonathan Cameron #define WM8940_BCLKDIV 0 710b5e92c5SJonathan Cameron #define WM8940_MCLKDIV 1 720b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV 2 730b5e92c5SJonathan Cameron 740b5e92c5SJonathan Cameron /* MCLK clock dividers */ 750b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1 0 760b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_1_5 1 770b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_2 2 780b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_3 3 790b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_4 4 800b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_6 5 810b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_8 6 820b5e92c5SJonathan Cameron #define WM8940_MCLKDIV_12 7 830b5e92c5SJonathan Cameron 840b5e92c5SJonathan Cameron /* BCLK clock dividers */ 850b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_1 0 860b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_2 1 870b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_4 2 880b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_8 3 890b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_16 4 900b5e92c5SJonathan Cameron #define WM8940_BCLKDIV_32 5 910b5e92c5SJonathan Cameron 920b5e92c5SJonathan Cameron /* PLL Out Dividers */ 930b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_1 0 940b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_2 1 950b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_3 2 960b5e92c5SJonathan Cameron #define WM8940_OPCLKDIV_4 3 970b5e92c5SJonathan Cameron 98*a5c26ee5SLukasz Majewski /* Chip ID */ 99*a5c26ee5SLukasz Majewski #define WM8940_CHIP_ID 0x8940 100*a5c26ee5SLukasz Majewski 1010b5e92c5SJonathan Cameron #endif /* _WM8940_H */ 1020b5e92c5SJonathan Cameron 103