Lines Matching refs:fwdev
147 struct fw_device *fwdev; in fw_noderesolve_nodeid() local
150 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_nodeid()
151 if (fwdev->dst == dst && fwdev->status != FWDEVINVAL) in fw_noderesolve_nodeid()
155 return fwdev; in fw_noderesolve_nodeid()
164 struct fw_device *fwdev; in fw_noderesolve_eui64() local
167 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_eui64()
168 if (FW_EUI64_EQUAL(fwdev->eui, *eui)) in fw_noderesolve_eui64()
172 if (fwdev == NULL) in fw_noderesolve_eui64()
174 if (fwdev->status == FWDEVINVAL) in fw_noderesolve_eui64()
176 return fwdev; in fw_noderesolve_eui64()
509 struct fw_device *fwdev, *fwdev_next; in firewire_detach() local
535 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; in firewire_detach()
536 fwdev = fwdev_next) { in firewire_detach()
537 fwdev_next = STAILQ_NEXT(fwdev, link); in firewire_detach()
538 free(fwdev, M_FW); in firewire_detach()
1402 struct fw_device *fwdev; in fw_bus_probe() local
1414 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_bus_probe()
1415 if (fwdev->status != FWDEVINVAL) { in fw_bus_probe()
1416 fwdev->status = FWDEVINVAL; in fw_bus_probe()
1417 fwdev->rcnt = 0; in fw_bus_probe()
1421 __func__, fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1426 __func__, fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1434 fw_explore_read_quads(struct fw_device *fwdev, int offset, in fw_explore_read_quads() argument
1442 xfer = fwmem_read_quad(fwdev, NULL, -1, 0xffff, in fw_explore_read_quads()
1461 fw_explore_csrblock(struct fw_device *fwdev, int offset, int recur) in fw_explore_csrblock() argument
1467 dir = (struct csrdirectory *)&fwdev->csrrom[offset / sizeof(uint32_t)]; in fw_explore_csrblock()
1468 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, in fw_explore_csrblock()
1474 reg = (struct csrreg *)&fwdev->csrrom[offset / sizeof(uint32_t)]; in fw_explore_csrblock()
1475 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, in fw_explore_csrblock()
1483 if (fwdev->rommax < off) in fw_explore_csrblock()
1484 fwdev->rommax = off; in fw_explore_csrblock()
1502 err = fw_explore_csrblock(fwdev, off, recur); in fw_explore_csrblock()
1513 struct fw_device *fwdev, *pfwdev, *tfwdev; in fw_explore_node() local
1563 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_explore_node()
1564 if (FW_EUI64_EQUAL(fwdev->eui, binfo->eui64)) in fw_explore_node()
1566 if (fwdev == NULL) { in fw_explore_node()
1568 fwdev = malloc(sizeof(struct fw_device), M_FW, in fw_explore_node()
1570 if (fwdev == NULL) { in fw_explore_node()
1575 fwdev->fc = fc; in fw_explore_node()
1576 fwdev->eui = binfo->eui64; in fw_explore_node()
1577 fwdev->dst = dfwdev->dst; in fw_explore_node()
1578 fwdev->maxrec = dfwdev->maxrec; in fw_explore_node()
1579 fwdev->status = dfwdev->status; in fw_explore_node()
1592 fwdev->speed = fc->speed_map->speed[fc->nodeid][node]; in fw_explore_node()
1594 fwdev->speed = binfo->link_spd; in fw_explore_node()
1599 while (fwdev->speed > FWSPD_S100 /* 0 */) { in fw_explore_node()
1600 err = fw_explore_read_quads(fwdev, CSRROMOFF, in fw_explore_node()
1605 __func__, linkspeed[fwdev->speed]); in fw_explore_node()
1606 fwdev->speed--; in fw_explore_node()
1618 if (tfwdev->eui.hi > fwdev->eui.hi || in fw_explore_node()
1619 (tfwdev->eui.hi == fwdev->eui.hi && in fw_explore_node()
1620 tfwdev->eui.lo > fwdev->eui.lo)) in fw_explore_node()
1625 STAILQ_INSERT_HEAD(&fc->devices, fwdev, link); in fw_explore_node()
1627 STAILQ_INSERT_AFTER(&fc->devices, pfwdev, fwdev, link); in fw_explore_node()
1629 fwdev->dst = node; in fw_explore_node()
1630 fwdev->status = FWDEVINIT; in fw_explore_node()
1632 if (bcmp(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5) == 0) { in fw_explore_node()
1640 bzero(&fwdev->csrrom[0], CROMSIZE); in fw_explore_node()
1643 bcopy(&csr[0], &fwdev->csrrom[0], sizeof(uint32_t) * 5); in fw_explore_node()
1644 fwdev->rommax = CSRROMOFF + sizeof(uint32_t) * 4; in fw_explore_node()
1646 err = fw_explore_csrblock(fwdev, 0x14, 1); /* root directory */ in fw_explore_node()
1652 fwdev->status = FWDEVINVAL; in fw_explore_node()
1653 fwdev->csrrom[0] = 0; in fw_explore_node()
1765 struct fw_device *fwdev, *next; in fw_attach_dev() local
1771 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; fwdev = next) { in fw_attach_dev()
1772 next = STAILQ_NEXT(fwdev, link); in fw_attach_dev()
1773 if (fwdev->status == FWDEVINIT) { in fw_attach_dev()
1774 fwdev->status = FWDEVATTACHED; in fw_attach_dev()
1775 } else if (fwdev->status == FWDEVINVAL) { in fw_attach_dev()
1776 fwdev->rcnt++; in fw_attach_dev()
1780 __func__, fwdev->rcnt, hold_count); in fw_attach_dev()
1781 if (fwdev->rcnt > hold_count) { in fw_attach_dev()
1786 STAILQ_REMOVE(&fc->devices, fwdev, fw_device, in fw_attach_dev()
1788 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()