Lines Matching refs:fwdev
248 faa.fwdev = NULL; in firewireattach()
270 struct fw_device *fwdev, *fwdev_next; in firewiredetach() local
301 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; in firewiredetach()
302 fwdev = fwdev_next) { in firewiredetach()
303 fwdev_next = STAILQ_NEXT(fwdev, link); in firewiredetach()
304 free(fwdev, M_FW); in firewiredetach()
343 struct fw_device *fwdev; in fw_noderesolve_nodeid() local
346 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_nodeid()
347 if (fwdev->dst == dst && fwdev->status != FWDEVINVAL) in fw_noderesolve_nodeid()
351 return fwdev; in fw_noderesolve_nodeid()
360 struct fw_device *fwdev; in fw_noderesolve_eui64() local
363 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_noderesolve_eui64()
364 if (FW_EUI64_EQUAL(fwdev->eui, *eui)) in fw_noderesolve_eui64()
368 if (fwdev == NULL) in fw_noderesolve_eui64()
370 if (fwdev->status == FWDEVINVAL) in fw_noderesolve_eui64()
372 return fwdev; in fw_noderesolve_eui64()
1611 struct fw_device *fwdev; in fw_bus_probe() local
1620 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_bus_probe()
1621 if (fwdev->status != FWDEVINVAL) { in fw_bus_probe()
1622 fwdev->status = FWDEVINVAL; in fw_bus_probe()
1623 fwdev->rcnt = 0; in fw_bus_probe()
1626 fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1630 fwdev->eui.hi, fwdev->eui.lo); in fw_bus_probe()
1638 fw_explore_read_quads(struct fw_device *fwdev, int offset, uint32_t *quad, in fw_explore_read_quads() argument
1646 xfer = fwmem_read_quad(fwdev, NULL, -1, 0xffff, in fw_explore_read_quads()
1665 fw_explore_csrblock(struct fw_device *fwdev, int offset, int recur) in fw_explore_csrblock() argument
1672 dir = (struct csrdirectory *)&fwdev->csrrom[offset/sizeof(uint32_t)]; in fw_explore_csrblock()
1673 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, (uint32_t *)dir, in fw_explore_csrblock()
1679 reg = (struct csrreg *)&fwdev->csrrom[offset / sizeof(uint32_t)]; in fw_explore_csrblock()
1680 err = fw_explore_read_quads(fwdev, CSRROMOFF + offset, (uint32_t *)reg, in fw_explore_csrblock()
1688 if (fwdev->rommax < off) in fw_explore_csrblock()
1689 fwdev->rommax = off; in fw_explore_csrblock()
1704 aprint_error_dev(fwdev->fc->bdev, "invalid offset %d\n", in fw_explore_csrblock()
1708 err = fw_explore_csrblock(fwdev, off, recur); in fw_explore_csrblock()
1719 struct fw_device *fwdev, *pfwdev, *tfwdev; in fw_explore_node() local
1772 STAILQ_FOREACH(fwdev, &fc->devices, link) in fw_explore_node()
1773 if (FW_EUI64_EQUAL(fwdev->eui, binfo->eui64)) in fw_explore_node()
1776 if (fwdev == NULL) { in fw_explore_node()
1778 fwdev = malloc(sizeof(struct fw_device), M_FW, M_WAITOK | M_ZERO); in fw_explore_node()
1779 fwdev->fc = fc; in fw_explore_node()
1780 fwdev->eui = binfo->eui64; in fw_explore_node()
1781 fwdev->dst = dfwdev->dst; in fw_explore_node()
1782 fwdev->maxrec = dfwdev->maxrec; in fw_explore_node()
1783 fwdev->status = FWDEVNEW; in fw_explore_node()
1795 fwdev->speed = fc->speed_map->speed[fc->nodeid][node]; in fw_explore_node()
1797 fwdev->speed = binfo->link_spd; in fw_explore_node()
1802 while (fwdev->speed > FWSPD_S100 /* 0 */) { in fw_explore_node()
1803 err = fw_explore_read_quads(fwdev, CSRROMOFF, in fw_explore_node()
1808 fw_linkspeed[fwdev->speed]); in fw_explore_node()
1809 fwdev->speed--; in fw_explore_node()
1820 if (tfwdev->eui.hi > fwdev->eui.hi || in fw_explore_node()
1821 (tfwdev->eui.hi == fwdev->eui.hi && in fw_explore_node()
1822 tfwdev->eui.lo > fwdev->eui.lo)) in fw_explore_node()
1827 STAILQ_INSERT_HEAD(&fc->devices, fwdev, link); in fw_explore_node()
1829 STAILQ_INSERT_AFTER(&fc->devices, pfwdev, fwdev, link); in fw_explore_node()
1833 fw_linkspeed[fwdev->speed], fwdev->eui.hi, fwdev->eui.lo); in fw_explore_node()
1835 fwdev->dst = node; in fw_explore_node()
1836 fwdev->status = FWDEVINIT; in fw_explore_node()
1838 if (memcmp(csr, fwdev->csrrom, sizeof(uint32_t) * 5) == 0) { in fw_explore_node()
1845 memset(fwdev->csrrom, 0, CROMSIZE); in fw_explore_node()
1848 memcpy(fwdev->csrrom, csr, sizeof(uint32_t) * 5); in fw_explore_node()
1849 fwdev->rommax = CSRROMOFF + sizeof(uint32_t) * 4; in fw_explore_node()
1851 err = fw_explore_csrblock(fwdev, 0x14, 1); /* root directory */ in fw_explore_node()
1856 fwdev->status = FWDEVINVAL; in fw_explore_node()
1857 fwdev->csrrom[0] = 0; in fw_explore_node()
1976 fw_get_devclass(struct fw_device *fwdev) in fw_get_devclass() argument
1981 crom_init_context(&cc, fwdev->csrrom); in fw_get_devclass()
2023 struct fw_device *fwdev, *next; in fw_attach_dev() local
2032 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; fwdev = next) { in fw_attach_dev()
2033 next = STAILQ_NEXT(fwdev, link); in fw_attach_dev()
2035 switch (fwdev->status) { in fw_attach_dev()
2039 locs[IEEE1394IFCF_EUIHI] = fwdev->eui.hi; in fw_attach_dev()
2040 locs[IEEE1394IFCF_EUILO] = fwdev->eui.lo; in fw_attach_dev()
2042 fwa.name = fw_get_devclass(fwdev); in fw_attach_dev()
2043 fwa.fwdev = fwdev; in fw_attach_dev()
2045 fwdev->dev = config_found(sc->dev, &fwa, firewire_print, in fw_attach_dev()
2049 if (fwdev->dev == NULL) { in fw_attach_dev()
2054 devlist->fwdev = fwdev; in fw_attach_dev()
2055 devlist->dev = fwdev->dev; in fw_attach_dev()
2072 fwdev->status = FWDEVATTACHED; in fw_attach_dev()
2076 fwdev->rcnt++; in fw_attach_dev()
2079 fwdev->rcnt, hold_count); in fw_attach_dev()
2096 for (fwdev = STAILQ_FIRST(&fc->devices); fwdev != NULL; fwdev = next) { in fw_attach_dev()
2097 next = STAILQ_NEXT(fwdev, link); in fw_attach_dev()
2098 if (fwdev->rcnt > 0 && fwdev->rcnt > hold_count) { in fw_attach_dev()
2104 if (devlist->fwdev == fwdev) in fw_attach_dev()
2110 if (devlist->fwdev != fwdev) in fw_attach_dev()
2117 if (config_detach(fwdev->dev, DETACH_FORCE) != 0) in fw_attach_dev()
2120 STAILQ_REMOVE(&fc->devices, fwdev, fw_device, link); in fw_attach_dev()
2121 free(fwdev, M_FW); in fw_attach_dev()
2300 struct fw_device fwdev; in fw_bmr() local
2335 memset(&fwdev, 0, sizeof(fwdev)); in fw_bmr()
2336 fwdev.fc = fc; in fw_bmr()
2337 fwdev.dst = cmstr; in fw_bmr()
2338 fwdev.speed = 0; in fw_bmr()
2339 fwdev.maxrec = 8; /* 512 */ in fw_bmr()
2340 fwdev.status = FWDEVINIT; in fw_bmr()
2343 fwmem_write_quad(&fwdev, NULL, 0/*spd*/, 0xffff, 0xf0000000 | STATE_SET, in fw_bmr()