diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-03-16 08:01:28 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-03-16 11:58:08 -0400 |
commit | cdce4e9ba7ff86a5f43b971a9af88b25a3f6c9a4 (patch) | |
tree | f8993127b71fbdb23f092dcc54cb7021c0e49e47 /include/sound | |
parent | 7245387e36e16ae918467685c34510606fd74b7c (diff) |
ASoC: Allow configuration of WM8904 GPIO pin functions
Provide platform data allowing the configuration of the GPIO pins
on the WM8904 to be selected, allowing alternate functions to be
enabled.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/wm8904.h | 74 |
1 files changed, 72 insertions, 2 deletions
diff --git a/include/sound/wm8904.h b/include/sound/wm8904.h index d66575a601be..ddeeebf7c426 100644 --- a/include/sound/wm8904.h +++ b/include/sound/wm8904.h | |||
@@ -15,8 +15,76 @@ | |||
15 | #ifndef __MFD_WM8994_PDATA_H__ | 15 | #ifndef __MFD_WM8994_PDATA_H__ |
16 | #define __MFD_WM8994_PDATA_H__ | 16 | #define __MFD_WM8994_PDATA_H__ |
17 | 17 | ||
18 | #define WM8904_DRC_REGS 4 | 18 | /* Used to enable configuration of a GPIO to all zeros */ |
19 | #define WM8904_EQ_REGS 25 | 19 | #define WM8904_GPIO_NO_CONFIG 0x8000 |
20 | |||
21 | /* | ||
22 | * R121 (0x79) - GPIO Control 1 | ||
23 | */ | ||
24 | #define WM8904_GPIO1_PU 0x0020 /* GPIO1_PU */ | ||
25 | #define WM8904_GPIO1_PU_MASK 0x0020 /* GPIO1_PU */ | ||
26 | #define WM8904_GPIO1_PU_SHIFT 5 /* GPIO1_PU */ | ||
27 | #define WM8904_GPIO1_PU_WIDTH 1 /* GPIO1_PU */ | ||
28 | #define WM8904_GPIO1_PD 0x0010 /* GPIO1_PD */ | ||
29 | #define WM8904_GPIO1_PD_MASK 0x0010 /* GPIO1_PD */ | ||
30 | #define WM8904_GPIO1_PD_SHIFT 4 /* GPIO1_PD */ | ||
31 | #define WM8904_GPIO1_PD_WIDTH 1 /* GPIO1_PD */ | ||
32 | #define WM8904_GPIO1_SEL_MASK 0x000F /* GPIO1_SEL - [3:0] */ | ||
33 | #define WM8904_GPIO1_SEL_SHIFT 0 /* GPIO1_SEL - [3:0] */ | ||
34 | #define WM8904_GPIO1_SEL_WIDTH 4 /* GPIO1_SEL - [3:0] */ | ||
35 | |||
36 | /* | ||
37 | * R122 (0x7A) - GPIO Control 2 | ||
38 | */ | ||
39 | #define WM8904_GPIO2_PU 0x0020 /* GPIO2_PU */ | ||
40 | #define WM8904_GPIO2_PU_MASK 0x0020 /* GPIO2_PU */ | ||
41 | #define WM8904_GPIO2_PU_SHIFT 5 /* GPIO2_PU */ | ||
42 | #define WM8904_GPIO2_PU_WIDTH 1 /* GPIO2_PU */ | ||
43 | #define WM8904_GPIO2_PD 0x0010 /* GPIO2_PD */ | ||
44 | #define WM8904_GPIO2_PD_MASK 0x0010 /* GPIO2_PD */ | ||
45 | #define WM8904_GPIO2_PD_SHIFT 4 /* GPIO2_PD */ | ||
46 | #define WM8904_GPIO2_PD_WIDTH 1 /* GPIO2_PD */ | ||
47 | #define WM8904_GPIO2_SEL_MASK 0x000F /* GPIO2_SEL - [3:0] */ | ||
48 | #define WM8904_GPIO2_SEL_SHIFT 0 /* GPIO2_SEL - [3:0] */ | ||
49 | #define WM8904_GPIO2_SEL_WIDTH 4 /* GPIO2_SEL - [3:0] */ | ||
50 | |||
51 | /* | ||
52 | * R123 (0x7B) - GPIO Control 3 | ||
53 | */ | ||
54 | #define WM8904_GPIO3_PU 0x0020 /* GPIO3_PU */ | ||
55 | #define WM8904_GPIO3_PU_MASK 0x0020 /* GPIO3_PU */ | ||
56 | #define WM8904_GPIO3_PU_SHIFT 5 /* GPIO3_PU */ | ||
57 | #define WM8904_GPIO3_PU_WIDTH 1 /* GPIO3_PU */ | ||
58 | #define WM8904_GPIO3_PD 0x0010 /* GPIO3_PD */ | ||
59 | #define WM8904_GPIO3_PD_MASK 0x0010 /* GPIO3_PD */ | ||
60 | #define WM8904_GPIO3_PD_SHIFT 4 /* GPIO3_PD */ | ||
61 | #define WM8904_GPIO3_PD_WIDTH 1 /* GPIO3_PD */ | ||
62 | #define WM8904_GPIO3_SEL_MASK 0x000F /* GPIO3_SEL - [3:0] */ | ||
63 | #define WM8904_GPIO3_SEL_SHIFT 0 /* GPIO3_SEL - [3:0] */ | ||
64 | #define WM8904_GPIO3_SEL_WIDTH 4 /* GPIO3_SEL - [3:0] */ | ||
65 | |||
66 | /* | ||
67 | * R124 (0x7C) - GPIO Control 4 | ||
68 | */ | ||
69 | #define WM8904_GPI7_ENA 0x0200 /* GPI7_ENA */ | ||
70 | #define WM8904_GPI7_ENA_MASK 0x0200 /* GPI7_ENA */ | ||
71 | #define WM8904_GPI7_ENA_SHIFT 9 /* GPI7_ENA */ | ||
72 | #define WM8904_GPI7_ENA_WIDTH 1 /* GPI7_ENA */ | ||
73 | #define WM8904_GPI8_ENA 0x0100 /* GPI8_ENA */ | ||
74 | #define WM8904_GPI8_ENA_MASK 0x0100 /* GPI8_ENA */ | ||
75 | #define WM8904_GPI8_ENA_SHIFT 8 /* GPI8_ENA */ | ||
76 | #define WM8904_GPI8_ENA_WIDTH 1 /* GPI8_ENA */ | ||
77 | #define WM8904_GPIO_BCLK_MODE_ENA 0x0080 /* GPIO_BCLK_MODE_ENA */ | ||
78 | #define WM8904_GPIO_BCLK_MODE_ENA_MASK 0x0080 /* GPIO_BCLK_MODE_ENA */ | ||
79 | #define WM8904_GPIO_BCLK_MODE_ENA_SHIFT 7 /* GPIO_BCLK_MODE_ENA */ | ||
80 | #define WM8904_GPIO_BCLK_MODE_ENA_WIDTH 1 /* GPIO_BCLK_MODE_ENA */ | ||
81 | #define WM8904_GPIO_BCLK_SEL_MASK 0x000F /* GPIO_BCLK_SEL - [3:0] */ | ||
82 | #define WM8904_GPIO_BCLK_SEL_SHIFT 0 /* GPIO_BCLK_SEL - [3:0] */ | ||
83 | #define WM8904_GPIO_BCLK_SEL_WIDTH 4 /* GPIO_BCLK_SEL - [3:0] */ | ||
84 | |||
85 | #define WM8904_GPIO_REGS 4 | ||
86 | #define WM8904_DRC_REGS 4 | ||
87 | #define WM8904_EQ_REGS 25 | ||
20 | 88 | ||
21 | /** | 89 | /** |
22 | * DRC configurations are specified with a label and a set of register | 90 | * DRC configurations are specified with a label and a set of register |
@@ -52,6 +120,8 @@ struct wm8904_pdata { | |||
52 | 120 | ||
53 | int num_retune_mobile_cfgs; | 121 | int num_retune_mobile_cfgs; |
54 | struct wm8904_retune_mobile_cfg *retune_mobile_cfgs; | 122 | struct wm8904_retune_mobile_cfg *retune_mobile_cfgs; |
123 | |||
124 | u32 gpio_cfg[WM8904_GPIO_REGS]; | ||
55 | }; | 125 | }; |
56 | 126 | ||
57 | #endif | 127 | #endif |