From patchwork Mon Apr 15 15:31:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anoob Joseph X-Patchwork-Id: 139285 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B605043E7B; Mon, 15 Apr 2024 17:32:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B0674068A; Mon, 15 Apr 2024 17:32:19 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id A78714067E for ; Mon, 15 Apr 2024 17:32:16 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 43FELVjQ028581; Mon, 15 Apr 2024 08:32:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding:content-type; s= pfpt0220; bh=PRstuv4EVxhyeCwDL3JKaUbzJyl6lJrzq7BGhHnYDVw=; b=hA6 0N03gpGB9jnmAu4oHW3BVwHunPp0vMDQN4My865G4XaXcBP5o7PpHRLj9+eFMwl8 QrHNY+ndrHVnEBHFZC0Y4s6vbEoQ+qG9fDMO4FaJesXbXVdsBS5bKTjGnnQDq23v wMmyFchfZQO5Tu98A2cB/B8zLYO+cmMjZyErKlCtBFeSMznnHZjo3xR6CFLjClIY YY0Pda5bdH8CGE2dKEBaM+jXKe1CGRzuZxZrbB23wZDuOAtYrmjojPSqQ/0T7X9v E2iMB0V9lCuW+3CuopEyKpTzmg8suOfPs4ZbRhCNz7tCexvpYouaq6+BXLTcUdrz LfuCcYRNj+OKnNfPQ8Q== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3xh5x9g8m6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Apr 2024 08:32:15 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 15 Apr 2024 08:32:14 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Mon, 15 Apr 2024 08:32:14 -0700 Received: from BG-LT92004.corp.innovium.com (BG-LT92004.marvell.com [10.28.163.189]) by maili.marvell.com (Postfix) with ESMTP id 6EE763F70C4; Mon, 15 Apr 2024 08:32:11 -0700 (PDT) From: Anoob Joseph To: Chengwen Feng , Kevin Laatz , Bruce Richardson , "Jerin Jacob" , Thomas Monjalon CC: Gowrishankar Muthukrishnan , "Vidya Sagar Velumuri" , Subject: [PATCH 3/8] dma/odm: add hardware defines Date: Mon, 15 Apr 2024 21:01:54 +0530 Message-ID: <20240415153159.86-4-anoobj@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240415153159.86-1-anoobj@marvell.com> References: <20240415153159.86-1-anoobj@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 2b1Y2WfOBmSOhJcX5DVX8sMD8lXF01Zo X-Proofpoint-GUID: 2b1Y2WfOBmSOhJcX5DVX8sMD8lXF01Zo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-15_12,2024-04-15_01,2023-05-22_02 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add ODM registers and structures. Add mailbox structs as well. Signed-off-by: Anoob Joseph Signed-off-by: Gowrishankar Muthukrishnan Signed-off-by: Vidya Sagar Velumuri --- drivers/dma/odm/odm.h | 116 +++++++++++++++++++++++++++++++++++++ drivers/dma/odm/odm_priv.h | 49 ++++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 drivers/dma/odm/odm_priv.h diff --git a/drivers/dma/odm/odm.h b/drivers/dma/odm/odm.h index aeeb6f9e9a..7564ffbed4 100644 --- a/drivers/dma/odm/odm.h +++ b/drivers/dma/odm/odm.h @@ -9,6 +9,47 @@ extern int odm_logtype; +/* ODM VF register offsets from VF_BAR0 */ +#define ODM_VDMA_EN(x) (0x00 | (x << 3)) +#define ODM_VDMA_REQQ_CTL(x) (0x80 | (x << 3)) +#define ODM_VDMA_DBELL(x) (0x100 | (x << 3)) +#define ODM_VDMA_RING_CFG(x) (0x180 | (x << 3)) +#define ODM_VDMA_IRING_BADDR(x) (0x200 | (x << 3)) +#define ODM_VDMA_CRING_BADDR(x) (0x280 | (x << 3)) +#define ODM_VDMA_COUNTS(x) (0x300 | (x << 3)) +#define ODM_VDMA_IRING_NADDR(x) (0x380 | (x << 3)) +#define ODM_VDMA_CRING_NADDR(x) (0x400 | (x << 3)) +#define ODM_VDMA_IRING_DBG(x) (0x480 | (x << 3)) +#define ODM_VDMA_CNT(x) (0x580 | (x << 3)) +#define ODM_VF_INT (0x1000) +#define ODM_VF_INT_W1S (0x1008) +#define ODM_VF_INT_ENA_W1C (0x1010) +#define ODM_VF_INT_ENA_W1S (0x1018) +#define ODM_MBOX_VF_PF_DATA(i) (0x2000 | (i << 3)) + +#define ODM_MBOX_RETRY_CNT (0xfffffff) +#define ODM_MBOX_ERR_CODE_MAX (0xf) +#define ODM_IRING_IDLE_WAIT_CNT (0xfffffff) + +/** + * Enumeration odm_hdr_xtype_e + * + * ODM Transfer Type Enumeration + * Enumerates the pointer type in ODM_DMA_INSTR_HDR_S[XTYPE] + */ +#define ODM_XTYPE_INTERNAL 2 +#define ODM_XTYPE_FILL0 4 +#define ODM_XTYPE_FILL1 5 + +/** + * ODM Header completion type enumeration + * Enumerates the completion type in ODM_DMA_INSTR_HDR_S[CT] + */ +#define ODM_HDR_CT_CW_CA 0x0 +#define ODM_HDR_CT_CW_NC 0x1 + +#define ODM_MAX_QUEUES_PER_DEV 16 + #define odm_err(...) \ rte_log(RTE_LOG_ERR, odm_logtype, \ RTE_FMT("%s(): %u" RTE_FMT_HEAD(__VA_ARGS__, ), __func__, __LINE__, \ @@ -18,6 +59,81 @@ extern int odm_logtype; RTE_FMT("%s(): %u" RTE_FMT_HEAD(__VA_ARGS__, ), __func__, __LINE__, \ RTE_FMT_TAIL(__VA_ARGS__, ))) +/** + * Structure odm_instr_hdr_s for ODM + * + * ODM DMA Instruction Header Format + */ +union odm_instr_hdr_s { + uint64_t u; + struct odm_instr_hdr { + uint64_t nfst : 3; + uint64_t reserved_3 : 1; + uint64_t nlst : 3; + uint64_t reserved_7_9 : 3; + uint64_t ct : 2; + uint64_t stse : 1; + uint64_t reserved_13_28 : 16; + uint64_t sts : 1; + uint64_t reserved_30_49 : 20; + uint64_t xtype : 3; + uint64_t reserved_53_63 : 11; + } s; +}; + +/** + * ODM Completion Entry Structure + * + */ +union odm_cmpl_ent_s { + uint32_t u; + struct odm_cmpl_ent { + uint32_t cmp_code : 8; + uint32_t rsvd : 23; + uint32_t valid : 1; + } s; +}; + +/** + * ODM DMA Ring Configuration Register + */ +union odm_vdma_ring_cfg_s { + uint64_t u; + struct { + uint64_t isize : 8; + uint64_t rsvd_8_15 : 8; + uint64_t csize : 8; + uint64_t rsvd_24_63 : 40; + } s; +}; + +/** + * ODM DMA Instruction Ring DBG + */ +union odm_vdma_iring_dbg_s { + uint64_t u; + struct { + uint64_t dbell_cnt : 32; + uint64_t offset : 16; + uint64_t rsvd_48_62 : 15; + uint64_t iwbusy : 1; + } s; +}; + +/** + * ODM DMA Counts + */ +union odm_vdma_counts_s { + uint64_t u; + struct { + uint64_t dbell : 32; + uint64_t buf_used_cnt : 9; + uint64_t rsvd_41_43 : 3; + uint64_t rsvd_buf_used_cnt : 3; + uint64_t rsvd_47_63 : 17; + } s; +}; + struct __rte_cache_aligned odm_dev { struct rte_pci_device *pci_dev; uint8_t *rbase; diff --git a/drivers/dma/odm/odm_priv.h b/drivers/dma/odm/odm_priv.h new file mode 100644 index 0000000000..1878f4d9a6 --- /dev/null +++ b/drivers/dma/odm/odm_priv.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2024 Marvell. + */ + +#ifndef _ODM_PRIV_H_ +#define _ODM_PRIV_H_ + +#define ODM_MAX_VFS 16 +#define ODM_MAX_QUEUES 32 + +#define ODM_CMD_QUEUE_SIZE 4096 + +#define ODM_DEV_INIT 0x1 +#define ODM_DEV_CLOSE 0x2 +#define ODM_QUEUE_OPEN 0x3 +#define ODM_QUEUE_CLOSE 0x4 +#define ODM_REG_DUMP 0x5 + +struct odm_mbox_dev_msg { + /* Response code */ + uint64_t rsp : 8; + /* Number of VFs */ + uint64_t nvfs : 2; + /* Error code */ + uint64_t err : 6; + /* Reserved */ + uint64_t rsvd_16_63 : 48; +}; + +struct odm_mbox_queue_msg { + /* Command code */ + uint64_t cmd : 8; + /* VF ID to configure */ + uint64_t vfid : 8; + /* Queue index in the VF */ + uint64_t qidx : 8; + /* Reserved */ + uint64_t rsvd_24_63 : 40; +}; + +union odm_mbox_msg { + uint64_t u[2]; + struct { + struct odm_mbox_dev_msg d; + struct odm_mbox_queue_msg q; + }; +}; + +#endif /* _ODM_PRIV_H_ */