Path: blob/main/sys/contrib/ncsw/inc/Peripherals/dpaa_ext.h
48378 views
/* Copyright (c) 2008-2012 Freescale Semiconductor, Inc1* All rights reserved.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions are met:5* * Redistributions of source code must retain the above copyright6* notice, this list of conditions and the following disclaimer.7* * Redistributions in binary form must reproduce the above copyright8* notice, this list of conditions and the following disclaimer in the9* documentation and/or other materials provided with the distribution.10* * Neither the name of Freescale Semiconductor nor the11* names of its contributors may be used to endorse or promote products12* derived from this software without specific prior written permission.13*14*15* ALTERNATIVELY, this software may be distributed under the terms of the16* GNU General Public License ("GPL") as published by the Free Software17* Foundation, either version 2 of that License or (at your option) any18* later version.19*20* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY21* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED22* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE23* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY24* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES25* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;26* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND27* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT28* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/313233/**************************************************************************//**34@File dpaa_ext.h3536@Description DPAA Application Programming Interface.37*//***************************************************************************/38#ifndef __DPAA_EXT_H39#define __DPAA_EXT_H4041#include "std_ext.h"42#include "error_ext.h"434445/**************************************************************************//**46@Group DPAA_grp Data Path Acceleration Architecture API4748@Description DPAA API functions, definitions and enums.4950@{51*//***************************************************************************/5253#if defined(__MWERKS__) && !defined(__GNUC__)54#pragma pack(push,1)55#endif /* defined(__MWERKS__) && ... */5657#include <machine/endian.h>5859#ifndef __BYTE_ORDER__60#define __BYTE_ORDER__ BYTE_ORDER61#endif62#ifndef __ORDER_BIG_ENDIAN__63#define __ORDER_BIG_ENDIAN__ BIG_ENDIAN64#endif6566/**************************************************************************//**67@Description Frame descriptor68*//***************************************************************************/69typedef _Packed struct t_DpaaFD {70#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__71volatile uint8_t liodn;72volatile uint8_t bpid;73volatile uint8_t elion;74volatile uint8_t addrh;75volatile uint32_t addrl;76#else77volatile uint32_t addrl;78volatile uint8_t addrh;79volatile uint8_t elion;80volatile uint8_t bpid;81volatile uint8_t liodn;82#endif83volatile uint32_t length; /**< Frame length */84volatile uint32_t status; /**< FD status */85} _PackedType t_DpaaFD;8687/**************************************************************************//**88@Description enum for defining frame format89*//***************************************************************************/90typedef enum e_DpaaFDFormatType {91e_DPAA_FD_FORMAT_TYPE_SHORT_SBSF = 0x0, /**< Simple frame Single buffer; Offset and92small length (9b OFFSET, 20b LENGTH) */93e_DPAA_FD_FORMAT_TYPE_LONG_SBSF = 0x2, /**< Simple frame, single buffer; big length94(29b LENGTH ,No OFFSET) */95e_DPAA_FD_FORMAT_TYPE_SHORT_MBSF = 0x4, /**< Simple frame, Scatter Gather table; Offset96and small length (9b OFFSET, 20b LENGTH) */97e_DPAA_FD_FORMAT_TYPE_LONG_MBSF = 0x6, /**< Simple frame, Scatter Gather table;98big length (29b LENGTH ,No OFFSET) */99e_DPAA_FD_FORMAT_TYPE_COMPOUND = 0x1, /**< Compound Frame (29b CONGESTION-WEIGHT100No LENGTH or OFFSET) */101e_DPAA_FD_FORMAT_TYPE_DUMMY102} e_DpaaFDFormatType;103104/**************************************************************************//**105@Collection Frame descriptor macros106*//***************************************************************************/107#define DPAA_FD_DD_MASK 0xc0000000 /**< FD DD field mask */108#define DPAA_FD_PID_MASK 0x3f000000 /**< FD PID field mask */109#define DPAA_FD_ELIODN_MASK 0x0000f000 /**< FD ELIODN field mask */110#define DPAA_FD_BPID_MASK 0x00ff0000 /**< FD BPID field mask */111#define DPAA_FD_ADDRH_MASK 0x000000ff /**< FD ADDRH field mask */112#define DPAA_FD_ADDRL_MASK 0xffffffff /**< FD ADDRL field mask */113#define DPAA_FD_FORMAT_MASK 0xe0000000 /**< FD FORMAT field mask */114#define DPAA_FD_OFFSET_MASK 0x1ff00000 /**< FD OFFSET field mask */115#define DPAA_FD_LENGTH_MASK 0x000fffff /**< FD LENGTH field mask */116117#define DPAA_FD_GET_ADDRH(fd) ((t_DpaaFD *)fd)->addrh /**< Macro to get FD ADDRH field */118#define DPAA_FD_GET_ADDRL(fd) ((t_DpaaFD *)fd)->addrl /**< Macro to get FD ADDRL field */119#define DPAA_FD_GET_PHYS_ADDR(fd) ((physAddress_t)(((uint64_t)DPAA_FD_GET_ADDRH(fd) << 32) | (uint64_t)DPAA_FD_GET_ADDRL(fd))) /**< Macro to get FD ADDR field */120#define DPAA_FD_GET_FORMAT(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_FORMAT_MASK) >> (31-2)) /**< Macro to get FD FORMAT field */121#define DPAA_FD_GET_OFFSET(fd) ((((t_DpaaFD *)fd)->length & DPAA_FD_OFFSET_MASK) >> (31-11)) /**< Macro to get FD OFFSET field */122#define DPAA_FD_GET_LENGTH(fd) (((t_DpaaFD *)fd)->length & DPAA_FD_LENGTH_MASK) /**< Macro to get FD LENGTH field */123#define DPAA_FD_GET_STATUS(fd) ((t_DpaaFD *)fd)->status /**< Macro to get FD STATUS field */124#define DPAA_FD_GET_ADDR(fd) XX_PhysToVirt(DPAA_FD_GET_PHYS_ADDR(fd)) /**< Macro to get FD ADDR (virtual) */125126#define DPAA_FD_SET_ADDRH(fd,val) ((t_DpaaFD *)fd)->addrh = (val) /**< Macro to set FD ADDRH field */127#define DPAA_FD_SET_ADDRL(fd,val) ((t_DpaaFD *)fd)->addrl = (val) /**< Macro to set FD ADDRL field */128#define DPAA_FD_SET_ADDR(fd,val) \129do { \130uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \131DPAA_FD_SET_ADDRH(fd, ((uint32_t)(physAddr >> 32))); \132DPAA_FD_SET_ADDRL(fd, (uint32_t)physAddr); \133} while (0) /**< Macro to set FD ADDR field */134#define DPAA_FD_SET_FORMAT(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_FORMAT_MASK) | (((val) << (31-2))& DPAA_FD_FORMAT_MASK))) /**< Macro to set FD FORMAT field */135#define DPAA_FD_SET_OFFSET(fd,val) (((t_DpaaFD *)fd)->length = ((((t_DpaaFD *)fd)->length & ~DPAA_FD_OFFSET_MASK) | (((val) << (31-11))& DPAA_FD_OFFSET_MASK) )) /**< Macro to set FD OFFSET field */136#define DPAA_FD_SET_LENGTH(fd,val) (((t_DpaaFD *)fd)->length = (((t_DpaaFD *)fd)->length & ~DPAA_FD_LENGTH_MASK) | ((val) & DPAA_FD_LENGTH_MASK)) /**< Macro to set FD LENGTH field */137#define DPAA_FD_SET_STATUS(fd,val) ((t_DpaaFD *)fd)->status = (val) /**< Macro to set FD STATUS field */138/* @} */139140/**************************************************************************//**141@Description Frame Scatter/Gather Table Entry142*//***************************************************************************/143typedef _Packed struct t_DpaaSGTE {144volatile uint32_t addrh; /**< Buffer Address high */145volatile uint32_t addrl; /**< Buffer Address low */146volatile uint32_t length; /**< Buffer length */147volatile uint32_t offset; /**< SGTE offset */148} _PackedType t_DpaaSGTE;149150#define DPAA_NUM_OF_SG_TABLE_ENTRY 16151152/**************************************************************************//**153@Description Frame Scatter/Gather Table154*//***************************************************************************/155typedef _Packed struct t_DpaaSGT {156t_DpaaSGTE tableEntry[DPAA_NUM_OF_SG_TABLE_ENTRY];157/**< Structure that holds information about158a single S/G entry. */159} _PackedType t_DpaaSGT;160161/**************************************************************************//**162@Description Compound Frame Table163*//***************************************************************************/164typedef _Packed struct t_DpaaCompTbl {165t_DpaaSGTE outputBuffInfo; /**< Structure that holds information about166the compound-frame output buffer;167NOTE: this may point to a S/G table */168t_DpaaSGTE inputBuffInfo; /**< Structure that holds information about169the compound-frame input buffer;170NOTE: this may point to a S/G table */171} _PackedType t_DpaaCompTbl;172173/**************************************************************************//**174@Collection Frame Scatter/Gather Table Entry macros175*//***************************************************************************/176#define DPAA_SGTE_ADDRH_MASK 0x000000ff /**< SGTE ADDRH field mask */177#define DPAA_SGTE_ADDRL_MASK 0xffffffff /**< SGTE ADDRL field mask */178#define DPAA_SGTE_E_MASK 0x80000000 /**< SGTE Extension field mask */179#define DPAA_SGTE_F_MASK 0x40000000 /**< SGTE Final field mask */180#define DPAA_SGTE_LENGTH_MASK 0x3fffffff /**< SGTE LENGTH field mask */181#define DPAA_SGTE_BPID_MASK 0x00ff0000 /**< SGTE BPID field mask */182#define DPAA_SGTE_OFFSET_MASK 0x00001fff /**< SGTE OFFSET field mask */183184#define DPAA_SGTE_GET_ADDRH(sgte) (((t_DpaaSGTE *)sgte)->addrh & DPAA_SGTE_ADDRH_MASK) /**< Macro to get SGTE ADDRH field */185#define DPAA_SGTE_GET_ADDRL(sgte) ((t_DpaaSGTE *)sgte)->addrl /**< Macro to get SGTE ADDRL field */186#define DPAA_SGTE_GET_PHYS_ADDR(sgte) ((physAddress_t)(((uint64_t)DPAA_SGTE_GET_ADDRH(sgte) << 32) | (uint64_t)DPAA_SGTE_GET_ADDRL(sgte))) /**< Macro to get FD ADDR field */187#define DPAA_SGTE_GET_EXTENSION(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_E_MASK) >> (31-0)) /**< Macro to get SGTE EXTENSION field */188#define DPAA_SGTE_GET_FINAL(sgte) ((((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_F_MASK) >> (31-1)) /**< Macro to get SGTE FINAL field */189#define DPAA_SGTE_GET_LENGTH(sgte) (((t_DpaaSGTE *)sgte)->length & DPAA_SGTE_LENGTH_MASK) /**< Macro to get SGTE LENGTH field */190#define DPAA_SGTE_GET_BPID(sgte) ((((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_BPID_MASK) >> (31-15)) /**< Macro to get SGTE BPID field */191#define DPAA_SGTE_GET_OFFSET(sgte) (((t_DpaaSGTE *)sgte)->offset & DPAA_SGTE_OFFSET_MASK) /**< Macro to get SGTE OFFSET field */192#define DPAA_SGTE_GET_ADDR(sgte) XX_PhysToVirt(DPAA_SGTE_GET_PHYS_ADDR(sgte))193194#define DPAA_SGTE_SET_ADDRH(sgte,val) (((t_DpaaSGTE *)sgte)->addrh = ((((t_DpaaSGTE *)sgte)->addrh & ~DPAA_SGTE_ADDRH_MASK) | ((val) & DPAA_SGTE_ADDRH_MASK))) /**< Macro to set SGTE ADDRH field */195#define DPAA_SGTE_SET_ADDRL(sgte,val) ((t_DpaaSGTE *)sgte)->addrl = (val) /**< Macro to set SGTE ADDRL field */196#define DPAA_SGTE_SET_ADDR(sgte,val) \197do { \198uint64_t physAddr = (uint64_t)(XX_VirtToPhys(val)); \199DPAA_SGTE_SET_ADDRH(sgte, ((uint32_t)(physAddr >> 32))); \200DPAA_SGTE_SET_ADDRL(sgte, (uint32_t)physAddr); \201} while (0) /**< Macro to set SGTE ADDR field */202#define DPAA_SGTE_SET_EXTENSION(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_E_MASK) | (((val) << (31-0))& DPAA_SGTE_E_MASK))) /**< Macro to set SGTE EXTENSION field */203#define DPAA_SGTE_SET_FINAL(sgte,val) (((t_DpaaSGTE *)sgte)->length = ((((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_F_MASK) | (((val) << (31-1))& DPAA_SGTE_F_MASK))) /**< Macro to set SGTE FINAL field */204#define DPAA_SGTE_SET_LENGTH(sgte,val) (((t_DpaaSGTE *)sgte)->length = (((t_DpaaSGTE *)sgte)->length & ~DPAA_SGTE_LENGTH_MASK) | ((val) & DPAA_SGTE_LENGTH_MASK)) /**< Macro to set SGTE LENGTH field */205#define DPAA_SGTE_SET_BPID(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_BPID_MASK) | (((val) << (31-15))& DPAA_SGTE_BPID_MASK))) /**< Macro to set SGTE BPID field */206#define DPAA_SGTE_SET_OFFSET(sgte,val) (((t_DpaaSGTE *)sgte)->offset = ((((t_DpaaSGTE *)sgte)->offset & ~DPAA_SGTE_OFFSET_MASK) | (((val) << (31-31))& DPAA_SGTE_OFFSET_MASK) )) /**< Macro to set SGTE OFFSET field */207/* @} */208209#if defined(__MWERKS__) && !defined(__GNUC__)210#pragma pack(pop)211#endif /* defined(__MWERKS__) && ... */212213#define DPAA_LIODN_DONT_OVERRIDE (-1)214215/** @} */ /* end of DPAA_grp group */216217218#endif /* __DPAA_EXT_H */219220221