Commit | Line | Data |
---|---|---|
2159ad93 MB |
1 | /* |
2 | * wm_adsp.h -- Wolfson ADSP support | |
3 | * | |
4 | * Copyright 2012 Wolfson Microelectronics plc | |
5 | * | |
6 | * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License version 2 as | |
10 | * published by the Free Software Foundation. | |
11 | */ | |
12 | ||
13 | #ifndef __WM_ADSP_H | |
14 | #define __WM_ADSP_H | |
15 | ||
16 | #include <sound/soc.h> | |
17 | #include <sound/soc-dapm.h> | |
18 | ||
19 | #include "wmfw.h" | |
20 | ||
973838a0 MB |
21 | struct regulator; |
22 | ||
2159ad93 MB |
23 | struct wm_adsp_region { |
24 | int type; | |
25 | unsigned int base; | |
26 | }; | |
27 | ||
28 | struct wm_adsp { | |
29 | const char *part; | |
30 | int num; | |
31 | int type; | |
32 | struct device *dev; | |
33 | struct regmap *regmap; | |
34 | ||
35 | int base; | |
36 | ||
37 | const struct wm_adsp_region *mem; | |
38 | int num_mems; | |
973838a0 MB |
39 | |
40 | struct regulator *dvfs; | |
2159ad93 MB |
41 | }; |
42 | ||
43 | #define WM_ADSP1(wname, num) \ | |
44 | { .id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \ | |
45 | .shift = num, .event = wm_adsp1_event, \ | |
46 | .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD } | |
47 | ||
48 | #define WM_ADSP2(wname, num) \ | |
49 | { .id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \ | |
50 | .shift = num, .event = wm_adsp2_event, \ | |
51 | .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD } | |
52 | ||
973838a0 | 53 | int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs); |
2159ad93 MB |
54 | int wm_adsp1_event(struct snd_soc_dapm_widget *w, |
55 | struct snd_kcontrol *kcontrol, int event); | |
56 | int wm_adsp2_event(struct snd_soc_dapm_widget *w, | |
57 | struct snd_kcontrol *kcontrol, int event); | |
58 | ||
59 | #endif |