1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * Load firmware files from Analog Devices SigmaStudio |
4 | * |
5 | * Copyright 2009-2011 Analog Devices Inc. |
6 | */ |
7 | |
8 | #ifndef __SIGMA_FIRMWARE_H__ |
9 | #define __SIGMA_FIRMWARE_H__ |
10 | |
11 | #include <linux/device.h> |
12 | #include <linux/regmap.h> |
13 | #include <linux/list.h> |
14 | |
15 | #include <sound/pcm.h> |
16 | |
17 | struct sigmadsp; |
18 | struct snd_soc_component; |
19 | struct snd_pcm_substream; |
20 | |
21 | struct sigmadsp_ops { |
22 | int (*safeload)(struct sigmadsp *sigmadsp, unsigned int addr, |
23 | const uint8_t *data, size_t len); |
24 | }; |
25 | |
26 | struct sigmadsp { |
27 | const struct sigmadsp_ops *ops; |
28 | |
29 | struct list_head ctrl_list; |
30 | struct list_head data_list; |
31 | |
32 | struct snd_pcm_hw_constraint_list rate_constraints; |
33 | |
34 | unsigned int current_samplerate; |
35 | struct snd_soc_component *component; |
36 | struct device *dev; |
37 | |
38 | struct mutex lock; |
39 | |
40 | void *control_data; |
41 | int (*write)(void *, unsigned int, const uint8_t *, size_t); |
42 | int (*read)(void *, unsigned int, uint8_t *, size_t); |
43 | }; |
44 | |
45 | struct sigmadsp *devm_sigmadsp_init(struct device *dev, |
46 | const struct sigmadsp_ops *ops, const char *firmware_name); |
47 | |
48 | int sigmadsp_restrict_params(struct sigmadsp *sigmadsp, |
49 | struct snd_pcm_substream *substream); |
50 | |
51 | struct i2c_client; |
52 | |
53 | struct sigmadsp *devm_sigmadsp_init_regmap(struct device *dev, |
54 | struct regmap *regmap, const struct sigmadsp_ops *ops, |
55 | const char *firmware_name); |
56 | struct sigmadsp *devm_sigmadsp_init_i2c(struct i2c_client *client, |
57 | const struct sigmadsp_ops *ops, const char *firmware_name); |
58 | |
59 | int sigmadsp_attach(struct sigmadsp *sigmadsp, |
60 | struct snd_soc_component *component); |
61 | int sigmadsp_setup(struct sigmadsp *sigmadsp, unsigned int samplerate); |
62 | void sigmadsp_reset(struct sigmadsp *sigmadsp); |
63 | |
64 | #endif |
65 | |