Lines Matching refs:pdip

255 i_ddi_alloc_node(dev_info_t *pdip, char *node_name, pnode_t nodeid,  in i_ddi_alloc_node()  argument
377 devi->devi_parent = DEVI(pdip); in i_ddi_alloc_node()
378 devi->devi_bus_ctl = DEVI(pdip); in i_ddi_alloc_node()
856 dev_info_t *pdip = ddi_get_parent(dip); in init_node() local
865 ASSERT(i_ddi_node_state(pdip) >= DS_PROBED); in init_node()
875 if ((DEVI(pdip)->devi_ops->devo_bus_ops == NULL) || in init_node()
876 (f = DEVI(pdip)->devi_ops->devo_bus_ops->bus_ctl) == NULL) { in init_node()
888 error = (*f)(pdip, pdip, DDI_CTLOPS_INITCHILD, dip, NULL); in init_node()
921 ndi_hold_devi(pdip); /* initial hold of parent */ in init_node()
927 if (find_duplicate_child(pdip, dip) != NULL) { in init_node()
933 ndi_rele_devi(pdip); /* release initial hold */ in init_node()
991 ndi_hold_devi(pdip); /* extra hold of parent */ in init_node()
998 ndi_rele_devi(pdip); /* release extra hold */ in init_node()
999 ndi_rele_devi(pdip); /* release initial hold */ in init_node()
1007 ndi_rele_devi(pdip); /* release initial hold */ in init_node()
1027 ndi_rele_devi(pdip); /* release initial hold */ in init_node()
1038 (void) i_ndi_make_spec_children(pdip, 0); in init_node()
1044 error = ddi_initchild(pdip, dip); in init_node()
1052 ndi_rele_devi(pdip); in init_node()
1083 dev_info_t *pdip; in uninit_node() local
1096 pdip = ddi_get_parent(dip); in uninit_node()
1097 ASSERT(pdip); in uninit_node()
1102 if (((ops = ddi_get_driver(pdip)) == NULL) || in uninit_node()
1120 error = (*f)(pdip, pdip, DDI_CTLOPS_UNINITCHILD, dip, (void *)NULL); in uninit_node()
1146 ndi_rele_devi(pdip); in uninit_node()
1802 ddi_add_child(dev_info_t *pdip, char *name, uint_t nodeid, uint_t unit) in ddi_add_child() argument
1808 dip = i_ddi_alloc_node(pdip, name, nodeid, (int)unit, NULL, KM_SLEEP); in ddi_add_child()
1810 ndi_devi_enter(pdip, &circ); in ddi_add_child()
1812 ndi_devi_exit(pdip, circ); in ddi_add_child()
2106 dev_info_t *pdip = ddi_get_parent(dip); in ndi_devi_bind_driver() local
2107 ASSERT(pdip); in ndi_devi_bind_driver()
2113 ndi_devi_enter(pdip, &circ); in ndi_devi_bind_driver()
2116 ndi_devi_exit(pdip, circ); in ndi_devi_bind_driver()
2276 find_duplicate_child(dev_info_t *pdip, dev_info_t *dip) in find_duplicate_child() argument
2283 dup = find_sibling(ddi_get_child(pdip), cname, caddr, in find_duplicate_child()
2300 ndi_devi_findchild_by_callback(dev_info_t *pdip, char *dname, char *ua, in ndi_devi_findchild_by_callback() argument
2305 ASSERT(DEVI_BUSY_OWNED(pdip)); in ndi_devi_findchild_by_callback()
2307 return (find_sibling(ddi_get_child(pdip), dname, ua, by, make_ua)); in ndi_devi_findchild_by_callback()
2315 find_child_by_name(dev_info_t *pdip, char *cname, char *caddr) in find_child_by_name() argument
2320 dip = find_sibling(ddi_get_child(pdip), cname, caddr, in find_child_by_name()
2325 return (find_sibling(ddi_get_child(pdip), cname, caddr, in find_child_by_name()
2334 find_child_by_driver(dev_info_t *pdip, char *cname, char *caddr) in find_child_by_driver() argument
2339 dip = find_sibling(ddi_get_child(pdip), cname, caddr, in find_child_by_driver()
2344 return (find_sibling(ddi_get_child(pdip), cname, caddr, in find_child_by_driver()
2361 find_child_by_addr(dev_info_t *pdip, char *caddr) in find_child_by_addr() argument
2370 dip = find_sibling(ddi_get_child(pdip), NULL, caddr, in find_child_by_addr()
2375 return (find_sibling(ddi_get_child(pdip), NULL, caddr, in find_child_by_addr()
2707 dev_info_t *pdip = ddi_get_parent(dip); in ndi_merge_wildcard_node() local
2720 ASSERT(DEVI_BUSY_OWNED(pdip)); in ndi_merge_wildcard_node()
2721 for (hwdip = ddi_get_child(pdip); hwdip; in ndi_merge_wildcard_node()
4070 dev_info_t *pdip; in should_implement_quiesce() local
4084 if (skip_pseudo && (pdip = ddi_get_parent(dip)) != NULL && in should_implement_quiesce()
4085 strncmp(ddi_binding_name(pdip), "pseudo", sizeof ("pseudo")) == 0) in should_implement_quiesce()
4514 init_spec_child(dev_info_t *pdip, struct hwc_spec *specp, uint_t flags) in init_spec_child() argument
4527 ddi_node_name(pdip), tmp); in init_spec_child()
4531 dip = i_ddi_alloc_node(pdip, node_name, (pnode_t)DEVI_PSEUDO_NODEID, in init_spec_child()
4537 if (ddi_initchild(pdip, dip) != DDI_SUCCESS) in init_spec_child()
4549 i_ndi_make_spec_children(dev_info_t *pdip, uint_t flags) in i_ndi_make_spec_children() argument
4555 ndi_devi_enter(pdip, &circ); in i_ndi_make_spec_children()
4556 if (DEVI(pdip)->devi_flags & DEVI_MADE_CHILDREN) { in i_ndi_make_spec_children()
4557 ndi_devi_exit(pdip, circ); in i_ndi_make_spec_children()
4561 list = hwc_get_child_spec(pdip, DDI_MAJOR_T_NONE); in i_ndi_make_spec_children()
4563 init_spec_child(pdip, spec, flags); in i_ndi_make_spec_children()
4567 mutex_enter(&DEVI(pdip)->devi_lock); in i_ndi_make_spec_children()
4568 DEVI(pdip)->devi_flags |= DEVI_MADE_CHILDREN; in i_ndi_make_spec_children()
4569 mutex_exit(&DEVI(pdip)->devi_lock); in i_ndi_make_spec_children()
4570 ndi_devi_exit(pdip, circ); in i_ndi_make_spec_children()
4581 i_ndi_init_hw_children(dev_info_t *pdip, uint_t flags) in i_ndi_init_hw_children() argument
4585 ASSERT(DEVI(pdip)->devi_flags & DEVI_MADE_CHILDREN); in i_ndi_init_hw_children()
4589 dip = ddi_get_child(pdip); in i_ndi_init_hw_children()
5182 init_bound_node_ev(dev_info_t *pdip, dev_info_t *dip, int flags) in init_bound_node_ev() argument
5186 i_ddi_devi_attached(pdip) && !DEVI_IS_DEVICE_OFFLINE(dip)) in init_bound_node_ev()
5187 (void) ddi_initchild(pdip, dip); in init_bound_node_ev()
5196 dev_info_t *pdip = ddi_get_parent(dip); in devi_attach_node() local
5198 ASSERT(pdip && DEVI_BUSY_OWNED(pdip)); in devi_attach_node()
5252 config_immediate_children(dev_info_t *pdip, uint_t flags, major_t major) in config_immediate_children() argument
5257 ASSERT(i_ddi_devi_attached(pdip)); in config_immediate_children()
5259 if (!NEXUS_DRV(ddi_get_driver(pdip))) in config_immediate_children()
5264 ddi_driver_name(pdip), ddi_get_instance(pdip), in config_immediate_children()
5265 (void *)pdip, flags)); in config_immediate_children()
5267 ndi_devi_enter(pdip, &circ); in config_immediate_children()
5270 mutex_enter(&DEVI(pdip)->devi_lock); in config_immediate_children()
5271 DEVI(pdip)->devi_flags &= ~DEVI_MADE_CHILDREN; in config_immediate_children()
5272 mutex_exit(&DEVI(pdip)->devi_lock); in config_immediate_children()
5274 (void) i_ndi_make_spec_children(pdip, flags); in config_immediate_children()
5275 i_ndi_init_hw_children(pdip, flags); in config_immediate_children()
5277 child = ddi_get_child(pdip); in config_immediate_children()
5293 ndi_devi_exit(pdip, circ); in config_immediate_children()
5300 config_grand_children(dev_info_t *pdip, uint_t flags, major_t major) in config_grand_children() argument
5305 hdl = mt_config_init(pdip, NULL, flags, major, MT_CONFIG_OP, NULL); in config_grand_children()
5394 devi_config_one(dev_info_t *pdip, char *devnm, dev_info_t **cdipp, in devi_config_one() argument
5409 if (!NEXUS_DRV(ddi_get_driver(pdip))) in devi_config_one()
5419 if (MDI_PHCI(pdip)) in devi_config_one()
5420 vdip = mdi_devi_get_vdip(pdip); in devi_config_one()
5430 if ((flags & NDI_PROMNAME) && (pdip != pseudo_dip)) { in devi_config_one()
5431 drivername = child_path_to_driver(pdip, name, addr); in devi_config_one()
5453 ndi_devi_enter(pdip, &p_circ); in devi_config_one()
5454 cpip = mdi_pi_find(pdip, NULL, addr); in devi_config_one()
5459 ndi_devi_enter(pdip, &p_circ); in devi_config_one()
5468 probed = (DEVI(pdip)->devi_flags & DEVI_MADE_CHILDREN); in devi_config_one()
5477 again: (void) i_ndi_make_spec_children(pdip, flags); in devi_config_one()
5478 cdip = find_child_by_name(pdip, name, addr); in devi_config_one()
5480 cdip = find_child_by_driver(pdip, in devi_config_one()
5483 cdip = find_child_by_addr(pdip, addr); in devi_config_one()
5496 mutex_enter(&DEVI(pdip)->devi_lock); in devi_config_one()
5497 DEVI(pdip)->devi_flags &= ~DEVI_MADE_CHILDREN; in devi_config_one()
5498 mutex_exit(&DEVI(pdip)->devi_lock); in devi_config_one()
5517 ddi_driver_name(pdip), ddi_get_instance(pdip), in devi_config_one()
5527 ndi_devi_exit(pdip, p_circ); in devi_config_one()
5538 ndi_devi_exit_and_wait(pdip, p_circ, end_time); in devi_config_one()
5552 ndi_devi_exit(pdip, p_circ); in devi_config_one()
5565 ndi_devi_config_one(dev_info_t *pdip, char *devnm, dev_info_t **dipp, int flags) in ndi_devi_config_one() argument
5573 ASSERT(pdip); in ndi_devi_config_one()
5576 ASSERT(i_ddi_devi_attached(pdip)); in ndi_devi_config_one()
5580 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_devi_config_one()
5581 (void *)pdip, devnm)); in ndi_devi_config_one()
5585 if (pm_pre_config(pdip, devnm) != DDI_SUCCESS) { in ndi_devi_config_one()
5599 if ((DEVI(pdip)->devi_ops->devo_bus_ops == NULL) || in ndi_devi_config_one()
5600 (DEVI(pdip)->devi_ops->devo_bus_ops->busops_rev < BUSO_REV_5) || in ndi_devi_config_one()
5601 (f = DEVI(pdip)->devi_ops->devo_bus_ops->bus_config) == NULL) { in ndi_devi_config_one()
5602 error = devi_config_one(pdip, devnm, dipp, flags, 0); in ndi_devi_config_one()
5605 error = (*f)(pdip, flags, BUS_CONFIG_ONE, (void *)devnm, dipp); in ndi_devi_config_one()
5621 ddi_err(DER_PANIC, pdip, "alias alloc failed: %s", in ndi_devi_config_one()
5624 (void) ddi_pathname(pdip, alias); in ndi_devi_config_one()
5636 pm_post_config(pdip, devnm); in ndi_devi_config_one()
5648 pm_post_config(pdip, devnm); in ndi_devi_config_one()
5862 dev_info_t *pdip = ddi_get_parent(dip); in devi_detach_node() local
5871 ASSERT(pdip && DEVI_BUSY_OWNED(pdip)); in devi_detach_node()
5887 if (i_ddi_devi_attached(pdip)) { in devi_detach_node()
5899 (void) devfs_clean(pdip, NULL, DV_CLEAN_FORCE); in devi_detach_node()
6246 devi_unconfig_one(dev_info_t *pdip, char *devnm, int flags) in devi_unconfig_one() argument
6253 ndi_devi_enter(pdip, &circ); in devi_unconfig_one()
6254 child = ndi_devi_findchild(pdip, devnm); in devi_unconfig_one()
6263 if (vdip && (ddi_get_parent(vdip) != pdip)) { in devi_unconfig_one()
6264 ndi_devi_exit(pdip, circ); in devi_unconfig_one()
6268 ndi_devi_enter(pdip, &circ); in devi_unconfig_one()
6269 child = ndi_devi_findchild(pdip, devnm); in devi_unconfig_one()
6282 ndi_devi_exit(pdip, circ); in devi_unconfig_one()
6291 dev_info_t *pdip, in ndi_devi_unconfig_one() argument
6304 ASSERT(i_ddi_devi_attached(pdip)); in ndi_devi_unconfig_one()
6308 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_devi_unconfig_one()
6309 (void *)pdip, devnm)); in ndi_devi_unconfig_one()
6311 if (pm_pre_unconfig(pdip, flags, &pm_cookie, devnm) != DDI_SUCCESS) in ndi_devi_unconfig_one()
6317 ndi_devi_enter(pdip, &circ); in ndi_devi_unconfig_one()
6318 child = ndi_devi_findchild(pdip, devnm); in ndi_devi_unconfig_one()
6327 if (vdip && (ddi_get_parent(vdip) != pdip)) { in ndi_devi_unconfig_one()
6328 ndi_devi_exit(pdip, circ); in ndi_devi_unconfig_one()
6332 ndi_devi_enter(pdip, &circ); in ndi_devi_unconfig_one()
6333 child = ndi_devi_findchild(pdip, devnm); in ndi_devi_unconfig_one()
6352 init_bound_node_ev(pdip, child, flags); in ndi_devi_unconfig_one()
6354 if ((DEVI(pdip)->devi_ops->devo_bus_ops == NULL) || in ndi_devi_unconfig_one()
6355 (DEVI(pdip)->devi_ops->devo_bus_ops->busops_rev < BUSO_REV_5) || in ndi_devi_unconfig_one()
6356 (f = DEVI(pdip)->devi_ops->devo_bus_ops->bus_unconfig) == NULL) { in ndi_devi_unconfig_one()
6360 rv = (*f)(pdip, flags, BUS_UNCONFIG_ONE, (void *)devnm); in ndi_devi_unconfig_one()
6377 ndi_devi_exit(pdip, circ); in ndi_devi_unconfig_one()
6381 pm_post_unconfig(pdip, pm_cookie, devnm); in ndi_devi_unconfig_one()
6402 dev_info_t *pdip = ddi_get_parent(dip); in i_ndi_devi_async_common() local
6404 ASSERT(pdip); in i_ndi_devi_async_common()
6405 ASSERT(DEVI(pdip)->devi_taskq); in i_ndi_devi_async_common()
6422 if (ddi_taskq_dispatch(DEVI(pdip)->devi_taskq, func, arg, tqflag) == in i_ndi_devi_async_common()
6429 ddi_driver_name(pdip), ddi_get_instance(pdip))); in i_ndi_devi_async_common()
6457 dev_info_t *pdip = ddi_get_parent(dip); in ndi_devi_online() local
6460 ASSERT(pdip); in ndi_devi_online()
6465 ndi_devi_enter(pdip, &circ); in ndi_devi_online()
6469 ndi_devi_exit(pdip, circ); in ndi_devi_online()
6474 (void) i_ndi_make_spec_children(pdip, flags); in ndi_devi_online()
6504 ndi_devi_exit(pdip, circ); in ndi_devi_online()
6508 ndi_devi_enter(pdip, &circ); in ndi_devi_online()
6516 ndi_devi_exit(pdip, circ); in ndi_devi_online()
6531 if (rv == NDI_SUCCESS && i_ddi_devi_attached(pdip) && in ndi_devi_online()
6532 !DEVI_BUSY_OWNED(pdip)) in ndi_devi_online()
6533 (void) devfs_clean(pdip, NULL, 0); in ndi_devi_online()
6572 dev_info_t *pdip = ddi_get_parent(dip); in ndi_devi_offline() local
6577 ASSERT(pdip); in ndi_devi_offline()
6588 if (vdip && (ddi_get_parent(vdip) != pdip)) in ndi_devi_offline()
6593 ndi_devi_enter(pdip, &circ); in ndi_devi_offline()
6605 ndi_devi_exit(pdip, circ); in ndi_devi_offline()
6622 (!DEVI_BUSY_OWNED(pdip))) in ndi_devi_offline()
6623 (void) devfs_clean(pdip, devname + 1, DV_CLEAN_FORCE); in ndi_devi_offline()
6635 ndi_devi_enter(pdip, &circ); in ndi_devi_offline()
6638 init_bound_node_ev(pdip, dip, flags); in ndi_devi_offline()
6648 ndi_devi_exit(pdip, circ); in ndi_devi_offline()
6660 ndi_devi_find(dev_info_t *pdip, char *cname, char *caddr) in ndi_devi_find() argument
6665 if (pdip == NULL || cname == NULL || caddr == NULL) in ndi_devi_find()
6668 ndi_devi_enter(pdip, &circ); in ndi_devi_find()
6669 child = find_sibling(ddi_get_child(pdip), cname, caddr, in ndi_devi_find()
6671 ndi_devi_exit(pdip, circ); in ndi_devi_find()
6680 ndi_devi_findchild(dev_info_t *pdip, char *devname) in ndi_devi_findchild() argument
6686 ASSERT(DEVI_BUSY_OWNED(pdip)); in ndi_devi_findchild()
6696 child = find_sibling(ddi_get_child(pdip), cname, caddr, in ndi_devi_findchild()
7208 dev_info_t *dip, *pdip; in diplist_to_parent_major() local
7211 pdip = ddi_get_parent(dip); in diplist_to_parent_major()
7212 ASSERT(pdip); /* disallow rootnex.conf nodes */ in diplist_to_parent_major()
7213 major = ddi_driver_major(pdip); in diplist_to_parent_major()
7400 ndi_busop_bus_config(dev_info_t *pdip, uint_t flags, ddi_bus_config_op_t op, in ndi_busop_bus_config() argument
7416 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_busop_bus_config()
7418 return (devi_config_one(pdip, (char *)arg, child, flags, in ndi_busop_bus_config()
7426 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_busop_bus_config()
7431 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_busop_bus_config()
7435 return (config_immediate_children(pdip, flags, major)); in ndi_busop_bus_config()
7447 ndi_busop_bus_unconfig(dev_info_t *pdip, uint_t flags, ddi_bus_config_op_t op, in ndi_busop_bus_unconfig() argument
7456 ddi_driver_name(pdip), ddi_get_instance(pdip), in ndi_busop_bus_unconfig()
7458 return (devi_unconfig_one(pdip, (char *)arg, flags)); in ndi_busop_bus_unconfig()
7465 ddi_driver_name(pdip), ddi_get_instance(pdip))); in ndi_busop_bus_unconfig()
7466 return (unconfig_immediate_children(pdip, NULL, flags, major)); in ndi_busop_bus_unconfig()
7502 mt_config_init(dev_info_t *pdip, dev_info_t **dipp, int flags, in mt_config_init() argument
7509 hdl->mtc_pdip = pdip; in mt_config_init()
7667 dev_info_t *pdip = hdl->mtc_pdip; in mt_config_children() local
7683 ndi_devi_enter(pdip, &circ); in mt_config_children()
7684 dip = ddi_get_child(pdip); in mt_config_children()
7743 (major == ddi_driver_major(pdip))) in mt_config_children()
7763 ndi_devi_exit(pdip, circ); in mt_config_children()
8398 dev_info_t *pdip; in e_ddi_retire_device() local
8426 pdip = ddi_get_parent(dip); in e_ddi_retire_device()
8427 ndi_hold_devi(pdip); in e_ddi_retire_device()
8437 (void) devfs_clean(pdip, devnm + 1, DV_CLEAN_FORCE); in e_ddi_retire_device()
8440 ndi_devi_enter(pdip, &circ); in e_ddi_retire_device()
8489 ndi_devi_exit(pdip, circ); in e_ddi_retire_device()
8490 ndi_rele_devi(pdip); in e_ddi_retire_device()
8548 dev_info_t *pdip; in e_ddi_unretire_device() local
8570 pdip = ddi_root_node(); in e_ddi_unretire_device()
8572 ndi_devi_enter(pdip, &circ); in e_ddi_unretire_device()
8573 ddi_walk_devs(ddi_get_child(pdip), find_dip_fcn, &find_dip); in e_ddi_unretire_device()
8574 ndi_devi_exit(pdip, circ); in e_ddi_unretire_device()
8586 pdip = ddi_get_parent(dip); in e_ddi_unretire_device()
8588 ndi_hold_devi(pdip); in e_ddi_unretire_device()
8590 ndi_devi_enter(pdip, &circ); in e_ddi_unretire_device()
8606 ndi_devi_exit(pdip, circ); in e_ddi_unretire_device()
8608 ndi_rele_devi(pdip); in e_ddi_unretire_device()
8658 dev_info_t *pdip; in i_ddi_check_retire() local
8663 pdip = ddi_get_parent(dip); in i_ddi_check_retire()
8669 ASSERT(pdip); in i_ddi_check_retire()
8670 ASSERT(DEVI_BUSY_OWNED(pdip)); in i_ddi_check_retire()