1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | // |
3 | // aw88395.h -- ALSA SoC AW88395 codec support |
4 | // |
5 | // Copyright (c) 2022-2023 AWINIC Technology CO., LTD |
6 | // |
7 | // Author: Bruce zhao <zhaolei@awinic.com> |
8 | // |
9 | |
10 | #ifndef __AW88395_H__ |
11 | #define __AW88395_H__ |
12 | |
13 | #define AW88395_CHIP_ID_REG (0x00) |
14 | #define AW88395_START_RETRIES (5) |
15 | #define AW88395_START_WORK_DELAY_MS (0) |
16 | |
17 | #define AW88395_DSP_16_DATA_MASK (0x0000ffff) |
18 | |
19 | #define AW88395_I2C_NAME "aw88395" |
20 | |
21 | #define AW88395_RATES (SNDRV_PCM_RATE_8000_48000 | \ |
22 | SNDRV_PCM_RATE_96000) |
23 | #define AW88395_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ |
24 | SNDRV_PCM_FMTBIT_S24_LE | \ |
25 | SNDRV_PCM_FMTBIT_S32_LE) |
26 | |
27 | #define FADE_TIME_MAX 100000 |
28 | #define FADE_TIME_MIN 0 |
29 | |
30 | #define AW88395_PROFILE_EXT(xname, profile_info, profile_get, profile_set) \ |
31 | { \ |
32 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, \ |
33 | .name = xname, \ |
34 | .info = profile_info, \ |
35 | .get = profile_get, \ |
36 | .put = profile_set, \ |
37 | } |
38 | |
39 | enum { |
40 | AW88395_SYNC_START = 0, |
41 | AW88395_ASYNC_START, |
42 | }; |
43 | |
44 | enum { |
45 | AW88395_STREAM_CLOSE = 0, |
46 | AW88395_STREAM_OPEN, |
47 | }; |
48 | |
49 | struct aw88395 { |
50 | struct aw_device *aw_pa; |
51 | struct mutex lock; |
52 | struct gpio_desc *reset_gpio; |
53 | struct delayed_work start_work; |
54 | struct regmap *regmap; |
55 | struct aw_container *aw_cfg; |
56 | }; |
57 | |
58 | #endif |
59 | |