/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2012 Damjan Marion <[email protected]>4* All rights reserved.5*6* Redistribution and use in source and binary forms, with or without7* modification, are permitted provided that the following conditions8* are met:9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11* 2. Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND16* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE17* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE18* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE19* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL20* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS21* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)22* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT23* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY24* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF25* SUCH DAMAGE.26*/2728#ifndef _TI_EDMA3_H_29#define _TI_EDMA3_H_3031/* Direct Mapped EDMA3 Events */32#define TI_EDMA3_EVENT_SDTXEVT1 233#define TI_EDMA3_EVENT_SDRXEVT1 334#define TI_EDMA3_EVENT_SDTXEVT0 2435#define TI_EDMA3_EVENT_SDRXEVT0 253637struct ti_edma3cc_param_set {38struct {39uint32_t sam:1; /* Source address mode */40uint32_t dam:1; /* Destination address mode */41uint32_t syncdim:1; /* Transfer synchronization dimension */42uint32_t static_set:1; /* Static Set */43uint32_t :4;44uint32_t fwid:3; /* FIFO Width */45uint32_t tccmode:1; /* Transfer complete code mode */46uint32_t tcc:6; /* Transfer complete code */47uint32_t :2;48uint32_t tcinten:1; /* Transfer complete interrupt enable */49uint32_t itcinten:1; /* Intermediate xfer completion intr. ena */50uint32_t tcchen:1; /* Transfer complete chaining enable */51uint32_t itcchen:1; /* Intermediate xfer completion chaining ena */52uint32_t privid:4; /* Privilege identification */53uint32_t :3;54uint32_t priv:1; /* Privilege level */55} opt;56uint32_t src; /* Channel Source Address */57uint16_t acnt; /* Count for 1st Dimension */58uint16_t bcnt; /* Count for 2nd Dimension */59uint32_t dst; /* Channel Destination Address */60int16_t srcbidx; /* Source B Index */61int16_t dstbidx; /* Destination B Index */62uint16_t link; /* Link Address */63uint16_t bcntrld; /* BCNT Reload */64int16_t srccidx; /* Source C Index */65int16_t dstcidx; /* Destination C Index */66uint16_t ccnt; /* Count for 3rd Dimension */67uint16_t reserved; /* Reserved */68};6970void ti_edma3_init(unsigned int eqn);71int ti_edma3_request_dma_ch(unsigned int ch, unsigned int tccn, unsigned int eqn);72int ti_edma3_request_qdma_ch(unsigned int ch, unsigned int tccn, unsigned int eqn);73int ti_edma3_enable_transfer_manual(unsigned int ch);74int ti_edma3_enable_transfer_qdma(unsigned int ch);75int ti_edma3_enable_transfer_event(unsigned int ch);7677void ti_edma3_param_write(unsigned int ch, struct ti_edma3cc_param_set *prs);78void ti_edma3_param_read(unsigned int ch, struct ti_edma3cc_param_set *prs);7980#endif /* _TI_EDMA3_H_ */818283