1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * wm8731.h -- WM8731 Soc Audio driver |
4 | * |
5 | * Copyright 2005 Openedhand Ltd. |
6 | * |
7 | * Author: Richard Purdie <richard@openedhand.com> |
8 | * |
9 | * Based on wm8753.h |
10 | */ |
11 | |
12 | #ifndef _WM8731_H |
13 | #define _WM8731_H |
14 | |
15 | #include <linux/mutex.h> |
16 | #include <linux/regmap.h> |
17 | #include <linux/regulator/consumer.h> |
18 | |
19 | struct clk; |
20 | struct snd_pcm_hw_constraint_list; |
21 | |
22 | /* WM8731 register space */ |
23 | |
24 | #define WM8731_LINVOL 0x00 |
25 | #define WM8731_RINVOL 0x01 |
26 | #define WM8731_LOUT1V 0x02 |
27 | #define WM8731_ROUT1V 0x03 |
28 | #define WM8731_APANA 0x04 |
29 | #define WM8731_APDIGI 0x05 |
30 | #define WM8731_PWR 0x06 |
31 | #define WM8731_IFACE 0x07 |
32 | #define WM8731_SRATE 0x08 |
33 | #define WM8731_ACTIVE 0x09 |
34 | #define WM8731_RESET 0x0f |
35 | |
36 | #define WM8731_CACHEREGNUM 10 |
37 | |
38 | #define WM8731_SYSCLK_MCLK 0 |
39 | #define WM8731_SYSCLK_XTAL 1 |
40 | |
41 | #define WM8731_DAI 0 |
42 | |
43 | #define WM8731_NUM_SUPPLIES 4 |
44 | |
45 | /* codec private data */ |
46 | struct wm8731_priv { |
47 | struct regmap *regmap; |
48 | struct clk *mclk; |
49 | struct regulator_bulk_data supplies[WM8731_NUM_SUPPLIES]; |
50 | const struct snd_pcm_hw_constraint_list *constraints; |
51 | unsigned int sysclk; |
52 | int sysclk_type; |
53 | int playback_fs; |
54 | bool deemph; |
55 | |
56 | struct mutex lock; |
57 | }; |
58 | |
59 | extern const struct regmap_config wm8731_regmap; |
60 | |
61 | int wm8731_init(struct device *dev, struct wm8731_priv *wm8731); |
62 | |
63 | #endif |
64 | |