Loading include/sound/hdaudio.h +19 −1 Original line number Diff line number Diff line Loading @@ -105,12 +105,30 @@ int snd_hdac_exec_verb(struct hdac_device *codec, unsigned int cmd, unsigned int flags, unsigned int *res); int snd_hdac_read(struct hdac_device *codec, hda_nid_t nid, unsigned int verb, unsigned int parm, unsigned int *res); int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm); int _snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm, unsigned int *res); int snd_hdac_get_connections(struct hdac_device *codec, hda_nid_t nid, hda_nid_t *conn_list, int max_conns); int snd_hdac_get_sub_nodes(struct hdac_device *codec, hda_nid_t nid, hda_nid_t *start_id); /** * snd_hdac_read_parm - read a codec parameter * @codec: the codec object * @nid: NID to read a parameter * @parm: parameter to read * * Returns -1 for error. If you need to distinguish the error more * strictly, use _snd_hdac_read_parm() directly. */ static inline int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm) { unsigned int val; return _snd_hdac_read_parm(codec, nid, parm, &val) < 0 ? -1 : val; } #ifdef CONFIG_PM void snd_hdac_power_up(struct hdac_device *codec); void snd_hdac_power_down(struct hdac_device *codec); Loading sound/hda/hdac_device.c +9 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <linux/export.h> #include <linux/pm_runtime.h> #include <sound/hdaudio.h> #include <sound/hda_regmap.h> #include "local.h" static void setup_fg_nodes(struct hdac_device *codec); Loading Loading @@ -234,23 +235,19 @@ int snd_hdac_read(struct hdac_device *codec, hda_nid_t nid, EXPORT_SYMBOL_GPL(snd_hdac_read); /** * snd_hdac_read_parm - read a codec parameter * @codec: the codec object * @nid: NID to read a parameter * @parm: parameter to read * _snd_hdac_read_parm - read a parmeter * * Returns -1 for error. If you need to distinguish the error more * strictly, use snd_hdac_read() directly. * This function returns zero or an error unlike snd_hdac_read_parm(). */ int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm) int _snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm, unsigned int *res) { int val; unsigned int cmd; if (snd_hdac_read(codec, nid, AC_VERB_PARAMETERS, parm, &val)) return -1; return val; cmd = snd_hdac_regmap_encode_verb(nid, AC_VERB_PARAMETERS) | parm; return snd_hdac_regmap_read_raw(codec, cmd, res); } EXPORT_SYMBOL_GPL(snd_hdac_read_parm); EXPORT_SYMBOL_GPL(_snd_hdac_read_parm); /** * snd_hdac_get_sub_nodes - get start NID and number of subtree nodes Loading sound/pci/hda/hda_codec.h +1 −1 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ unsigned int snd_hda_codec_read(struct hda_codec *codec, hda_nid_t nid, int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags, unsigned int verb, unsigned int parm); #define snd_hda_param_read(codec, nid, param) \ snd_hda_codec_read(codec, nid, 0, AC_VERB_PARAMETERS, param) snd_hdac_read_parm(&(codec)->core, nid, param) #define snd_hda_get_sub_nodes(codec, nid, start_nid) \ snd_hdac_get_sub_nodes(&(codec)->core, nid, start_nid) int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, Loading Loading
include/sound/hdaudio.h +19 −1 Original line number Diff line number Diff line Loading @@ -105,12 +105,30 @@ int snd_hdac_exec_verb(struct hdac_device *codec, unsigned int cmd, unsigned int flags, unsigned int *res); int snd_hdac_read(struct hdac_device *codec, hda_nid_t nid, unsigned int verb, unsigned int parm, unsigned int *res); int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm); int _snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm, unsigned int *res); int snd_hdac_get_connections(struct hdac_device *codec, hda_nid_t nid, hda_nid_t *conn_list, int max_conns); int snd_hdac_get_sub_nodes(struct hdac_device *codec, hda_nid_t nid, hda_nid_t *start_id); /** * snd_hdac_read_parm - read a codec parameter * @codec: the codec object * @nid: NID to read a parameter * @parm: parameter to read * * Returns -1 for error. If you need to distinguish the error more * strictly, use _snd_hdac_read_parm() directly. */ static inline int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm) { unsigned int val; return _snd_hdac_read_parm(codec, nid, parm, &val) < 0 ? -1 : val; } #ifdef CONFIG_PM void snd_hdac_power_up(struct hdac_device *codec); void snd_hdac_power_down(struct hdac_device *codec); Loading
sound/hda/hdac_device.c +9 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include <linux/export.h> #include <linux/pm_runtime.h> #include <sound/hdaudio.h> #include <sound/hda_regmap.h> #include "local.h" static void setup_fg_nodes(struct hdac_device *codec); Loading Loading @@ -234,23 +235,19 @@ int snd_hdac_read(struct hdac_device *codec, hda_nid_t nid, EXPORT_SYMBOL_GPL(snd_hdac_read); /** * snd_hdac_read_parm - read a codec parameter * @codec: the codec object * @nid: NID to read a parameter * @parm: parameter to read * _snd_hdac_read_parm - read a parmeter * * Returns -1 for error. If you need to distinguish the error more * strictly, use snd_hdac_read() directly. * This function returns zero or an error unlike snd_hdac_read_parm(). */ int snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm) int _snd_hdac_read_parm(struct hdac_device *codec, hda_nid_t nid, int parm, unsigned int *res) { int val; unsigned int cmd; if (snd_hdac_read(codec, nid, AC_VERB_PARAMETERS, parm, &val)) return -1; return val; cmd = snd_hdac_regmap_encode_verb(nid, AC_VERB_PARAMETERS) | parm; return snd_hdac_regmap_read_raw(codec, cmd, res); } EXPORT_SYMBOL_GPL(snd_hdac_read_parm); EXPORT_SYMBOL_GPL(_snd_hdac_read_parm); /** * snd_hdac_get_sub_nodes - get start NID and number of subtree nodes Loading
sound/pci/hda/hda_codec.h +1 −1 Original line number Diff line number Diff line Loading @@ -369,7 +369,7 @@ unsigned int snd_hda_codec_read(struct hda_codec *codec, hda_nid_t nid, int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags, unsigned int verb, unsigned int parm); #define snd_hda_param_read(codec, nid, param) \ snd_hda_codec_read(codec, nid, 0, AC_VERB_PARAMETERS, param) snd_hdac_read_parm(&(codec)->core, nid, param) #define snd_hda_get_sub_nodes(codec, nid, start_nid) \ snd_hdac_get_sub_nodes(&(codec)->core, nid, start_nid) int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid, Loading