Lines Matching refs:fwdev
150 struct fw_device *fwdev; in fw_noderesolve_nodeid() local
153 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_nodeid()
154 if (fwdev->dst == dst && fwdev->status != FWDEVINVAL) in fw_noderesolve_nodeid()
158 return fwdev; in fw_noderesolve_nodeid()
167 struct fw_device *fwdev; in fw_noderesolve_eui64() local
170 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_eui64()
171 if (FW_EUI64_EQUAL(fwdev->eui, *eui)) in fw_noderesolve_eui64()
175 if (fwdev == NULL) in fw_noderesolve_eui64()
177 if (fwdev->status == FWDEVINVAL) in fw_noderesolve_eui64()
179 return fwdev; in fw_noderesolve_eui64()
512 struct fw_device *fwdev, *fwdev_next; in firewire_detach() local
538 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; in firewire_detach()
539 fwdev = fwdev_next) { in firewire_detach()
540 fwdev_next = STAILQ_NEXT(fwdev, link); in firewire_detach()
541 free(fwdev, M_FW); in firewire_detach()
1405 struct fw_device *fwdev; in fw_bus_probe() local
1417 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_bus_probe()
1418 if (fwdev->status != FWDEVINVAL) { in fw_bus_probe()
1419 fwdev->status = FWDEVINVAL; in fw_bus_probe()
1420 fwdev->rcnt = 0; in fw_bus_probe()
1424 __func__, fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1429 __func__, fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1437 fw_explore_read_quads(struct fw_device *fwdev, int offset, in fw_explore_read_quads() argument
1445 xfer = fwmem_read_quad(fwdev, NULL, -1, 0xffff, in fw_explore_read_quads()
1464 fw_explore_csrblock(struct fw_device *fwdev, int offset, int recur) in fw_explore_csrblock() argument
1470 dir = (struct csrdirectory *)&fwdev->csrrom[offset / sizeof(uint32_t)]; in fw_explore_csrblock()
1471 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, in fw_explore_csrblock()
1477 reg = (struct csrreg *)&fwdev->csrrom[offset / sizeof(uint32_t)]; in fw_explore_csrblock()
1478 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, in fw_explore_csrblock()
1486 if (fwdev->rommax < off) in fw_explore_csrblock()
1487 fwdev->rommax = off; in fw_explore_csrblock()
1505 err = fw_explore_csrblock(fwdev, off, recur); in fw_explore_csrblock()
1516 struct fw_device *fwdev, *pfwdev, *tfwdev; in fw_explore_node() local
1566 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_explore_node()
1567 if (FW_EUI64_EQUAL(fwdev->eui, binfo->eui64)) in fw_explore_node()
1569 if (fwdev == NULL) { in fw_explore_node()
1571 fwdev = malloc(sizeof(struct fw_device), M_FW, in fw_explore_node()
1573 if (fwdev == NULL) { in fw_explore_node()
1578 fwdev->fc = fc; in fw_explore_node()
1579 fwdev->eui = binfo->eui64; in fw_explore_node()
1580 fwdev->dst = dfwdev->dst; in fw_explore_node()
1581 fwdev->maxrec = dfwdev->maxrec; in fw_explore_node()
1582 fwdev->status = dfwdev->status; in fw_explore_node()
1595 fwdev->speed = fc->speed_map->speed[fc->nodeid][node]; in fw_explore_node()
1597 fwdev->speed = binfo->link_spd; in fw_explore_node()
1602 while (fwdev->speed > FWSPD_S100 /* 0 */) { in fw_explore_node()
1603 err = fw_explore_read_quads(fwdev, CSRROMOFF, in fw_explore_node()
1608 __func__, linkspeed[fwdev->speed]); in fw_explore_node()
1609 fwdev->speed--; in fw_explore_node()
1621 if (tfwdev->eui.hi > fwdev->eui.hi || in fw_explore_node()
1622 (tfwdev->eui.hi == fwdev->eui.hi && in fw_explore_node()
1623 tfwdev->eui.lo > fwdev->eui.lo)) in fw_explore_node()
1628 STAILQ_INSERT_HEAD(&fc->devices, fwdev, link); in fw_explore_node()
1630 STAILQ_INSERT_AFTER(&fc->devices, pfwdev, fwdev, link); in fw_explore_node()
1632 fwdev->dst = node; in fw_explore_node()
1633 fwdev->status = FWDEVINIT; in fw_explore_node()
1635 if (bcmp(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5) == 0) { in fw_explore_node()
1643 bzero(&fwdev->csrrom[0], CROMSIZE); in fw_explore_node()
1646 bcopy(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5); in fw_explore_node()
1647 fwdev->rommax = CSRROMOFF + sizeof(uint32_t) * 4; in fw_explore_node()
1649 err = fw_explore_csrblock(fwdev, 0x14, 1); /* root directory */ in fw_explore_node()
1655 fwdev->status = FWDEVINVAL; in fw_explore_node()
1656 fwdev->csrrom[0] = 0; in fw_explore_node()
1768 struct fw_device *fwdev, *next; in fw_attach_dev() local
1774 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; fwdev = next) { in fw_attach_dev()
1775 next = STAILQ_NEXT(fwdev, link); in fw_attach_dev()
1776 if (fwdev->status == FWDEVINIT) { in fw_attach_dev()
1777 fwdev->status = FWDEVATTACHED; in fw_attach_dev()
1778 } else if (fwdev->status == FWDEVINVAL) { in fw_attach_dev()
1779 fwdev->rcnt++; in fw_attach_dev()
1783 __func__, fwdev->rcnt, hold_count); in fw_attach_dev()
1784 if (fwdev->rcnt > hold_count) { in fw_attach_dev()
1789 STAILQ_REMOVE(&fc->devices, fwdev, fw_device, in fw_attach_dev()
1791 free(fwdev, M_FW); in fw_attach_dev()
2282 struct fw_device fwdev; in fw_bmr() local
2318 bzero(&fwdev, sizeof(fwdev)); in fw_bmr()
2319 fwdev.fc = fc; in fw_bmr()
2320 fwdev.dst = cmstr; in fw_bmr()
2321 fwdev.speed = 0; in fw_bmr()
2322 fwdev.maxrec = 8; /* 512 */ in fw_bmr()
2323 fwdev.status = FWDEVINIT; in fw_bmr()
2326 fwmem_write_quad(&fwdev, NULL, 0/*spd*/, in fw_bmr()