xref: /freebsd/sys/dev/dwc/dwc1000_dma.h (revision 363b7c39fbad7c03f46e24bb4e435fad5cb56aa7)
1972adf0fSEmmanuel Vadot /*-
2972adf0fSEmmanuel Vadot  * Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com>
3972adf0fSEmmanuel Vadot  *
4972adf0fSEmmanuel Vadot  * This software was developed by SRI International and the University of
5972adf0fSEmmanuel Vadot  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
6972adf0fSEmmanuel Vadot  * ("CTSRD"), as part of the DARPA CRASH research programme.
7972adf0fSEmmanuel Vadot  *
8972adf0fSEmmanuel Vadot  * Redistribution and use in source and binary forms, with or without
9972adf0fSEmmanuel Vadot  * modification, are permitted provided that the following conditions
10972adf0fSEmmanuel Vadot  * are met:
11972adf0fSEmmanuel Vadot  * 1. Redistributions of source code must retain the above copyright
12972adf0fSEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer.
13972adf0fSEmmanuel Vadot  * 2. Redistributions in binary form must reproduce the above copyright
14972adf0fSEmmanuel Vadot  *    notice, this list of conditions and the following disclaimer in the
15972adf0fSEmmanuel Vadot  *    documentation and/or other materials provided with the distribution.
16972adf0fSEmmanuel Vadot  *
17972adf0fSEmmanuel Vadot  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18972adf0fSEmmanuel Vadot  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19972adf0fSEmmanuel Vadot  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20972adf0fSEmmanuel Vadot  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21972adf0fSEmmanuel Vadot  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22972adf0fSEmmanuel Vadot  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23972adf0fSEmmanuel Vadot  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24972adf0fSEmmanuel Vadot  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25972adf0fSEmmanuel Vadot  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26972adf0fSEmmanuel Vadot  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27972adf0fSEmmanuel Vadot  * SUCH DAMAGE.
28972adf0fSEmmanuel Vadot  */
29972adf0fSEmmanuel Vadot 
30972adf0fSEmmanuel Vadot #ifndef	__DWC1000_DMA_H__
31972adf0fSEmmanuel Vadot #define	 __DWC1000_DMA_H__
32972adf0fSEmmanuel Vadot 
33972adf0fSEmmanuel Vadot /*
34972adf0fSEmmanuel Vadot  * A hardware buffer descriptor.  Rx and Tx buffers have the same descriptor
35972adf0fSEmmanuel Vadot  * layout, but the bits in the fields have different meanings.
36972adf0fSEmmanuel Vadot  */
37972adf0fSEmmanuel Vadot struct dwc_hwdesc
38972adf0fSEmmanuel Vadot {
39972adf0fSEmmanuel Vadot 	uint32_t desc0;
40972adf0fSEmmanuel Vadot 	uint32_t desc1;
41972adf0fSEmmanuel Vadot 	uint32_t addr1;		/* ptr to first buffer data */
42972adf0fSEmmanuel Vadot 	uint32_t addr2;		/* ptr to next descriptor / second buffer data*/
43972adf0fSEmmanuel Vadot };
44972adf0fSEmmanuel Vadot 
45972adf0fSEmmanuel Vadot int dma1000_init(struct dwc_softc *sc);
46972adf0fSEmmanuel Vadot void dma1000_free(struct dwc_softc *sc);
47972adf0fSEmmanuel Vadot void dma1000_start(struct dwc_softc *sc);
48972adf0fSEmmanuel Vadot void dma1000_stop(struct dwc_softc *sc);
49*363b7c39SEmmanuel Vadot int dma1000_reset(struct dwc_softc *sc);
50972adf0fSEmmanuel Vadot int dma1000_setup_txbuf(struct dwc_softc *sc, int idx, struct mbuf **mp);
51972adf0fSEmmanuel Vadot void dma1000_txfinish_locked(struct dwc_softc *sc);
52972adf0fSEmmanuel Vadot void dma1000_rxfinish_locked(struct dwc_softc *sc);
53afa0f66eSEmmanuel Vadot void dma1000_txstart(struct dwc_softc *sc);
5429776aa4SEmmanuel Vadot int dma1000_intr(struct dwc_softc *sc);
55972adf0fSEmmanuel Vadot 
56972adf0fSEmmanuel Vadot #endif	/* __DWC1000_DMA_H__ */
57