/* SPDX-License-Identifier: GPL-2.0 */ /* */ #ifndef __HDAC_LOCAL_H #define __HDAC_LOCAL_H int hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm); #define get_wcaps(codec, nid) \ hdac_read_parm(codec, nid, AC_PAR_AUDIO_WIDGET_CAP) /* get the widget type from widget capability bits */ static inline int get_wcaps_type(unsigned int wcaps) { if (!wcaps) return -1; /* invalid type */ return (wcaps & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT; } #define get_pin_caps(codec, nid) \ hdac_read_parm(codec, nid, AC_PAR_PIN_CAP) static inline unsigned int get_pin_cfg(struct hdac_device *codec, hda_nid_t nid) { unsigned int val; if (snd_hdac_read(codec, nid, AC_VERB_GET_CONFIG_DEFAULT, 0, &val)) return -1; return val; } #define get_amp_caps(codec, nid, dir) \ hdac_read_parm(codec, nid, (dir) == HDA_OUTPUT ? \ AC_PAR_AMP_OUT_CAP : AC_PAR_AMP_IN_CAP) #define get_power_caps(codec, nid) \ hdac_read_parm(codec, nid, AC_PAR_POWER_STATE) #endif /* __HDAC_LOCAL_H */