Lines Matching refs:fc
281 fwohci_set_bus_manager(struct firewire_comm *fc, u_int node) in fwohci_set_bus_manager() argument
283 struct fwohci_softc *sc = (struct fwohci_softc *)fc; in fwohci_set_bus_manager()
301 device_printf(sc->fc.dev, "%s: %d->%d (loop=%d)\n", in fwohci_set_bus_manager()
326 device_printf(sc->fc.dev, "%s: failed(1).\n", __func__); in fwphy_rddata()
337 device_printf(sc->fc.dev, "%s: failed(2).\n", __func__); in fwphy_rddata()
344 device_printf(sc->fc.dev, in fwphy_rddata()
356 struct fwohci_softc *fc; in fwohci_ioctl() local
366 fc = (struct fwohci_softc *)sc->fc; in fwohci_ioctl()
375 OWRITE(fc, reg->addr, reg->data); in fwohci_ioctl()
376 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
383 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
391 dump_dma(fc, *dmach); in fwohci_ioctl()
392 dump_db(fc, *dmach); in fwohci_ioctl()
401 reg->data = fwphy_rddata(fc, reg->addr); in fwohci_ioctl()
407 reg->data = fwphy_wrdata(fc, reg->addr, reg->data); in fwohci_ioctl()
437 sc->fc.mode &= ~FWPHYASYST;
438 sc->fc.nport = reg & FW_PHY_NP;
439 sc->fc.speed = reg & FW_PHY_SPD >> 6;
440 if (sc->fc.speed > MAX_SPEED) {
442 sc->fc.speed, MAX_SPEED);
443 sc->fc.speed = MAX_SPEED;
447 linkspeed[sc->fc.speed], sc->fc.nport);
450 sc->fc.mode |= FWPHYASYST;
451 sc->fc.nport = reg & FW_PHY_NP;
452 sc->fc.speed = (reg2 & FW_PHY_ESPD) >> 5;
453 if (sc->fc.speed > MAX_SPEED) {
455 sc->fc.speed, MAX_SPEED);
456 sc->fc.speed = MAX_SPEED;
460 linkspeed[sc->fc.speed], sc->fc.nport);
512 for (i = 0; i < sc->fc.nisodma; i++) {
540 sc->fc.maxrec = sc->fc.speed + 8;
541 if (max_rec != sc->fc.maxrec) {
542 reg2 = (reg2 & 0xffff0fff) | (sc->fc.maxrec << 12);
544 MAXREC(max_rec), MAXREC(sc->fc.maxrec));
551 OWRITE(sc, OHCI_CROMHDR, sc->fc.config_rom[0]);
598 fwohci_set_intr(&sc->fc, 1);
627 sc->fc.nisodma = i;
632 sc->fc.arq = &sc->arrq.xferq;
633 sc->fc.ars = &sc->arrs.xferq;
634 sc->fc.atq = &sc->atrq.xferq;
635 sc->fc.ats = &sc->atrs.xferq;
667 for (i = 0; i < sc->fc.nisodma; i++) {
668 sc->fc.it[i] = &sc->it[i].xferq;
669 sc->fc.ir[i] = &sc->ir[i].xferq;
676 sc->fc.tcode = tinfo;
677 sc->fc.dev = dev;
679 sc->fc.config_rom = fwdma_malloc(&sc->fc, CROMSIZE, CROMSIZE,
681 if (sc->fc.config_rom == NULL) {
687 bzero(&sc->fc.config_rom[0], CROMSIZE);
688 sc->fc.config_rom[1] = 0x31333934;
689 sc->fc.config_rom[2] = 0xf000a002;
690 sc->fc.config_rom[3] = OREAD(sc, OHCI_EUID_HI);
691 sc->fc.config_rom[4] = OREAD(sc, OHCI_EUID_LO);
692 sc->fc.config_rom[5] = 0;
693 sc->fc.config_rom[0] = (4 << 24) | (5 << 16);
695 sc->fc.config_rom[0] |= fw_crc16(&sc->fc.config_rom[1], 5*4);
700 sc->sid_buf = fwdma_malloc(&sc->fc, OHCI_SIDSIZE, OHCI_SIDSIZE,
707 fwdma_malloc(&sc->fc, sizeof(uint32_t), sizeof(uint32_t),
731 sc->fc.eui.hi = OREAD(sc, FWOHCIGUID_H);
732 sc->fc.eui.lo = OREAD(sc, FWOHCIGUID_L);
734 ui[i] = FW_EUI64_BYTE(&sc->fc.eui,i);
738 sc->fc.ioctl = fwohci_ioctl;
739 sc->fc.cyctimer = fwohci_cyctimer;
740 sc->fc.set_bmr = fwohci_set_bus_manager;
741 sc->fc.ibr = fwohci_ibr;
742 sc->fc.irx_enable = fwohci_irx_enable;
743 sc->fc.irx_disable = fwohci_irx_disable;
745 sc->fc.itx_enable = fwohci_itxbuf_enable;
746 sc->fc.itx_disable = fwohci_itx_disable;
748 sc->fc.irx_post = fwohci_irx_post;
750 sc->fc.irx_post = NULL;
752 sc->fc.itx_post = NULL;
753 sc->fc.timeout = fwohci_timeout;
754 sc->fc.poll = fwohci_poll;
755 sc->fc.set_intr = fwohci_set_intr;
760 sc->fc.taskqueue = taskqueue_create_fast("fw_taskq", M_WAITOK,
761 taskqueue_thread_enqueue, &sc->fc.taskqueue);
762 taskqueue_start_threads(&sc->fc.taskqueue, 1, PI_NET, "fw%d_taskq",
768 fw_init(&sc->fc);
783 fwohci_cyctimer(struct firewire_comm *fc) argument
785 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
795 fwdma_free(&sc->fc, &sc->sid_dma);
796 if (sc->fc.config_rom != NULL)
797 fwdma_free(&sc->fc, &sc->crom_dma);
805 for (i = 0; i < sc->fc.nisodma; i++) {
809 if (sc->fc.taskqueue != NULL) {
810 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_busreset);
811 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_sid);
812 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_dma);
813 taskqueue_drain(sc->fc.taskqueue, &sc->fc.task_timeout);
814 taskqueue_free(sc->fc.taskqueue);
815 sc->fc.taskqueue = NULL;
875 FW_GLOCK_ASSERT(&sc->fc);
896 device_printf(sc->fc.dev, "TX queue empty\n");
968 device_printf(sc->fc.dev, "EFBIG.\n");
980 device_printf(sc->fc.dev, "m_getcl failed.\n");
996 device_printf(sc->fc.dev, "%s: maxdesc %d\n", __func__, maxdesc);
1017 device_printf(sc->fc.dev, "fwohci_start: lack of db_trq\n");
1029 device_printf(sc->fc.dev, "start AT DMA status=%x\n",
1041 fwohci_start_atq(struct firewire_comm *fc) argument
1043 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1044 FW_GLOCK(&sc->fc);
1046 FW_GUNLOCK(&sc->fc);
1051 fwohci_start_ats(struct firewire_comm *fc) argument
1053 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1054 FW_GLOCK(&sc->fc);
1056 FW_GUNLOCK(&sc->fc);
1070 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1090 if (fc->status != FWBUSINIT)
1104 device_printf(sc->fc.dev, "force reset AT FIFO\n");
1169 FW_GLOCK(fc);
1171 FW_GUNLOCK(fc);
1188 FW_GLOCK(fc);
1190 FW_GUNLOCK(fc);
1233 if (bus_dma_tag_create(/*parent*/ sc->fc.dmat,
1243 /*lockarg*/FW_GMTX(&sc->fc),
1255 dbch->am = fwdma_malloc_multiseg(&sc->fc, sizeof(struct fwohcidb),
1298 fwohci_itx_disable(struct firewire_comm *fc, int dmach) argument
1300 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1314 fwohci_irx_disable(struct firewire_comm *fc, int dmach) argument
1316 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1330 fwohci_irx_post (struct firewire_comm *fc , uint32_t *qld) argument
1351 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1411 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1472 fwohci_next_cycle(struct firewire_comm *fc, int cycle_now) argument
1503 fwohci_itxbuf_enable(struct firewire_comm *fc, int dmach) argument
1505 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1533 FW_GLOCK(fc);
1560 FW_GUNLOCK(fc);
1599 cycle_now = (fc->cyctimer(fc) >> 12) & 0x7fff;
1600 cycle_match = fwohci_next_cycle(fc, cycle_now);
1615 device_printf(sc->fc.dev,
1624 fwohci_irx_enable(struct firewire_comm *fc, int dmach) argument
1626 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1656 device_printf(fc->dev, "IR DMA no free chunk\n");
1663 FW_GLOCK(fc);
1692 FW_GUNLOCK(fc);
1701 device_printf(sc->fc.dev, "IR DMA overrun (0x%08x)\n", stat);
1727 fwohci_set_intr(&sc->fc, 0);
1735 for (i = 0; i < sc->fc.nisodma; i++) {
1767 for (i = 0; i < sc->fc.nisodma; i++) {
1770 device_printf(sc->fc.dev,
1778 sc->fc.irx_enable(&sc->fc, i);
1783 sc->fc.ibr(&sc->fc);
1792 device_printf(fc->dev, "INTERRUPT < %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s> 0x%08x, 0x%08x\n",
1822 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1826 FW_GLOCK_ASSERT(fc);
1827 if ((stat & OHCI_INT_PHY_BUS_R) && (fc->status != FWBUSRESET)) {
1828 fc->status = FWBUSRESET;
1832 device_printf(fc->dev, "%s: BUS reset\n", __func__);
1842 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_busreset);
1857 device_printf(fc->dev,
1868 device_printf(fc->dev,
1872 device_printf(fc->dev,
1887 fc->nodeid = node_id & 0x3f;
1888 device_printf(fc->dev, "%s: node_id=0x%08x, SelfID Count=%d, ",
1889 __func__, fc->nodeid, (plen >> 16) & 0xff);
1891 device_printf(fc->dev, "%s: Bus reset failure\n",
1909 fc->status = FWBUSINIT;
1912 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_sid);
1916 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_dma);
1924 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1928 for (i = 0; i < fc->nisodma; i++) {
1934 device_printf(sc->fc.dev,
1944 for (i = 0; i < fc->nisodma; i++) {
1973 device_printf(fc->dev, "too many cycles lost, "
1984 device_printf(fc->dev, "posted write error\n");
1987 device_printf(fc->dev, "unrecoverable error\n");
1990 device_printf(fc->dev, "phy int\n");
1999 FW_GLOCK(&sc->fc);
2000 fw_busreset(&sc->fc, FWBUSRESET);
2001 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
2002 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
2003 FW_GUNLOCK(&sc->fc);
2010 struct firewire_comm *fc = &sc->fc; local
2022 device_printf(fc->dev, "SID Error\n");
2027 device_printf(fc->dev, "invalid SID len = %d\n", plen);
2033 device_printf(fc->dev, "malloc failed\n");
2044 fw_drain_txq(fc);
2045 fw_sidrcv(fc, buf, plen);
2069 FW_GLOCK_ASSERT(&sc->fc);
2072 if (!bus_child_present(sc->fc.dev))
2074 device_printf(sc->fc.dev, "device physically ejected?\n");
2105 FW_GLOCK(&sc->fc);
2107 FW_GUNLOCK(&sc->fc);
2111 fwohci_poll(struct firewire_comm *fc, int quick, int count) argument
2113 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
2115 FW_GLOCK(fc);
2117 FW_GUNLOCK(fc);
2121 fwohci_set_intr(struct firewire_comm *fc, int enable) argument
2125 sc = (struct fwohci_softc *)fc;
2127 device_printf(sc->fc.dev, "fwohci_set_intr: %d\n", enable);
2140 struct firewire_comm *fc = &sc->fc; local
2147 it = fc->it[dmach];
2150 FW_GLOCK(fc);
2168 device_printf(fc->dev, "0x%08x\n", count);
2172 device_printf(fc->dev,
2179 FW_GUNLOCK(fc);
2188 struct firewire_comm *fc = &sc->fc; local
2195 ir = fc->ir[dmach];
2202 FW_GLOCK(fc);
2231 device_printf(fc->dev,
2238 FW_GUNLOCK(fc);
2270 device_printf(sc->fc.dev, "ch %1x cntl:0x%08x cmd:0x%08x match:0x%08x\n",
2277 device_printf(sc->fc.dev, "dma %d ch:%s%s%s%s%s%s %s(%x)\n",
2289 device_printf(sc->fc.dev, "dma %d ch: Nostat\n", ch);
2324 device_printf(sc->fc.dev, "No DB is attached ch=%d\n", ch);
2457 fwohci_ibr(struct firewire_comm *fc) argument
2462 device_printf(fc->dev, "Initiate bus reset\n");
2463 sc = (struct fwohci_softc *)fc;
2465 FW_GLOCK(fc);
2470 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
2471 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
2486 FW_GUNLOCK(fc);
2500 FW_GLOCK_ASSERT(&sc->fc);
2703 device_printf(sc->fc.dev, "Unknown tcode %d\n",
2709 device_printf(sc->fc.dev, "Invalid packet length %d\n", r);
2899 rb.fc = &sc->fc;
2907 if ((sc->fc.status != FWBUSRESET) &&
2908 (sc->fc.status != FWBUSINIT))
2912 device_printf(sc->fc.dev,
2963 device_printf(sc->fc.dev, "AR DMA status=%x, ",