nkeynes@58: /** nkeynes@561: * $Id$ nkeynes@58: * nkeynes@58: * SH4 onboard DMA controller (DMAC) definitions. nkeynes@58: * nkeynes@58: * Copyright (c) 2005 Nathan Keynes. nkeynes@58: * nkeynes@58: * This program is free software; you can redistribute it and/or modify nkeynes@58: * it under the terms of the GNU General Public License as published by nkeynes@58: * the Free Software Foundation; either version 2 of the License, or nkeynes@58: * (at your option) any later version. nkeynes@58: * nkeynes@58: * This program is distributed in the hope that it will be useful, nkeynes@58: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@58: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@58: * GNU General Public License for more details. nkeynes@58: */ nkeynes@58: nkeynes@58: #ifndef dream_sh4dmac_H nkeynes@58: #define dream_sh4dmac_H 1 nkeynes@58: nkeynes@58: #include nkeynes@58: nkeynes@58: #ifdef __cplusplus nkeynes@58: extern "C" { nkeynes@58: #endif nkeynes@58: nkeynes@58: /* External DREQ. Note only used for DMA memory-to-memory - for single nkeynes@58: * address transfers the device uses DMAC_get_buffer/DMAC_put_buffer. nkeynes@58: */ nkeynes@58: #define DMAC_EXTERNAL 0 nkeynes@58: #define DMAC_SCI_TDE 1 /* SCI Transmit data empty */ nkeynes@58: #define DMAC_SCI_RDF 2 /* SCI Receive data full */ nkeynes@58: #define DMAC_SCIF_TDE 3 /* SCIF Transmit data empty */ nkeynes@58: #define DMAC_SCIF_RDF 4 /* SCIF Receive data full */ nkeynes@58: #define DMAC_TMU_ICI 5 /* TMU Input capture interrupt (not used?) */ nkeynes@58: nkeynes@58: /** nkeynes@58: * Trigger a DMAC transfer by asserting one of the above DMA request lines nkeynes@58: * (from the onboard peripherals). Actual transfer is dependent on the nkeynes@58: * relevant channel configuration. nkeynes@58: */ nkeynes@58: void DMAC_trigger( int dmac_trigger ); nkeynes@58: nkeynes@58: /** nkeynes@58: * Execute a memory-to-external-device transfer. Copies data into the supplied nkeynes@58: * buffer up to a maximum of bytecount bytes. nkeynes@58: * @return Actual number of bytes copied. nkeynes@58: */ nkeynes@430: uint32_t DMAC_get_buffer( int channel, unsigned char *buf, uint32_t bytecount ); nkeynes@58: nkeynes@58: /** nkeynes@58: * execute an external-device-to-memory transfer. Copies data from the nkeynes@58: * supplied buffer into memory up to a maximum of bytecount bytes. nkeynes@58: * @return Actual number of bytes copied. nkeynes@58: */ nkeynes@430: uint32_t DMAC_put_buffer( int channel, unsigned char *buf, uint32_t bytecount ); nkeynes@58: nkeynes@58: #ifdef __cplusplus nkeynes@58: } nkeynes@58: #endif nkeynes@58: #endif