Lines Matching refs:dstatep

228 	struct dstate *dstatep;  in gen_attach()  local
264 dstatep = ddi_get_soft_state(dstates, instance); in gen_attach()
265 dstatep->dip = devi; in gen_attach()
266 mutex_init(&dstatep->lock, NULL, MUTEX_DRIVER, NULL); in gen_attach()
295 rval = gen_create_minor_nodes(devi, dstatep); in gen_attach()
310 gen_event_cb, NULL, &(dstatep->gen_cb_ids[0])); in gen_attach()
316 gen_event_cb, NULL, &(dstatep->gen_cb_ids[1])); in gen_attach()
322 gen_event_cb, NULL, &(dstatep->gen_cb_ids[2])); in gen_attach()
328 gen_event_cb, NULL, &(dstatep->gen_cb_ids[3])); in gen_attach()
335 NULL, &(dstatep->gen_cb_ids[4])); in gen_attach()
342 NULL, &(dstatep->gen_cb_ids[5])); in gen_attach()
348 mutex_enter(&dstatep->lock); in gen_attach()
349 dstatep->flag &= ~OPEN_FLAG; in gen_attach()
350 dstatep->flag &= ~PWR_HAS_CHANGED_ON_RESUME_FLAG; in gen_attach()
351 dstatep->flag &= ~FAIL_SUSPEND_FLAG; in gen_attach()
352 dstatep->flag &= ~PUP_WITH_PWR_HAS_CHANGED_FLAG; in gen_attach()
353 dstatep->flag |= LOWER_POWER_FLAG; in gen_attach()
354 dstatep->flag &= ~NO_INVOL_FLAG; in gen_attach()
355 dstatep->flag |= PM_SUPPORTED_FLAG; in gen_attach()
356 dstatep->busy[0] = 0; in gen_attach()
357 dstatep->busy[1] = 0; in gen_attach()
358 dstatep->level[0] = -1; in gen_attach()
359 dstatep->level[1] = -1; in gen_attach()
360 mutex_exit(&dstatep->lock); in gen_attach()
365 dstatep->nodename = ddi_node_name(devi); in gen_attach()
371 if (ddi_prop_exists(DDI_DEV_T_ANY, dstatep->dip, in gen_attach()
378 mutex_enter(&dstatep->lock); in gen_attach()
379 dstatep->flag |= NO_INVOL_FLAG; in gen_attach()
380 mutex_exit(&dstatep->lock); in gen_attach()
387 if (ddi_prop_exists(DDI_DEV_T_ANY, dstatep->dip, in gen_attach()
413 mutex_enter(&dstatep->lock); in gen_attach()
414 dstatep->flag &= ~PM_SUPPORTED_FLAG; in gen_attach()
415 mutex_exit(&dstatep->lock); in gen_attach()
421 if (dstatep->flag & PM_SUPPORTED_FLAG) { in gen_attach()
422 if (ddi_prop_exists(DDI_DEV_T_ANY, dstatep->dip, in gen_attach()
458 mutex_enter(&dstatep->lock); in gen_attach()
459 i_init = (dstatep->flag & PM_SUPPORTED_FLAG) ? 0 : COMPONENTS; in gen_attach()
460 mutex_exit(&dstatep->lock); in gen_attach()
466 if (pm_raise_power(dstatep->dip, i, maxpwr[i]) != in gen_attach()
472 dstatep->level[i] = -1; in gen_attach()
488 dstatep = ddi_get_soft_state(dstates, ddi_get_instance(devi)); in gen_attach()
489 if (dstatep == NULL) { in gen_attach()
499 mutex_enter(&dstatep->lock); in gen_attach()
500 i_init = (dstatep->flag & PM_SUPPORTED_FLAG) ? 0 : COMPONENTS; in gen_attach()
501 mutex_exit(&dstatep->lock); in gen_attach()
502 if (dstatep->flag & PWR_HAS_CHANGED_ON_RESUME_FLAG) { in gen_attach()
508 mutex_enter(&dstatep->lock); in gen_attach()
509 level_tmp = dstatep->level[i]; in gen_attach()
510 dstatep->level[i] = maxpwr[i]; in gen_attach()
511 if (pm_power_has_changed(dstatep->dip, i, in gen_attach()
520 dstatep->level[i] = level_tmp; in gen_attach()
522 mutex_exit(&dstatep->lock); in gen_attach()
534 if (pm_raise_power(dstatep->dip, i, maxpwr[i]) in gen_attach()
558 struct dstate *dstatep; in gen_detach() local
577 dstatep = ddi_get_soft_state(dstates, instance); in gen_detach()
578 if (dstatep == NULL) { in gen_detach()
597 if (dstatep->flag & PM_SUPPORTED_FLAG) { in gen_detach()
602 if (pm_lower_power(dstatep->dip, 1, MINPWR) in gen_detach()
616 mutex_enter(&dstatep->lock); in gen_detach()
617 level_tmp = dstatep->level[1]; in gen_detach()
618 dstatep->level[1] = MINPWR; in gen_detach()
619 if (dstatep->level[1] != MINPWR) { in gen_detach()
624 if (pm_power_has_changed(dstatep->dip, in gen_detach()
632 dstatep->level[1] = level_tmp; in gen_detach()
633 mutex_exit(&dstatep->lock); in gen_detach()
638 mutex_exit(&dstatep->lock); in gen_detach()
648 if (!(dstatep->flag & LOWER_POWER_FLAG) && in gen_detach()
649 dstatep->flag & PM_SUPPORTED_FLAG) { in gen_detach()
654 } else if (dstatep->flag & PM_SUPPORTED_FLAG) { in gen_detach()
659 if (pm_lower_power(dstatep->dip, 0, MINPWR) in gen_detach()
673 mutex_enter(&dstatep->lock); in gen_detach()
674 level_tmp = dstatep->level[0]; in gen_detach()
675 dstatep->level[0] = MINPWR; in gen_detach()
676 if (dstatep->level[0] != MINPWR) { in gen_detach()
681 if (pm_power_has_changed(dstatep->dip, in gen_detach()
689 dstatep->level[0] = level_tmp; in gen_detach()
690 mutex_exit(&dstatep->lock); in gen_detach()
695 mutex_exit(&dstatep->lock); in gen_detach()
704 if (dstatep->gen_cb_ids[i]) { in gen_detach()
705 (void) ddi_remove_event_handler(dstatep->gen_cb_ids[i]); in gen_detach()
706 dstatep->gen_cb_ids[i] = NULL; in gen_detach()
712 if (dstatep->node_type) in gen_detach()
713 kmem_free(dstatep->node_type, in gen_detach()
714 strlen(dstatep->node_type) + 1); in gen_detach()
723 dstatep = ddi_get_soft_state(dstates, instance); in gen_detach()
724 if (dstatep == NULL) { in gen_detach()
733 mutex_enter(&dstatep->lock); in gen_detach()
734 if (dstatep->flag & FAIL_SUSPEND_FLAG) { in gen_detach()
739 dstatep->flag &= ~FAIL_SUSPEND_FLAG; in gen_detach()
744 mutex_exit(&dstatep->lock); in gen_detach()
753 if (dstatep->flag & NO_INVOL_FLAG && in gen_detach()
754 dstatep->flag & PM_SUPPORTED_FLAG) { in gen_detach()
759 rm_power = ddi_removing_power(dstatep->dip); in gen_detach()
790 mutex_enter(&dstatep->lock); in gen_detach()
791 if (dstatep->flag & PM_SUPPORTED_FLAG && in gen_detach()
792 !(dstatep->flag & NO_INVOL_FLAG)) { in gen_detach()
793 level_tmp = dstatep->level[0]; in gen_detach()
794 dstatep->level[0] = MINPWR; in gen_detach()
799 if (pm_power_has_changed(dstatep->dip, 0, MINPWR) in gen_detach()
805 dstatep->level[0] = level_tmp; in gen_detach()
806 mutex_exit(&dstatep->lock); in gen_detach()
811 mutex_exit(&dstatep->lock); in gen_detach()
843 struct dstate *dstatep; in gen_open() local
849 if ((dstatep = ddi_get_soft_state(dstates, in gen_open()
853 mutex_enter(&dstatep->lock); in gen_open()
854 dstatep->flag |= OPEN_FLAG; in gen_open()
855 mutex_exit(&dstatep->lock); in gen_open()
859 dstatep->nodename, MINOR_TO_INST(minor))); in gen_open()
868 struct dstate *dstatep; in gen_close() local
874 dstatep = ddi_get_soft_state(dstates, MINOR_TO_INST(minor)); in gen_close()
876 if (dstatep == NULL) in gen_close()
879 mutex_enter(&dstatep->lock); in gen_close()
880 dstatep->flag &= ~OPEN_FLAG; in gen_close()
881 mutex_exit(&dstatep->lock); in gen_close()
885 dstatep->nodename, MINOR_TO_INST(minor))); in gen_close()
894 struct dstate *dstatep; in gen_ioctl() local
906 dstatep = ddi_get_soft_state(dstates, instance); in gen_ioctl()
907 nodename = dstatep->nodename; in gen_ioctl()
909 if (dstatep == NULL) in gen_ioctl()
920 if (ddi_get_eventcookie(dstatep->dip, DDI_DEVI_FAULT_EVENT, in gen_ioctl()
924 return (ndi_post_event(dstatep->dip, dstatep->dip, cookie, in gen_ioctl()
928 if (ddi_get_eventcookie(dstatep->dip, "pshot_dev_offline", in gen_ioctl()
930 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
934 if (ddi_get_eventcookie(dstatep->dip, "pshot_dev_reset", in gen_ioctl()
936 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
940 if (ddi_get_eventcookie(dstatep->dip, "pshot_bus_reset", in gen_ioctl()
942 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
946 if (ddi_get_eventcookie(dstatep->dip, "pshot_bus_quiesce", in gen_ioctl()
948 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
952 if (ddi_get_eventcookie(dstatep->dip, "pshot_bus_unquiesce", in gen_ioctl()
954 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
958 if (ddi_get_eventcookie(dstatep->dip, "pshot_bus_test_post", in gen_ioctl()
960 (void) ndi_post_event(dstatep->dip, dstatep->dip, in gen_ioctl()
970 mutex_enter(&dstatep->lock); in gen_ioctl()
971 dstatep->flag |= PWR_HAS_CHANGED_ON_RESUME_FLAG; in gen_ioctl()
972 mutex_exit(&dstatep->lock); in gen_ioctl()
983 mutex_enter(&dstatep->lock); in gen_ioctl()
984 dstatep->flag |= FAIL_SUSPEND_FLAG; in gen_ioctl()
985 mutex_exit(&dstatep->lock); in gen_ioctl()
999 mutex_enter(&dstatep->lock); in gen_ioctl()
1000 dstatep->flag |= PUP_WITH_PWR_HAS_CHANGED_FLAG; in gen_ioctl()
1001 mutex_exit(&dstatep->lock); in gen_ioctl()
1012 mutex_enter(&dstatep->lock); in gen_ioctl()
1013 ++dstatep->busy[0]; in gen_ioctl()
1015 " busy=%d", nodename, instance, dstatep->busy[0])); in gen_ioctl()
1016 mutex_exit(&dstatep->lock); in gen_ioctl()
1017 ret = pm_busy_component(dstatep->dip, 0); in gen_ioctl()
1026 mutex_enter(&dstatep->lock); in gen_ioctl()
1027 state = dstatep->busy[0]; in gen_ioctl()
1038 mutex_exit(&dstatep->lock); in gen_ioctl()
1047 mutex_enter(&dstatep->lock); in gen_ioctl()
1048 if (dstatep->busy[0] > 0) { in gen_ioctl()
1049 --dstatep->busy[0]; in gen_ioctl()
1052 dstatep->busy[0])); in gen_ioctl()
1053 mutex_exit(&dstatep->lock); in gen_ioctl()
1054 ret = pm_idle_component(dstatep->dip, 0); in gen_ioctl()
1057 mutex_exit(&dstatep->lock); in gen_ioctl()
1078 if (pm_raise_power(dstatep->dip, 0, maxpwr[i]) in gen_ioctl()
1094 mutex_enter(&dstatep->lock); in gen_ioctl()
1095 level_tmp = dstatep->level[i]; in gen_ioctl()
1096 dstatep->level[i] = 0; in gen_ioctl()
1097 if (pm_power_has_changed(dstatep->dip, i, 0) in gen_ioctl()
1099 dstatep->level[i] = level_tmp; in gen_ioctl()
1102 mutex_exit(&dstatep->lock); in gen_ioctl()
1116 mutex_enter(&dstatep->lock); in gen_ioctl()
1117 level_tmp = dstatep->level[i]; in gen_ioctl()
1118 dstatep->level[i] = maxpwr[i]; in gen_ioctl()
1119 if (pm_power_has_changed(dstatep->dip, i, maxpwr[i]) in gen_ioctl()
1121 dstatep->level[i] = level_tmp; in gen_ioctl()
1124 mutex_exit(&dstatep->lock); in gen_ioctl()
1134 mutex_enter(&dstatep->lock); in gen_ioctl()
1135 state = (dstatep->flag & POWER_FLAG) ? 1 : 0; in gen_ioctl()
1144 dstatep->flag &= ~POWER_FLAG; in gen_ioctl()
1145 mutex_exit(&dstatep->lock); in gen_ioctl()
1152 mutex_enter(&dstatep->lock); in gen_ioctl()
1153 dstatep->flag &= ~LOWER_POWER_FLAG; in gen_ioctl()
1154 mutex_exit(&dstatep->lock); in gen_ioctl()
1184 struct dstate *dstatep; in gen_power() local
1192 dstatep = ddi_get_soft_state(dstates, instance); in gen_power()
1193 if (dstatep == NULL) { in gen_power()
1205 mutex_enter(&dstatep->lock); in gen_power()
1206 dstatep->level[cmpt] = level; in gen_power()
1207 mutex_exit(&dstatep->lock); in gen_power()
1208 } else if (level > dstatep->level[cmpt] && level != 0 && in gen_power()
1209 dstatep->level[0] != COMP_0_MAXPWR) { in gen_power()
1218 if (!(dstatep->flag & PUP_WITH_PWR_HAS_CHANGED_FLAG)) { in gen_power()
1235 mutex_enter(&dstatep->lock); in gen_power()
1236 dstatep->level[0] = COMP_0_MAXPWR; in gen_power()
1240 dstatep->level[cmpt] = level; in gen_power()
1241 mutex_exit(&dstatep->lock); in gen_power()
1250 mutex_enter(&dstatep->lock); in gen_power()
1251 level_tmp = dstatep->level[0]; in gen_power()
1252 dstatep->level[0] = COMP_0_MAXPWR; in gen_power()
1259 dstatep->level[0] = level_tmp; in gen_power()
1268 dstatep->level[cmpt] = level; in gen_power()
1270 mutex_exit(&dstatep->lock); in gen_power()
1273 mutex_enter(&dstatep->lock); in gen_power()
1274 dstatep->level[cmpt] = level; in gen_power()
1275 mutex_exit(&dstatep->lock); in gen_power()
1536 gen_create_minor_nodes(dev_info_t *devi, struct dstate *dstatep) in gen_create_minor_nodes() argument
1576 dstatep->node_type = kmem_alloc( in gen_create_minor_nodes()
1578 (void) strcpy(dstatep->node_type, node_type); in gen_create_minor_nodes()
1584 (INST_TO_MINOR(instance)), dstatep->node_type, NULL) != in gen_create_minor_nodes()
1586 if (dstatep->node_type) { in gen_create_minor_nodes()
1587 kmem_free(dstatep->node_type, in gen_create_minor_nodes()
1588 strlen(dstatep->node_type) + 1); in gen_create_minor_nodes()
1589 dstatep->node_type = NULL; in gen_create_minor_nodes()