Lines Matching full:codec
24 struct hdac_device *codec = dev_to_hdac_dev(dev); \
25 return sprintf(buf, "0x%x\n", codec->type); \
34 struct hdac_device *codec = dev_to_hdac_dev(dev); \
36 codec->type ? codec->type : ""); \
89 ssize_t (*show)(struct hdac_device *codec, hda_nid_t nid,
91 ssize_t (*store)(struct hdac_device *codec, hda_nid_t nid,
114 struct hdac_device *codec; in widget_attr_show() local
119 nid = get_codec_nid(kobj, &codec); in widget_attr_show()
122 return wid_attr->show(codec, nid, wid_attr, buf); in widget_attr_show()
130 struct hdac_device *codec; in widget_attr_store() local
135 nid = get_codec_nid(kobj, &codec); in widget_attr_store()
138 return wid_attr->store(codec, nid, wid_attr, buf, count); in widget_attr_store()
161 static ssize_t caps_show(struct hdac_device *codec, hda_nid_t nid, in caps_show() argument
164 return sprintf(buf, "0x%08x\n", get_wcaps(codec, nid)); in caps_show()
167 static ssize_t pin_caps_show(struct hdac_device *codec, hda_nid_t nid, in pin_caps_show() argument
170 if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN) in pin_caps_show()
173 snd_hdac_read_parm(codec, nid, AC_PAR_PIN_CAP)); in pin_caps_show()
176 static ssize_t pin_cfg_show(struct hdac_device *codec, hda_nid_t nid, in pin_cfg_show() argument
181 if (get_wcaps_type(get_wcaps(codec, nid)) != AC_WID_PIN) in pin_cfg_show()
183 if (snd_hdac_read(codec, nid, AC_VERB_GET_CONFIG_DEFAULT, 0, &val)) in pin_cfg_show()
188 static bool has_pcm_cap(struct hdac_device *codec, hda_nid_t nid) in has_pcm_cap() argument
190 if (nid == codec->afg || nid == codec->mfg) in has_pcm_cap()
192 switch (get_wcaps_type(get_wcaps(codec, nid))) { in has_pcm_cap()
201 static ssize_t pcm_caps_show(struct hdac_device *codec, hda_nid_t nid, in pcm_caps_show() argument
204 if (!has_pcm_cap(codec, nid)) in pcm_caps_show()
207 snd_hdac_read_parm(codec, nid, AC_PAR_PCM)); in pcm_caps_show()
210 static ssize_t pcm_formats_show(struct hdac_device *codec, hda_nid_t nid, in pcm_formats_show() argument
213 if (!has_pcm_cap(codec, nid)) in pcm_formats_show()
216 snd_hdac_read_parm(codec, nid, AC_PAR_STREAM)); in pcm_formats_show()
219 static ssize_t amp_in_caps_show(struct hdac_device *codec, hda_nid_t nid, in amp_in_caps_show() argument
222 if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_IN_AMP)) in amp_in_caps_show()
225 snd_hdac_read_parm(codec, nid, AC_PAR_AMP_IN_CAP)); in amp_in_caps_show()
228 static ssize_t amp_out_caps_show(struct hdac_device *codec, hda_nid_t nid, in amp_out_caps_show() argument
231 if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_OUT_AMP)) in amp_out_caps_show()
234 snd_hdac_read_parm(codec, nid, AC_PAR_AMP_OUT_CAP)); in amp_out_caps_show()
237 static ssize_t power_caps_show(struct hdac_device *codec, hda_nid_t nid, in power_caps_show() argument
240 if (nid != codec->afg && !(get_wcaps(codec, nid) & AC_WCAP_POWER)) in power_caps_show()
243 snd_hdac_read_parm(codec, nid, AC_PAR_POWER_STATE)); in power_caps_show()
246 static ssize_t gpio_caps_show(struct hdac_device *codec, hda_nid_t nid, in gpio_caps_show() argument
250 snd_hdac_read_parm(codec, nid, AC_PAR_GPIO_CAP)); in gpio_caps_show()
253 static ssize_t connections_show(struct hdac_device *codec, hda_nid_t nid, in connections_show() argument
260 nconns = snd_hdac_get_connections(codec, nid, list, ARRAY_SIZE(list)); in connections_show()
320 static void widget_tree_free(struct hdac_device *codec) in widget_tree_free() argument
322 struct hdac_widget_tree *tree = codec->widgets; in widget_tree_free()
335 codec->widgets = NULL; in widget_tree_free()
361 static int widget_tree_create(struct hdac_device *codec) in widget_tree_create() argument
367 tree = codec->widgets = kzalloc(sizeof(*tree), GFP_KERNEL); in widget_tree_create()
371 tree->root = kobject_create_and_add("widgets", &codec->dev.kobj); in widget_tree_create()
375 tree->nodes = kcalloc(codec->num_nodes + 1, sizeof(*tree->nodes), in widget_tree_create()
380 for (i = 0, nid = codec->start_nid; i < codec->num_nodes; i++, nid++) { in widget_tree_create()
387 if (codec->afg) { in widget_tree_create()
388 err = add_widget_node(tree->root, codec->afg, in widget_tree_create()
398 /* call with codec->widget_lock held */
399 int hda_widget_sysfs_init(struct hdac_device *codec) in hda_widget_sysfs_init() argument
403 if (codec->widgets) in hda_widget_sysfs_init()
406 err = widget_tree_create(codec); in hda_widget_sysfs_init()
408 widget_tree_free(codec); in hda_widget_sysfs_init()
415 /* call with codec->widget_lock held */
416 void hda_widget_sysfs_exit(struct hdac_device *codec) in hda_widget_sysfs_exit() argument
418 widget_tree_free(codec); in hda_widget_sysfs_exit()
421 /* call with codec->widget_lock held */
422 int hda_widget_sysfs_reinit(struct hdac_device *codec, in hda_widget_sysfs_reinit() argument
430 if (!codec->widgets) in hda_widget_sysfs_reinit()
433 tree = kmemdup(codec->widgets, sizeof(*tree), GFP_KERNEL); in hda_widget_sysfs_reinit()
444 for (i = 0, nid = codec->start_nid; i < codec->num_nodes; i++, nid++) { in hda_widget_sysfs_reinit()
446 free_widget_node(codec->widgets->nodes[i], in hda_widget_sysfs_reinit()
452 if (nid < codec->start_nid || nid >= codec->end_nid) in hda_widget_sysfs_reinit()
457 codec->widgets->nodes[nid - codec->start_nid]; in hda_widget_sysfs_reinit()
461 kfree(codec->widgets->nodes); in hda_widget_sysfs_reinit()
462 kfree(codec->widgets); in hda_widget_sysfs_reinit()
463 codec->widgets = tree; in hda_widget_sysfs_reinit()