aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-26 10:21:07 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-11-27 05:32:13 -0500
commitc4431df050ff124cae7716e301cead1e8f33c575 (patch)
treece6f2adc59834b24ef02040a9eab6ea36b51e6de /include/linux/mfd
parent3a42315740fa80bb4579eb25fedec9d09ff154e7 (diff)
ASoC: Implement support for enhanced AIF3 on WM8958
Additional audio routing options are available on the WM8958 audio interface 3. Add support for these. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Diffstat (limited to 'include/linux/mfd')
-rw-r--r--include/linux/mfd/wm8994/registers.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/include/linux/mfd/wm8994/registers.h b/include/linux/mfd/wm8994/registers.h
index 967f62f54159..3eb70a4e7681 100644
--- a/include/linux/mfd/wm8994/registers.h
+++ b/include/linux/mfd/wm8994/registers.h
@@ -109,6 +109,10 @@
109#define WM8994_AIF2DAC_LRCLK 0x315 109#define WM8994_AIF2DAC_LRCLK 0x315
110#define WM8994_AIF2DAC_DATA 0x316 110#define WM8994_AIF2DAC_DATA 0x316
111#define WM8994_AIF2ADC_DATA 0x317 111#define WM8994_AIF2ADC_DATA 0x317
112#define WM8958_AIF3_CONTROL_1 0x320
113#define WM8958_AIF3_CONTROL_2 0x321
114#define WM8958_AIF3DAC_DATA 0x322
115#define WM8958_AIF3ADC_DATA 0x323
112#define WM8994_AIF1_ADC1_LEFT_VOLUME 0x400 116#define WM8994_AIF1_ADC1_LEFT_VOLUME 0x400
113#define WM8994_AIF1_ADC1_RIGHT_VOLUME 0x401 117#define WM8994_AIF1_ADC1_RIGHT_VOLUME 0x401
114#define WM8994_AIF1_DAC1_LEFT_VOLUME 0x402 118#define WM8994_AIF1_DAC1_LEFT_VOLUME 0x402
@@ -992,6 +996,12 @@
992/* 996/*
993 * R6 (0x06) - Power Management (6) 997 * R6 (0x06) - Power Management (6)
994 */ 998 */
999#define WM8958_AIF3ADC_SRC_MASK 0x0600 /* AIF3ADC_SRC - [10:9] */
1000#define WM8958_AIF3ADC_SRC_SHIFT 9 /* AIF3ADC_SRC - [10:9] */
1001#define WM8958_AIF3ADC_SRC_WIDTH 2 /* AIF3ADC_SRC - [10:9] */
1002#define WM8958_AIF2DAC_SRC_MASK 0x0180 /* AIF2DAC_SRC - [8:7] */
1003#define WM8958_AIF2DAC_SRC_SHIFT 7 /* AIF2DAC_SRC - [8:7] */
1004#define WM8958_AIF2DAC_SRC_WIDTH 2 /* AIF2DAC_SRC - [8:7] */
995#define WM8994_AIF3_TRI 0x0020 /* AIF3_TRI */ 1005#define WM8994_AIF3_TRI 0x0020 /* AIF3_TRI */
996#define WM8994_AIF3_TRI_MASK 0x0020 /* AIF3_TRI */ 1006#define WM8994_AIF3_TRI_MASK 0x0020 /* AIF3_TRI */
997#define WM8994_AIF3_TRI_SHIFT 5 /* AIF3_TRI */ 1007#define WM8994_AIF3_TRI_SHIFT 5 /* AIF3_TRI */
@@ -2553,6 +2563,63 @@
2553#define WM8994_AIF2ADCR_DAT_INV_WIDTH 1 /* AIF2ADCR_DAT_INV */ 2563#define WM8994_AIF2ADCR_DAT_INV_WIDTH 1 /* AIF2ADCR_DAT_INV */
2554 2564
2555/* 2565/*
2566 * R800 (0x320) - AIF3 Control (1)
2567 */
2568#define WM8958_AIF3_LRCLK_INV 0x0080 /* AIF3_LRCLK_INV */
2569#define WM8958_AIF3_LRCLK_INV_MASK 0x0080 /* AIF3_LRCLK_INV */
2570#define WM8958_AIF3_LRCLK_INV_SHIFT 7 /* AIF3_LRCLK_INV */
2571#define WM8958_AIF3_LRCLK_INV_WIDTH 1 /* AIF3_LRCLK_INV */
2572#define WM8958_AIF3_WL_MASK 0x0060 /* AIF3_WL - [6:5] */
2573#define WM8958_AIF3_WL_SHIFT 5 /* AIF3_WL - [6:5] */
2574#define WM8958_AIF3_WL_WIDTH 2 /* AIF3_WL - [6:5] */
2575#define WM8958_AIF3_FMT_MASK 0x0018 /* AIF3_FMT - [4:3] */
2576#define WM8958_AIF3_FMT_SHIFT 3 /* AIF3_FMT - [4:3] */
2577#define WM8958_AIF3_FMT_WIDTH 2 /* AIF3_FMT - [4:3] */
2578
2579/*
2580 * R801 (0x321) - AIF3 Control (2)
2581 */
2582#define WM8958_AIF3DAC_BOOST_MASK 0x0C00 /* AIF3DAC_BOOST - [11:10] */
2583#define WM8958_AIF3DAC_BOOST_SHIFT 10 /* AIF3DAC_BOOST - [11:10] */
2584#define WM8958_AIF3DAC_BOOST_WIDTH 2 /* AIF3DAC_BOOST - [11:10] */
2585#define WM8958_AIF3DAC_COMP 0x0010 /* AIF3DAC_COMP */
2586#define WM8958_AIF3DAC_COMP_MASK 0x0010 /* AIF3DAC_COMP */
2587#define WM8958_AIF3DAC_COMP_SHIFT 4 /* AIF3DAC_COMP */
2588#define WM8958_AIF3DAC_COMP_WIDTH 1 /* AIF3DAC_COMP */
2589#define WM8958_AIF3DAC_COMPMODE 0x0008 /* AIF3DAC_COMPMODE */
2590#define WM8958_AIF3DAC_COMPMODE_MASK 0x0008 /* AIF3DAC_COMPMODE */
2591#define WM8958_AIF3DAC_COMPMODE_SHIFT 3 /* AIF3DAC_COMPMODE */
2592#define WM8958_AIF3DAC_COMPMODE_WIDTH 1 /* AIF3DAC_COMPMODE */
2593#define WM8958_AIF3ADC_COMP 0x0004 /* AIF3ADC_COMP */
2594#define WM8958_AIF3ADC_COMP_MASK 0x0004 /* AIF3ADC_COMP */
2595#define WM8958_AIF3ADC_COMP_SHIFT 2 /* AIF3ADC_COMP */
2596#define WM8958_AIF3ADC_COMP_WIDTH 1 /* AIF3ADC_COMP */
2597#define WM8958_AIF3ADC_COMPMODE 0x0002 /* AIF3ADC_COMPMODE */
2598#define WM8958_AIF3ADC_COMPMODE_MASK 0x0002 /* AIF3ADC_COMPMODE */
2599#define WM8958_AIF3ADC_COMPMODE_SHIFT 1 /* AIF3ADC_COMPMODE */
2600#define WM8958_AIF3ADC_COMPMODE_WIDTH 1 /* AIF3ADC_COMPMODE */
2601#define WM8958_AIF3_LOOPBACK 0x0001 /* AIF3_LOOPBACK */
2602#define WM8958_AIF3_LOOPBACK_MASK 0x0001 /* AIF3_LOOPBACK */
2603#define WM8958_AIF3_LOOPBACK_SHIFT 0 /* AIF3_LOOPBACK */
2604#define WM8958_AIF3_LOOPBACK_WIDTH 1 /* AIF3_LOOPBACK */
2605
2606/*
2607 * R802 (0x322) - AIF3DAC Data
2608 */
2609#define WM8958_AIF3DAC_DAT_INV 0x0001 /* AIF3DAC_DAT_INV */
2610#define WM8958_AIF3DAC_DAT_INV_MASK 0x0001 /* AIF3DAC_DAT_INV */
2611#define WM8958_AIF3DAC_DAT_INV_SHIFT 0 /* AIF3DAC_DAT_INV */
2612#define WM8958_AIF3DAC_DAT_INV_WIDTH 1 /* AIF3DAC_DAT_INV */
2613
2614/*
2615 * R803 (0x323) - AIF3ADC Data
2616 */
2617#define WM8958_AIF3ADC_DAT_INV 0x0001 /* AIF3ADC_DAT_INV */
2618#define WM8958_AIF3ADC_DAT_INV_MASK 0x0001 /* AIF3ADC_DAT_INV */
2619#define WM8958_AIF3ADC_DAT_INV_SHIFT 0 /* AIF3ADC_DAT_INV */
2620#define WM8958_AIF3ADC_DAT_INV_WIDTH 1 /* AIF3ADC_DAT_INV */
2621
2622/*
2556 * R1024 (0x400) - AIF1 ADC1 Left Volume 2623 * R1024 (0x400) - AIF1 ADC1 Left Volume
2557 */ 2624 */
2558#define WM8994_AIF1ADC1_VU 0x0100 /* AIF1ADC1_VU */ 2625#define WM8994_AIF1ADC1_VU 0x0100 /* AIF1ADC1_VU */