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