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()
277 phynode_status(struct phynode *phynode, int *status) in phynode_status() argument
283 PHYNODE_XLOCK(phynode); in phynode_status()
284 rv = PHYNODE_STATUS(phynode, status); in phynode_status()
285 PHYNODE_UNLOCK(phynode); in phynode_status()
297 phy_create(struct phynode *phynode, device_t cdev) in phy_create() argument
305 phy->phynode = phynode; in phy_create()
308 PHYNODE_XLOCK(phynode); in phy_create()
309 phynode->ref_cnt++; in phy_create()
310 TAILQ_INSERT_TAIL(&phynode->consumers_list, phy, link); in phy_create()
311 PHYNODE_UNLOCK(phynode); in phy_create()
320 struct phynode *phynode; in phy_enable() local
322 phynode = phy->phynode; in phy_enable()
323 KASSERT(phynode->ref_cnt > 0, in phy_enable()
327 rv = phynode_enable(phynode); in phy_enable()
338 struct phynode *phynode; in phy_disable() local
340 phynode = phy->phynode; in phy_disable()
341 KASSERT(phynode->ref_cnt > 0, in phy_disable()
347 rv = phynode_disable(phynode); in phy_disable()
358 struct phynode *phynode; in phy_status() local
360 phynode = phy->phynode; in phy_status()
361 KASSERT(phynode->ref_cnt > 0, in phy_status()
365 rv = phynode_status(phynode, status); in phy_status()
374 struct phynode *phynode; in phy_get_by_id() local
378 phynode = phynode_find_by_id(provider_dev, id); in phy_get_by_id()
379 if (phynode == NULL) { in phy_get_by_id()
383 *phy = phy_create(phynode, consumer_dev); in phy_get_by_id()
392 struct phynode *phynode; in phy_release() local
394 phynode = phy->phynode; in phy_release()
395 KASSERT(phynode->ref_cnt > 0, in phy_release()
400 phynode_disable(phynode); in phy_release()
403 PHYNODE_XLOCK(phynode); in phy_release()
404 TAILQ_REMOVE(&phynode->consumers_list, phy, link); in phy_release()
405 phynode->ref_cnt--; in phy_release()
406 PHYNODE_UNLOCK(phynode); in phy_release()
416 struct phynode *entry; in phydev_default_ofw_map()