Radha Mohan Chintakuntla b6e395692b common/cnxk: add DPI DMA support
Add base support as ROC(Rest of Chip) API which will be used by PMD
dmadev driver.

This patch adds routines to init, fini, configure the DPI DMA device
found in Marvell's CN9k or CN10k SoC families.

Signed-off-by: Radha Mohan Chintakuntla <radhac@marvell.com>
2021-11-07 23:29:58 +01:00

142 lines
3.2 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(C) 2021 Marvell.
*/
/**
* DPI device HW definitions.
*/
#ifndef DEV_DPI_HW_H
#define DEV_DPI_HW_H
#include <stdint.h>
/* DPI VF register offsets from VF_BAR0 */
#define DPI_VDMA_EN (0x0)
#define DPI_VDMA_REQQ_CTL (0x8)
#define DPI_VDMA_DBELL (0x10)
#define DPI_VDMA_SADDR (0x18)
#define DPI_VDMA_COUNTS (0x20)
#define DPI_VDMA_NADDR (0x28)
#define DPI_VDMA_IWBUSY (0x30)
#define DPI_VDMA_CNT (0x38)
#define DPI_VF_INT (0x100)
#define DPI_VF_INT_W1S (0x108)
#define DPI_VF_INT_ENA_W1C (0x110)
#define DPI_VF_INT_ENA_W1S (0x118)
/**
* Enumeration dpi_hdr_xtype_e
*
* DPI Transfer Type Enumeration
* Enumerates the pointer type in DPI_DMA_INSTR_HDR_S[XTYPE].
*/
#define DPI_XTYPE_OUTBOUND (0)
#define DPI_XTYPE_INBOUND (1)
#define DPI_XTYPE_INTERNAL_ONLY (2)
#define DPI_XTYPE_EXTERNAL_ONLY (3)
#define DPI_HDR_XTYPE_MASK 0x3
#define DPI_HDR_PT_ZBW_CA 0x0
#define DPI_HDR_PT_ZBW_NC 0x1
#define DPI_HDR_PT_WQP 0x2
#define DPI_HDR_PT_WQP_NOSTATUS 0x0
#define DPI_HDR_PT_WQP_STATUSCA 0x1
#define DPI_HDR_PT_WQP_STATUSNC 0x3
#define DPI_HDR_PT_CNT 0x3
#define DPI_HDR_PT_MASK 0x3
#define DPI_HDR_TT_MASK 0x3
#define DPI_HDR_GRP_MASK 0x3FF
#define DPI_HDR_FUNC_MASK 0xFFFF
/* Big endian data bit position in DMA local pointer */
#define DPI_LPTR_BED_BIT_POS (60)
#define DPI_MIN_CMD_SIZE 8
#define DPI_MAX_CMD_SIZE 64
/**
* Structure dpi_instr_hdr_s for CN9K
*
* DPI DMA Instruction Header Format
*/
union dpi_instr_hdr_s {
uint64_t u[4];
struct dpi_dma_instr_hdr_s_s {
uint64_t tag : 32;
uint64_t tt : 2;
uint64_t grp : 10;
uint64_t reserved_44_47 : 4;
uint64_t nfst : 4;
uint64_t reserved_52_53 : 2;
uint64_t nlst : 4;
uint64_t reserved_58_63 : 6;
/* Word 0 - End */
uint64_t aura : 20;
uint64_t func : 16;
uint64_t pt : 2;
uint64_t reserved_102 : 1;
uint64_t pvfe : 1;
uint64_t fl : 1;
uint64_t ii : 1;
uint64_t fi : 1;
uint64_t ca : 1;
uint64_t csel : 1;
uint64_t reserved_109_111 : 3;
uint64_t xtype : 2;
uint64_t reserved_114_119 : 6;
uint64_t fport : 2;
uint64_t reserved_122_123 : 2;
uint64_t lport : 2;
uint64_t reserved_126_127 : 2;
/* Word 1 - End */
uint64_t ptr : 64;
/* Word 2 - End */
uint64_t reserved_192_255 : 64;
/* Word 3 - End */
} s;
};
/**
* Structure dpi_cn10k_instr_hdr_s for CN10K
*
* DPI DMA Instruction Header Format
*/
union dpi_cn10k_instr_hdr_s {
uint64_t u[4];
struct dpi_cn10k_dma_instr_hdr_s_s {
uint64_t nfst : 4;
uint64_t reserved_4_5 : 2;
uint64_t nlst : 4;
uint64_t reserved_10_11 : 2;
uint64_t pvfe : 1;
uint64_t reserved_13 : 1;
uint64_t func : 16;
uint64_t aura : 20;
uint64_t xtype : 2;
uint64_t reserved_52_53 : 2;
uint64_t pt : 2;
uint64_t fport : 2;
uint64_t reserved_58_59 : 2;
uint64_t lport : 2;
uint64_t reserved_62_63 : 2;
/* Word 0 - End */
uint64_t ptr : 64;
/* Word 1 - End */
uint64_t tag : 32;
uint64_t tt : 2;
uint64_t grp : 10;
uint64_t reserved_172_173 : 2;
uint64_t fl : 1;
uint64_t ii : 1;
uint64_t fi : 1;
uint64_t ca : 1;
uint64_t csel : 1;
uint64_t reserved_179_191 : 3;
/* Word 2 - End */
uint64_t reserved_192_255 : 64;
/* Word 3 - End */
} s;
};
#endif /*__DEV_DPI_HW_H__*/