xref: /openbmc/linux/sound/hda/local.h (revision 78700c0a)
1 /*
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 */
12 static 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 
19 static 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 
29 extern const struct attribute_group *hdac_dev_attr_groups[];
30 int hda_widget_sysfs_init(struct hdac_device *codec);
31 void hda_widget_sysfs_exit(struct hdac_device *codec);
32 
33 #endif /* __HDAC_LOCAL_H */
34