Lines Matching refs:d
55 audio_dev_t *d; in audio_dev_alloc() local
75 if ((d = kmem_zalloc(sizeof (*d), KM_NOSLEEP)) == NULL) { in audio_dev_alloc()
79 d->d_dip = dip; in audio_dev_alloc()
80 d->d_number = -1; in audio_dev_alloc()
81 d->d_major = ddi_driver_major(dip); in audio_dev_alloc()
82 d->d_instance = instance; in audio_dev_alloc()
83 d->d_pcmvol = 100; in audio_dev_alloc()
84 mutex_init(&d->d_lock, NULL, MUTEX_DRIVER, NULL); in audio_dev_alloc()
85 cv_init(&d->d_cv, NULL, CV_DRIVER, NULL); in audio_dev_alloc()
86 mutex_init(&d->d_ctrl_lock, NULL, MUTEX_DRIVER, NULL); in audio_dev_alloc()
87 cv_init(&d->d_ctrl_cv, NULL, CV_DRIVER, NULL); in audio_dev_alloc()
88 list_create(&d->d_clients, sizeof (struct audio_client), in audio_dev_alloc()
90 list_create(&d->d_engines, sizeof (struct audio_engine), in audio_dev_alloc()
92 list_create(&d->d_controls, sizeof (struct audio_ctrl), in audio_dev_alloc()
94 list_create(&d->d_hwinfo, sizeof (struct audio_infostr), in audio_dev_alloc()
96 (void) snprintf(d->d_name, sizeof (d->d_name), "%s#%d", in audio_dev_alloc()
99 return (d); in audio_dev_alloc()
103 audio_dev_free(audio_dev_t *d) in audio_dev_free() argument
107 while ((isp = list_remove_head(&d->d_hwinfo)) != NULL) { in audio_dev_free()
110 if (d->d_pcmvol_ctrl != NULL) { in audio_dev_free()
111 audio_dev_del_control(d->d_pcmvol_ctrl); in audio_dev_free()
113 list_destroy(&d->d_hwinfo); in audio_dev_free()
114 list_destroy(&d->d_engines); in audio_dev_free()
115 list_destroy(&d->d_controls); in audio_dev_free()
116 list_destroy(&d->d_clients); in audio_dev_free()
117 mutex_destroy(&d->d_ctrl_lock); in audio_dev_free()
118 mutex_destroy(&d->d_lock); in audio_dev_free()
119 cv_destroy(&d->d_cv); in audio_dev_free()
120 cv_destroy(&d->d_ctrl_cv); in audio_dev_free()
121 kmem_free(d, sizeof (*d)); in audio_dev_free()
125 audio_dev_set_description(audio_dev_t *d, const char *desc) in audio_dev_set_description() argument
127 (void) strlcpy(d->d_desc, desc, sizeof (d->d_desc)); in audio_dev_set_description()
131 audio_dev_set_version(audio_dev_t *d, const char *vers) in audio_dev_set_version() argument
133 (void) strlcpy(d->d_vers, vers, sizeof (d->d_vers)); in audio_dev_set_version()
137 audio_dev_add_info(audio_dev_t *d, const char *info) in audio_dev_add_info() argument
144 audio_dev_warn(d, "unable to allocate information structure"); in audio_dev_add_info()
147 list_insert_tail(&d->d_hwinfo, isp); in audio_dev_add_info()
269 auimpl_dev_hold(audio_dev_t *d) in auimpl_dev_hold() argument
272 mutex_enter(&d->d_lock); in auimpl_dev_hold()
273 d->d_refcnt++; in auimpl_dev_hold()
274 mutex_exit(&d->d_lock); in auimpl_dev_hold()
280 audio_dev_t *d; in auimpl_dev_hold_by_devt() local
290 for (d = list_head(l); d; d = list_next(l, d)) { in auimpl_dev_hold_by_devt()
291 if ((d->d_major == major) && (d->d_instance == instance)) { in auimpl_dev_hold_by_devt()
292 auimpl_dev_hold(d); in auimpl_dev_hold_by_devt()
298 return (d); in auimpl_dev_hold_by_devt()
304 audio_dev_t *d; in auimpl_dev_hold_by_index() local
309 for (d = list_head(l); d; d = list_next(l, d)) { in auimpl_dev_hold_by_index()
310 if (d->d_index == index) { in auimpl_dev_hold_by_index()
311 auimpl_dev_hold(d); in auimpl_dev_hold_by_index()
317 return (d); in auimpl_dev_hold_by_index()
321 auimpl_dev_release(audio_dev_t *d) in auimpl_dev_release() argument
323 mutex_enter(&d->d_lock); in auimpl_dev_release()
324 d->d_refcnt--; in auimpl_dev_release()
325 mutex_exit(&d->d_lock); in auimpl_dev_release()
372 audio_dev_t *d = sp->s_client->c_dev; in auimpl_engine_setup() local
385 mutex_enter(&d->d_lock); in auimpl_engine_setup()
415 list = &d->d_engines; in auimpl_engine_setup()
419 while (d->d_suspended) { in auimpl_engine_setup()
420 cv_wait(&d->d_ctrl_cv, &d->d_lock); in auimpl_engine_setup()
618 if (cv_wait_sig(&d->d_cv, &d->d_lock) == 0) { in auimpl_engine_setup()
619 mutex_exit(&d->d_lock); in auimpl_engine_setup()
627 mutex_exit(&d->d_lock); in auimpl_engine_setup()
647 mutex_exit(&d->d_lock); in auimpl_engine_setup()
726 audio_dev_warn(d, "bad format"); in auimpl_engine_setup()
733 audio_dev_warn(d, "invalid fragment configration"); in auimpl_engine_setup()
741 audio_dev_warn(d, "bad engine channels or rate"); in auimpl_engine_setup()
747 audio_dev_warn(d, "improper engine configuration"); in auimpl_engine_setup()
829 mutex_exit(&d->d_lock); in auimpl_engine_setup()
838 audio_dev_t *d; in auimpl_engine_close() local
843 d = e->e_dev; in auimpl_engine_close()
845 mutex_enter(&d->d_lock); in auimpl_engine_close()
846 while (d->d_suspended) { in auimpl_engine_close()
847 cv_wait(&d->d_ctrl_cv, &d->d_lock); in auimpl_engine_close()
862 cv_broadcast(&d->d_cv); in auimpl_engine_close()
863 mutex_exit(&d->d_lock); in auimpl_engine_close()
867 audio_dev_register(audio_dev_t *d) in audio_dev_register() argument
878 (void) ddi_prop_update_int(DDI_DEV_T_NONE, d->d_dip, in audio_dev_register()
887 if (d->d_flags & DEV_SNDSTAT_CAP) { in audio_dev_register()
892 d->d_index = start; in audio_dev_register()
900 if (srch->d_index > d->d_index) { in audio_dev_register()
904 d->d_index++; in audio_dev_register()
911 list_insert_before(l, srch, d); in audio_dev_register()
916 if (srch->d_number >= d->d_number) { in audio_dev_register()
920 list_insert_before(l, srch, d); in audio_dev_register()
924 if (auimpl_create_minors(d) != 0) { in audio_dev_register()
926 auimpl_remove_minors(d); in audio_dev_register()
927 list_remove(&auimpl_devs_by_index, d); in audio_dev_register()
928 list_remove(&auimpl_devs_by_number, d); in audio_dev_register()
937 audio_dev_unregister(audio_dev_t *d) in audio_dev_unregister() argument
941 mutex_enter(&d->d_lock); in audio_dev_unregister()
943 if (d->d_refcnt) { in audio_dev_unregister()
944 mutex_exit(&d->d_lock); in audio_dev_unregister()
948 auimpl_remove_minors(d); in audio_dev_unregister()
949 list_remove(&auimpl_devs_by_index, d); in audio_dev_unregister()
950 list_remove(&auimpl_devs_by_number, d); in audio_dev_unregister()
951 mutex_exit(&d->d_lock); in audio_dev_unregister()
993 auimpl_engine_ksinit(audio_dev_t *d, audio_engine_t *e) in auimpl_engine_ksinit() argument
1000 e->e_ksp = kstat_create(ddi_driver_name(d->d_dip), d->d_instance, in auimpl_engine_ksinit()
1005 audio_dev_warn(d, "unable to initialize kstats"); in auimpl_engine_ksinit()
1040 audio_dev_add_engine(audio_dev_t *d, audio_engine_t *e) in audio_dev_add_engine() argument
1042 mutex_enter(&d->d_lock); in audio_dev_add_engine()
1044 e->e_num = d->d_engno++; in audio_dev_add_engine()
1046 auimpl_engine_ksinit(d, e); in audio_dev_add_engine()
1049 if ((e->e_flags & ENGINE_OUTPUT_CAP) && (d->d_flags & DEV_INPUT_CAP)) { in audio_dev_add_engine()
1050 d->d_flags |= DEV_DUPLEX_CAP; in audio_dev_add_engine()
1052 if ((e->e_flags & ENGINE_INPUT_CAP) && (d->d_flags & DEV_OUTPUT_CAP)) { in audio_dev_add_engine()
1053 d->d_flags |= DEV_DUPLEX_CAP; in audio_dev_add_engine()
1057 d->d_flags |= DEV_OUTPUT_CAP; in audio_dev_add_engine()
1060 d->d_flags |= DEV_INPUT_CAP; in audio_dev_add_engine()
1063 list_insert_tail(&d->d_engines, e); in audio_dev_add_engine()
1064 e->e_dev = d; in audio_dev_add_engine()
1065 mutex_exit(&d->d_lock); in audio_dev_add_engine()
1069 audio_dev_remove_engine(audio_dev_t *d, audio_engine_t *e) in audio_dev_remove_engine() argument
1071 mutex_enter(&d->d_lock); in audio_dev_remove_engine()
1072 list_remove(&d->d_engines, e); in audio_dev_remove_engine()
1077 mutex_exit(&d->d_lock); in audio_dev_remove_engine()
1084 auclnt_set_dev_number(audio_dev_t *d, int num) in auclnt_set_dev_number() argument
1091 d->d_number = num; in auclnt_set_dev_number()
1092 list_remove(l, d); in auclnt_set_dev_number()
1094 if (srch->d_number >= d->d_number) { in auclnt_set_dev_number()
1098 list_insert_before(l, srch, d); in auclnt_set_dev_number()
1106 audio_dev_t *d; in auclnt_walk_devs() local
1112 for (d = list_head(l); d; d = list_next(l, d)) { in auclnt_walk_devs()
1113 cont = walker(d, arg); in auclnt_walk_devs()
1123 audio_dev_t *d; in auclnt_walk_devs_by_number() local
1129 for (d = list_head(l); d; d = list_next(l, d)) { in auclnt_walk_devs_by_number()
1130 cont = walker(d, arg); in auclnt_walk_devs_by_number()
1138 auclnt_dev_walk_engines(audio_dev_t *d, in auclnt_dev_walk_engines() argument
1143 list_t *l = &d->d_engines; in auclnt_dev_walk_engines()
1145 mutex_enter(&d->d_lock); in auclnt_dev_walk_engines()
1151 mutex_exit(&d->d_lock); in auclnt_dev_walk_engines()
1251 auimpl_dev_suspend(audio_dev_t *d, void *dontcare) in auimpl_dev_suspend() argument
1258 mutex_enter(&d->d_lock); in auimpl_dev_suspend()
1259 mutex_enter(&d->d_ctrl_lock); in auimpl_dev_suspend()
1260 if (d->d_suspended) { in auimpl_dev_suspend()
1261 d->d_suspended++; in auimpl_dev_suspend()
1262 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_suspend()
1263 mutex_exit(&d->d_lock); in auimpl_dev_suspend()
1267 d->d_suspended++; in auimpl_dev_suspend()
1269 (void) auimpl_save_controls(d); in auimpl_dev_suspend()
1270 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_suspend()
1272 l = &d->d_engines; in auimpl_dev_suspend()
1278 mutex_exit(&d->d_lock); in auimpl_dev_suspend()
1284 auimpl_dev_resume(audio_dev_t *d, void *dontcare) in auimpl_dev_resume() argument
1291 mutex_enter(&d->d_lock); in auimpl_dev_resume()
1292 mutex_enter(&d->d_ctrl_lock); in auimpl_dev_resume()
1294 ASSERT(d->d_suspended); in auimpl_dev_resume()
1295 d->d_suspended--; in auimpl_dev_resume()
1296 if (d->d_suspended) { in auimpl_dev_resume()
1297 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_resume()
1298 mutex_exit(&d->d_lock); in auimpl_dev_resume()
1302 (void) auimpl_restore_controls(d); in auimpl_dev_resume()
1303 cv_broadcast(&d->d_ctrl_cv); in auimpl_dev_resume()
1304 mutex_exit(&d->d_ctrl_lock); in auimpl_dev_resume()
1306 l = &d->d_engines; in auimpl_dev_resume()
1312 mutex_exit(&d->d_lock); in auimpl_dev_resume()
1337 audio_dev_suspend(audio_dev_t *d) in audio_dev_suspend() argument
1339 (void) auimpl_dev_suspend(d, NULL); in audio_dev_suspend()
1343 audio_dev_resume(audio_dev_t *d) in audio_dev_resume() argument
1345 (void) auimpl_dev_resume(d, NULL); in audio_dev_resume()