Lines Matching refs:phynode

53 static int phynode_method_init(struct phynode *phynode);
54 static int phynode_method_enable(struct phynode *phynode, bool disable);
55 static int phynode_method_status(struct phynode *phynode, int *status);
68 DEFINE_CLASS_0(phynode, phynode_class, phynode_methods, 0);
81 phynode_method_init(struct phynode *phynode) in phynode_method_init() argument
88 phynode_method_enable(struct phynode *phynode, bool enable) in phynode_method_enable() argument
98 phynode_method_status(struct phynode *phynode, int *status) in phynode_method_status() argument
112 struct phynode *
116 struct phynode *phynode; in phynode_create() local
120 phynode = malloc(sizeof(struct phynode), M_PHY, M_WAITOK | M_ZERO); in phynode_create()
121 kobj_init((kobj_t)phynode, (kobj_class_t)phynode_class); in phynode_create()
122 sx_init(&phynode->lock, "Phy node lock"); in phynode_create()
126 phynode->softc = malloc(phynode_class->size, M_PHY, in phynode_create()
131 TAILQ_INIT(&phynode->consumers_list); in phynode_create()
132 phynode->id = def->id; in phynode_create()
133 phynode->pdev = pdev; in phynode_create()
135 phynode->ofw_node = def->ofw_node; in phynode_create()
138 return (phynode); in phynode_create()
142 struct phynode *
143 phynode_register(struct phynode *phynode) in phynode_register() argument
148 if (phynode->ofw_node <= 0) in phynode_register()
149 phynode->ofw_node = ofw_bus_get_node(phynode->pdev); in phynode_register()
150 if (phynode->ofw_node <= 0) in phynode_register()
154 rv = PHYNODE_INIT(phynode); in phynode_register()
161 TAILQ_INSERT_TAIL(&phynode_list, phynode, phylist_link); in phynode_register()
164 OF_device_register_xref(OF_xref_from_node(phynode->ofw_node), in phynode_register()
165 phynode->pdev); in phynode_register()
167 return (phynode); in phynode_register()
170 static struct phynode *
173 struct phynode *entry; in phynode_find_by_id()
192 phynode_get_softc(struct phynode *phynode) in phynode_get_softc() argument
195 return (phynode->softc); in phynode_get_softc()
199 phynode_get_device(struct phynode *phynode) in phynode_get_device() argument
202 return (phynode->pdev); in phynode_get_device()
205 intptr_t phynode_get_id(struct phynode *phynode) in phynode_get_id() argument
208 return (phynode->id); in phynode_get_id()
213 phynode_get_ofw_node(struct phynode *phynode) in phynode_get_ofw_node() argument
216 return (phynode->ofw_node); in phynode_get_ofw_node()
230 phynode_enable(struct phynode *phynode) in phynode_enable() argument
236 PHYNODE_XLOCK(phynode); in phynode_enable()
237 if (phynode->enable_cnt == 0) { in phynode_enable()
238 rv = PHYNODE_ENABLE(phynode, true); in phynode_enable()
240 PHYNODE_UNLOCK(phynode); in phynode_enable()
244 phynode->enable_cnt++; in phynode_enable()
245 PHYNODE_UNLOCK(phynode); in phynode_enable()
253 phynode_disable(struct phynode *phynode) in phynode_disable() argument
259 PHYNODE_XLOCK(phynode); in phynode_disable()
260 if (phynode->enable_cnt == 1) { in phynode_disable()
261 rv = PHYNODE_ENABLE(phynode, false); in phynode_disable()
263 PHYNODE_UNLOCK(phynode); in phynode_disable()
267 phynode->enable_cnt--; in phynode_disable()
268 PHYNODE_UNLOCK(phynode); in phynode_disable()
276 phynode_set_mode(struct phynode *phynode, phy_mode_t mode, in phynode_set_mode() argument
283 PHYNODE_XLOCK(phynode); in phynode_set_mode()
284 rv = PHYNODE_SET_MODE(phynode, mode, submode); in phynode_set_mode()
285 PHYNODE_UNLOCK(phynode); in phynode_set_mode()
293 phynode_status(struct phynode *phynode, int *status) in phynode_status() argument
299 PHYNODE_XLOCK(phynode); in phynode_status()
300 rv = PHYNODE_STATUS(phynode, status); in phynode_status()
301 PHYNODE_UNLOCK(phynode); in phynode_status()
313 phy_create(struct phynode *phynode, device_t cdev) in phy_create() argument
321 phy->phynode = phynode; in phy_create()
324 PHYNODE_XLOCK(phynode); in phy_create()
325 phynode->ref_cnt++; in phy_create()
326 TAILQ_INSERT_TAIL(&phynode->consumers_list, phy, link); in phy_create()
327 PHYNODE_UNLOCK(phynode); in phy_create()
336 struct phynode *phynode; in phy_enable() local
338 phynode = phy->phynode; in phy_enable()
339 KASSERT(phynode->ref_cnt > 0, in phy_enable()
343 rv = phynode_enable(phynode); in phy_enable()
354 struct phynode *phynode; in phy_disable() local
356 phynode = phy->phynode; in phy_disable()
357 KASSERT(phynode->ref_cnt > 0, in phy_disable()
363 rv = phynode_disable(phynode); in phy_disable()
374 struct phynode *phynode; in phy_set_mode() local
376 phynode = phy->phynode; in phy_set_mode()
377 KASSERT(phynode->ref_cnt > 0, in phy_set_mode()
381 rv = phynode_set_mode(phynode, mode, submode); in phy_set_mode()
390 struct phynode *phynode; in phy_status() local
392 phynode = phy->phynode; in phy_status()
393 KASSERT(phynode->ref_cnt > 0, in phy_status()
397 rv = phynode_status(phynode, status); in phy_status()
406 struct phynode *phynode; in phy_get_by_id() local
410 phynode = phynode_find_by_id(provider_dev, id); in phy_get_by_id()
411 if (phynode == NULL) { in phy_get_by_id()
415 *phy = phy_create(phynode, consumer_dev); in phy_get_by_id()
424 struct phynode *phynode; in phy_release() local
426 phynode = phy->phynode; in phy_release()
427 KASSERT(phynode->ref_cnt > 0, in phy_release()
432 phynode_disable(phynode); in phy_release()
435 PHYNODE_XLOCK(phynode); in phy_release()
436 TAILQ_REMOVE(&phynode->consumers_list, phy, link); in phy_release()
437 phynode->ref_cnt--; in phy_release()
438 PHYNODE_UNLOCK(phynode); in phy_release()
448 struct phynode *entry; in phydev_default_ofw_map()