Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
7639a06c TI |
2 | /* |
3 | * Local helper macros and functions for HD-audio core drivers | |
4 | */ | |
5 | ||
6 | #ifndef __HDAC_LOCAL_H | |
7 | #define __HDAC_LOCAL_H | |
8 | ||
9 | #define get_wcaps(codec, nid) \ | |
10 | snd_hdac_read_parm(codec, nid, AC_PAR_AUDIO_WIDGET_CAP) | |
11 | ||
12 | /* get the widget type from widget capability bits */ | |
13 | static inline int get_wcaps_type(unsigned int wcaps) | |
14 | { | |
15 | if (!wcaps) | |
16 | return -1; /* invalid type */ | |
17 | return (wcaps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT; | |
18 | } | |
19 | ||
9fc7c862 SP |
20 | static inline unsigned int get_wcaps_channels(u32 wcaps) |
21 | { | |
22 | unsigned int chans; | |
23 | ||
24 | chans = (wcaps & AC_WCAP_CHAN_CNT_EXT) >> 13; | |
25 | chans = (chans + 1) * 2; | |
26 | ||
27 | return chans; | |
28 | } | |
29 | ||
3256be65 TI |
30 | extern const struct attribute_group *hdac_dev_attr_groups[]; |
31 | int hda_widget_sysfs_init(struct hdac_device *codec); | |
9780ded3 TI |
32 | int hda_widget_sysfs_reinit(struct hdac_device *codec, hda_nid_t start_nid, |
33 | int num_nodes); | |
3256be65 TI |
34 | void hda_widget_sysfs_exit(struct hdac_device *codec); |
35 | ||
53eff75e TI |
36 | int snd_hdac_bus_add_device(struct hdac_bus *bus, struct hdac_device *codec); |
37 | void snd_hdac_bus_remove_device(struct hdac_bus *bus, | |
38 | struct hdac_device *codec); | |
b9f2d35f TI |
39 | void snd_hdac_bus_queue_event(struct hdac_bus *bus, u32 res, u32 res_ex); |
40 | int snd_hdac_bus_exec_verb(struct hdac_bus *bus, unsigned int addr, | |
41 | unsigned int cmd, unsigned int *res); | |
53eff75e | 42 | |
ddf7cb83 TI |
43 | int snd_hdac_exec_verb(struct hdac_device *codec, unsigned int cmd, |
44 | unsigned int flags, unsigned int *res); | |
45 | ||
7639a06c | 46 | #endif /* __HDAC_LOCAL_H */ |