Lines Matching defs:dip

64 extern int	is_pseudo_device(dev_info_t *dip);
69 static int dr_is_real_device(dev_info_t *dip);
72 static int dr_check_dip(dev_info_t *dip, void *arg, uint_t ref);
73 static int dr_resolve_devname(dev_info_t *dip, char *buffer,
171 dr_is_real_device(dev_info_t *dip)
177 if (ddi_get_driver(dip) == NULL)
180 if (DEVI(dip)->devi_pm_flags & (PMC_NEEDS_SR|PMC_PARENTAL_SR))
182 if (DEVI(dip)->devi_pm_flags & PMC_NO_SR)
188 rc = ddi_getlongprop(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, "reg",
237 dr_resolve_devname(dev_info_t *dip, char *buffer, char *alias)
244 if (dip == NULL)
247 if ((name = ddi_get_name(dip)) == NULL)
275 dr_check_dip(dev_info_t *dip, void *arg, uint_t ref)
281 if (dip == NULL)
284 if (!dr_is_real_device(dip))
287 dname = ddi_binding_name(dip);
302 if (dr_is_unsafe_major(major) && i_ddi_devi_attached(dip)) {
314 dr_check_unsafe_major(dev_info_t *dip, void *arg)
316 return (dr_check_dip(dip, arg, 0));
322 dr_check_devices(dev_info_t *dip, int *refcount, dr_handle_t *handle,
327 if (dip == NULL)
336 ASSERT(e_ddi_branch_held(dip));
337 (void) e_ddi_branch_referenced(dip, dr_check_dip, &bref);
341 * The "dip" argument's parent (if it exists) must be held busy.
344 dr_suspend_devices(dev_info_t *dip, dr_sr_handle_t *srh)
352 * If dip is the root node, it has no siblings and it is
353 * always held. If dip is not the root node, dr_suspend_devices()
356 for (; dip != NULL; dip = ddi_get_next_sibling(dip)) {
359 ndi_devi_enter(dip, &circ);
360 if (dr_suspend_devices(ddi_get_child(dip), srh)) {
361 ndi_devi_exit(dip, circ);
364 ndi_devi_exit(dip, circ);
366 if (!dr_is_real_device(dip))
370 if ((dname = ddi_binding_name(dip)) != NULL)
379 if (drmach_verify_sr(dip, 1)) {
385 if ((d_info = ddi_get_name_addr(dip)) == NULL)
389 if (dr_resolve_devname(dip, d_name, d_alias) == 0) {
401 if (devi_detach(dip, DDI_SUSPEND) != DDI_SUCCESS) {
408 ndi_hold_devi(dip);
409 srh->sr_failed_dip = dip;
426 dev_info_t *dip, *next, *last = NULL;
435 dip = start;
436 next = ddi_get_next_sibling(dip);
437 while (next != last && dip != srh->sr_failed_dip) {
438 dip = next;
439 next = ddi_get_next_sibling(dip);
441 if (dip == srh->sr_failed_dip) {
444 ndi_rele_devi(dip);
445 } else if (dr_is_real_device(dip) &&
448 if ((bn = ddi_binding_name(dip)) != NULL) {
454 !drmach_verify_sr(dip, 0)) {
458 d_info = ddi_get_name_addr(dip);
462 if (!dr_resolve_devname(dip, d_name, d_alias)) {
476 if (devi_attach(dip, DDI_RESUME) !=
502 ndi_devi_enter(dip, &circ);
503 dr_resume_devices(ddi_get_child(dip), srh);
504 ndi_devi_exit(dip, circ);
505 last = dip;
747 /* no parent dip to hold busy */