| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
 | 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 |  | 
 | 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 |  | 
 | 30 | extern const struct attribute_group *hdac_dev_attr_groups[]; | 
 | 31 | int hda_widget_sysfs_init(struct hdac_device *codec); | 
 | 32 | int hda_widget_sysfs_reinit(struct hdac_device *codec, hda_nid_t start_nid, | 
 | 33 | 			    int num_nodes); | 
 | 34 | void hda_widget_sysfs_exit(struct hdac_device *codec); | 
 | 35 |  | 
 | 36 | #endif /* __HDAC_LOCAL_H */ |