1
2
3
4
5
6
7
8
9
10#ifndef __CS35L41_H__
11#define __CS35L41_H__
12
13#include <linux/gpio/consumer.h>
14#include <linux/regulator/consumer.h>
15#include <linux/firmware.h>
16#include <sound/core.h>
17#include <sound/cs35l41.h>
18
19#include "wm_adsp.h"
20
21#define CS35L41_RX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
22#define CS35L41_TX_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
23
24extern const struct dev_pm_ops cs35l41_pm_ops;
25
26enum cs35l41_cspl_mbox_status {
27 CSPL_MBOX_STS_RUNNING = 0,
28 CSPL_MBOX_STS_PAUSED = 1,
29 CSPL_MBOX_STS_RDY_FOR_REINIT = 2,
30};
31
32enum cs35l41_cspl_mbox_cmd {
33 CSPL_MBOX_CMD_NONE = 0,
34 CSPL_MBOX_CMD_PAUSE = 1,
35 CSPL_MBOX_CMD_RESUME = 2,
36 CSPL_MBOX_CMD_REINIT = 3,
37 CSPL_MBOX_CMD_STOP_PRE_REINIT = 4,
38 CSPL_MBOX_CMD_HIBERNATE = 5,
39 CSPL_MBOX_CMD_OUT_OF_HIBERNATE = 6,
40 CSPL_MBOX_CMD_UNKNOWN_CMD = -1,
41 CSPL_MBOX_CMD_INVALID_SEQUENCE = -2,
42};
43
44struct cs35l41_private {
45 struct wm_adsp dsp;
46 struct snd_soc_codec *codec;
47 struct cs35l41_platform_data pdata;
48 struct device *dev;
49 struct regmap *regmap;
50 struct regulator_bulk_data supplies[CS35L41_NUM_SUPPLIES];
51 int irq;
52
53 struct gpio_desc *reset_gpio;
54};
55
56int cs35l41_probe(struct cs35l41_private *cs35l41,
57 struct cs35l41_platform_data *pdata);
58void cs35l41_remove(struct cs35l41_private *cs35l41);
59
60#endif
61