Lines Matching refs:ctrl
45 audio_control_freenames(audio_ctrl_t *ctrl) in audio_control_freenames() argument
49 if (ctrl->ctrl_name != NULL) in audio_control_freenames()
50 strfree((char *)ctrl->ctrl_name); in audio_control_freenames()
51 ctrl->ctrl_name = NULL; in audio_control_freenames()
54 if (ctrl->ctrl_enum[indx] != NULL) { in audio_control_freenames()
55 strfree((char *)ctrl->ctrl_enum[indx]); in audio_control_freenames()
56 ctrl->ctrl_enum[indx] = NULL; in audio_control_freenames()
86 audio_ctrl_t *ctrl; in audio_dev_add_control() local
115 ctrl = auclnt_find_control(d, name); in audio_dev_add_control()
117 if (ctrl == NULL) { in audio_dev_add_control()
119 ctrl = kmem_zalloc(sizeof (*ctrl), KM_SLEEP); in audio_dev_add_control()
142 list_remove(&d->d_controls, ctrl); in audio_dev_add_control()
145 audio_control_freenames(ctrl); in audio_dev_add_control()
146 ctrl->ctrl_read_fn = NULL; in audio_dev_add_control()
147 ctrl->ctrl_write_fn = NULL; in audio_dev_add_control()
148 ctrl->ctrl_arg = NULL; in audio_dev_add_control()
149 ctrl->ctrl_dev = NULL; in audio_dev_add_control()
151 new_desc = &ctrl->ctrl_des; in audio_dev_add_control()
187 ctrl->ctrl_dev = d; in audio_dev_add_control()
190 ctrl->ctrl_read_fn = read_fn; in audio_dev_add_control()
191 ctrl->ctrl_arg = arg; in audio_dev_add_control()
195 ctrl->ctrl_write_fn = write_fn; in audio_dev_add_control()
196 ctrl->ctrl_arg = arg; in audio_dev_add_control()
200 list_insert_tail(&d->d_controls, ctrl); in audio_dev_add_control()
203 return (ctrl); in audio_dev_add_control()
207 if (ctrl) { in audio_dev_add_control()
208 audio_control_freenames(ctrl); in audio_dev_add_control()
209 kmem_free(ctrl, sizeof (*ctrl)); in audio_dev_add_control()
220 audio_dev_del_control(audio_ctrl_t *ctrl) in audio_dev_del_control() argument
225 ASSERT(ctrl); in audio_dev_del_control()
226 d = ctrl->ctrl_dev; in audio_dev_del_control()
230 list_remove(&d->d_controls, ctrl); in audio_dev_del_control()
233 audio_control_freenames(ctrl); in audio_dev_del_control()
234 kmem_free(ctrl, sizeof (*ctrl)); in audio_dev_del_control()
283 audio_control_read(audio_ctrl_t *ctrl, uint64_t *value) in audio_control_read() argument
285 audio_dev_t *d = ctrl->ctrl_dev; in audio_control_read()
296 if (!(ctrl->ctrl_flags & AUDIO_CTRL_FLAG_READABLE)) { in audio_control_read()
301 ASSERT(ctrl->ctrl_read_fn); in audio_control_read()
303 ret = ctrl->ctrl_read_fn(ctrl->ctrl_arg, &my_value); in audio_control_read()
324 audio_control_write(audio_ctrl_t *ctrl, uint64_t value) in audio_control_write() argument
327 audio_dev_t *d = ctrl->ctrl_dev; in audio_control_write()
334 if (!(ctrl->ctrl_flags & AUDIO_CTRL_FLAG_WRITEABLE)) { in audio_control_write()
339 ASSERT(ctrl->ctrl_write_fn); in audio_control_write()
341 ret = ctrl->ctrl_write_fn(ctrl->ctrl_arg, value); in audio_control_write()
343 ctrl->ctrl_saved = value; in audio_control_write()
344 ctrl->ctrl_saved_ok = B_TRUE; in audio_control_write()
361 audio_ctrl_t *ctrl; in auimpl_save_controls() local
368 for (ctrl = list_head(l); ctrl; ctrl = list_next(l, ctrl)) { in auimpl_save_controls()
369 if ((!(ctrl->ctrl_flags & AUDIO_CTRL_FLAG_WRITEABLE)) || in auimpl_save_controls()
370 (!(ctrl->ctrl_flags & AUDIO_CTRL_FLAG_READABLE))) { in auimpl_save_controls()
373 ret = ctrl->ctrl_read_fn(ctrl->ctrl_arg, &ctrl->ctrl_saved); in auimpl_save_controls()
377 ctrl->ctrl_name); in auimpl_save_controls()
380 ctrl->ctrl_saved_ok = B_TRUE; in auimpl_save_controls()
389 audio_ctrl_t *ctrl; in auimpl_restore_controls() local
397 for (ctrl = list_head(l); ctrl; ctrl = list_next(l, ctrl)) { in auimpl_restore_controls()
398 if (!ctrl->ctrl_saved_ok) { in auimpl_restore_controls()
401 ret = ctrl->ctrl_write_fn(ctrl->ctrl_arg, ctrl->ctrl_saved); in auimpl_restore_controls()
405 ctrl->ctrl_name); in auimpl_restore_controls()