1*49b49cdaSZbigniew Bodek /*- 2*49b49cdaSZbigniew Bodek ******************************************************************************* 3*49b49cdaSZbigniew Bodek Copyright (C) 2015 Annapurna Labs Ltd. 4*49b49cdaSZbigniew Bodek 5*49b49cdaSZbigniew Bodek This file may be licensed under the terms of the Annapurna Labs Commercial 6*49b49cdaSZbigniew Bodek License Agreement. 7*49b49cdaSZbigniew Bodek 8*49b49cdaSZbigniew Bodek Alternatively, this file can be distributed under the terms of the GNU General 9*49b49cdaSZbigniew Bodek Public License V2 as published by the Free Software Foundation and can be 10*49b49cdaSZbigniew Bodek found at http://www.gnu.org/licenses/gpl-2.0.html 11*49b49cdaSZbigniew Bodek 12*49b49cdaSZbigniew Bodek Alternatively, redistribution and use in source and binary forms, with or 13*49b49cdaSZbigniew Bodek without modification, are permitted provided that the following conditions are 14*49b49cdaSZbigniew Bodek met: 15*49b49cdaSZbigniew Bodek 16*49b49cdaSZbigniew Bodek * Redistributions of source code must retain the above copyright notice, 17*49b49cdaSZbigniew Bodek this list of conditions and the following disclaimer. 18*49b49cdaSZbigniew Bodek 19*49b49cdaSZbigniew Bodek * Redistributions in binary form must reproduce the above copyright 20*49b49cdaSZbigniew Bodek notice, this list of conditions and the following disclaimer in 21*49b49cdaSZbigniew Bodek the documentation and/or other materials provided with the 22*49b49cdaSZbigniew Bodek distribution. 23*49b49cdaSZbigniew Bodek 24*49b49cdaSZbigniew Bodek THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 25*49b49cdaSZbigniew Bodek ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 26*49b49cdaSZbigniew Bodek WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27*49b49cdaSZbigniew Bodek DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 28*49b49cdaSZbigniew Bodek ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29*49b49cdaSZbigniew Bodek (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30*49b49cdaSZbigniew Bodek LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 31*49b49cdaSZbigniew Bodek ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32*49b49cdaSZbigniew Bodek (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33*49b49cdaSZbigniew Bodek SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34*49b49cdaSZbigniew Bodek 35*49b49cdaSZbigniew Bodek *******************************************************************************/ 36*49b49cdaSZbigniew Bodek 37*49b49cdaSZbigniew Bodek /** 38*49b49cdaSZbigniew Bodek * @{ 39*49b49cdaSZbigniew Bodek * @file al_hal_udma_regs.h 40*49b49cdaSZbigniew Bodek * 41*49b49cdaSZbigniew Bodek * @brief udma registers definition 42*49b49cdaSZbigniew Bodek * 43*49b49cdaSZbigniew Bodek * 44*49b49cdaSZbigniew Bodek */ 45*49b49cdaSZbigniew Bodek #ifndef __AL_HAL_UDMA_REG_H 46*49b49cdaSZbigniew Bodek #define __AL_HAL_UDMA_REG_H 47*49b49cdaSZbigniew Bodek 48*49b49cdaSZbigniew Bodek #include "al_hal_udma_regs_m2s.h" 49*49b49cdaSZbigniew Bodek #include "al_hal_udma_regs_s2m.h" 50*49b49cdaSZbigniew Bodek #include "al_hal_udma_regs_gen.h" 51*49b49cdaSZbigniew Bodek 52*49b49cdaSZbigniew Bodek #define AL_UDMA_REV_ID_REV0 0 53*49b49cdaSZbigniew Bodek #define AL_UDMA_REV_ID_REV1 1 54*49b49cdaSZbigniew Bodek #define AL_UDMA_REV_ID_REV2 2 55*49b49cdaSZbigniew Bodek 56*49b49cdaSZbigniew Bodek #ifdef __cplusplus 57*49b49cdaSZbigniew Bodek extern "C" { 58*49b49cdaSZbigniew Bodek #endif 59*49b49cdaSZbigniew Bodek 60*49b49cdaSZbigniew Bodek /** UDMA registers, either m2s or s2m */ 61*49b49cdaSZbigniew Bodek union udma_regs { 62*49b49cdaSZbigniew Bodek struct udma_m2s_regs m2s; 63*49b49cdaSZbigniew Bodek struct udma_s2m_regs s2m; 64*49b49cdaSZbigniew Bodek }; 65*49b49cdaSZbigniew Bodek 66*49b49cdaSZbigniew Bodek struct unit_regs { 67*49b49cdaSZbigniew Bodek struct udma_m2s_regs m2s; 68*49b49cdaSZbigniew Bodek uint32_t rsrvd0[(0x10000 - sizeof(struct udma_m2s_regs)) >> 2]; 69*49b49cdaSZbigniew Bodek struct udma_s2m_regs s2m; 70*49b49cdaSZbigniew Bodek uint32_t rsrvd1[((0x1C000 - 0x10000) - sizeof(struct udma_s2m_regs)) >> 2]; 71*49b49cdaSZbigniew Bodek struct udma_gen_regs gen; 72*49b49cdaSZbigniew Bodek }; 73*49b49cdaSZbigniew Bodek 74*49b49cdaSZbigniew Bodek /** UDMA submission and completion registers, M2S and S2M UDMAs have same stucture */ 75*49b49cdaSZbigniew Bodek struct udma_rings_regs { 76*49b49cdaSZbigniew Bodek uint32_t rsrvd0[8]; 77*49b49cdaSZbigniew Bodek uint32_t cfg; /* Descriptor ring configuration */ 78*49b49cdaSZbigniew Bodek uint32_t status; /* Descriptor ring status and information */ 79*49b49cdaSZbigniew Bodek uint32_t drbp_low; /* Descriptor Ring Base Pointer [31:4] */ 80*49b49cdaSZbigniew Bodek uint32_t drbp_high; /* Descriptor Ring Base Pointer [63:32] */ 81*49b49cdaSZbigniew Bodek uint32_t drl; /* Descriptor Ring Length[23:2] */ 82*49b49cdaSZbigniew Bodek uint32_t drhp; /* Descriptor Ring Head Pointer */ 83*49b49cdaSZbigniew Bodek uint32_t drtp_inc; /* Descriptor Tail Pointer increment */ 84*49b49cdaSZbigniew Bodek uint32_t drtp; /* Descriptor Tail Pointer */ 85*49b49cdaSZbigniew Bodek uint32_t dcp; /* Descriptor Current Pointer */ 86*49b49cdaSZbigniew Bodek uint32_t crbp_low; /* Completion Ring Base Pointer [31:4] */ 87*49b49cdaSZbigniew Bodek uint32_t crbp_high; /* Completion Ring Base Pointer [63:32] */ 88*49b49cdaSZbigniew Bodek uint32_t crhp; /* Completion Ring Head Pointer */ 89*49b49cdaSZbigniew Bodek uint32_t crhp_internal; /* Completion Ring Head Pointer internal, before AX ... */ 90*49b49cdaSZbigniew Bodek }; 91*49b49cdaSZbigniew Bodek 92*49b49cdaSZbigniew Bodek /** M2S and S2M generic structure of Q registers */ 93*49b49cdaSZbigniew Bodek union udma_q_regs { 94*49b49cdaSZbigniew Bodek struct udma_rings_regs rings; 95*49b49cdaSZbigniew Bodek struct udma_m2s_q m2s_q; 96*49b49cdaSZbigniew Bodek struct udma_s2m_q s2m_q; 97*49b49cdaSZbigniew Bodek }; 98*49b49cdaSZbigniew Bodek 99*49b49cdaSZbigniew Bodek #ifdef __cplusplus 100*49b49cdaSZbigniew Bodek } 101*49b49cdaSZbigniew Bodek #endif 102*49b49cdaSZbigniew Bodek 103*49b49cdaSZbigniew Bodek #endif /* __AL_HAL_UDMA_REG_H */ 104*49b49cdaSZbigniew Bodek /** @} end of UDMA group */ 105