Lines Matching refs:fc

280 fwohci_set_bus_manager(struct firewire_comm *fc, u_int node)  in fwohci_set_bus_manager()  argument
282 struct fwohci_softc *sc = (struct fwohci_softc *)fc; in fwohci_set_bus_manager()
300 device_printf(sc->fc.dev, "%s: %d->%d (loop=%d)\n", in fwohci_set_bus_manager()
325 device_printf(sc->fc.dev, "%s: failed(1).\n", __func__); in fwphy_rddata()
336 device_printf(sc->fc.dev, "%s: failed(2).\n", __func__); in fwphy_rddata()
343 device_printf(sc->fc.dev, in fwphy_rddata()
355 struct fwohci_softc *fc; in fwohci_ioctl() local
365 fc = (struct fwohci_softc *)sc->fc; in fwohci_ioctl()
374 OWRITE(fc, reg->addr, reg->data); in fwohci_ioctl()
375 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
382 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
390 dump_dma(fc, *dmach); in fwohci_ioctl()
391 dump_db(fc, *dmach); in fwohci_ioctl()
400 reg->data = fwphy_rddata(fc, reg->addr); in fwohci_ioctl()
406 reg->data = fwphy_wrdata(fc, reg->addr, reg->data); in fwohci_ioctl()
436 sc->fc.mode &= ~FWPHYASYST;
437 sc->fc.nport = reg & FW_PHY_NP;
438 sc->fc.speed = reg & FW_PHY_SPD >> 6;
439 if (sc->fc.speed > MAX_SPEED) {
441 sc->fc.speed, MAX_SPEED);
442 sc->fc.speed = MAX_SPEED;
446 linkspeed[sc->fc.speed], sc->fc.nport);
449 sc->fc.mode |= FWPHYASYST;
450 sc->fc.nport = reg & FW_PHY_NP;
451 sc->fc.speed = (reg2 & FW_PHY_ESPD) >> 5;
452 if (sc->fc.speed > MAX_SPEED) {
454 sc->fc.speed, MAX_SPEED);
455 sc->fc.speed = MAX_SPEED;
459 linkspeed[sc->fc.speed], sc->fc.nport);
511 for (i = 0; i < sc->fc.nisodma; i++) {
539 sc->fc.maxrec = sc->fc.speed + 8;
540 if (max_rec != sc->fc.maxrec) {
541 reg2 = (reg2 & 0xffff0fff) | (sc->fc.maxrec << 12);
543 MAXREC(max_rec), MAXREC(sc->fc.maxrec));
550 OWRITE(sc, OHCI_CROMHDR, sc->fc.config_rom[0]);
597 fwohci_set_intr(&sc->fc, 1);
626 sc->fc.nisodma = i;
631 sc->fc.arq = &sc->arrq.xferq;
632 sc->fc.ars = &sc->arrs.xferq;
633 sc->fc.atq = &sc->atrq.xferq;
634 sc->fc.ats = &sc->atrs.xferq;
666 for (i = 0; i < sc->fc.nisodma; i++) {
667 sc->fc.it[i] = &sc->it[i].xferq;
668 sc->fc.ir[i] = &sc->ir[i].xferq;
675 sc->fc.tcode = tinfo;
676 sc->fc.dev = dev;
678 sc->fc.config_rom = fwdma_malloc(&sc->fc, CROMSIZE, CROMSIZE,
680 if (sc->fc.config_rom == NULL) {
686 bzero(&sc->fc.config_rom[0], CROMSIZE);
687 sc->fc.config_rom[1] = 0x31333934;
688 sc->fc.config_rom[2] = 0xf000a002;
689 sc->fc.config_rom[3] = OREAD(sc, OHCI_EUID_HI);
690 sc->fc.config_rom[4] = OREAD(sc, OHCI_EUID_LO);
691 sc->fc.config_rom[5] = 0;
692 sc->fc.config_rom[0] = (4 << 24) | (5 << 16);
694 sc->fc.config_rom[0] |= fw_crc16(&sc->fc.config_rom[1], 5*4);
699 sc->sid_buf = fwdma_malloc(&sc->fc, OHCI_SIDSIZE, OHCI_SIDSIZE,
706 fwdma_malloc(&sc->fc, sizeof(uint32_t), sizeof(uint32_t),
730 sc->fc.eui.hi = OREAD(sc, FWOHCIGUID_H);
731 sc->fc.eui.lo = OREAD(sc, FWOHCIGUID_L);
733 ui[i] = FW_EUI64_BYTE(&sc->fc.eui,i);
737 sc->fc.ioctl = fwohci_ioctl;
738 sc->fc.cyctimer = fwohci_cyctimer;
739 sc->fc.set_bmr = fwohci_set_bus_manager;
740 sc->fc.ibr = fwohci_ibr;
741 sc->fc.irx_enable = fwohci_irx_enable;
742 sc->fc.irx_disable = fwohci_irx_disable;
744 sc->fc.itx_enable = fwohci_itxbuf_enable;
745 sc->fc.itx_disable = fwohci_itx_disable;
747 sc->fc.irx_post = fwohci_irx_post;
749 sc->fc.irx_post = NULL;
751 sc->fc.itx_post = NULL;
752 sc->fc.timeout = fwohci_timeout;
753 sc->fc.poll = fwohci_poll;
754 sc->fc.set_intr = fwohci_set_intr;
759 sc->fc.taskqueue = taskqueue_create_fast("fw_taskq", M_WAITOK,
760 taskqueue_thread_enqueue, &sc->fc.taskqueue);
761 taskqueue_start_threads(&sc->fc.taskqueue, 1, PI_NET, "fw%d_taskq",
767 fw_init(&sc->fc);
782 fwohci_cyctimer(struct firewire_comm *fc) argument
784 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
794 fwdma_free(&sc->fc, &sc->sid_dma);
795 if (sc->fc.config_rom != NULL)
796 fwdma_free(&sc->fc, &sc->crom_dma);
804 for (i = 0; i < sc->fc.nisodma; i++) {
808 if (sc->fc.taskqueue != NULL) {
809 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_busreset);
810 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_sid);
811 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_dma);
812 taskqueue_drain(sc->fc.taskqueue, &sc->fc.task_timeout);
813 taskqueue_free(sc->fc.taskqueue);
814 sc->fc.taskqueue = NULL;
874 FW_GLOCK_ASSERT(&sc->fc);
895 device_printf(sc->fc.dev, "TX queue empty\n");
967 device_printf(sc->fc.dev, "EFBIG.\n");
979 device_printf(sc->fc.dev, "m_getcl failed.\n");
995 device_printf(sc->fc.dev, "%s: maxdesc %d\n", __func__, maxdesc);
1016 device_printf(sc->fc.dev, "fwohci_start: lack of db_trq\n");
1028 device_printf(sc->fc.dev, "start AT DMA status=%x\n",
1040 fwohci_start_atq(struct firewire_comm *fc) argument
1042 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1043 FW_GLOCK(&sc->fc);
1045 FW_GUNLOCK(&sc->fc);
1050 fwohci_start_ats(struct firewire_comm *fc) argument
1052 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1053 FW_GLOCK(&sc->fc);
1055 FW_GUNLOCK(&sc->fc);
1069 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1089 if (fc->status != FWBUSINIT)
1103 device_printf(sc->fc.dev, "force reset AT FIFO\n");
1168 FW_GLOCK(fc);
1170 FW_GUNLOCK(fc);
1187 FW_GLOCK(fc);
1189 FW_GUNLOCK(fc);
1232 if (bus_dma_tag_create(/*parent*/ sc->fc.dmat,
1242 /*lockarg*/FW_GMTX(&sc->fc),
1254 dbch->am = fwdma_malloc_multiseg(&sc->fc, sizeof(struct fwohcidb),
1297 fwohci_itx_disable(struct firewire_comm *fc, int dmach) argument
1299 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1313 fwohci_irx_disable(struct firewire_comm *fc, int dmach) argument
1315 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1329 fwohci_irx_post (struct firewire_comm *fc , uint32_t *qld) argument
1350 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1410 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1471 fwohci_next_cycle(struct firewire_comm *fc, int cycle_now) argument
1502 fwohci_itxbuf_enable(struct firewire_comm *fc, int dmach) argument
1504 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1532 FW_GLOCK(fc);
1559 FW_GUNLOCK(fc);
1598 cycle_now = (fc->cyctimer(fc) >> 12) & 0x7fff;
1599 cycle_match = fwohci_next_cycle(fc, cycle_now);
1614 device_printf(sc->fc.dev,
1623 fwohci_irx_enable(struct firewire_comm *fc, int dmach) argument
1625 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1655 device_printf(fc->dev, "IR DMA no free chunk\n");
1662 FW_GLOCK(fc);
1691 FW_GUNLOCK(fc);
1700 device_printf(sc->fc.dev, "IR DMA overrun (0x%08x)\n", stat);
1726 fwohci_set_intr(&sc->fc, 0);
1734 for (i = 0; i < sc->fc.nisodma; i++) {
1766 for (i = 0; i < sc->fc.nisodma; i++) {
1769 device_printf(sc->fc.dev,
1777 sc->fc.irx_enable(&sc->fc, i);
1782 sc->fc.ibr(&sc->fc);
1791 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",
1821 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1825 FW_GLOCK_ASSERT(fc);
1826 if ((stat & OHCI_INT_PHY_BUS_R) && (fc->status != FWBUSRESET)) {
1827 fc->status = FWBUSRESET;
1831 device_printf(fc->dev, "%s: BUS reset\n", __func__);
1841 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_busreset);
1856 device_printf(fc->dev,
1867 device_printf(fc->dev,
1871 device_printf(fc->dev,
1886 fc->nodeid = node_id & 0x3f;
1887 device_printf(fc->dev, "%s: node_id=0x%08x, SelfID Count=%d, ",
1888 __func__, fc->nodeid, (plen >> 16) & 0xff);
1890 device_printf(fc->dev, "%s: Bus reset failure\n",
1908 fc->status = FWBUSINIT;
1911 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_sid);
1915 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_dma);
1923 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1927 for (i = 0; i < fc->nisodma; i++) {
1933 device_printf(sc->fc.dev,
1943 for (i = 0; i < fc->nisodma; i++) {
1972 device_printf(fc->dev, "too many cycles lost, "
1983 device_printf(fc->dev, "posted write error\n");
1986 device_printf(fc->dev, "unrecoverable error\n");
1989 device_printf(fc->dev, "phy int\n");
1998 FW_GLOCK(&sc->fc);
1999 fw_busreset(&sc->fc, FWBUSRESET);
2000 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
2001 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
2002 FW_GUNLOCK(&sc->fc);
2009 struct firewire_comm *fc = &sc->fc; local
2021 device_printf(fc->dev, "SID Error\n");
2026 device_printf(fc->dev, "invalid SID len = %d\n", plen);
2032 device_printf(fc->dev, "malloc failed\n");
2043 fw_drain_txq(fc);
2044 fw_sidrcv(fc, buf, plen);
2068 FW_GLOCK_ASSERT(&sc->fc);
2071 if (!bus_child_present(sc->fc.dev))
2073 device_printf(sc->fc.dev, "device physically ejected?\n");
2104 FW_GLOCK(&sc->fc);
2106 FW_GUNLOCK(&sc->fc);
2110 fwohci_poll(struct firewire_comm *fc, int quick, int count) argument
2112 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
2114 FW_GLOCK(fc);
2116 FW_GUNLOCK(fc);
2120 fwohci_set_intr(struct firewire_comm *fc, int enable) argument
2124 sc = (struct fwohci_softc *)fc;
2126 device_printf(sc->fc.dev, "fwohci_set_intr: %d\n", enable);
2139 struct firewire_comm *fc = &sc->fc; local
2146 it = fc->it[dmach];
2149 FW_GLOCK(fc);
2167 device_printf(fc->dev, "0x%08x\n", count);
2171 device_printf(fc->dev,
2178 FW_GUNLOCK(fc);
2187 struct firewire_comm *fc = &sc->fc; local
2194 ir = fc->ir[dmach];
2201 FW_GLOCK(fc);
2230 device_printf(fc->dev,
2237 FW_GUNLOCK(fc);
2269 device_printf(sc->fc.dev, "ch %1x cntl:0x%08x cmd:0x%08x match:0x%08x\n",
2276 device_printf(sc->fc.dev, "dma %d ch:%s%s%s%s%s%s %s(%x)\n",
2288 device_printf(sc->fc.dev, "dma %d ch: Nostat\n", ch);
2323 device_printf(sc->fc.dev, "No DB is attached ch=%d\n", ch);
2456 fwohci_ibr(struct firewire_comm *fc) argument
2461 device_printf(fc->dev, "Initiate bus reset\n");
2462 sc = (struct fwohci_softc *)fc;
2464 FW_GLOCK(fc);
2469 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
2470 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
2485 FW_GUNLOCK(fc);
2499 FW_GLOCK_ASSERT(&sc->fc);
2702 device_printf(sc->fc.dev, "Unknown tcode %d\n",
2708 device_printf(sc->fc.dev, "Invalid packet length %d\n", r);
2898 rb.fc = &sc->fc;
2906 if ((sc->fc.status != FWBUSRESET) &&
2907 (sc->fc.status != FWBUSINIT))
2911 device_printf(sc->fc.dev,
2962 device_printf(sc->fc.dev, "AR DMA status=%x, ",