Lines Matching refs:fc
279 fwohci_set_bus_manager(struct firewire_comm *fc, u_int node) in fwohci_set_bus_manager() argument
281 struct fwohci_softc *sc = (struct fwohci_softc *)fc; in fwohci_set_bus_manager()
299 device_printf(sc->fc.dev, "%s: %d->%d (loop=%d)\n", in fwohci_set_bus_manager()
324 device_printf(sc->fc.dev, "%s: failed(1).\n", __func__); in fwphy_rddata()
335 device_printf(sc->fc.dev, "%s: failed(2).\n", __func__); in fwphy_rddata()
342 device_printf(sc->fc.dev, in fwphy_rddata()
354 struct fwohci_softc *fc; in fwohci_ioctl() local
364 fc = (struct fwohci_softc *)sc->fc; in fwohci_ioctl()
373 OWRITE(fc, reg->addr, reg->data); in fwohci_ioctl()
374 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
381 reg->data = OREAD(fc, reg->addr); in fwohci_ioctl()
389 dump_dma(fc, *dmach); in fwohci_ioctl()
390 dump_db(fc, *dmach); in fwohci_ioctl()
399 reg->data = fwphy_rddata(fc, reg->addr); in fwohci_ioctl()
405 reg->data = fwphy_wrdata(fc, reg->addr, reg->data); in fwohci_ioctl()
435 sc->fc.mode &= ~FWPHYASYST;
436 sc->fc.nport = reg & FW_PHY_NP;
437 sc->fc.speed = reg & FW_PHY_SPD >> 6;
438 if (sc->fc.speed > MAX_SPEED) {
440 sc->fc.speed, MAX_SPEED);
441 sc->fc.speed = MAX_SPEED;
445 linkspeed[sc->fc.speed], sc->fc.nport);
448 sc->fc.mode |= FWPHYASYST;
449 sc->fc.nport = reg & FW_PHY_NP;
450 sc->fc.speed = (reg2 & FW_PHY_ESPD) >> 5;
451 if (sc->fc.speed > MAX_SPEED) {
453 sc->fc.speed, MAX_SPEED);
454 sc->fc.speed = MAX_SPEED;
458 linkspeed[sc->fc.speed], sc->fc.nport);
510 for (i = 0; i < sc->fc.nisodma; i++) {
538 sc->fc.maxrec = sc->fc.speed + 8;
539 if (max_rec != sc->fc.maxrec) {
540 reg2 = (reg2 & 0xffff0fff) | (sc->fc.maxrec << 12);
542 MAXREC(max_rec), MAXREC(sc->fc.maxrec));
549 OWRITE(sc, OHCI_CROMHDR, sc->fc.config_rom[0]);
596 fwohci_set_intr(&sc->fc, 1);
625 sc->fc.nisodma = i;
630 sc->fc.arq = &sc->arrq.xferq;
631 sc->fc.ars = &sc->arrs.xferq;
632 sc->fc.atq = &sc->atrq.xferq;
633 sc->fc.ats = &sc->atrs.xferq;
665 for (i = 0; i < sc->fc.nisodma; i++) {
666 sc->fc.it[i] = &sc->it[i].xferq;
667 sc->fc.ir[i] = &sc->ir[i].xferq;
674 sc->fc.tcode = tinfo;
675 sc->fc.dev = dev;
677 sc->fc.config_rom = fwdma_malloc(&sc->fc, CROMSIZE, CROMSIZE,
679 if (sc->fc.config_rom == NULL) {
685 bzero(&sc->fc.config_rom[0], CROMSIZE);
686 sc->fc.config_rom[1] = 0x31333934;
687 sc->fc.config_rom[2] = 0xf000a002;
688 sc->fc.config_rom[3] = OREAD(sc, OHCI_EUID_HI);
689 sc->fc.config_rom[4] = OREAD(sc, OHCI_EUID_LO);
690 sc->fc.config_rom[5] = 0;
691 sc->fc.config_rom[0] = (4 << 24) | (5 << 16);
693 sc->fc.config_rom[0] |= fw_crc16(&sc->fc.config_rom[1], 5*4);
698 sc->sid_buf = fwdma_malloc(&sc->fc, OHCI_SIDSIZE, OHCI_SIDSIZE,
705 fwdma_malloc(&sc->fc, sizeof(uint32_t), sizeof(uint32_t),
729 sc->fc.eui.hi = OREAD(sc, FWOHCIGUID_H);
730 sc->fc.eui.lo = OREAD(sc, FWOHCIGUID_L);
732 ui[i] = FW_EUI64_BYTE(&sc->fc.eui,i);
736 sc->fc.ioctl = fwohci_ioctl;
737 sc->fc.cyctimer = fwohci_cyctimer;
738 sc->fc.set_bmr = fwohci_set_bus_manager;
739 sc->fc.ibr = fwohci_ibr;
740 sc->fc.irx_enable = fwohci_irx_enable;
741 sc->fc.irx_disable = fwohci_irx_disable;
743 sc->fc.itx_enable = fwohci_itxbuf_enable;
744 sc->fc.itx_disable = fwohci_itx_disable;
746 sc->fc.irx_post = fwohci_irx_post;
748 sc->fc.irx_post = NULL;
750 sc->fc.itx_post = NULL;
751 sc->fc.timeout = fwohci_timeout;
752 sc->fc.poll = fwohci_poll;
753 sc->fc.set_intr = fwohci_set_intr;
758 sc->fc.taskqueue = taskqueue_create_fast("fw_taskq", M_WAITOK,
759 taskqueue_thread_enqueue, &sc->fc.taskqueue);
760 taskqueue_start_threads(&sc->fc.taskqueue, 1, PI_NET, "fw%d_taskq",
766 fw_init(&sc->fc);
781 fwohci_cyctimer(struct firewire_comm *fc) argument
783 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
793 fwdma_free(&sc->fc, &sc->sid_dma);
794 if (sc->fc.config_rom != NULL)
795 fwdma_free(&sc->fc, &sc->crom_dma);
803 for (i = 0; i < sc->fc.nisodma; i++) {
807 if (sc->fc.taskqueue != NULL) {
808 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_busreset);
809 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_sid);
810 taskqueue_drain(sc->fc.taskqueue, &sc->fwohci_task_dma);
811 taskqueue_drain(sc->fc.taskqueue, &sc->fc.task_timeout);
812 taskqueue_free(sc->fc.taskqueue);
813 sc->fc.taskqueue = NULL;
873 FW_GLOCK_ASSERT(&sc->fc);
894 device_printf(sc->fc.dev, "TX queue empty\n");
966 device_printf(sc->fc.dev, "EFBIG.\n");
978 device_printf(sc->fc.dev, "m_getcl failed.\n");
994 device_printf(sc->fc.dev, "%s: maxdesc %d\n", __func__, maxdesc);
1015 device_printf(sc->fc.dev, "fwohci_start: lack of db_trq\n");
1027 device_printf(sc->fc.dev, "start AT DMA status=%x\n",
1039 fwohci_start_atq(struct firewire_comm *fc) argument
1041 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1042 FW_GLOCK(&sc->fc);
1044 FW_GUNLOCK(&sc->fc);
1049 fwohci_start_ats(struct firewire_comm *fc) argument
1051 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1052 FW_GLOCK(&sc->fc);
1054 FW_GUNLOCK(&sc->fc);
1068 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1088 if (fc->status != FWBUSINIT)
1102 device_printf(sc->fc.dev, "force reset AT FIFO\n");
1167 FW_GLOCK(fc);
1169 FW_GUNLOCK(fc);
1186 FW_GLOCK(fc);
1188 FW_GUNLOCK(fc);
1231 if (bus_dma_tag_create(/*parent*/ sc->fc.dmat,
1241 /*lockarg*/FW_GMTX(&sc->fc),
1253 dbch->am = fwdma_malloc_multiseg(&sc->fc, sizeof(struct fwohcidb),
1296 fwohci_itx_disable(struct firewire_comm *fc, int dmach) argument
1298 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1312 fwohci_irx_disable(struct firewire_comm *fc, int dmach) argument
1314 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1328 fwohci_irx_post (struct firewire_comm *fc , uint32_t *qld) argument
1349 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1409 for (dmach = 0; dmach < sc->fc.nisodma; dmach++) {
1470 fwohci_next_cycle(struct firewire_comm *fc, int cycle_now) argument
1501 fwohci_itxbuf_enable(struct firewire_comm *fc, int dmach) argument
1503 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1528 FW_GLOCK(fc);
1555 FW_GUNLOCK(fc);
1594 cycle_now = (fc->cyctimer(fc) >> 12) & 0x7fff;
1595 cycle_match = fwohci_next_cycle(fc, cycle_now);
1610 device_printf(sc->fc.dev,
1619 fwohci_irx_enable(struct firewire_comm *fc, int dmach) argument
1621 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
1651 device_printf(fc->dev, "IR DMA no free chunk\n");
1658 FW_GLOCK(fc);
1687 FW_GUNLOCK(fc);
1696 device_printf(sc->fc.dev, "IR DMA overrun (0x%08x)\n", stat);
1722 fwohci_set_intr(&sc->fc, 0);
1730 for (i = 0; i < sc->fc.nisodma; i++) {
1762 for (i = 0; i < sc->fc.nisodma; i++) {
1765 device_printf(sc->fc.dev,
1773 sc->fc.irx_enable(&sc->fc, i);
1778 sc->fc.ibr(&sc->fc);
1787 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",
1817 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1821 FW_GLOCK_ASSERT(fc);
1822 if ((stat & OHCI_INT_PHY_BUS_R) && (fc->status != FWBUSRESET)) {
1823 fc->status = FWBUSRESET;
1827 device_printf(fc->dev, "%s: BUS reset\n", __func__);
1837 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_busreset);
1852 device_printf(fc->dev,
1863 device_printf(fc->dev,
1867 device_printf(fc->dev,
1882 fc->nodeid = node_id & 0x3f;
1883 device_printf(fc->dev, "%s: node_id=0x%08x, SelfID Count=%d, ",
1884 __func__, fc->nodeid, (plen >> 16) & 0xff);
1886 device_printf(fc->dev, "%s: Bus reset failure\n",
1904 fc->status = FWBUSINIT;
1907 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_sid);
1911 taskqueue_enqueue(sc->fc.taskqueue, &sc->fwohci_task_dma);
1919 struct firewire_comm *fc = (struct firewire_comm *)sc; local
1923 for (i = 0; i < fc->nisodma; i++) {
1929 device_printf(sc->fc.dev,
1939 for (i = 0; i < fc->nisodma; i++) {
1968 device_printf(fc->dev, "too many cycles lost, "
1979 device_printf(fc->dev, "posted write error\n");
1982 device_printf(fc->dev, "unrecoverable error\n");
1985 device_printf(fc->dev, "phy int\n");
1994 FW_GLOCK(&sc->fc);
1995 fw_busreset(&sc->fc, FWBUSRESET);
1996 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
1997 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
1998 FW_GUNLOCK(&sc->fc);
2005 struct firewire_comm *fc = &sc->fc; local
2017 device_printf(fc->dev, "SID Error\n");
2022 device_printf(fc->dev, "invalid SID len = %d\n", plen);
2028 device_printf(fc->dev, "malloc failed\n");
2039 fw_drain_txq(fc);
2040 fw_sidrcv(fc, buf, plen);
2064 FW_GLOCK_ASSERT(&sc->fc);
2067 if (!bus_child_present(sc->fc.dev))
2069 device_printf(sc->fc.dev, "device physically ejected?\n");
2100 FW_GLOCK(&sc->fc);
2102 FW_GUNLOCK(&sc->fc);
2106 fwohci_poll(struct firewire_comm *fc, int quick, int count) argument
2108 struct fwohci_softc *sc = (struct fwohci_softc *)fc;
2110 FW_GLOCK(fc);
2112 FW_GUNLOCK(fc);
2116 fwohci_set_intr(struct firewire_comm *fc, int enable) argument
2120 sc = (struct fwohci_softc *)fc;
2122 device_printf(sc->fc.dev, "fwohci_set_intr: %d\n", enable);
2135 struct firewire_comm *fc = &sc->fc; local
2142 it = fc->it[dmach];
2145 FW_GLOCK(fc);
2163 device_printf(fc->dev, "0x%08x\n", count);
2167 device_printf(fc->dev,
2174 FW_GUNLOCK(fc);
2183 struct firewire_comm *fc = &sc->fc; local
2190 ir = fc->ir[dmach];
2197 FW_GLOCK(fc);
2226 device_printf(fc->dev,
2233 FW_GUNLOCK(fc);
2265 device_printf(sc->fc.dev, "ch %1x cntl:0x%08x cmd:0x%08x match:0x%08x\n",
2272 device_printf(sc->fc.dev, "dma %d ch:%s%s%s%s%s%s %s(%x)\n",
2284 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);
2465 fwohci_ibr(struct firewire_comm *fc) argument
2470 device_printf(fc->dev, "Initiate bus reset\n");
2471 sc = (struct fwohci_softc *)fc;
2473 FW_GLOCK(fc);
2478 OWRITE(sc, OHCI_CROMHDR, ntohl(sc->fc.config_rom[0]));
2479 OWRITE(sc, OHCI_BUS_OPT, ntohl(sc->fc.config_rom[2]));
2494 FW_GUNLOCK(fc);
2511 FW_GLOCK_ASSERT(&sc->fc);
2519 device_printf(sc->fc.dev, "DB %08x %08x %08x\n", bulkxfer, db_tr->bus_addr, fdb_tr->bus_addr);
2563 device_printf(sc->fc.dev, "DB %08x %3d %08x %08x\n", bulkxfer, bulkxfer->npacket, db_tr->bus_addr, …
2719 device_printf(sc->fc.dev, "Unknown tcode %d\n",
2725 device_printf(sc->fc.dev, "Invalid packet length %d\n", r);
2920 rb.fc = &sc->fc;
2928 if ((sc->fc.status != FWBUSRESET) &&
2929 (sc->fc.status != FWBUSINIT))
2933 device_printf(sc->fc.dev,
2986 device_printf(sc->fc.dev, "AR DMA status=%x, ",