Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetoot...
[deliverable/linux.git] / sound / soc / codecs / wm_adsp.h
CommitLineData
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>
406abc95 18#include <sound/compress_driver.h>
2159ad93
MB
19
20#include "wmfw.h"
21
22struct wm_adsp_region {
23 int type;
24 unsigned int base;
25};
26
471f4885
MB
27struct wm_adsp_alg_region {
28 struct list_head list;
29 unsigned int alg;
30 int type;
31 unsigned int base;
32};
33
406abc95 34struct wm_adsp_compr;
2cd19bdb 35struct wm_adsp_compr_buf;
406abc95 36
2159ad93
MB
37struct wm_adsp {
38 const char *part;
39 int num;
40 int type;
41 struct device *dev;
42 struct regmap *regmap;
92bb4c32 43 struct snd_soc_card *card;
2159ad93
MB
44
45 int base;
94e205bf
CR
46 int sysclk_reg;
47 int sysclk_mask;
48 int sysclk_shift;
2159ad93 49
471f4885
MB
50 struct list_head alg_regions;
51
7585a5b0
CK
52 unsigned int fw_id;
53 unsigned int fw_id_version;
f395a218 54
2159ad93
MB
55 const struct wm_adsp_region *mem;
56 int num_mems;
973838a0 57
1023dbd9 58 int fw;
2323736d 59 int fw_ver;
621a5f7a 60 bool running;
1023dbd9 61
81ad93ec 62 struct list_head ctl_list;
d8a64d6a
CK
63
64 struct work_struct boot_work;
f9f55e31 65
406abc95 66 struct wm_adsp_compr *compr;
2cd19bdb 67 struct wm_adsp_compr_buf *buffer;
406abc95 68
078e7183
CK
69 struct mutex pwr_lock;
70
f9f55e31
RF
71#ifdef CONFIG_DEBUG_FS
72 struct dentry *debugfs_root;
f9f55e31
RF
73 char *wmfw_file_name;
74 char *bin_file_name;
75#endif
76
2159ad93
MB
77};
78
79#define WM_ADSP1(wname, num) \
f9eeae9f
LPC
80 SND_SOC_DAPM_PGA_E(wname, SND_SOC_NOPM, num, 0, NULL, 0, \
81 wm_adsp1_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD)
2159ad93 82
d82d767f 83#define WM_ADSP2(wname, num, event_fn) \
12db5edd 84{ .id = snd_soc_dapm_dai_link, .name = wname " Preloader", \
81ac58b1
RF
85 .reg = SND_SOC_NOPM, .shift = num, .event = event_fn, \
86 .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD }, \
12db5edd
CK
87{ .id = snd_soc_dapm_out_drv, .name = wname, \
88 .reg = SND_SOC_NOPM, .shift = num, .event = wm_adsp2_event, \
89 .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD }
2159ad93 90
336d0442 91extern const struct snd_kcontrol_new wm_adsp_fw_controls[];
1023dbd9 92
3809f001 93int wm_adsp1_init(struct wm_adsp *dsp);
81ac58b1 94int wm_adsp2_init(struct wm_adsp *dsp);
f5e2ce92
RF
95int wm_adsp2_codec_probe(struct wm_adsp *dsp, struct snd_soc_codec *codec);
96int wm_adsp2_codec_remove(struct wm_adsp *dsp, struct snd_soc_codec *codec);
2159ad93
MB
97int wm_adsp1_event(struct snd_soc_dapm_widget *w,
98 struct snd_kcontrol *kcontrol, int event);
12db5edd 99int wm_adsp2_early_event(struct snd_soc_dapm_widget *w,
d82d767f
CK
100 struct snd_kcontrol *kcontrol, int event,
101 unsigned int freq);
2159ad93
MB
102int wm_adsp2_event(struct snd_soc_dapm_widget *w,
103 struct snd_kcontrol *kcontrol, int event);
104
406abc95
CK
105extern int wm_adsp_compr_open(struct wm_adsp *dsp,
106 struct snd_compr_stream *stream);
107extern int wm_adsp_compr_free(struct snd_compr_stream *stream);
108extern int wm_adsp_compr_set_params(struct snd_compr_stream *stream,
109 struct snd_compr_params *params);
110extern int wm_adsp_compr_get_caps(struct snd_compr_stream *stream,
111 struct snd_compr_caps *caps);
95fe9597 112extern int wm_adsp_compr_trigger(struct snd_compr_stream *stream, int cmd);
565ace46
CK
113extern int wm_adsp_compr_handle_irq(struct wm_adsp *dsp);
114extern int wm_adsp_compr_pointer(struct snd_compr_stream *stream,
115 struct snd_compr_tstamp *tstamp);
83a40ce9
CK
116extern int wm_adsp_compr_copy(struct snd_compr_stream *stream,
117 char __user *buf, size_t count);
406abc95 118
2159ad93 119#endif
This page took 0.170683 seconds and 5 git commands to generate.