blob: 0d5bb159d538ef53dcddb1914a3b4068c90f4795 [file] [log] [blame]
Takashi Iwai7639a062015-03-03 10:07:24 +01001/*
2 * Local helper macros and functions for HD-audio core drivers
3 */
4
5#ifndef __HDAC_LOCAL_H
6#define __HDAC_LOCAL_H
7
8#define get_wcaps(codec, nid) \
9 snd_hdac_read_parm(codec, nid, AC_PAR_AUDIO_WIDGET_CAP)
10
11/* get the widget type from widget capability bits */
12static inline int get_wcaps_type(unsigned int wcaps)
13{
14 if (!wcaps)
15 return -1; /* invalid type */
16 return (wcaps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT;
17}
18
Subhransu S. Prusty9fc7c862016-04-14 10:07:29 +053019static inline unsigned int get_wcaps_channels(u32 wcaps)
20{
21 unsigned int chans;
22
23 chans = (wcaps & AC_WCAP_CHAN_CNT_EXT) >> 13;
24 chans = (chans + 1) * 2;
25
26 return chans;
27}
28
Takashi Iwai3256be62015-02-24 14:59:42 +010029extern const struct attribute_group *hdac_dev_attr_groups[];
30int hda_widget_sysfs_init(struct hdac_device *codec);
31void hda_widget_sysfs_exit(struct hdac_device *codec);
32
Takashi Iwai7639a062015-03-03 10:07:24 +010033#endif /* __HDAC_LOCAL_H */