Deleted Added
full compact
fwohci.c (116897) fwohci.c (116978)
1/*
2 * Copyright (c) 2003 Hidetoshi Shimokawa
3 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 17 unchanged lines hidden (view full) ---

26 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
30 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *
1/*
2 * Copyright (c) 2003 Hidetoshi Shimokawa
3 * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 17 unchanged lines hidden (view full) ---

26 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
30 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *
34 * $FreeBSD: head/sys/dev/firewire/fwohci.c 116897 2003-06-27 00:27:33Z simokawa $
34 * $FreeBSD: head/sys/dev/firewire/fwohci.c 116978 2003-06-28 11:11:36Z simokawa $
35 *
36 */
37
38#define ATRQ_CH 0
39#define ATRS_CH 1
40#define ARRQ_CH 2
41#define ARRS_CH 3
42#define ITX_CH 4

--- 501 unchanged lines hidden (view full) ---

544 sc->arrq.xferq.flag &= ~FWXFERQ_RUNNING;
545 sc->arrs.xferq.flag &= ~FWXFERQ_RUNNING;
546 fwohci_rx_enable(sc, &sc->arrq);
547 fwohci_rx_enable(sc, &sc->arrs);
548
549 /* Initialize async TX */
550 OWRITE(sc, OHCI_ATQCTLCLR, OHCI_CNTL_DMA_RUN | OHCI_CNTL_DMA_DEAD);
551 OWRITE(sc, OHCI_ATSCTLCLR, OHCI_CNTL_DMA_RUN | OHCI_CNTL_DMA_DEAD);
35 *
36 */
37
38#define ATRQ_CH 0
39#define ATRS_CH 1
40#define ARRQ_CH 2
41#define ARRS_CH 3
42#define ITX_CH 4

--- 501 unchanged lines hidden (view full) ---

544 sc->arrq.xferq.flag &= ~FWXFERQ_RUNNING;
545 sc->arrs.xferq.flag &= ~FWXFERQ_RUNNING;
546 fwohci_rx_enable(sc, &sc->arrq);
547 fwohci_rx_enable(sc, &sc->arrs);
548
549 /* Initialize async TX */
550 OWRITE(sc, OHCI_ATQCTLCLR, OHCI_CNTL_DMA_RUN | OHCI_CNTL_DMA_DEAD);
551 OWRITE(sc, OHCI_ATSCTLCLR, OHCI_CNTL_DMA_RUN | OHCI_CNTL_DMA_DEAD);
552
552 /* AT Retries */
553 OWRITE(sc, FWOHCI_RETRY,
554 /* CycleLimit PhyRespRetries ATRespRetries ATReqRetries */
555 (0xffff << 16 ) | (0x0f << 8) | (0x0f << 4) | 0x0f) ;
553 /* AT Retries */
554 OWRITE(sc, FWOHCI_RETRY,
555 /* CycleLimit PhyRespRetries ATRespRetries ATReqRetries */
556 (0xffff << 16 ) | (0x0f << 8) | (0x0f << 4) | 0x0f) ;
557
558 sc->atrq.top = STAILQ_FIRST(&sc->atrq.db_trq);
559 sc->atrs.top = STAILQ_FIRST(&sc->atrs.db_trq);
560 sc->atrq.bottom = sc->atrq.top;
561 sc->atrs.bottom = sc->atrs.top;
562
556 for( i = 0, db_tr = sc->atrq.top; i < sc->atrq.ndb ;
557 i ++, db_tr = STAILQ_NEXT(db_tr, link)){
558 db_tr->xfer = NULL;
559 }
560 for( i = 0, db_tr = sc->atrs.top; i < sc->atrs.ndb ;
561 i ++, db_tr = STAILQ_NEXT(db_tr, link)){
562 db_tr->xfer = NULL;
563 }

--- 1112 unchanged lines hidden (view full) ---

1676/* Stop interrupt */
1677 OWRITE(sc, FWOHCI_INTMASKCLR,
1678 OHCI_INT_EN | OHCI_INT_ERR | OHCI_INT_PHY_SID
1679 | OHCI_INT_PHY_INT
1680 | OHCI_INT_DMA_ATRQ | OHCI_INT_DMA_ATRS
1681 | OHCI_INT_DMA_PRRQ | OHCI_INT_DMA_PRRS
1682 | OHCI_INT_DMA_ARRQ | OHCI_INT_DMA_ARRS
1683 | OHCI_INT_PHY_BUS_R);
563 for( i = 0, db_tr = sc->atrq.top; i < sc->atrq.ndb ;
564 i ++, db_tr = STAILQ_NEXT(db_tr, link)){
565 db_tr->xfer = NULL;
566 }
567 for( i = 0, db_tr = sc->atrs.top; i < sc->atrs.ndb ;
568 i ++, db_tr = STAILQ_NEXT(db_tr, link)){
569 db_tr->xfer = NULL;
570 }

--- 1112 unchanged lines hidden (view full) ---

1683/* Stop interrupt */
1684 OWRITE(sc, FWOHCI_INTMASKCLR,
1685 OHCI_INT_EN | OHCI_INT_ERR | OHCI_INT_PHY_SID
1686 | OHCI_INT_PHY_INT
1687 | OHCI_INT_DMA_ATRQ | OHCI_INT_DMA_ATRS
1688 | OHCI_INT_DMA_PRRQ | OHCI_INT_DMA_PRRS
1689 | OHCI_INT_DMA_ARRQ | OHCI_INT_DMA_ARRS
1690 | OHCI_INT_PHY_BUS_R);
1691
1692 fw_drain_txq(&sc->fc);
1693
1684/* XXX Link down? Bus reset? */
1685 return 0;
1686}
1687
1688int
1689fwohci_resume(struct fwohci_softc *sc, device_t dev)
1690{
1691 int i;
1694/* XXX Link down? Bus reset? */
1695 return 0;
1696}
1697
1698int
1699fwohci_resume(struct fwohci_softc *sc, device_t dev)
1700{
1701 int i;
1702 struct fw_xferq *ir;
1703 struct fw_bulkxfer *chunk;
1692
1693 fwohci_reset(sc, dev);
1694 /* XXX resume isochronus receive automatically. (how about TX?) */
1695 for(i = 0; i < sc->fc.nisodma; i ++) {
1704
1705 fwohci_reset(sc, dev);
1706 /* XXX resume isochronus receive automatically. (how about TX?) */
1707 for(i = 0; i < sc->fc.nisodma; i ++) {
1696 if((sc->ir[i].xferq.flag & FWXFERQ_RUNNING) != 0) {
1708 ir = &sc->ir[i].xferq;
1709 if((ir->flag & FWXFERQ_RUNNING) != 0) {
1697 device_printf(sc->fc.dev,
1698 "resume iso receive ch: %d\n", i);
1710 device_printf(sc->fc.dev,
1711 "resume iso receive ch: %d\n", i);
1699 sc->ir[i].xferq.flag &= ~FWXFERQ_RUNNING;
1712 ir->flag &= ~FWXFERQ_RUNNING;
1713 /* requeue stdma to stfree */
1714 while((chunk = STAILQ_FIRST(&ir->stdma)) != NULL) {
1715 STAILQ_REMOVE_HEAD(&ir->stdma, link);
1716 STAILQ_INSERT_TAIL(&ir->stfree, chunk, link);
1717 }
1700 sc->fc.irx_enable(&sc->fc, i);
1701 }
1702 }
1703
1704 bus_generic_resume(dev);
1705 sc->fc.ibr(&sc->fc);
1706 return 0;
1707}

--- 1145 unchanged lines hidden ---
1718 sc->fc.irx_enable(&sc->fc, i);
1719 }
1720 }
1721
1722 bus_generic_resume(dev);
1723 sc->fc.ibr(&sc->fc);
1724 return 0;
1725}

--- 1145 unchanged lines hidden ---