Lines Matching refs:d

56 	audio_dev_t *d;  in audio_dev_alloc()  local
76 if ((d = kmem_zalloc(sizeof (*d), KM_NOSLEEP)) == NULL) { in audio_dev_alloc()
80 d->d_dip = dip; in audio_dev_alloc()
81 d->d_number = -1; in audio_dev_alloc()
82 d->d_major = ddi_driver_major(dip); in audio_dev_alloc()
83 d->d_instance = instance; in audio_dev_alloc()
84 d->d_pcmvol = 100; in audio_dev_alloc()
85 mutex_init(&d->d_lock, NULL, MUTEX_DRIVER, NULL); in audio_dev_alloc()
86 cv_init(&d->d_cv, NULL, CV_DRIVER, NULL); in audio_dev_alloc()
87 mutex_init(&d->d_ctrl_lock, NULL, MUTEX_DRIVER, NULL); in audio_dev_alloc()
88 cv_init(&d->d_ctrl_cv, NULL, CV_DRIVER, NULL); in audio_dev_alloc()
89 list_create(&d->d_clients, sizeof (struct audio_client), in audio_dev_alloc()
91 list_create(&d->d_engines, sizeof (struct audio_engine), in audio_dev_alloc()
93 list_create(&d->d_controls, sizeof (struct audio_ctrl), in audio_dev_alloc()
95 list_create(&d->d_hwinfo, sizeof (struct audio_infostr), in audio_dev_alloc()
97 (void) snprintf(d->d_name, sizeof (d->d_name), "%s#%d", in audio_dev_alloc()
100 return (d); in audio_dev_alloc()
104 audio_dev_free(audio_dev_t *d) in audio_dev_free() argument
108 while ((isp = list_remove_head(&d->d_hwinfo)) != NULL) { in audio_dev_free()
111 if (d->d_pcmvol_ctrl != NULL) { in audio_dev_free()
112 audio_dev_del_control(d->d_pcmvol_ctrl); in audio_dev_free()
114 list_destroy(&d->d_hwinfo); in audio_dev_free()
115 list_destroy(&d->d_engines); in audio_dev_free()
116 list_destroy(&d->d_controls); in audio_dev_free()
117 list_destroy(&d->d_clients); in audio_dev_free()
118 mutex_destroy(&d->d_ctrl_lock); in audio_dev_free()
119 mutex_destroy(&d->d_lock); in audio_dev_free()
120 cv_destroy(&d->d_cv); in audio_dev_free()
121 cv_destroy(&d->d_ctrl_cv); in audio_dev_free()
122 kmem_free(d, sizeof (*d)); in audio_dev_free()
126 audio_dev_set_description(audio_dev_t *d, const char *desc) in audio_dev_set_description() argument
128 (void) strlcpy(d->d_desc, desc, sizeof (d->d_desc)); in audio_dev_set_description()
132 audio_dev_set_version(audio_dev_t *d, const char *vers) in audio_dev_set_version() argument
134 (void) strlcpy(d->d_vers, vers, sizeof (d->d_vers)); in audio_dev_set_version()
138 audio_dev_add_info(audio_dev_t *d, const char *info) in audio_dev_add_info() argument
145 audio_dev_warn(d, "unable to allocate information structure"); in audio_dev_add_info()
148 list_insert_tail(&d->d_hwinfo, isp); in audio_dev_add_info()
270 auimpl_dev_hold(audio_dev_t *d) in auimpl_dev_hold() argument
273 mutex_enter(&d->d_lock); in auimpl_dev_hold()
274 d->d_refcnt++; in auimpl_dev_hold()
275 mutex_exit(&d->d_lock); in auimpl_dev_hold()
281 audio_dev_t *d; in auimpl_dev_hold_by_devt() local
291 for (d = list_head(l); d; d = list_next(l, d)) { in auimpl_dev_hold_by_devt()
292 if ((d->d_major == major) && (d->d_instance == instance)) { in auimpl_dev_hold_by_devt()
293 auimpl_dev_hold(d); in auimpl_dev_hold_by_devt()
299 return (d); in auimpl_dev_hold_by_devt()
305 audio_dev_t *d; in auimpl_dev_hold_by_index() local
310 for (d = list_head(l); d; d = list_next(l, d)) { in auimpl_dev_hold_by_index()
311 if (d->d_index == index) { in auimpl_dev_hold_by_index()
312 auimpl_dev_hold(d); in auimpl_dev_hold_by_index()
318 return (d); in auimpl_dev_hold_by_index()
322 auimpl_dev_release(audio_dev_t *d) in auimpl_dev_release() argument
324 mutex_enter(&d->d_lock); in auimpl_dev_release()
325 d->d_refcnt--; in auimpl_dev_release()
326 mutex_exit(&d->d_lock); in auimpl_dev_release()
373 audio_dev_t *d = sp->s_client->c_dev; in auimpl_engine_setup() local
386 mutex_enter(&d->d_lock); in auimpl_engine_setup()
416 list = &d->d_engines; in auimpl_engine_setup()
420 while (d->d_suspended) { in auimpl_engine_setup()
421 cv_wait(&d->d_ctrl_cv, &d->d_lock); in auimpl_engine_setup()
619 if (cv_wait_sig(&d->d_cv, &d->d_lock) == 0) { in auimpl_engine_setup()
620 mutex_exit(&d->d_lock); in auimpl_engine_setup()
628 mutex_exit(&d->d_lock); in auimpl_engine_setup()
648 mutex_exit(&d->d_lock); in auimpl_engine_setup()
727 audio_dev_warn(d, "bad format"); in auimpl_engine_setup()
734 audio_dev_warn(d, "invalid fragment configration"); in auimpl_engine_setup()
742 audio_dev_warn(d, "bad engine channels or rate"); in auimpl_engine_setup()
748 audio_dev_warn(d, "improper engine configuration"); in auimpl_engine_setup()
830 mutex_exit(&d->d_lock); in auimpl_engine_setup()
839 audio_dev_t *d; in auimpl_engine_close() local
845 d = e->e_dev; in auimpl_engine_close()
848 mutex_enter(&d->d_lock); in auimpl_engine_close()
849 while (d->d_suspended) { in auimpl_engine_close()
850 cv_wait(&d->d_ctrl_cv, &d->d_lock); in auimpl_engine_close()
868 cv_broadcast(&d->d_cv); in auimpl_engine_close()
869 mutex_exit(&d->d_lock); in auimpl_engine_close()
873 audio_dev_register(audio_dev_t *d) in audio_dev_register() argument
884 (void) ddi_prop_update_int(DDI_DEV_T_NONE, d->d_dip, in audio_dev_register()
893 if (d->d_flags & DEV_SNDSTAT_CAP) { in audio_dev_register()
898 d->d_index = start; in audio_dev_register()
906 if (srch->d_index > d->d_index) { in audio_dev_register()
910 d->d_index++; in audio_dev_register()
917 list_insert_before(l, srch, d); in audio_dev_register()
922 if (srch->d_number >= d->d_number) { in audio_dev_register()
926 list_insert_before(l, srch, d); in audio_dev_register()
930 if (auimpl_create_minors(d) != 0) { in audio_dev_register()
932 auimpl_remove_minors(d); in audio_dev_register()
933 list_remove(&auimpl_devs_by_index, d); in audio_dev_register()
934 list_remove(&auimpl_devs_by_number, d); in audio_dev_register()
943 audio_dev_unregister(audio_dev_t *d) in audio_dev_unregister() argument
947 mutex_enter(&d->d_lock); in audio_dev_unregister()
949 if (d->d_refcnt) { in audio_dev_unregister()
950 mutex_exit(&d->d_lock); in audio_dev_unregister()
954 auimpl_remove_minors(d); in audio_dev_unregister()
955 list_remove(&auimpl_devs_by_index, d); in audio_dev_unregister()
956 list_remove(&auimpl_devs_by_number, d); in audio_dev_unregister()
957 mutex_exit(&d->d_lock); in audio_dev_unregister()
999 auimpl_engine_ksinit(audio_dev_t *d, audio_engine_t *e) in auimpl_engine_ksinit() argument
1006 e->e_ksp = kstat_create(ddi_driver_name(d->d_dip), d->d_instance, in auimpl_engine_ksinit()
1011 audio_dev_warn(d, "unable to initialize kstats"); in auimpl_engine_ksinit()
1046 audio_dev_add_engine(audio_dev_t *d, audio_engine_t *e) in audio_dev_add_engine() argument
1048 mutex_enter(&d->d_lock); in audio_dev_add_engine()
1050 e->e_num = d->d_engno++; in audio_dev_add_engine()
1052 auimpl_engine_ksinit(d, e); in audio_dev_add_engine()
1055 if ((e->e_flags & ENGINE_OUTPUT_CAP) && (d->d_flags & DEV_INPUT_CAP)) { in audio_dev_add_engine()
1056 d->d_flags |= DEV_DUPLEX_CAP; in audio_dev_add_engine()
1058 if ((e->e_flags & ENGINE_INPUT_CAP) && (d->d_flags & DEV_OUTPUT_CAP)) { in audio_dev_add_engine()
1059 d->d_flags |= DEV_DUPLEX_CAP; in audio_dev_add_engine()
1063 d->d_flags |= DEV_OUTPUT_CAP; in audio_dev_add_engine()
1066 d->d_flags |= DEV_INPUT_CAP; in audio_dev_add_engine()
1069 list_insert_tail(&d->d_engines, e); in audio_dev_add_engine()
1070 e->e_dev = d; in audio_dev_add_engine()
1071 mutex_exit(&d->d_lock); in audio_dev_add_engine()
1075 audio_dev_remove_engine(audio_dev_t *d, audio_engine_t *e) in audio_dev_remove_engine() argument
1077 mutex_enter(&d->d_lock); in audio_dev_remove_engine()
1078 list_remove(&d->d_engines, e); in audio_dev_remove_engine()
1083 mutex_exit(&d->d_lock); in audio_dev_remove_engine()
1090 auclnt_set_dev_number(audio_dev_t *d, int num) in auclnt_set_dev_number() argument
1097 d->d_number = num; in auclnt_set_dev_number()
1098 list_remove(l, d); in auclnt_set_dev_number()
1100 if (srch->d_number >= d->d_number) { in auclnt_set_dev_number()
1104 list_insert_before(l, srch, d); in auclnt_set_dev_number()
1112 audio_dev_t *d; in auclnt_walk_devs() local
1118 for (d = list_head(l); d; d = list_next(l, d)) { in auclnt_walk_devs()
1119 cont = walker(d, arg); in auclnt_walk_devs()
1129 audio_dev_t *d; in auclnt_walk_devs_by_number() local
1135 for (d = list_head(l); d; d = list_next(l, d)) { in auclnt_walk_devs_by_number()
1136 cont = walker(d, arg); in auclnt_walk_devs_by_number()
1144 auclnt_dev_walk_engines(audio_dev_t *d, in auclnt_dev_walk_engines() argument
1149 list_t *l = &d->d_engines; in auclnt_dev_walk_engines()
1151 mutex_enter(&d->d_lock); in auclnt_dev_walk_engines()
1157 mutex_exit(&d->d_lock); in auclnt_dev_walk_engines()
1257 auimpl_dev_suspend(audio_dev_t *d, void *dontcare) in auimpl_dev_suspend() argument
1264 mutex_enter(&d->d_lock); in auimpl_dev_suspend()
1265 mutex_enter(&d->d_ctrl_lock); in auimpl_dev_suspend()
1266 if (d->d_suspended) { in auimpl_dev_suspend()
1267 d->d_suspended++; in auimpl_dev_suspend()
1268 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_suspend()
1269 mutex_exit(&d->d_lock); in auimpl_dev_suspend()
1273 d->d_suspended++; in auimpl_dev_suspend()
1275 (void) auimpl_save_controls(d); in auimpl_dev_suspend()
1276 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_suspend()
1278 l = &d->d_engines; in auimpl_dev_suspend()
1284 mutex_exit(&d->d_lock); in auimpl_dev_suspend()
1290 auimpl_dev_resume(audio_dev_t *d, void *dontcare) in auimpl_dev_resume() argument
1297 mutex_enter(&d->d_lock); in auimpl_dev_resume()
1298 mutex_enter(&d->d_ctrl_lock); in auimpl_dev_resume()
1300 ASSERT(d->d_suspended); in auimpl_dev_resume()
1301 d->d_suspended--; in auimpl_dev_resume()
1302 if (d->d_suspended) { in auimpl_dev_resume()
1303 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_resume()
1304 mutex_exit(&d->d_lock); in auimpl_dev_resume()
1308 (void) auimpl_restore_controls(d); in auimpl_dev_resume()
1309 cv_broadcast(&d->d_ctrl_cv); in auimpl_dev_resume()
1310 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_resume()
1312 l = &d->d_engines; in auimpl_dev_resume()
1318 mutex_exit(&d->d_lock); in auimpl_dev_resume()
1343 audio_dev_suspend(audio_dev_t *d) in audio_dev_suspend() argument
1345 (void) auimpl_dev_suspend(d, NULL); in audio_dev_suspend()
1349 audio_dev_resume(audio_dev_t *d) in audio_dev_resume() argument
1351 (void) auimpl_dev_resume(d, NULL); in audio_dev_resume()