Linux-libre 3.16.85-gnu
[librecmc/linux-libre.git] / sound / soc / codecs / sigmadsp.h
1 /*
2  * Load firmware files from Analog Devices SigmaStudio
3  *
4  * Copyright 2009-2011 Analog Devices Inc.
5  *
6  * Licensed under the GPL-2 or later.
7  */
8
9 #ifndef __SIGMA_FIRMWARE_H__
10 #define __SIGMA_FIRMWARE_H__
11
12 #include <linux/device.h>
13 #include <linux/regmap.h>
14
15 struct sigma_action {
16         u8 instr;
17         u8 len_hi;
18         __le16 len;
19         __be16 addr;
20         unsigned char payload[];
21 } __packed;
22
23 struct sigma_firmware {
24         const struct firmware *fw;
25         size_t pos;
26
27         void *control_data;
28         int (*write)(void *control_data, const struct sigma_action *sa,
29                         size_t len);
30 };
31
32 int _process_sigma_firmware(struct device *dev,
33         struct sigma_firmware *ssfw, const char *name);
34
35 struct i2c_client;
36
37 extern int process_sigma_firmware(struct i2c_client *client, const char *name);
38 extern int process_sigma_firmware_regmap(struct device *dev,
39                 struct regmap *regmap, const char *name);
40
41 #endif